コード例 #1
0
 /**
  * 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;
 }