14 class Weee extends \Magento\Sales\Model\Order\Creditmemo\Total\AbstractTotal
43 Json $serializer =
null 45 $this->_weeeData = $weeeData;
47 parent::__construct(
$data);
65 $baseTotalWeeeAmount = 0;
66 $totalWeeeAmountInclTax = 0;
67 $baseTotalWeeeAmountInclTax = 0;
69 $baseTotalTaxAmount = 0;
79 $ratio =
$item->getQty() / $orderItemQty;
81 $orderItemWeeeAmountExclTax =
$orderItem->getWeeeTaxAppliedRowAmount();
82 $orderItemBaseWeeeAmountExclTax =
$orderItem->getBaseWeeeTaxAppliedRowAmnt();
83 $weeeAmountExclTax =
$creditmemo->roundPrice($orderItemWeeeAmountExclTax * $ratio);
84 $baseWeeeAmountExclTax =
$creditmemo->roundPrice($orderItemBaseWeeeAmountExclTax * $ratio,
'base');
86 $orderItemWeeeAmountInclTax = $this->_weeeData->getRowWeeeTaxInclTax(
$orderItem);
87 $orderItemBaseWeeeAmountInclTax = $this->_weeeData->getBaseRowWeeeTaxInclTax(
$orderItem);
88 $weeeAmountInclTax =
$creditmemo->roundPrice($orderItemWeeeAmountInclTax * $ratio);
89 $baseWeeeAmountInclTax =
$creditmemo->roundPrice($orderItemBaseWeeeAmountInclTax * $ratio,
'base');
91 $itemTaxAmount = $weeeAmountInclTax - $weeeAmountExclTax;
92 $itemBaseTaxAmount = $baseWeeeAmountInclTax - $baseWeeeAmountExclTax;
94 $weeeAmountAvailable = $this->_weeeData->getWeeeAmountInvoiced(
$orderItem) -
95 $this->_weeeData->getWeeeAmountRefunded(
$orderItem);
96 $baseWeeeAmountAvailable = $this->_weeeData->getBaseWeeeAmountInvoiced(
$orderItem) -
97 $this->_weeeData->getBaseWeeeAmountRefunded(
$orderItem);
98 $weeeTaxAmountAvailable = $this->_weeeData->getWeeeTaxAmountInvoiced(
$orderItem) -
99 $this->_weeeData->getWeeeTaxAmountRefunded(
$orderItem);
100 $baseWeeeTaxAmountAvailable = $this->_weeeData->getBaseWeeeTaxAmountInvoiced(
$orderItem) -
101 $this->_weeeData->getBaseWeeeTaxAmountRefunded(
$orderItem);
103 if (
$item->isLast()) {
104 $weeeAmountExclTax = $weeeAmountAvailable;
105 $baseWeeeAmountExclTax = $baseWeeeAmountAvailable;
106 $itemTaxAmount = $weeeTaxAmountAvailable;
107 $itemBaseTaxAmount = $baseWeeeTaxAmountAvailable;
109 $weeeAmountExclTax = min($weeeAmountExclTax, $weeeAmountAvailable);
110 $baseWeeeAmountExclTax = min($baseWeeeAmountExclTax, $baseWeeeAmountAvailable);
111 $itemTaxAmount = min($itemTaxAmount, $weeeTaxAmountAvailable);
112 $itemBaseTaxAmount = min($itemBaseTaxAmount, $baseWeeeTaxAmountAvailable);
115 $totalWeeeAmount += $weeeAmountExclTax;
116 $baseTotalWeeeAmount += $baseWeeeAmountExclTax;
118 $item->setWeeeTaxAppliedRowAmount($weeeAmountExclTax);
119 $item->setBaseWeeeTaxAppliedRowAmount($baseWeeeAmountExclTax);
121 $totalTaxAmount += $itemTaxAmount;
122 $baseTotalTaxAmount += $itemBaseTaxAmount;
126 $orderItemTaxAmount = $orderItemWeeeAmountInclTax - $orderItemWeeeAmountExclTax;
127 if ($orderItemTaxAmount != 0) {
129 if (
$item->getTaxRatio()) {
130 $taxRatio = $this->serializer->unserialize(
$item->getTaxRatio());
133 $item->setTaxRatio($this->serializer->serialize($taxRatio));
136 $totalWeeeAmountInclTax += $weeeAmountInclTax;
137 $baseTotalWeeeAmountInclTax += $baseWeeeAmountInclTax;
140 $applied = $this->_weeeData->getApplied(
$orderItem);
141 foreach ($applied as $one) {
142 $title = (string)$one[
'title'];
143 $one[
'base_row_amount'] =
$creditmemo->roundPrice($one[
'base_row_amount'] * $ratio,
$title .
'_base');
144 $one[
'row_amount'] =
$creditmemo->roundPrice($one[
'row_amount'] * $ratio,
$title);
145 $one[
'base_row_amount_incl_tax'] =
$creditmemo->roundPrice(
146 $one[
'base_row_amount_incl_tax'] * $ratio,
149 $one[
'row_amount_incl_tax'] =
$creditmemo->roundPrice($one[
'row_amount_incl_tax'] * $ratio,
$title);
151 $newApplied[] = $one;
153 $this->_weeeData->setApplied(
$item, $newApplied);
157 $applied = $this->_weeeData->getApplied(
$orderItem);
158 foreach ($applied as $one) {
159 if (isset($one[WeeeHelper::KEY_BASE_WEEE_AMOUNT_REFUNDED])) {
160 $one[WeeeHelper::KEY_BASE_WEEE_AMOUNT_REFUNDED] =
161 $one[WeeeHelper::KEY_BASE_WEEE_AMOUNT_REFUNDED] + $baseWeeeAmountExclTax;
163 $one[WeeeHelper::KEY_BASE_WEEE_AMOUNT_REFUNDED] = $baseWeeeAmountExclTax;
165 if (isset($one[WeeeHelper::KEY_WEEE_AMOUNT_REFUNDED])) {
166 $one[WeeeHelper::KEY_WEEE_AMOUNT_REFUNDED] =
167 $one[WeeeHelper::KEY_WEEE_AMOUNT_REFUNDED] + $weeeAmountExclTax;
169 $one[WeeeHelper::KEY_WEEE_AMOUNT_REFUNDED] = $weeeAmountExclTax;
171 if (isset($one[WeeeHelper::KEY_BASE_WEEE_TAX_AMOUNT_REFUNDED])) {
172 $one[WeeeHelper::KEY_BASE_WEEE_TAX_AMOUNT_REFUNDED] =
173 $one[WeeeHelper::KEY_BASE_WEEE_TAX_AMOUNT_REFUNDED] + $itemBaseTaxAmount;
175 $one[WeeeHelper::KEY_BASE_WEEE_TAX_AMOUNT_REFUNDED] = $itemBaseTaxAmount;
177 if (isset($one[WeeeHelper::KEY_WEEE_TAX_AMOUNT_REFUNDED])) {
178 $one[WeeeHelper::KEY_WEEE_TAX_AMOUNT_REFUNDED] =
179 $one[WeeeHelper::KEY_WEEE_TAX_AMOUNT_REFUNDED] + $itemTaxAmount;
181 $one[WeeeHelper::KEY_WEEE_TAX_AMOUNT_REFUNDED] = $itemTaxAmount;
184 $newApplied[] = $one;
186 $this->_weeeData->setApplied(
$orderItem, $newApplied);
188 $item->setWeeeTaxRowDisposition(
$item->getWeeeTaxDisposition() *
$item->getQty());
189 $item->setBaseWeeeTaxRowDisposition(
$item->getBaseWeeeTaxDisposition() *
$item->getQty());
192 if ($this->_weeeData->includeInSubtotal(
$store)) {
201 $creditmemo->getSubtotalInclTax() + $totalWeeeAmountInclTax
204 $creditmemo->getBaseSubtotalInclTax() + $baseTotalWeeeAmountInclTax
208 $creditmemo->setBaseGrandTotal(
$creditmemo->getBaseGrandTotal() + $baseTotalWeeeAmount + $baseTotalTaxAmount);
collect(Creditmemo $creditmemo)
__construct(WeeeHelper $weeeData, array $data=[], Json $serializer=null)