2012-06-08 9 views
6

特定の郵便番号の税率(通貨ではないパーセント)を取得しようとしていますので、サードパーティの見積もりで表示することができます。 Magentoはショッピングカートの事前チェックアウトとして使用します)。私はまだMagentoには比較的新しいですが、getRateRequest()とgetRate()はすべての変数(製品税クラス、顧客税クラスなど)に基づいて税率を取得する2つの主な機能です。getRate()とMagento tax percentage

これはサードパーティの拡張機能であり、当社のすべての製品に課税対象であるため、正しいVarien Object入力でgetRate()を使用すると税率が返されます。 1週間の試行錯誤の末、なぜ私はいつもゼロの割合を得ているのか分かりません。私はgetRate()関数を呼び出していることを確認しました。最初のif()ステートメントからCountryおよびCustomer/ProductクラスIDをチェックしてもゼロが返されていないことを確認しました。さらに、すべての変数が渡され、getRate()関数自体でアクセス可能であることを確認しました。

getRateRequest()の出力に基づいて、以下の入力を持つオブジェクトを作成しました。私はgetRate()を呼び出して、誰かが自分のデータ入力に何が問題なのか、なぜgetRate ()関数は常にゼロの結果を返します。私のバックアップ計画は、それはおそらくされますが、単に直接SQL検索式を行うことです

// 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); 

(私は実際に彼らはちょうど先にアップ定義されており、私のテストケースの値のいずれかが以下にされ、以下の$変数を設定しています)少し乱雑になる。私たちのWeb開発チームはコーディングの基準を厳密に守っていないので、最初のローンチの修正があったら、最終的なサイトの書き換えは今後もすべて(4ページすべて)になります。

ご協力いただき、ありがとうございました。

EDIT - スタックオーバーフローが素晴らしいです:)

答えて

3

を変更した場合:

$TaxRequest->setRegionId(California); 

$ STATEIDが数値領域IDである
$TaxRequest->setRegionId($stateId); 

へ。あなたのコードは、次に動作するはずです。

+1

Dohのを試すことができます!何年もの違いがあり、私たちのサイトのこの部分を再加工し、今度はもう少し知識を持って自分の質問に遭遇しました。 数字の州ID、国コードを反映するように私のコードを更新し、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

アイデアありがとう!しかし、この場合、私はいつも私が探しているものを私に与えるとは思わない。再販されて課税されない特定の顧客口座があります。このコードは製品専用であり、顧客税クラスを考慮していないようです。 –

関連する問題