/** * Add row total item amount to subtotal * * @param array $taxDetailsData * @param TaxDetailsItemInterface $item * @return array */ protected function aggregateItemData($taxDetailsData, TaxDetailsItemInterface $item) { $taxDetailsData[TaxDetailsInterface::KEY_SUBTOTAL] = $taxDetailsData[TaxDetailsInterface::KEY_SUBTOTAL] + $item->getRowTotal(); $taxDetailsData[TaxDetailsInterface::KEY_TAX_AMOUNT] = $taxDetailsData[TaxDetailsInterface::KEY_TAX_AMOUNT] + $item->getRowTax(); $taxDetailsData[TaxDetailsInterface::KEY_DISCOUNT_TAX_COMPENSATION_AMOUNT] = $taxDetailsData[TaxDetailsInterface::KEY_DISCOUNT_TAX_COMPENSATION_AMOUNT] + $item->getDiscountTaxCompensationAmount(); $itemAppliedTaxes = $item->getAppliedTaxes(); if ($itemAppliedTaxes === null) { return $taxDetailsData; } $appliedTaxes = $taxDetailsData[TaxDetailsInterface::KEY_APPLIED_TAXES]; foreach ($itemAppliedTaxes as $taxId => $itemAppliedTax) { if (!isset($appliedTaxes[$taxId])) { //convert rate data object to array $rates = []; $rateDataObjects = $itemAppliedTax->getRates(); foreach ($rateDataObjects as $rateDataObject) { $rates[$rateDataObject->getCode()] = [AppliedTaxRateInterface::KEY_CODE => $rateDataObject->getCode(), AppliedTaxRateInterface::KEY_TITLE => $rateDataObject->getTitle(), AppliedTaxRateInterface::KEY_PERCENT => $rateDataObject->getPercent()]; } $appliedTaxes[$taxId] = [AppliedTaxInterface::KEY_AMOUNT => $itemAppliedTax->getAmount(), AppliedTaxInterface::KEY_PERCENT => $itemAppliedTax->getPercent(), AppliedTaxInterface::KEY_RATES => $rates, AppliedTaxInterface::KEY_TAX_RATE_KEY => $itemAppliedTax->getTaxRateKey()]; } else { $appliedTaxes[$taxId][AppliedTaxInterface::KEY_AMOUNT] += $itemAppliedTax->getAmount(); } } $taxDetailsData[TaxDetailsInterface::KEY_APPLIED_TAXES] = $appliedTaxes; return $taxDetailsData; }