/** * @param AggWarehouse $data * @return null|AggWarehouse */ public function create($data) { $result = null; $def = $this->_manTrans->begin(); try { $tbl = Cfg::ENTITY_MAGE_CATALOGINVENTORY_STOCK; $stockId = $data->getId(); if ($stockId) { /* lookup for catalog inventory stock by ID */ $stockData = $this->_repoGeneric->getEntityByPk($tbl, [Cfg::E_CATINV_STOCK_A_STOCK_ID => $stockId]); if (!$stockData) { /* create top level object (catalog inventory stock) */ $bind = [Cfg::E_CATINV_STOCK_A_WEBSITE_ID => $data->getWebsiteId(), Cfg::E_CATINV_STOCK_A_STOCK_NAME => $data->getCode()]; $stockId = $this->_repoGeneric->addEntity($tbl, $bind); } } else { /* create top level object (catalog inventory stock) */ $bind = [Cfg::E_CATINV_STOCK_A_WEBSITE_ID => $data->getWebsiteId(), Cfg::E_CATINV_STOCK_A_STOCK_NAME => $data->getCode()]; $stockId = $this->_repoGeneric->addEntity($tbl, $bind); } /* then create next level object (warehouse) */ $tbl = EntityWarehouse::ENTITY_NAME; $bind = [EntityWarehouse::ATTR_STOCK_REF => $stockId, EntityWarehouse::ATTR_CODE => $data->getCode(), EntityWarehouse::ATTR_CURRENCY => $data->getCurrency(), EntityWarehouse::ATTR_COUNTRY_CODE => $data->getCountryCode(), EntityWarehouse::ATTR_NOTE => $data->getNote()]; $this->_repoGeneric->addEntity($tbl, $bind); /* commit changes and compose result data object */ $this->_manTrans->commit($def); $result = $data; $result->setId($stockId); } finally { $this->_manTrans->end($def); } return $result; }
public function setOdooId($data) { parent::setData(self::AS_ODOO_ID, $data); }