मैं प्रोग्रामआउट कार्ट में चेकआउट के लिए कस्टम टैक्स राशि जोड़ना चाहता हूं।
यहाँ उदाहरण है।
Cart Old Tax = 4.21
Custom Tax = 2
New Tax = 4.21 + 2 = 6
नीचे दिए गए स्क्रीनशॉट की जाँच करें।
मुझे इसे प्रोग्रामेटिक रूप से करने की आवश्यकता है।
मैं प्रोग्रामआउट कार्ट में चेकआउट के लिए कस्टम टैक्स राशि जोड़ना चाहता हूं।
यहाँ उदाहरण है।
Cart Old Tax = 4.21
Custom Tax = 2
New Tax = 4.21 + 2 = 6
नीचे दिए गए स्क्रीनशॉट की जाँच करें।
मुझे इसे प्रोग्रामेटिक रूप से करने की आवश्यकता है।
जवाबों:
आप घटना को देख सकते हैं sales_quote_address_collect_totals_after
और इसे प्राप्त कर सकते हैं। इसके लिए, आपको एक मॉड्यूल सेटअप करने और किसी ईवेंट को कॉन्फ़िगर करने की आवश्यकता है। चलो का कहना है कि हमारे मॉड्यूल है MStack_Exchange
।
फ़ाइल: app\code\MStack\Exchange\etc\events.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="sales_quote_address_collect_totals_after">
<observer name="changeTaxTotal" instance="MStack\Exchange\Observer\ChangeTaxTotal"/>
</event>
</config>
फ़ाइल: app\code\MStack\Exchange\Observer\ChangeTaxTotal.php
<?php
namespace MStack\Exchange\Observer;
use \Magento\Framework\Event\ObserverInterface;
use \Magento\Framework\Event\Observer;
class ChangeTaxTotal implements ObserverInterface
{
public $additionalTaxAmt = 2;
public function execute(Observer $observer)
{
/** @var Magento\Quote\Model\Quote\Address\Total */
$total = $observer->getData('total');
//make sure tax value exist
if (count($total->getAppliedTaxes()) > 0) {
$total->addTotalAmount('tax', $this->additionalTaxAmt);
}
return $this;
}
}
यहां महत्वपूर्ण कॉल है: $total->addTotalAmount('tax', $this->additionalTaxAmt);
। यह 2
मौजूदा कर राशि के साथ जुड़ जाएगा और मुझे लगता है कि आपको अपने मामले में यही चाहिए। इसलिए आपको जो करने की आवश्यकता है, उसे $this->additionalTaxAmt
अपने कर बफर मूल्य से बदलें ।
sales_quote_address_collect_totals_after
कुल गणना के तुरंत बाद यह घटना आग की भेंट चढ़ गई थी और इस प्रकार यह खेलने के लिए एकदम सही जगह बन गई।
यदि आप यह जानने के लिए उत्सुक हैं कि यह कुल गणना कहां हो रही है, तो आपको Magento\Quote\Model\Quote\TotalsCollector::collect()
और Magento\Quote\Model\Quote\TotalsCollector::collectAddressTotals()
तरीकों पर गौर करने की आवश्यकता है ।
custom amount
से आए हो?