2012-06-08 14 views
6

मैं किसी दिए गए पोस्टकोड के लिए कर दर (प्रतिशत, मुद्रा नहीं) प्राप्त करने का प्रयास कर रहा हूं, इसलिए मैं इसे किसी तृतीय-पक्ष उद्धरण पीडीएफ प्रिंटआउट में प्रदर्शित कर सकता हूं ("उद्धरण" से कोई संबंध नहीं Magento शॉपिंग कार्ट प्री-चेकआउट के रूप में उपयोग करता है)। जबकि मैं अभी भी Magento के लिए अपेक्षाकृत नया हूं, ऐसा लगता है कि getRateRequest() और getRate() दो मुख्य कार्य हैं जो सभी चर (उत्पाद कर वर्ग, ग्राहक कर वर्ग, आदि) के आधार पर कर दर प्राप्त करते हैं।getRate() और Magento कर प्रतिशत

चूंकि यह किसी तृतीय-पक्ष एक्सटेंशन के लिए है और हमारे सभी उत्पाद कर योग्य हैं, मुझे लगा कि मैं सही वैरिएन ऑब्जेक्ट इनपुट के साथ getRate() का उपयोग करूंगा और यह कर दर वापस कर देगा। एक हफ्ते के परीक्षण और त्रुटि के बाद मुझे पता नहीं लगा कि मुझे हमेशा शून्य की दर क्यों मिल रही है। मैंने पुष्टि की है कि मैं getRate() फ़ंक्शन को कॉल कर रहा हूं और यह देश और ग्राहक/उत्पाद श्रेणी आईडी के लिए पहले() कथन की जांच करने से पहले शून्य से वापस नहीं लौटा रहा है। इसके अलावा मैंने पुष्टि की है कि सभी चर पारित हो रहे हैं और GetRate() फ़ंक्शन में ही पहुंच योग्य हैं।

मैंने नीचे इनपुट (getRateRequest() के आउटपुट के आधार पर एक ऑब्जेक्ट बनाया है जिसे मैं getRate() के साथ कॉल करता हूं और उम्मीद करता हूं कि कोई मेरे डेटा इनपुट में गलत क्या हो सकता है या GetRate क्यों() फ़ंक्शन हमेशा शून्य का परिणाम लौटा रहा है। (मैं वास्तव में नीचे $ चर के साथ सेट कर रहा हूं, वे तो बस पहले परिभाषित कर रहे हैं और अपने परीक्षण मामले में से एक मान से नीचे हैं)

// UPDATED CODE (variable values come from 3rd party quote extension) 

    $country = 'US'; // use short country code 
    $region = '12'; // must be numeric! 
    $postcode = '95050'; 
    // our quote extension stores the customer id ('2') which we use to get the tax class 
    $customer = Mage::getModel('customer/customer')->load('2'); 
    $custTax = $customer->getTaxClassId(); 

    $TaxRequest = new Varien_Object(); 
    $TaxRequest->setCountryId($country); 
    $TaxRequest->setRegionId($region); 
    $TaxRequest->setPostcode($postcode); 
    $TaxRequest->setStore(Mage::app()->getStore()); 
    $TaxRequest->setCustomerClassId($custTax); 
    $TaxRequest->setProductClassId(2); // 2=taxable id (all our products are taxable) 

    $taxCalculationModel = Mage::getSingleton('tax/calculation'); 
    $rate = $taxCalculationModel->getRate($TaxRequest); 

मेरे बैकअप योजना सिर्फ एक प्रत्यक्ष एसक्यूएल देखने सूत्र क्या करना है, हालांकि कि शायद होगा थोड़ा गन्दा हो जाओ। चूंकि हमारी वेब डेवलपमेंट टीम ने वास्तव में अच्छे कोडिंग मानकों का पालन नहीं किया है, इसलिए एक बार प्रारंभिक लॉन्च फ़िक्सेस (इनके सभी 4 पृष्ठ) में एक बार फिर भी मेरे भविष्य में एक बार फिर से लिखना है।

किसी भी मदद के लिए धन्यवाद और इसे पढ़ने के लिए समय लेना।

$TaxRequest->setRegionId(California); 

$TaxRequest->setRegionId($stateId); 

जहां $ stateId सांख्यिक क्षेत्र आईडी है: -

संपादित स्टैक ओवरफ़्लो यदि आप बदलना भयानक है :)

उत्तर

3

। आपका कोड तब काम करना चाहिए।

+1

रवींद्र कोशिश कर सकते हैं! एक साल में क्या अंतर होता है, हमारी साइट के इस हिस्से को फिर से काम कर रहा है और इस बार थोड़ा और ज्ञान के साथ अपने स्वयं के प्रश्न में आया। संख्यात्मक राज्य आईडी, देश कोड, और getStore() में पारित करने के लिए मेरे कोड को अपडेट किया गया और यह ठीक काम करता है। धन्यवाद! –

6

इस

$store = Mage::app()->getStore('default'); 
$request = Mage::getSingleton('tax/calculation')->getRateRequest(null, null, null, $store); 
$taxclassid = $product->getData('tax_class_id'); 
$percent = Mage::getSingleton('tax/calculation')->getRate($request->setProductClassId($taxclassid)); 
+0

विचार के लिए धन्यवाद! हालांकि इस मामले में मुझे नहीं लगता कि यह हमेशा हमें वह देगा जो मैं ढूंढ रहा हूं। हमारे पास कुछ ग्राहक खाते हैं जो पुनर्विक्रय हैं और शुल्क नहीं लिया जाता है, ऐसा लगता है कि यह कोड केवल एक उत्पाद के लिए है और ग्राहक कर वर्ग को खाते में नहीं लेता है। –