Warum sind einige Liefermethoden für einige Kunden nicht verfügbar?
-
16-10-2019 - |
Frage
Ich habe 4 Versandmethoden.
Der alte Kunde erhält nur 2 Methoden. Ich habe denselben Kunden mit einer anderen E -Mail erstellt. Es erhält alle 4 Versandmethoden.
Ich tauchte in Code und DB -Tabelle ein sales_flat_quote_shipping_rate.
Sortieren nach address_id Wir haben: für alte Kunde: 2 Tarifdatensätze; Für denselben neuen Kunden: 4 Tarifakten.
Warum passiert es? Und wo wird Tarifrekord erstellt?
Update 1:
Ich hängt nicht von der Adresse ab. Es hängt vom Produkt ab. Wenn das Produkt abgenommen hat, kann der Kunde einige Versandmethoden nicht sehen. Jetzt ist die Frage, warum?)
Lösung
Der Grund war in proccessAdditionalValidation
Funktion in Mage_Shipping_Model_Carrier_Abstract
Klasse:
/**
* Processing additional validation to check is carrier applicable.
*
* @param Mage_Shipping_Model_Rate_Request $request
* @return Mage_Shipping_Model_Carrier_Abstract|Mage_Shipping_Model_Rate_Result_Error|boolean
*/
public function proccessAdditionalValidation(Mage_Shipping_Model_Rate_Request $request)
{
$maxAllowedWeight = (float) $this->getConfigData('max_package_weight');
$error = null;
$showMethod = $this->getConfigData('showmethod');
foreach ($request->getAllItems() as $item) {
if ($item->getProduct() && $item->getProduct()->getId()) {
// here I got true
if ($item->getProduct()->getWeight() > $maxAllowedWeight) { $error = Mage::getModel('shipping/rate_result_error');
$error->setCarrier($this->_code)
->setCarrierTitle($this->getConfigData('title'));
$errorMsg = $this->getConfigData('specificerrmsg');
$error->setErrorMessage($errorMsg?$errorMsg:Mage::helper('shipping')->__('The shipping module is not available.'));
break;
}
}
}
if (null !== $error && $showMethod) {
return $error;
} elseif (null !== $error) {
return false;
}
return $this;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange