特定の郵便番号の税率(通貨ではないパーセント)を取得しようとしていますので、サードパーティの見積もりで表示することができます。 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 - スタックオーバーフローが素晴らしいです:)
Dohのを試すことができます!何年もの違いがあり、私たちのサイトのこの部分を再加工し、今度はもう少し知識を持って自分の質問に遭遇しました。 数字の州ID、国コードを反映するように私のコードを更新し、getStore()で渡しました。うまくいきました。ありがとうございました! –