26 \
Magento\Quote\Api\Data\ShippingAssignmentInterface $shippingAssignment,
29 \Magento\Quote\Model\Quote\Address\Total\AbstractTotal::collect(
$quote, $shippingAssignment,
$total);
30 $this->_store =
$quote->getStore();
31 if (!$this->weeeData->isEnabled($this->_store)) {
35 $items = $shippingAssignment->getItems();
41 if (!$this->weeeData->isTaxable($this->_store)) {
43 $weeeTotal =
$total->getWeeeTotalExclTax();
44 $weeeBaseTotal =
$total->getWeeeBaseTotalExclTax();
47 $this->
processTotalAmount($total, $weeeTotal, $weeeBaseTotal, $weeeTotal, $weeeBaseTotal);
51 $extraTaxableDetails =
$total->getExtraTaxableDetails();
53 if (isset($extraTaxableDetails[self::ITEM_TYPE])) {
61 $weeeCodeToWeeeTaxDetailsMap = [];
62 foreach ($extraTaxableDetails[self::ITEM_TYPE] as $weeeAttributesTaxDetails) {
63 foreach ($weeeAttributesTaxDetails as $weeeTaxDetails) {
64 $weeeCode = $weeeTaxDetails[
'code'];
65 $weeeCodeToWeeeTaxDetailsMap[$weeeCode] = $weeeTaxDetails;
70 foreach ($itemToWeeeCodeMap as $mapping) {
71 $item = $mapping[
'item'];
73 $this->weeeData->setApplied(
$item, []);
76 $totalValueInclTax = 0;
77 $baseTotalValueInclTax = 0;
78 $totalRowValueInclTax = 0;
79 $baseTotalRowValueInclTax = 0;
81 $totalValueExclTax = 0;
82 $baseTotalValueExclTax = 0;
83 $totalRowValueExclTax = 0;
84 $baseTotalRowValueExclTax = 0;
87 foreach ($mapping[
'weeeCodes'] as $weeeCode) {
88 if (!array_key_exists($weeeCode, $weeeCodeToWeeeTaxDetailsMap)) {
92 $weeeTaxDetails = $weeeCodeToWeeeTaxDetailsMap[$weeeCode];
105 $totalValueInclTax += $valueInclTax;
106 $baseTotalValueInclTax += $baseValueInclTax;
107 $totalRowValueInclTax += $rowValueInclTax;
108 $baseTotalRowValueInclTax += $baseRowValueInclTax;
110 $totalValueExclTax += $valueExclTax;
111 $baseTotalValueExclTax += $baseValueExclTax;
112 $totalRowValueExclTax += $rowValueExclTax;
113 $baseTotalRowValueExclTax += $baseRowValueExclTax;
117 'base_amount' => $baseValueExclTax,
118 'amount' => $valueExclTax,
119 'row_amount' => $rowValueExclTax,
120 'base_row_amount' => $baseRowValueExclTax,
121 'base_amount_incl_tax' => $baseValueInclTax,
122 'amount_incl_tax' => $valueInclTax,
123 'row_amount_incl_tax' => $rowValueInclTax,
124 'base_row_amount_incl_tax' => $baseRowValueInclTax,
128 $item->setWeeeTaxAppliedAmount($totalValueExclTax)
129 ->setBaseWeeeTaxAppliedAmount($baseTotalValueExclTax)
130 ->setWeeeTaxAppliedRowAmount($totalRowValueExclTax)
131 ->setBaseWeeeTaxAppliedRowAmnt($baseTotalRowValueExclTax);
133 $item->setWeeeTaxAppliedAmountInclTax($totalValueInclTax)
134 ->setBaseWeeeTaxAppliedAmountInclTax($baseTotalValueInclTax)
135 ->setWeeeTaxAppliedRowAmountInclTax($totalRowValueInclTax)
136 ->setBaseWeeeTaxAppliedRowAmntInclTax($baseTotalRowValueInclTax);
140 $totalRowValueExclTax,
141 $baseTotalRowValueExclTax,
142 $totalRowValueInclTax,
143 $baseTotalRowValueInclTax
146 $this->weeeData->setApplied(
$item, array_merge($this->weeeData->getApplied(
$item), $productTaxes));
184 $key = spl_object_hash(
$item);
185 if (!array_key_exists($key, $itemToCodeMap)) {
187 $itemToCodeMap[$key] = [
'item' =>
$item,
'weeeCodes' => [$weeeCode]];
190 $itemToCodeMap[$key][
'weeeCodes'][] = $weeeCode;
193 return $itemToCodeMap;
209 $baseRowValueExclTax,
213 if ($this->weeeData->includeInSubtotal($this->_store)) {
214 $total->addTotalAmount(
'subtotal', $rowValueExclTax);
215 $total->addBaseTotalAmount(
'subtotal', $baseRowValueExclTax);
217 $total->addTotalAmount(
'weee', $rowValueExclTax);
218 $total->addBaseTotalAmount(
'weee', $baseRowValueExclTax);
221 $total->setSubtotalInclTax(
$total->getSubtotalInclTax() + $rowValueInclTax);
222 $total->setBaseSubtotalInclTax(
$total->getBaseSubtotalInclTax() + $baseRowValueInclTax);
238 $weeeTotal = $this->weeeData->getTotalAmounts(
$items,
$quote->getStore());
242 'title' =>
__(
'FPT'),
243 'value' => $weeeTotal,
fetch(\Magento\Quote\Model\Quote $quote, \Magento\Quote\Model\Quote\Address\Total $total)
const KEY_TAX_DETAILS_BASE_PRICE_EXCL_TAX
createItemToWeeeCodeMapping($weeeCodeToItemMap)
const KEY_TAX_DETAILS_BASE_PRICE_INCL_TAX
const KEY_TAX_DETAILS_BASE_ROW_TOTAL
const KEY_TAX_DETAILS_PRICE_EXCL_TAX
const KEY_TAX_DETAILS_ROW_TOTAL_INCL_TAX
processTotalAmount( $total, $rowValueExclTax, $baseRowValueExclTax, $rowValueInclTax, $baseRowValueInclTax)
const KEY_TAX_DETAILS_ROW_TOTAL
const KEY_TAX_DETAILS_BASE_ROW_TOTAL_INCL_TAX
const KEY_TAX_DETAILS_PRICE_INCL_TAX
collect(\Magento\Quote\Model\Quote $quote, \Magento\Quote\Api\Data\ShippingAssignmentInterface $shippingAssignment, \Magento\Quote\Model\Quote\Address\Total $total)