Exemplo n.º 1
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;
 }