マジェント2 -引用合計コレクション
何ですか.
引用合計コレクションは、magentoの重要なプロセスです.
このプロセスも存在する
Invoice
and Creditmemo
しかし、我々はそれがどのように実装されるかについて詳細を見るだけですQuote
あなたがより頻繁に相互作用する1つであるオブジェクト.このプロセスは、magentoで非常に頻繁です.基本的にはカートで変更を行う度に実行される.次のようになります.Quote
モデルafterLoad
イベント\Magento\InstantPurchase\Model\PlaceOrder::placeOrder
\Magento\Quote\Model\Quote\Item\Repository::save
何用ですか.
その過程の目的は、そのために合計を集めるために
Quote
オブジェクト.The
Quote
オブジェクトは複雑で、多くの価格情報を保持しますgrand_total
, subtotal
, subtotal_with_discount
, など)これらの異なる価格の値は、特定のルールを使用して計算され、異なる影響を受けている.
これはトータルコレクションが何をするかです.
どのように実装されていますか?
The
Quote
インスタンスは主要な俳優ですが、彼は一人ではありません.また、あるTotalsCollector
オブジェクトと多くTotalCollector
その役割を果たすオブジェクト.オブジェクトが何を所有しているかを見ましょう.
Quote
オブジェクトはTotalsCollector
. TotalsCollector
オブジェクトはTotalCollector
. TotalsCollector
が原因です.\Magento\Quote\Model\Quote\TotalsCollector::collect
. \Magento\Quote\Model\Quote\TotalsCollector::collectAddressTotals
. The
TotalsCollector
グローバルを開始するTotal
オブジェクト\Magento\Quote\Model\Quote\Address\Total
)./** @var \Magento\Quote\Model\Quote\Address\Total $total */
$total = $this->totalFactory->create(\Magento\Quote\Model\Quote\Address\Total::class);
アドレスごとにTotalsCollector
は新しいTotal
グローバルを豊かにするためのオブジェクトTotal
オブジェクト.これは
collect
各方法TotalCollector
, 結果Total
現在のアドレスのデータが含まれます.これらはデータです.
shipping_amount
base_shipping_amount
shipping_description
subtotal
base_subtotal
subtotal_with_discount
base_subtotal_with_discount
grand_total
base_grand_total
Total
オブジェクト.これはsubtotal
例えば、$total->setSubtotal((float)$total->getSubtotal() + $addressTotal->getSubtotal());
または単にいずれかのメインで同じデータを置き換えるにはTotal
オブジェクト.これはshipping_amount
例えば、$total->setShippingAmount($addressTotal->getShippingAmount());
があるTotalCollector
オブジェクトTotalsCollector
本来はMagento\Quote\Model\Quote\Address\Total\Subtotal
Magento\Tax\Model\Sales\Total\Quote\Subtotal
Magento\Weee\Model\Total\Quote\Weee
Magento\SalesRule\Model\Quote\Discount
Magento\Quote\Model\Quote\Address\Total\Shipping
Magento\Tax\Model\Sales\Total\Quote\Shipping
Magento\SalesRule\Model\Quote\Address\Total\ShippingDiscount
Magento\Tax\Model\Sales\Total\Quote\Tax
Magento\Weee\Model\Total\Quote\WeeeTax
Magento\Quote\Model\Quote\Address\Total\Grand
どのように構成されていますか?
リスト
TotalCollector
はXML設定から読み込まれます.参照
\Magento\Quote\Model\Quote\Address\Total\Collector::__construct
and \Magento\Sales\Model\Config\Ordered::_initCollectors
.Everythingは
sales.xml
ファイル.次のようなノード要素があります.
<section name="quote">
MagenToCount引用モジュールでは<section name="quote">
<group name="totals">
<item name="subtotal" instance="Magento\Quote\Model\Quote\Address\Total\Subtotal" sort_order="100"/>
<item name="shipping" instance="Magento\Quote\Model\Quote\Address\Total\Shipping" sort_order="350"/>
<item name="grand_total" instance="Magento\Quote\Model\Quote\Address\Total\Grand" sort_order="550"/>
</group>
</section>
そして、MegenToRangeのsalesruleモジュールでは、<section name="quote">
<group name="totals">
<item name="discount" instance="Magento\SalesRule\Model\Quote\Discount" sort_order="300"/>
<item name="shipping_discount" instance="Magento\SalesRule\Model\Quote\Address\Total\ShippingDiscount" sort_order="400"/>
</group>
</section>
それからMenenToRound税モジュールでは <section name="quote">
<group name="totals">
<item name="tax_subtotal" instance="Magento\Tax\Model\Sales\Total\Quote\Subtotal" sort_order="200"/>
<item name="tax_shipping" instance="Magento\Tax\Model\Sales\Total\Quote\Shipping" sort_order="375"/>
<item name="tax" instance="Magento\Tax\Model\Sales\Total\Quote\Tax" sort_order="450"/>
</group>
</section>
それから、MegentoClose Weeeモジュールでは<section name="quote">
<group name="totals">
<item name="weee" instance="Magento\Weee\Model\Total\Quote\Weee" sort_order="225"/>
<item name="weee_tax" instance="Magento\Weee\Model\Total\Quote\WeeeTax" sort_order="460"/>
</group>
</section>
私がこれらの構成を混ぜるならば、我々はそれを持ちます:<section name="quote">
<group name="totals">
<item name="subtotal" instance="Magento\Quote\Model\Quote\Address\Total\Subtotal" sort_order="100"/>
<item name="tax_subtotal" instance="Magento\Tax\Model\Sales\Total\Quote\Subtotal" sort_order="200"/>
<item name="weee" instance="Magento\Weee\Model\Total\Quote\Weee" sort_order="225"/>
<item name="discount" instance="Magento\SalesRule\Model\Quote\Discount" sort_order="300"/>
<item name="shipping" instance="Magento\Quote\Model\Quote\Address\Total\Shipping" sort_order="350"/>
<item name="tax_shipping" instance="Magento\Tax\Model\Sales\Total\Quote\Shipping" sort_order="375"/>
<item name="shipping_discount" instance="Magento\SalesRule\Model\Quote\Address\Total\ShippingDiscount" sort_order="400"/>
<item name="tax" instance="Magento\Tax\Model\Sales\Total\Quote\Tax" sort_order="450"/>
<item name="weee_tax" instance="Magento\Weee\Model\Total\Quote\WeeeTax" sort_order="460"/>
<item name="grand_total" instance="Magento\Quote\Model\Quote\Address\Total\Grand" sort_order="550"/>
</group>
</section>
OrderRequestインボイスとOrderRangeクレジットメモについては、同じ種類のXML宣言を見つけます.請求書に対しては
<section name="order_invoice">
<group name="totals">
<item name="subtotal" instance="Magento\Sales\Model\Order\Invoice\Total\Subtotal" sort_order="50"/>
<item name="discount" instance="Magento\Sales\Model\Order\Invoice\Total\Discount" sort_order="100"/>
<item name="shipping" instance="Magento\Sales\Model\Order\Invoice\Total\Shipping" sort_order="150"/>
<item name="tax" instance="Magento\Sales\Model\Order\Invoice\Total\Tax" sort_order="200"/>
<item name="cost_total" instance="Magento\Sales\Model\Order\Invoice\Total\Cost" sort_order="250"/>
<item name="grand_total" instance="Magento\Sales\Model\Order\Invoice\Total\Grand" sort_order="350"/>
</group>
</section>
を返します.<section name="order_creditmemo">
<group name="totals">
<item name="subtotal" instance="Magento\Sales\Model\Order\Creditmemo\Total\Subtotal" sort_order="50"/>
<item name="discount" instance="Magento\Sales\Model\Order\Creditmemo\Total\Discount" sort_order="150"/>
<item name="shipping" instance="Magento\Sales\Model\Order\Creditmemo\Total\Shipping" sort_order="200"/>
<item name="tax" instance="Magento\Sales\Model\Order\Creditmemo\Total\Tax" sort_order="250"/>
<item name="cost_total" instance="Magento\Sales\Model\Order\Creditmemo\Total\Cost" sort_order="300"/>
<item name="grand_total" instance="Magento\Sales\Model\Order\Creditmemo\Total\Grand" sort_order="400"/>
</group>
</section>
結論
トータルコレクションは、Magentoの重要なプロセスであり、それは確かにどのように少し動作するかを知るために良いですので、1つのポイントまたは別のマジェンタ開発者として、それと相互作用するでしょう.Magentoでは、カートのアイテムではなく、その合計価格に影響を与えるものを扱うためにネイティブで使用されます.これは、どのように出荷され、また、WEE税(廃棄物電気電子機器)ですが、あなたもあなた自身のニーズを使用していくつかの日を想像することができます.
Reference
この問題について(マジェント2 -引用合計コレクション), 我々は、より多くの情報をここで見つけました https://dev.to/berliozd/magento-2-quote-totals-collection-5h36テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol