2011-03-16 4 views
2
modifier

J'utilise actuellement le tableau Tarifs en poids pour une boutique en ligne, mais je dois personnaliser la façon dont le calcul est fait.Magento: Tableau des taux en poids, le calcul

Pour le moment, les frais de port sont déterminés par le poids total des commandes, mais je voudrais que le calcul détermine simplement le coût de la poste par l'article le plus lourd dans le panier.

Savez-vous comment je pourrais passer outre les calculs effectués par ce module? L'aide me rendrait vraiment reconnaissant.

Merci d'avance.

Répondre

5

remplacer la classe Magento utilisée pour calculer ces taux Mage_Shipping_Model_Shipping. Quand une demande de débit est effectuée, cette méthode classe collectRates est appelé en utilisant un objet Mage_Shipping_Model_Rate_Request, qui a les éléments et le poids pré-rempli. Cependant, en sous-classant cette classe avec notre override, nous pouvons être rusés et obtenir le taux que nous voulons.

class MyNamespace_MyModule_Model_Shipping extends Mage_Shipping_Model_Shipping { 

    public function collectRates(Mage_Shipping_Model_Rate_Request $request) { 
     $maxWeight = 0; 
     foreach($request->getAllItems() as $item) { 
      $maxWeight = max($maxWeight, $item->getRowWeight()); 
     } 
     $request->setPackageWeight($maxWeight); 

     return parent::collectRates($request); 
    } 
} 

Notez que ici nous avons réduit peut être retiré proprement la quantité de code a changé et notre module (et nous pouvons même mettre à jour Magento!) Avec un faible risque.

Espérons que ça aide!

Merci, Joe

+0

Joe, vraiment, fait vraiment aider. Je suppose que je dois mettre cela dans un module? Toutes mes excuses, pas tout à fait à la hauteur avec Magento. –

+0

oui, créez un module personnalisé (les tutoriels abondent pour cela) et créez un remplacement de l'autre classe d'expédition. –

Questions connexes