コード例 #1
0
 /**
  * @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;
 }
コード例 #2
0
 /**
  * @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;
 }
コード例 #3
0
ファイル: RefundSaverTest.php プロジェクト: spryker/Refund
 /**
  * @return void
  */
 public function testSaveRefundShouldSetCanceledAmountOnOrderItemEntities()
 {
     $salesOrderItemEntityMock = $this->getSalesOrderItemEntityMock();
     $salesOrderItemQueryMock = $this->getMockBuilder(SpySalesOrderItemQuery::class)->setMethods(['findOneByIdSalesOrderItem'])->getMock();
     $salesOrderItemQueryMock->method('findOneByIdSalesOrderItem')->willReturn($salesOrderItemEntityMock);
     $salesQueryContainerMock = $this->getSalesQueryContainerMock();
     $salesQueryContainerMock->method('querySalesOrderItem')->willReturn($salesOrderItemQueryMock);
     $refundEntity = $this->getRefundEntity(0);
     $refundSaver = $this->getRefundSaverMock($refundEntity, $salesQueryContainerMock);
     $refundTransfer = new RefundTransfer();
     $refundTransfer->setAmount(100);
     $itemTransfer = new ItemTransfer();
     $refundTransfer->addItem($itemTransfer);
     $this->assertTrue($refundSaver->saveRefund($refundTransfer));
 }
コード例 #4
0
 /**
  * @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;
 }