示例#1
0
 public function generateRequisitionAction()
 {
     $restocks = RestockQuery::create()->find();
     if (!$restocks->isEmpty()) {
         $restockEntries = RestockEntryQuery::create()->whereAdd(RestockEntry::ID_RESTOCK, $restocks->current()->getIdRestock(), RestockQuery::EQUAL)->find();
         if (!$restockEntries->isEmpty()) {
             $products = ProductQuery::create()->whereAdd(Product::ITEM_CODE, $restockEntries->getDistinctProducts(), ProductQuery::IN)->find();
             $currencies = CurrencyQuery::create()->find();
             $exchangeRates = CurrencyExchangeQuery::create()->find();
             $restockFinalResultManager = new RestockFinalResultsManager($restockEntries, $products);
             try {
                 $this->getRequisitionCatalog()->beginTransaction();
                 $requisition = RequisitionFactory::createFromArray(array(Requisition::ID_DESTINATION_COUNTRY => Country::$defaultIdCountry, Requisition::TYPE => Requisition::$Type["Weekly"], Requisition::STATUS => Requisition::$Status["New"], Requisition::NUM_REQUISITION => "Weekly Restock."));
                 $this->getRequisitionCatalog()->create($requisition);
                 while ($restockEntries->valid()) {
                     $restockEntry = $restockEntries->read();
                     if ($restockEntry->isChecked()) {
                         $quantity = $restockFinalResultManager->getTotalCartonsByIdRestockEntry($restockEntry->getIdRestockEntry());
                         if ($quantity > 0) {
                             $product = $products->getByPK($restockEntry->getIdProduct());
                             $requisitionEntry = RequisitionEntryFactory::createFromArray(array(RequisitionEntry::ID_REQUISITION => $requisition->getIdRequisition(), RequisitionEntry::ID_PRODUCT => $product->getItemCode(), RequisitionEntry::PRICE => $restockEntry->getMinTargetPrice() * $exchangeRates->getByFromAndTo(Currency::$defaultCurrency, $product->getCurrency())->getRate(), RequisitionEntry::ID_CURRENCY => $product->getCurrency(), RequisitionEntry::ID_SUPPLIER_DEFAULT => $product->getIdSupplier(), RequisitionEntry::QUANTITY => $quantity, RequisitionEntry::STATUS => RequisitionEntry::$Status["New"]));
                             $this->getRequisitionEntryCatalog()->create($requisitionEntry);
                         }
                     }
                 }
                 $this->getRestockEntryCatalog()->truncate();
                 $this->getRestockCatalog()->truncate();
                 $this->getRequisitionCatalog()->commit();
                 $this->setFlash('ok', $this->i18n->_("Requisition was saved with folio {$requisition->getIdRequisition()}"));
             } catch (Exception $e) {
                 $this->getRequisitionCatalog()->rollBack();
                 $this->setFlash('error', $this->i18n->_($e->getMessage()));
             }
         }
     }
     $this->_redirect('requisition/list');
 }
示例#2
0
 /**
  *
  * makeBean
  * @param array $resultset
  * @return \Application\Model\Bean\Requisition
  */
 protected function makeBean($resultset)
 {
     return RequisitionFactory::createFromArray($resultset);
 }
示例#3
0
 /**
  *
  * @return array
  */
 public function updateAction()
 {
     if ($this->getRequest()->isPost()) {
         $params = $this->getRequest()->getParams();
         // Get params to update requisition
         $requistionParams[Requisition::ID_REQUISITION] = $this->getRequest()->getParam(Requisition::ID_REQUISITION);
         $requistionParams[Requisition::NUM_REQUISITION] = $this->getRequest()->getParam(Requisition::NUM_REQUISITION, "");
         $requistionParams[Requisition::FOLIO_PROYECTO_ESPECIAL] = $this->getRequest()->getParam(Requisition::FOLIO_PROYECTO_ESPECIAL, "");
         $requistionParams[Requisition::FECHA_PROMESA_ENTREGA] = $this->getRequest()->getParam(Requisition::FECHA_PROMESA_ENTREGA, "");
         $requistionParams[Requisition::PROYECTO_ESPECIAL] = $this->getRequest()->getParam(Requisition::PROYECTO_ESPECIAL, "");
         $requistionParams[Requisition::COMMENT] = $this->getRequest()->getParam(Requisition::COMMENT, null);
         $requistionParams[Requisition::ID_DESTINATION_COUNTRY] = $this->getRequest()->getParam(Requisition::ID_DESTINATION_COUNTRY);
         // Get Params and complete the default info to save the requisition Entry
         $requistionEntries = $this->getRequest()->getParam("entries");
         // Search the requisition will be update
         $requisition = RequisitionQuery::create()->findByPKOrThrow($requistionParams[Requisition::ID_REQUISITION], $this->i18n->_("The Requisition with id {$requistionParams[Requisition::ID_REQUISITION]} does not exist."));
         //print_r($requisition);
         //exit;
         try {
             // Compare and change distinct data in bean and update in database
             $this->getRequisitionCatalog()->beginTransaction();
             RequisitionFactory::populate($requisition, $requistionParams);
             $this->getRequisitionCatalog()->update($requisition);
             $this->newLogForUpdate($requisition);
             // Excecute the appropriate action depending on the itemStatus
             foreach ($requistionEntries as $requisitionEntryParams) {
                 // If itemStatus is add then create a new requisition entry in database
                 if ($requisitionEntryParams["itemStatus"] == "add") {
                     $requisitionEntry = RequisitionEntryFactory::createFromArray(array(RequisitionEntry::ID_REQUISITION => $requisition->getIdRequisition(), RequisitionEntry::ID_PRODUCT => $requisitionEntryParams[RequisitionEntry::ID_PRODUCT], RequisitionEntry::ID_SUPPLIER_DEFAULT => $requisitionEntryParams[RequisitionEntry::ID_SUPPLIER_DEFAULT] == "" ? Null : $requisitionEntryParams[RequisitionEntry::ID_SUPPLIER_DEFAULT], RequisitionEntry::ID_CURRENCY => $requisitionEntryParams[RequisitionEntry::ID_CURRENCY], RequisitionEntry::QUANTITY => $requisitionEntryParams[RequisitionEntry::QUANTITY], RequisitionEntry::PRICE => $requisitionEntryParams[RequisitionEntry::PRICE], RequisitionEntry::COMMENTS => $requisitionEntryParams[RequisitionEntry::COMMENTS], RequisitionEntry::STATUS => RequisitionEntry::$Status["New"]));
                     $this->getRequisitionEntryCatalog()->create($requisitionEntry);
                     // If itemStatus is remove then remove the requisition entry from database
                 } else {
                     if ($requisitionEntryParams["itemStatus"] == "remove") {
                         $this->getRequisitionEntryCatalog()->deleteById($requisitionEntryParams[RequisitionEntry::ID_REQUISITION_ENTRY]);
                         // If itemStatus is change then update the requisition entry in database
                     } else {
                         if ($requisitionEntryParams["itemStatus"] == "change") {
                             // Search the requisition entry in database
                             $requisitionEntry = RequisitionEntryQuery::create()->findByPKOrThrow($requisitionEntryParams[RequisitionEntry::ID_REQUISITION_ENTRY], $this->i18n->_("The Requisition Entry with id {$requisitionEntryParams[RequisitionEntry::ID_REQUISITION_ENTRY]} does not exist"));
                             // Compare the new info, change the differences and update the requisition entry in database
                             RequisitionEntryFactory::populate($requisitionEntry, array(RequisitionEntry::ID_REQUISITION => $requisition->getIdRequisition(), RequisitionEntry::ID_PRODUCT => $requisitionEntryParams[RequisitionEntry::ID_PRODUCT], RequisitionEntry::ID_SUPPLIER_DEFAULT => $requisitionEntryParams[RequisitionEntry::ID_SUPPLIER_DEFAULT] == "" ? Null : $requisitionEntryParams[RequisitionEntry::ID_SUPPLIER_DEFAULT], RequisitionEntry::ID_CURRENCY => $requisitionEntryParams[RequisitionEntry::ID_CURRENCY], RequisitionEntry::QUANTITY => $requisitionEntryParams[RequisitionEntry::QUANTITY], RequisitionEntry::PRICE => $requisitionEntryParams[RequisitionEntry::PRICE], RequisitionEntry::COMMENTS => $requisitionEntryParams[RequisitionEntry::COMMENTS]));
                             $this->getRequisitionEntryCatalog()->update($requisitionEntry);
                         }
                     }
                 }
             }
             // Coomit all changes in database and set a confirmation message
             $this->getRequisitionCatalog()->commit();
             $this->setFlash('ok', $this->i18n->_("The Requisition with folio {$requisition->getIdRequisition()} was updated correctly."));
         } catch (Exception $e) {
             // If something goes wrong then revert all changes in database and set a error status
             $this->getRequisitionCatalog()->rollBack();
             $this->setFlash('error', $this->i18n->_($e->getMessage()));
         }
     }
     $this->_redirect('requisition/list');
 }