1.9およびphp7で作業しています。Paypalの疑わしい詐欺でこの問題を検出しました(差額による)。
フロントエンドですべて正しい(税金を適用); ただし、チェックアウトと計算では、magentoは税抜きの総計を使用します。
実際の誤った順序の計算:
税抜きの製品価格+税込みの送料=支払総額
php5に切り替えて、計算が正しい。
アイデアは?
ありがとう!
1.9およびphp7で作業しています。Paypalの疑わしい詐欺でこの問題を検出しました(差額による)。
フロントエンドですべて正しい(税金を適用); ただし、チェックアウトと計算では、magentoは税抜きの総計を使用します。
実際の誤った順序の計算:
税抜きの製品価格+税込みの送料=支払総額
php5に切り替えて、計算が正しい。
アイデアは?
ありがとう!
回答:
php7の合計計算でmagentoの問題を解決するmagentoモジュールを作成しました。私が特に経験した問題は、税金が総計に2回追加されたことです、アマゾン支払いのことです、amazonpaymentsのチェックアウトページです。
この投稿でarchigrafixによって提供された答え(/magento//a/97107/35665)で私の問題を解決しました-これは単にモジュールに詰められた修正です。
これが何らかの形で役立つかどうかは本当にわかりませんが、検討する必要があります。
それは可能です collecttotals
モデルの注文の順序が異なる grand_totalの後に税金が注文/適用さ
次のように、これが問題であるかどうかをテストできます。(これには、コアファイルを調整してデバッグ情報を取得する必要があります。ライブサイトでこれを試さないでください!)
以下にあるメソッドを編集します。
Mage_Sales_Model_Quote_Address::collecttotals
メソッドに1行追加します。これにより、モデルが処理されたときに出力できるようになります。
public function collectTotals()
{
Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_before', array($this->_eventObject => $this));
foreach ($this->getTotalCollector()->getCollectors() as $model) {
mage::log($model->getCode()); // <===== ADD THIS LINE
$model->collect($this);
}
Mage::dispatchEvent($this->_eventPrefix . '_collect_totals_after', array($this->_eventObject => $this));
return $this;
}
ロギングが有効になっていることを確認してください。
コンソールを介してログファイルを末尾にします。 tail -f system.log
フロントエンド経由で問題を再現します。
ログに次のようなエントリを取得します(これはバニラ1.9.2.2から-他のエントリがある場合があります)
2015-12-21T05:54:12+00:00 DEBUG (7): nominal
2015-12-21T05:54:12+00:00 DEBUG (7): subtotal
2015-12-21T05:54:12+00:00 DEBUG (7): msrp
2015-12-21T05:54:12+00:00 DEBUG (7): freeshipping
2015-12-21T05:54:12+00:00 DEBUG (7): tax_subtotal
2015-12-21T05:54:12+00:00 DEBUG (7): weee
2015-12-21T05:54:12+00:00 DEBUG (7): shipping
2015-12-21T05:54:12+00:00 DEBUG (7): tax_shipping
2015-12-21T05:54:12+00:00 DEBUG (7): discount
2015-12-21T05:54:12+00:00 DEBUG (7): tax
2015-12-21T05:54:12+00:00 DEBUG (7): grand_total
繰り返し表示されるので、開始点と終了点を確認するだけで、パターンが見やすくなります。
上記の最後の2つのエントリに注意してください。税金はgrand_totalの前にあります。それは GRAND_TOTALが適用される税金を持っていないので、この順序は調子が悪いです、そして税はGRAND_TOTAL後に表示されている可能性が。
編集:
わかりましたので、参照されている質問が実際に問題になる集団の分類を指しているのを見ませんでした。私はそれが問題かもしれないと疑っていましたが、PHP7でこれを自分でテストしていません
解決策はありますが、あまり良くありません。コレクターにモデルを挿入するストアに配置された新しい拡張機能は、メモする必要があり、さらに並べ替えに追加する必要があります。そうしないと、事態がさらに悪化する可能性があります。今後のメンテナンスの問題になる可能性があります。
単純に<sort_order>
合計構成に特定のものを配置することにより、ソート順を強制します。これは、各コレクターの順序を指定するconfig.xmlのみを持つ独自の拡張機能を介して実行できます。
config.xmlには、次のようなディレクティブがあります。
<sales>
<quote>
<totals>
<nominal>
<sort_order>100</sort_order>
</nominal>
<subtotal>
<sort_order>200</sort_order>
</subtotal>
<msrp>
<sort_order>300</sort_order>
</msrp>
<freeshipping>
<sort_order>400</sort_order>
</freeshipping>
......
insert each collector model with a sort directive
......
</totals>
</quote>
各ソートディレクティブ間に大きなギャップを使用して、今後追加のスペースを挿入できるようにします。
前述のとおり、あまりエレガントではありませんが、差し迫った問題を解決できます。
また、システムには他のコレクターディレクティブがあるため、間違っている/調整が必要な場合もあります。
コア販売拡張機能config.xmlを確認し、 <totals>
そこにあります:
<order_invoice>
<order_creditmemo>
<pdf>
他の拡張機能には、コア/ 3サードパーティである可能性があります
お役に立てば幸いです。
PS:PHP7ではこれをテストしていません。sort_orderディレクティブの配置がphp5.xの下で機能することを知っています。
Magento 1.6.2およびPHP 7.0.2では、この方法で解決しました。
1-最初にローカルconfig.xmlを作成しました:/app/code/core/Mage/Sales/etc/config.xmlを/app/code/local/Mage/Sales/etc/config.xmlにコピーしました
今では正しく計算されます: