/**
  * @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);
         }
     }
 }
Пример #3
0
 /**
  * @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());
     }
 }
Пример #6
0
 /**
  * @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);
     }
 }
Пример #7
0
 /**
  * @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);
     }
 }