/** * @param \Generated\Shared\Transfer\RefundTransfer $refundTransfer * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem[] array $salesOrderItems * * @return \Generated\Shared\Transfer\RefundTransfer */ public function calculateRefund(RefundTransfer $refundTransfer, OrderTransfer $orderTransfer, array $salesOrderItems) { foreach ($orderTransfer->getItems() as $itemTransfer) { if ($this->shouldItemRefunded($itemTransfer, $salesOrderItems)) { $refundTransfer->addItem($itemTransfer); } } $this->calculateRefundableItemAmount($refundTransfer); $this->setCanceledItemAmount($refundTransfer); return $refundTransfer; }
/** * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer * * @return int */ protected function getTotalProductOptionSumGrossPrice(OrderTransfer $orderTransfer) { $productOptionTotalGrossSumAmount = 0; foreach ($orderTransfer->getItems() as $itemTransfer) { foreach ($itemTransfer->getProductOptions() as $productOptionTransfer) { $productOptionTransfer->requireSumGrossPrice(); $productOptionTotalGrossSumAmount += $productOptionTransfer->getSumGrossPrice(); } } return $productOptionTotalGrossSumAmount; }
/** * @param \Generated\Shared\Transfer\RefundTransfer $refundTransfer * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem[] array $salesOrderItems * * @return \Generated\Shared\Transfer\RefundTransfer */ public function calculateRefund(RefundTransfer $refundTransfer, OrderTransfer $orderTransfer, array $salesOrderItems) { $refundedItemAmount = 0; foreach ($orderTransfer->getItems() as $itemTransfer) { if ($this->shouldItemRefunded($itemTransfer, $salesOrderItems)) { $refundTransfer->addItem($itemTransfer); } else { $refundedItemAmount += (int) $itemTransfer->getRefundableAmount(); } } if ($refundedItemAmount === 0) { $refundTransfer->setExpenses($orderTransfer->getExpenses()); } $this->calculateRefundableExpenseAmount($refundTransfer); $this->setCanceledExpenseAmount($refundTransfer); return $refundTransfer; }
/** * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer * * @return int[] */ protected function getSaleOrderItemIds(OrderTransfer $orderTransfer) { $saleOrderItemIds = []; foreach ($orderTransfer->getItems() as $itemTransfer) { $saleOrderItemIds[] = $itemTransfer->getIdSalesOrderItem(); } return $saleOrderItemIds; }