public function test_save()
 {
     /** === Test Data === */
     $ORDER_ID = 2;
     $ITEMS = [];
     $ITEM = new \Praxigento\Pv\Service\Sale\Data\Item();
     $ITEM->setItemId(4);
     $ITEM->setProductId(1);
     $ITEM->setStockId(1);
     $ITEM->setQuantity(10);
     $ITEMS[] = $ITEM;
     /** === Call and asserts  === */
     $obm = \Magento\Framework\App\ObjectManager::getInstance();
     /** @var  $call Call */
     $call = $obm->get(\Praxigento\Pv\Service\ISale::class);
     $req = new Request\Save();
     $req->setSaleOrderId($ORDER_ID);
     $req->setOrderItems($ITEMS);
     /** @var  $resp Response\Save */
     $resp = $call->save($req);
     $this->assertTrue($resp->isSucceed());
 }
示例#2
0
 /**
  * Save PV data on sale order save.
  *
  * @param Request\Save $req
  *
  * @return Response\Save
  */
 public function save(Request\Save $req)
 {
     $result = new Response\Save();
     $orderId = $req->getSaleOrderId();
     $datePaid = $req->getSaleOrderDatePaid();
     $items = $req->getOrderItems();
     $this->_logger->info("Save PV attributes for sale order #{$orderId}.");
     $def = $this->_manTrans->begin();
     try {
         /* for all items get PV data by warehouse */
         $orderTotal = 0;
         foreach ($items as $item) {
             $prodId = $item->getProductId();
             $stockId = $item->getStockId();
             $itemId = $item->getItemId();
             $pv = $this->_repoStockItem->getPvByProductAndStock($prodId, $stockId);
             $qty = $item->getQuantity();
             $total = $pv * $qty;
             $eItem = new \Praxigento\Pv\Data\Entity\Sale\Item();
             $eItem->setSaleItemId($itemId);
             $eItem->setSubtotal($total);
             $eItem->setDiscount(0);
             $eItem->setTotal($total);
             $this->_repoSaleItem->replace($eItem);
             $orderTotal += $total;
         }
         /* save order data */
         $eOrder = new \Praxigento\Pv\Data\Entity\Sale();
         $eOrder->setSaleId($orderId);
         $eOrder->setSubtotal($orderTotal);
         $eOrder->setDiscount(0);
         $eOrder->setTotal($orderTotal);
         $eOrder->setDatePaid($datePaid);
         $this->_repoSale->replace($eOrder);
         $this->_manTrans->commit($def);
         $result->markSucceed();
         $this->_logger->info("PV attributes for sale order #{$orderId} are saved.");
     } finally {
         $this->_manTrans->end($def);
     }
     return $result;
 }
 /**
  * @SuppressWarnings(PHPMD.ShortVariable)
  */
 public function test_save()
 {
     /** === Test Data === */
     $operId = 21;
     $datePaid = 'paid';
     $prodId = 32;
     $stockId = 4;
     $itemId = 64;
     $pv = 12.44;
     $qty = 4;
     $item = $this->_mock(\Praxigento\Pv\Service\Sale\Data\Item::class);
     $items = [$item];
     /** === Setup Mocks === */
     // $def = $this->_manTrans->begin();
     $mDef = $this->_mockTransactionDefinition();
     $this->mManTrans->shouldReceive('begin')->once()->andReturn($mDef);
     //
     // FIRST ITERATION
     //
     // $prodId = $item->getProductId();
     $item->shouldReceive('getProductId')->once()->andReturn($prodId);
     // $stockId = $item->getStockId();
     $item->shouldReceive('getStockId')->once()->andReturn($stockId);
     // $itemId = $item->getItemId();
     $item->shouldReceive('getItemId')->once()->andReturn($itemId);
     // $pv = $this->_repoStockItem->getPvByProductAndStock($prodId, $stockId);
     $this->mRepoStockItem->shouldReceive('getPvByProductAndStock')->once()->with($prodId, $stockId)->andReturn($pv);
     // $qty = $item->getQuantity();
     $item->shouldReceive('getQuantity')->once()->andReturn($qty);
     // $this->_repoSaleItem->replace($eItem);
     $this->mRepoSaleItem->shouldReceive('replace')->once();
     //
     // $this->_repoSale->replace($orderData);
     $this->mRepoSale->shouldReceive('replace')->once();
     // $this->_manTrans->commit($def);
     $this->mManTrans->shouldReceive('commit')->once();
     // $this->_manTrans->end($def);
     $this->mManTrans->shouldReceive('end')->once();
     /** === Call and asserts  === */
     $req = new Request\Save();
     $req->setSaleOrderId($operId);
     $req->setSaleOrderDatePaid($datePaid);
     $req->setOrderItems($items);
     $resp = $this->obj->save($req);
     $this->assertTrue($resp->isSucceed());
 }