/**
  * @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;
 }
 private function _setRanks()
 {
     $this->_repoCore->addEntity(Rank::ENTITY_NAME, [Rank::ATTR_CODE => self::RANK_BY_PV, Rank::ATTR_NOTE => 'Customer is qualified by PV only.']);
     $this->_repoCore->addEntity(Rank::ENTITY_NAME, [Rank::ATTR_CODE => self::RANK_BY_GV, Rank::ATTR_NOTE => 'Customer is qualified by PV and GV.']);
     $this->_repoCore->addEntity(Rank::ENTITY_NAME, [Rank::ATTR_CODE => self::RANK_BY_PSAA, Rank::ATTR_NOTE => 'Customer is qualified by PV, GV and PSAA.']);
     $this->_logger->debug("Ranks for Loyalty bonus are set.");
 }
 private function _setRanks()
 {
     $this->repoBasic->addEntity(Rank::ENTITY_NAME, [Rank::ATTR_CODE => self::RANK_MAX, Rank::ATTR_NOTE => 'Maximal rank.']);
     $this->repoBasic->addEntity(Rank::ENTITY_NAME, [Rank::ATTR_CODE => self::RANK_EQUAL, Rank::ATTR_NOTE => 'This rank has equal sharing of the bonus.']);
     $this->repoBasic->addEntity(Rank::ENTITY_NAME, [Rank::ATTR_CODE => self::RANK_PRORATED, Rank::ATTR_NOTE => 'This rank has prorated sharing of the bonus.']);
     $this->_logger->debug("Ranks for Global Sales bonus are set.");
 }
 private function _createTypeOperation()
 {
     $bind = [TypeOperation::ATTR_CODE => self::DATA_TYPE_OPER_CODE, TypeOperation::ATTR_NOTE => 'Operation for integration tests.'];
     $id = $this->_repoGeneric->addEntity(TypeOperation::ENTITY_NAME, $bind);
     $this->assertTrue($id > 0);
     $this->typeOperId = $id;
     $this->_logger->debug("Operation type is created (#{$id}).");
 }
 private function _setBonusLevelsTeam()
 {
     $calTypeId = $this->_repoTypeCalc->getIdByCode(Cfg::CODE_TYPE_CALC_BONUS_TEAM_DEF);
     $data = [[Level::ATTR_CALC_TYPE_ID => $calTypeId, Level::ATTR_LEVEL => 0, Level::ATTR_PERCENT => 0], [Level::ATTR_CALC_TYPE_ID => $calTypeId, Level::ATTR_LEVEL => 500, Level::ATTR_PERCENT => 0.1], [Level::ATTR_CALC_TYPE_ID => $calTypeId, Level::ATTR_LEVEL => 1000, Level::ATTR_PERCENT => 0.15]];
     foreach ($data as $item) {
         $this->_repoBasic->addEntity(Level::ENTITY_NAME, $item);
     }
     $this->_logger->debug("Team Bonus levels are set.");
 }
 private function _setRanks()
 {
     $data = [[Rank::ATTR_CODE => 'MANAGER', Rank::ATTR_NOTE => 'Manager'], [Rank::ATTR_CODE => 'SENIOR MANAGER', Rank::ATTR_NOTE => 'Senior Manager'], [Rank::ATTR_CODE => 'SUPERVISOR', Rank::ATTR_NOTE => 'Supervisor'], [Rank::ATTR_CODE => 'DIRECTOR', Rank::ATTR_NOTE => 'Director'], [Rank::ATTR_CODE => 'SENIOR DIRECTOR', Rank::ATTR_NOTE => 'Senior Director']];
     foreach ($data as $item) {
         $id = $this->_repoBasic->addEntity(Rank::ENTITY_NAME, $item);
         $this->_logger->debug("Rank '" . $item[Rank::ATTR_CODE] . "' is added with ID=" . $id . ".");
     }
     $this->_logger->debug("Ranks are set.");
 }
 /**
  * Create new period record and related calculation record.
  *
  * @param $calcTypeId
  * @param $dsBegin
  * @param $dsEnd
  *
  * @return DataObject
  */
 public function addNewPeriodAndCalc($calcTypeId, $dsBegin, $dsEnd)
 {
     $result = new DataObject();
     /* add new period */
     $periodData = [Period::ATTR_CALC_TYPE_ID => $calcTypeId, Period::ATTR_DSTAMP_BEGIN => $dsBegin, Period::ATTR_DSTAMP_END => $dsEnd];
     $periodId = $this->_repoBasic->addEntity(Period::ENTITY_NAME, $periodData);
     $this->_logger->info("New period #{$periodId} for calculation type #{$calcTypeId} is registered ({$dsBegin}-{$dsEnd}).");
     $periodData[Period::ATTR_ID] = $periodId;
     $result->setData(self::DATA_PERIOD, $periodData);
     /* add related calculation */
     $dateStarted = $this->_toolDate->getUtcNowForDb();
     $calcData = [Calculation::ATTR_PERIOD_ID => $periodId, Calculation::ATTR_DATE_STARTED => $dateStarted, Calculation::ATTR_DATE_ENDED => null, Calculation::ATTR_STATE => Cfg::CALC_STATE_STARTED];
     $calcId = $this->_repoBasic->addEntity(Calculation::ENTITY_NAME, $calcData);
     $this->_logger->info("New calculation #{$calcId} for period #{$periodId} is registered.");
     $calcData[Calculation::ATTR_ID] = $calcId;
     $result->setData(self::DATA_CALC, $calcData);
     return $result;
 }
 private function saveTaxRule($code)
 {
     $result = $this->getTaxRuleByCode($code);
     if (!$result) {
         $entity = Cfg::ENTITY_MAGE_TAX_CALC_RULE;
         $bind = [EntityTaxRate::KEY_CODE => $code];
         $result = $this->repoGeneric->addEntity($entity, $bind);
     }
     return $result;
 }
 /**
  * @param null $code
  * @param null $note
  *
  * @return int ID of the new entity
  */
 private function _createWarehouse($code, $note)
 {
     /* create stock */
     $stock = $this->_createMageStock($code);
     $result = $stock->getStockId();
     /* ... then create warehouse itself */
     $tbl = Warehouse::ENTITY_NAME;
     $bind = [Warehouse::ATTR_STOCK_REF => $result, Warehouse::ATTR_CODE => $code, Warehouse::ATTR_NOTE => $note];
     $this->_repoGeneric->addEntity($tbl, $bind);
     return $result;
 }
 public function saveQualificationParams($updates)
 {
     $def = $this->_manTrans->begin();
     try {
         foreach ($updates as $item) {
             $this->_repoBasic->addEntity(Qualification::ENTITY_NAME, $item);
         }
         $this->_manTrans->commit($def);
     } finally {
         $this->_manTrans->end($def);
     }
 }
 public function saveLogSaleOrders($updates, $transIds)
 {
     if (count($updates) != count($transIds)) {
         throw new \Exception("Cannot log transactions for the sale orders, sizes of the arrays are not equal.");
     }
     foreach ($updates as $i => $item) {
         $transId = $transIds[$i];
         $saleId = $item[Calc::A_ORDR_ID];
         $bind = [LogSales::ATTR_TRANS_ID => $transId, LogSales::ATTR_SALE_ORDER_ID => $saleId];
         $this->_repoBasic->addEntity(LogSales::ENTITY_NAME, $bind);
     }
 }
 public function getRepresentativeCustomerId()
 {
     if (is_null($this->_cachedRepresCustId)) {
         $conn = $this->_conn;
         /* there is no cached value for the customer ID, select data from DB */
         $where = Cfg::E_CUSTOMER_A_EMAIL . '=' . $conn->quote(self::CUSTOMER_REPRESENTATIVE_EMAIL);
         $data = $this->_repoGeneric->getEntities(Cfg::ENTITY_MAGE_CUSTOMER, Cfg::E_CUSTOMER_A_ENTITY_ID, $where);
         if (count($data) == 0) {
             $bind = [Cfg::E_CUSTOMER_A_WEBSITE_ID => self::ADMIN_WEBSITE_ID, Cfg::E_CUSTOMER_A_EMAIL => self::CUSTOMER_REPRESENTATIVE_EMAIL];
             $id = $this->_repoGeneric->addEntity(Cfg::ENTITY_MAGE_CUSTOMER, $bind);
             if ($id > 0) {
                 $this->_cachedRepresCustId = $id;
             }
         } else {
             $first = reset($data);
             $this->_cachedRepresCustId = $first[Cfg::E_CUSTOMER_A_ENTITY_ID];
         }
     }
     return $this->_cachedRepresCustId;
 }
 /**
  * Registry new relation between instances in Odoo & Magento.
  * @param string $entityName
  * @param int $mageId
  * @param int $odooId
  */
 protected function _registerMageIdForOdooId($entityName, $mageId, $odooId)
 {
     $bind = [IOdooEntity::ATTR_MAGE_REF => (int) $mageId, IOdooEntity::ATTR_ODOO_REF => (int) $odooId];
     $this->_repoBasic->addEntity($entityName, $bind);
 }
Example #14
0
 /** @inheritdoc */
 public function create($data)
 {
     $result = $this->_repoGeneric->addEntity($this->_entityName, $data);
     return $result;
 }
 private function _setRanks()
 {
     $data = [[Rank::ATTR_CODE => Def::RANK_MANAGER, Rank::ATTR_NOTE => 'Manager (#01, lowest).'], [Rank::ATTR_CODE => Def::RANK_SEN_MANAGER, Rank::ATTR_NOTE => 'Senior Manager (#02).'], [Rank::ATTR_CODE => Def::RANK_SUPERVISOR, Rank::ATTR_NOTE => 'Supervisor (#3).'], [Rank::ATTR_CODE => Def::RANK_DIRECTOR, Rank::ATTR_NOTE => 'Director (#4).'], [Rank::ATTR_CODE => Def::RANK_SEN_DIRECTOR, Rank::ATTR_NOTE => 'Senior Director (#5).'], [Rank::ATTR_CODE => Def::RANK_EXEC_DIRECTOR, Rank::ATTR_NOTE => 'Executive Director (#6).'], [Rank::ATTR_CODE => Def::RANK_SEN_VICE, Rank::ATTR_NOTE => 'Senior Vice President (#7).'], [Rank::ATTR_CODE => Def::RANK_EXEC_VICE, Rank::ATTR_NOTE => 'Executive Vice President (#8).'], [Rank::ATTR_CODE => Def::RANK_PRESIDENT, Rank::ATTR_NOTE => 'President Director (#9, highest).']];
     foreach ($data as $item) {
         $this->_repoBasic->addEntity(Rank::ENTITY_NAME, $item);
     }
     $this->_logger->debug("Ranks are set.");
 }