/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * * @return void */ public function recalculate(QuoteTransfer $quoteTransfer) { foreach ($quoteTransfer->getExpenses() as $expenseTransfer) { $expenseTransfer->requireUnitGrossPrice()->requireQuantity(); $expenseTransfer->setSumGrossPrice($expenseTransfer->getUnitGrossPrice() * $expenseTransfer->getQuantity()); } }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * @param float $taxRate * * @return void */ protected function setQuoteExpenseTaxRate(QuoteTransfer $quoteTransfer, $taxRate) { foreach ($quoteTransfer->getExpenses() as $expense) { if ($expense->getType() === ShipmentConstants::SHIPMENT_EXPENSE_TYPE && $expense->getName() === $quoteTransfer->getShipment()->getMethod()->getName()) { $expense->setTaxRate($taxRate); } } }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * * @return int */ protected function sumExpenseTaxes(QuoteTransfer $quoteTransfer) { $totalTaxAmount = 0; foreach ($quoteTransfer->getExpenses() as $expenseTransfer) { $totalTaxAmount += $expenseTransfer->getSumTaxAmount(); } return $totalTaxAmount; }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * * @return int */ protected function getCalculatedExpenseTotalAmount(QuoteTransfer $quoteTransfer) { $totalExpenseAmount = 0; foreach ($quoteTransfer->getExpenses() as $expenseTransfer) { $expenseTransfer->requireSumGrossPrice(); $totalExpenseAmount += $expenseTransfer->getSumGrossPrice(); } return $totalExpenseAmount; }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * * @return void */ public function recalculate(QuoteTransfer $quoteTransfer) { foreach ($quoteTransfer->getItems() as $item) { $item->setCalculatedDiscounts(new \ArrayObject()); } foreach ($quoteTransfer->getExpenses() as $expense) { $expense->setCalculatedDiscounts(new \ArrayObject()); } }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * * @return void */ public function recalculate(QuoteTransfer $quoteTransfer) { $this->accruedTaxCalculator->resetRoundingErrorDelta(); foreach ($quoteTransfer->getExpenses() as $expenseTransfer) { $unitTaxAmount = $this->calculateTaxAmount($expenseTransfer->getUnitGrossPrice(), $expenseTransfer->getTaxRate()); $sumTaxAmount = $this->calculateTaxAmount($expenseTransfer->getSumGrossPrice(), $expenseTransfer->getTaxRate()); $expenseTransfer->setUnitTaxAmount($unitTaxAmount); $expenseTransfer->setSumTaxAmount($sumTaxAmount); } }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $salesOrderEntity * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer * * @return void */ protected function addExpensesToOrder(QuoteTransfer $quoteTransfer, SpySalesOrder $salesOrderEntity, CheckoutResponseTransfer $checkoutResponseTransfer) { foreach ($quoteTransfer->getExpenses() as $expenseTransfer) { if (ShipmentConstants::SHIPMENT_EXPENSE_TYPE === $expenseTransfer->getType()) { $salesOrderExpenseEntity = new SpySalesExpense(); $this->hydrateOrderExpenseEntity($salesOrderExpenseEntity, $expenseTransfer); $salesOrderExpenseEntity->save(); $this->setCheckoutResponseExpenses($checkoutResponseTransfer, $expenseTransfer, $salesOrderExpenseEntity); $salesOrderEntity->addExpense($salesOrderExpenseEntity); } } }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * * @return int */ protected function calculateExpenseTotalDiscountAmount(QuoteTransfer $quoteTransfer) { $totalDiscountSumGrossAmount = 0; foreach ($quoteTransfer->getExpenses() as $expenseTransfer) { $sumAmount = $this->getCalculatedDiscountsSumGrossAmount($expenseTransfer->getCalculatedDiscounts()); if ($sumAmount > $expenseTransfer->getSumGrossPrice()) { $sumAmount = $expenseTransfer->getSumGrossPrice(); } $totalDiscountSumGrossAmount += $sumAmount; } return $totalDiscountSumGrossAmount; }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * * @return void */ protected function addExpenseTaxes(QuoteTransfer $quoteTransfer) { $this->taxFacade->resetAccruedTaxCalculatorRoundingErrorDelta(); foreach ($quoteTransfer->getExpenses() as $expenseTransfer) { if (!$expenseTransfer->getTaxRate()) { continue; } $itemUnitTaxAmount = $this->calculateTaxAmount($expenseTransfer->getUnitGrossPriceWithDiscounts(), $expenseTransfer->getTaxRate()); $expenseTransfer->setUnitTaxAmountWithDiscounts($itemUnitTaxAmount); $itemSumTaxAmount = $this->calculateTaxAmount($expenseTransfer->getSumGrossPriceWithDiscounts(), $expenseTransfer->getTaxRate()); $expenseTransfer->setSumTaxAmountWithDiscounts($itemSumTaxAmount); } }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * * @return float */ protected function getExpenseItemsTaxRateAverage(QuoteTransfer $quoteTransfer) { $taxSum = 0; foreach ($quoteTransfer->getExpenses() as $expense) { $taxSum += $expense->getTaxRate(); } $taxAverage = $taxSum / count($quoteTransfer->getExpenses()); return $taxAverage; }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * * @return void */ protected function setExpenseGrossAmounts(QuoteTransfer $quoteTransfer) { foreach ($quoteTransfer->getExpenses() as $expenseTransfer) { $this->setCalculatedDiscountsSumGrossAmount($expenseTransfer->getCalculatedDiscounts()); $unitAmount = $this->getCalculatedDiscountsUnitGrossAmount($expenseTransfer->getCalculatedDiscounts()); $sumAmount = $this->getCalculatedDiscountsSumGrossAmount($expenseTransfer->getCalculatedDiscounts()); $expenseTransfer->setUnitTotalDiscountAmount($unitAmount); $expenseTransfer->setSumTotalDiscountAmount($sumAmount); $expenseTransfer->setUnitGrossPriceWithDiscounts($expenseTransfer->getUnitGrossPrice() - $unitAmount); $expenseTransfer->setSumGrossPriceWithDiscounts($expenseTransfer->getSumGrossPrice() - $sumAmount); } }