示例#1
0
 public function orderSave(Replicate\Request\OrderSave $req)
 {
     $result = new Response\OrderSave();
     /** @var \Magento\Sales\Api\Data\OrderInterface $mageOrder */
     $mageOrder = $req->getSaleOrder();
     $orderIdMage = $mageOrder->getEntityId();
     /** @var  $registeredOrder */
     $registeredOrder = $this->_repoEntitySaleOrder->getById($orderIdMage);
     if ($orderIdMage && !$registeredOrder) {
         $odooOrder = $this->_subCollector->getSaleOrder($mageOrder);
         $def = $this->_manTrans->begin();
         try {
             /* save order into Odoo repo */
             $resp = $this->_repoOdooSaleOrder->save($odooOrder);
             $result->setOdooResponse($resp);
             if ($resp instanceof \Praxigento\Odoo\Data\Odoo\SaleOrder\Response) {
                 $mageId = $mageOrder->getEntityId();
                 $odooId = $resp->getIdOdoo();
                 /* mark order as replicated */
                 $registry = new \Praxigento\Odoo\Data\Entity\SaleOrder();
                 $registry->setMageRef($mageId);
                 $registry->setOdooRef($odooId);
                 $this->_repoEntitySaleOrder->create($registry);
                 /* finalize transaction */
                 $this->_manTrans->commit($def);
                 $result->markSucceed();
             }
         } finally {
             // transaction will be rolled back if commit is not done (otherwise - do nothing)
             $this->_manTrans->end($def);
         }
     }
     return $result;
 }
 /**
  * Select orders to be pushed into Odoo (in case of "on event" push was failed).
  */
 public function getOrdersToReplicate()
 {
     $result = [];
     $orders = $this->_repoSaleOrder->getIdsToSaveToOdoo();
     foreach ($orders as $data) {
         $id = $data[Cfg::E_SALE_ORDER_A_ENTITY_ID];
         $order = $this->_repoMageSalesOrder->get($id);
         $result[$id] = $order;
     }
     return $result;
 }