/** * @param \Orm\Zed\Refund\Persistence\PavRefund $refundEntity * * @return \Generated\Shared\Transfer\RefundTransfer */ protected function convertToTransfer(PavRefund $refundEntity) { $refundTransfer = new RefundTransfer(); $refundTransfer->fromArray($refundEntity->toArray(), true); foreach ($refundEntity->getRefundItems() as $refundItem) { $refundItemTransfer = new RefundItemTransfer(); $refundItemTransfer->fromArray($refundItem->toArray(), true); $refundTransfer->addItem($refundItemTransfer); } return $refundTransfer; }
/** * @param \Generated\Shared\Transfer\ItemTransfer $orderItem * * @return \Generated\Shared\Transfer\RefundItemTransfer */ protected function createRefundItem(ItemTransfer $orderItem) { $refundItem = new RefundItemTransfer(); $refundItem->setFkSalesOrderItem($orderItem->getIdSalesOrderItem()); $refundItem->setQuantity($orderItem->getQuantity()); $refundItem->setGrossPrice($orderItem->getUnitGrossPrice()); $refundItem->setDiscountAmount($orderItem->getSumTotalDiscountAmount()); $refundItem->setName($orderItem->getName()); $refundItem->setGroupKey($orderItem->getGroupKey()); $refundItem->setTaxRate($orderItem->getTaxRate()); $refundItem->setTaxAmount($orderItem->getSumTaxAmount()); return $refundItem; }
/** * @param \Generated\Shared\Transfer\GroupedRefundItemTransfer $groupedRefundItem * @param \Generated\Shared\Transfer\RefundItemTransfer $refundItem * * @return \Generated\Shared\Transfer\GroupedRefundItemTransfer */ protected function aggregateItem(GroupedRefundItemTransfer $groupedRefundItem, RefundItemTransfer $refundItem) { $groupTaxAmount = $groupedRefundItem->getTaxAmount() + $refundItem->getTaxAmount(); $groupTotalGrossPrice = $groupedRefundItem->getTotalGrossPrice() + $refundItem->getTotalGrossPrice(); $groupTotalGrossPriceWithDiscount = $groupedRefundItem->getTotalGrossPriceWithDiscount() + $refundItem->getTotalGrossPriceWithDiscount(); $groupQuantity = $groupedRefundItem->getQuantity() + 1; $groupDiscountAmount = $groupedRefundItem->getDiscountAmount() + $refundItem->getDiscountAmount(); $groupedRefundItem->setTotalGrossPriceWithDiscount($groupTotalGrossPriceWithDiscount); $groupedRefundItem->setTotalGrossPrice($groupTotalGrossPrice); $groupedRefundItem->setQuantity($groupQuantity); $groupedRefundItem->setTaxAmount($groupTaxAmount); $groupedRefundItem->setDiscountAmount($groupDiscountAmount); return $groupedRefundItem; }
/** * @param \Generated\Shared\Transfer\RefundItemTransfer $itemTransfer * * @return void */ public function aggregate(RefundItemTransfer $itemTransfer) { if (!$itemTransfer->getTaxRate()) { return; } $this->taxBridge->resetAccruedTaxCalculatorRoundingErrorDelta(); $itemTransfer->requireGrossPrice()->requireTotalGrossPrice(); $taxAmount = $this->taxBridge->getTaxAmountFromGrossPrice($itemTransfer->getTotalGrossPrice(), $itemTransfer->getTaxRate()); $itemTransfer->setTaxAmount($taxAmount); $taxAmountWithDiscount = $this->taxBridge->getTaxAmountFromGrossPrice($itemTransfer->getTotalGrossPriceWithDiscount(), $itemTransfer->getTaxRate()); $itemTransfer->setTaxAmountWithDiscount($taxAmountWithDiscount); }
/** * @param \Generated\Shared\Transfer\RefundItemTransfer $itemTransfer * * @return void */ public function aggregate(RefundItemTransfer $itemTransfer) { $itemTransfer->requireQuantity()->requireGrossPrice(); $itemTransfer->setTotalGrossPrice($itemTransfer->getGrossPrice() * $itemTransfer->getQuantity()); }
/** * @param \Generated\Shared\Transfer\RefundItemTransfer $itemTransfer * * @return void */ public function aggregate(RefundItemTransfer $itemTransfer) { $totalGrossPriceWithDiscount = $itemTransfer->getTotalGrossPrice() - $itemTransfer->getDiscountAmount(); $itemTransfer->setTotalGrossPriceWithDiscount($totalGrossPriceWithDiscount); }
/** * @param \Generated\Shared\Transfer\RefundItemTransfer $refundItem * * @throws \Pav\Zed\Refund\Business\Exception\RefundItemNotFoundException * @return \Generated\Shared\Transfer\RefundItemTransfer */ protected function updateRefundItem(RefundItemTransfer $refundItem) { $idRefundItem = $refundItem->getIdRefundItem(); $refundItemEntity = $this->queryContainer->queryRefundItemById($idRefundItem)->findOne(); if ($refundItemEntity === null) { throw new RefundItemNotFoundException(sprintf('Refund item %s not found', $idRefundItem)); } $refundItemEntity->fromArray($refundItem->toArray()); $refundItemEntity->save(); return $refundItem; }