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()); }
/** * 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()); }