2011-07-27 4 views
3

Je souhaite définir la remise (par exemple $ 10) par article de manière dynamique, après avoir appuyé sur un bouton personnalisé, dans la page Caisse. J'ai vérifié certains du codage de Magento, de constater que: -Comment définir une remise dynamique sur chaque article du panier par programmation?

  • Principalement la classe « Mage_Sales_Model_Quote_Address » est toujours affectée, quand tout le monde (tout code Magento) parle de réduction.
  • Il y a 2 cas de « Mage_Sales_Model_Quote_Address » - un pour « facturation » type d'adresse & l'autre pour le type d'adresse « expédition », mais celui-ci l'un est principalement utilisé pour le code de coupon rabais connexes.

Après avoir vérifié ces zones, je suis allé à écrire du code, en ciblant le type d'adresse "expédition" de "Mage_Sales_Model_Quote_Address", comme: -

$cart = Mage::getSingleton('checkout/cart'); 
$objShippingAddress = $cart->getQuote()->getShippingAddress(); 
$discountAmount = 10; 

$objShippingAddress->setDiscountDescription('any description'); 
$objShippingAddress->addTotal(array(
    'code' => 'discount', 
    'title' => "Custom Discount", 
    'value' => -$discountAmount, 
)); 

$totalDiscountAmount = $discountAmount; 
$subtotalWithDiscount = $discountAmount; 
$baseTotalDiscountAmount = $discountAmount; 
$baseSubtotalWithDiscount = $discountAmount; 

$objShippingAddress->setDiscountAmount($totalDiscountAmount); 
$objShippingAddress->setSubtotalWithDiscount($subtotalWithDiscount); 
$objShippingAddress->setBaseDiscountAmount($baseTotalDiscountAmount); 
$objShippingAddress->setBaseSubtotalWithDiscount($baseSubtotalWithDiscount); 

$objShippingAddress->setGrandTotal($objShippingAddress->getGrandTotal() - $objShippingAddress->getDiscountAmount()); 
$objShippingAddress->setBaseGrandTotal($objShippingAddress->getBaseGrandTotal() - $objShippingAddress->getBaseDiscountAmount()); 

Mais encore je ne suis pas N'importe quelle ligne dans la section "totals" de ma page de panier de paiement & dans la section de révision de la commande d'une page.

Quelqu'un s'il vous plaît aider. Je sais que c'est faisable.

Merci à tous à l'avance.

+0

Personne ne peut essayer celui-ci? C'est dur, je l'admets, mais s'il vous plait, il doit y avoir quelqu'un qui a essayé ça dans son relais de Magento ... –

+3

Vérifiez la réponse d'Ivan: http://stackoverflow.com/questions/4877413/magento-adding-duties-taxes-to-a -quote-pendant l'examen/4879662 # 4879662 cela a fonctionné pour moi. – OSdave

+1

@OSdave a raison. C'est le meilleur moyen d'ajouter des frais personnalisés ou des réductions. –

Répondre

0

Nous avons demandé d'installer des niveaux de remise. Comme nous ne pouvions pas les utiliser avec le modèle de réduction actuel, nous avons apporté des modifications au couponPostAction dans le CartController. Nous avons mis en place un coupon factice et avons pu, en fonction d'autres informations sur le client, proposer un plan de réduction à plusieurs niveaux avec ce coupon.

Questions connexes