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?)

War es hilfreich?

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
scroll top