public static function SapSync($idPurchaseOder) { $purchaseOrder = PurchaseOrderQuery::create()->findByPKOrThrow($idPurchaseOder, "The PurchaseOrder whit id {$idPurchaseOder} does not exist."); $purchaseOrderEntries = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $purchaseOrder->getIdPurchaseOrder())->find(); try { $sapConnectionClient = new SAPConnectorClient(); $result = $sapConnectionClient->createPurchaseOrder($purchaseOrder, $purchaseOrderEntries); } catch (Exception $e) { $result = new stdClass(); $result->SapOrdenResult->code = 500; $result->SapOrdenResult->message = $e->getMessage(); } return $result; }
/** * * * @author Erick Guevara Martínez * @param PurchaseOrder $purchaseOrder * @return PurchaseOrderEntryCollection */ public function getPurchaseOrderEntries(PurchaseOrder $purchaseOrder) { $purchaseOrderEntries = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $purchaseOrder->getIndex())->find(); return $purchaseOrderEntries; }
protected function genericPurchaseOrderNotification(PurchaseOrderEvent $event, $notificationTypeId) { $purchaseOrder = $event->getPurchaseOrder(); $purchaseOrderEntries = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $purchaseOrder->getIdPurchaseOrder(), BaseQuery::EQUAL)->find(); $products = array(); if ($purchaseOrderEntries->count() > 0) { $products = ProductQuery::create()->whereAdd(Product::ITEM_CODE, $purchaseOrderEntries->getProducts(), BaseQuery::IN)->find()->toArray(); } $vars = array('id_purchase_order' => $purchaseOrder->getIdPurchaseOrder(), 'reference' => $purchaseOrder->getReference(), 'created_on' => $purchaseOrder->getPurchaseOrderDateAsZendDate()->get("dd-MM-yyyy HH:mm"), 'total_products' => count($products), 'products' => $products); $this->createNotification($notificationTypeId, $vars); }
/** * */ public function reactivateAction() { $id = $this->getRequest()->getParam('id'); $purchaseOrderEntry = PurchaseOrderEntryQuery::create()->findByPKOrThrow($id, $this->i18n->_("It does not exist the PurchaseOrderEntry with id {$id}")); try { $this->getPurchaseOrderEntryCatalog()->beginTransaction(); $this->getPurchaseOrderEntryCatalog()->update($purchaseOrderEntry); $this->getPurchaseOrderEntryCatalog()->commit(); $this->setFlash('ok', $this->i18n->_("Se reactivo correctamente el PurchaseOrderEntry")); } catch (Exception $e) { $this->getPurchaseOrderEntryCatalog()->rollBack(); $this->setFlash('error', $this->i18n->_($e->getMessage())); } $this->_redirect('purchase-order-entry/list'); }
/** * * @param int $folio * @param int $idEvent */ private function getFolioInformation($folio) { $folioImport = FolioImportQuery::create()->whereAdd(FolioImport::FOLIO, $folio)->findOneOrThrow($this->i18n->_("Transit Document with folio {$folio} not found.")); $programmedPayments = FolioImportProgrammedPaymentQuery::create()->whereAdd(FolioImportProgrammedPayment::FOLIO, $folioImport->getFolio())->find(); $purchaseOrders = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $programmedPayments->getPurchaseOrderIds())->find(); $purchaseOrderEntries = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $purchaseOrders->getPrimaryKeys())->find(); $suppliers = SapSupplierQuery::create()->whereAdd(SapSupplier::CARDCODE, $purchaseOrders->getDistinctSuppliers())->find(); $response = array("transitNumber" => $folioImport->getFolio(), "status" => $folioImport->getStatusName()); while ($purchaseOrderEntries->valid()) { $purchaseOrderEntry = $purchaseOrderEntries->read(); $purchaseOrder = $purchaseOrders->getByPK($purchaseOrderEntry->getIdPurchaseOrder()); $supplier = $suppliers->getByPK($purchaseOrder->getIdSupplier()); $response["entries"][] = array("PO" => $purchaseOrder->getIdPurchaseOrder(), "line" => $purchaseOrderEntry->getLine(), "product" => $purchaseOrderEntry->getIdProduct(), "price" => $purchaseOrderEntry->getPrice(), "currency" => $purchaseOrderEntry->getCurrency(), "supplier" => $supplier->getCardCode(), "supplierName" => $supplier->getCardname()); } return $response; }
/** * (non-PHPdoc) * @see Application\Cron.Cronable::run() */ public function run() { $now = new \DateTime(date("Y-m-d", mktime(0, 0, 0, date("m"), date("d"), date("Y")))); $bookings = BookingQuery::create()->whereAdd(Booking::ETA, \Zend_Date::now()->get('YYYY-MM-dd'), BookingQuery::GREATER_OR_EQUAL)->find(); $eventDispatcher = $this->getEventDispatcherService(); while ($booking = $bookings->read()) { $eta = new \DateTime($booking->getEta()); $interval = date_diff($eta, $now); switch ($interval->format('%r%d')) { case self::FIFTEEN_DAYS_BEFORE: $eventDispatcher->createBookingNotification($booking, BookingEvent::BOOKING_15_DAYS_NOTIFICATION); break; case self::SEVEN_DAYS_BEFORE: $eventDispatcher->createBookingNotification($booking, BookingEvent::BOOKING_7_DAYS_NOTIFICATION); break; case self::THREE_DAYS_BEFORE: $eventDispatcher->createBookingNotification($booking, BookingEvent::BOOKING_3_DAYS_NOTIFICATION); break; case self::TWO_DAYS_BEFORE: $eventDispatcher->createBookingNotification($booking, BookingEvent::BOOKING_2_DAYS_NOTIFICATION); break; case self::TODAY: $purchaseOrders = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_FOLIO_IMPORT, $booking->getIdFolioImport())->find(); while ($purchaseOrder = $purchaseOrders->read()) { $purchaseOrderEntries = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $purchaseOrder->getIdPurchaseOrder())->find(); $eventDispatcher->dispatchPurchaseOrderEvent($purchaseOrder, PurchaseOrderEvent::PURCHASEORDER_ARRIVED, $purchaseOrderEntries); } break; } } $quarantineRecoveryDeadlines = WarehouseEntranceQuarantineRecoveryDeadlineQuery::create()->whereAdd(WarehouseEntranceQuarantineRecoveryDeadline::RECOVERY_DEADLINE, \Zend_Date::now()->get('YYYY-MM-dd'), WarehouseEntranceQuarantineRecoveryDeadlineQuery::GREATER_OR_EQUAL)->find(); while ($quarantineRecoveryDeadline = $quarantineRecoveryDeadlines->read()) { $deadline = new \DateTime($quarantineRecoveryDeadline->getRecoveryDeadline()); $interval = date_diff($deadline, $now); switch ($interval->format('%r%d')) { case self::TODAY: if (WarehouseEntranceQuery::create()->whereAdd(WarehouseEntrance::ID_WAREHOUSE_ENTRANCE, $quarantineRecoveryDeadline->getIdWarehouseEntrance())->count()) { $warehouseEntry = WarehouseEntranceQuery::create()->whereAdd(WarehouseEntrance::ID_WAREHOUSE_ENTRANCE, $quarantineRecoveryDeadline->getIdWarehouseEntrance())->findOne(); $eventDispatcher->createWarehouseEntranceNotification($warehouseEntry, WarehouseEntranceEvent::WAREHOUSE_ENTRIES_QUARANTIES_DEADLINE, $quarantineRecoveryDeadline->getRecoveryDeadline()); } } } }
/** * * @return \Application\Model\Collection\PurchaseOrderEntryCollection */ public function getPurchaseOrderEntryCollection() { if (!$this->purchaseOrderEntryCollection instanceof PurchaseOrderEntryCollection) { $this->purchaseOrderEntryCollection = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $this->getPurchaseOrderCollection()->getPrimaryKeys())->find(); } return $this->purchaseOrderEntryCollection; }
/** * * @param int $idFolioImport * @return float $total */ private function getPurchaseOrdersTotalLoadCost($idFolioImport) { $folioImport = FolioImportQuery::create()->findByPK($idFolioImport); $purchaseOrderQuery = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_FOLIO_IMPORT, $idFolioImport)->whereAdd(PurchaseOrder::STATUS, PurchaseOrder::$Status['NewService'], PurchaseOrderQuery::NOT_EQUAL)->find(); $total = 0; while ($purchaseOrder = $purchaseOrderQuery->read()) { $purchaseOrderEntries = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $purchaseOrder->getIdPurchaseOrder())->find(); while ($purchaseOrderEntry = $purchaseOrderEntries->read()) { $total += $this->getPurchaseOrderEntryLoadCost($purchaseOrderEntry, $folioImport->getExchangeDollarToPeso(), $folioImport->getExchangeEuroToDollar()); } } // while ($purchaseOrder = $purchaseOrderQuery->read()){ // $amount = $this->getPurchaseOrderCommercialInvoice($purchaseOrder->getIdPurchaseOrder()); // $idSupplier = PurchaseOrderQuery::create()->findByPK($purchaseOrder->getIdPurchaseOrder())->getIdSupplier(); // $idCurrency = SupplierQuery::create()->findByPK($idSupplier)->getIdCurrency(); // $amount = $this->calculateAmountInUSD($amount, $folioImport->getExchangeDollarToPeso(), $folioImport->getExchangeEuroToDollar(), $idCurrency); // } return $total; }
public function getPurchaseOrderEntriesForNewClaimReportAction() { $docNum = $this->getRequest()->getParam('docNum'); $values = array(); $query = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::SAP_DOCUMENT_NUMBER, $docNum)->findOne(); $entries = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $query->getIdPurchaseOrder())->find(); $i = 0; while ($entry = $entries->read()) { $product = ProductQuery::create()->findByPK($entry->getIdProduct()); $values[$i]['itemName'] = $product->getItemName(); $values[$i]['itemCode'] = $product->getItemCode(); $i++; } die(json_encode($values)); }
/** * * */ public function getQuarantineListResultsAction() { $page = $this->getRequest()->getParam('page') ?: 1; $warehouseEntries = WarehouseEntranceQuery::create()->whereAdd(WarehouseEntrance::ID_FOLIO_IMPORT, null, WarehouseEntranceQuery::NOT_EQUAL)->whereAdd(WarehouseEntrance::ID_FOLIO_IMPORT, '0', WarehouseEntranceQuery::NOT_EQUAL)->find(); $params = $this->getRequest()->getParams(); $params['id_purchase_order'] = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::SAP_DOCUMENT_NUMBER, $params['sap_document_number'])->fetchOne(); if (empty($params['id_purchase_order']) && !empty($params['sap_document_number'])) { $params['id_purchase_order'] = -1; } $warehouseEntryProductQuery = WarehouseEntranceProductQuery::create()->whereAdd(WarehouseEntranceProduct::ID_PURCHASE_ORDER, null, WarehouseEntranceProductQuery::NOT_EQUAL)->whereAdd(WarehouseEntranceProduct::STATUS, WarehouseEntranceProduct::$Status['Quarantine'], WarehouseEntranceProductQuery::EQUAL)->whereAdd(WarehouseEntranceProduct::ID_WAREHOUSE_ENTRANCE, $warehouseEntries->getPrimaryKeys(), WarehouseEntranceProductQuery::IN)->filter($params)->orderBy(WarehouseEntranceProduct::ID_WAREHOUSE_ENTRANCE, 'DESC')->findByPage($page, $this->getMaxPerPage()); $purchaseOrderCollection = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $warehouseEntryProductQuery->getPurchaseOrderIds(), PurchaseOrderQuery::IN)->find(); $purchaseOrderEntryCollection = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $purchaseOrderCollection->getPrimaryKeys(), PurchaseOrderEntryQuery::IN)->find(); $i = 0; $this->getCatalog('QuarantineCatalog')->beginTransaction(); while ($warehouseEntryLine = $warehouseEntryProductQuery->read()) { $warehouseEntry = WarehouseEntranceQuery::create()->whereAdd(WarehouseEntrance::ID_WAREHOUSE_ENTRANCE, $warehouseEntryLine->getIdWarehouseEntrance())->findOne(); if (TransferLineLogQuery::create()->whereAdd(TransferLineLog::BASEENTRY, $warehouseEntryLine->getIdWarehouseEntrance())->whereAdd(TransferLineLog::BASELINE, $warehouseEntryLine->getIdWarehouseEntranceProduct())->count()) { $transferLine = TransferLineLogQuery::create()->whereAdd(TransferLineLog::BASEENTRY, $warehouseEntryLine->getIdWarehouseEntrance())->whereAdd(TransferLineLog::BASELINE, $warehouseEntryLine->getIdWarehouseEntranceProduct())->findOne(); $warehouseEntryLines[$i]['warehouse'] = WarehouseStoreQuery::create()->whereAdd(WarehouseStore::CODE, $transferLine->getWhsCode())->findOne()->getName(); } else { $warehouseEntryLines[$i]['warehouse'] = $this->i18n->_('Not Available'); } $claimReport = $this->getClaimReport($warehouseEntryLine->getIdWarehouseEntrance(), $warehouseEntryLine->getIdWarehouseEntranceProduct()); $folioImport = $this->getWarehouseEntryFolioImport($warehouseEntry->getIdFolioImport()); $quarantine = $this->getQuarantine($warehouseEntryLine->getIdWarehouseEntrance(), $warehouseEntryLine->getIdWarehouseEntranceProduct()); $product = ProductQuery::create()->findByPK($warehouseEntryLine->getIdProduct()); $warehouseEntryLines[$i]['id_warehouse_entrance_product'] = $warehouseEntryLine->getIdWarehouseEntranceProduct(); $warehouseEntryLines[$i]['id_warehouse_entrance'] = $warehouseEntry->getIdWarehouseEntrance(); $warehouseEntryLines[$i]['id_folio_import'] = $folioImport->getIdFolioImport(); $warehouseEntryLines[$i]['folio_import'] = $folioImport->getFolio(); if (PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $warehouseEntryLine->getIdPurchaseOrder())->find()->count()) { $purchaseOrder = PurchaseOrderQuery::create()->findByPK($warehouseEntryLine->getIdPurchaseOrder()); } else { $purchaseOrder = new PurchaseOrder(); } $purchaseOrderEntry = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $purchaseOrder->getIdPurchaseOrder())->whereAdd(PurchaseOrderEntry::LINE, (string) $warehouseEntryLine->getBaseLine())->findOneOrElse(new PurchaseOrderEntry()); $proformaInvoice = ProformaInvoiceQuery::create()->whereAdd(ProformaInvoice::ID_PROFORMA_INVOICE, $purchaseOrderEntry->getBaseEntry())->findOneOrElse(new ProformaInvoice()); $warehouseEntryLines[$i]['proforma_invoice'] = $proformaInvoice->getSapDocumentNumber(); $warehouseEntryLines[$i]['purchase_order'] = $purchaseOrder->getSapDocumentNumber(); $warehouseEntryLines[$i]['item_code'] = $product->getItemCode(); $warehouseEntryLines[$i]['item_name'] = $product->getItemName(); $warehouseEntryLines[$i]['original_quantity'] = $warehouseEntryLine->getQuantity(); $warehouseEntryLines[$i]['current_quantity'] = $currentQuantity = $quarantine->getQuantity(); if ($warehouseEntryLine->getLineStatus() == 'C') { // $warehouseEntryLines[$i]['cancelled'] = true; // $warehouseEntryLines[$i]['status'] = 'Cancelled'; // $warehouseEntryLines[$i]['statusRow'] = ' '; } else { $warehouseEntryLines[$i]['cancelled'] = false; if (!$currentQuantity) { $warehouseEntryLines[$i]['status'] = 'Debugged'; $warehouseEntryLines[$i]['statusRow'] = 'success'; } else { $warehouseEntryLines[$i]['status'] = $warehouseEntryLine->getStatusName(); $warehouseEntryLines[$i]['statusRow'] = 'warning'; } } $warehouseEntryLines[$i]['quarantine'] = $warehouseEntryLine->getStatusName(); $warehouseEntryLines[$i]['claimed_amount'] = $claimReport->getClaimedAmount(); $warehouseEntryLines[$i]['final_amount'] = $claimReport->getFinalAmount(); $warehouseEntryLines[$i]['claim_report_status'] = $claimReport->getStatusName(); $warehouseEntryLines[$i]['allow_debug'] = TransferLineLogQuery::create()->whereAdd(TransferLineLog::BASEENTRY, $warehouseEntryLine->getIdWarehouseEntrance())->whereAdd(TransferLineLog::BASELINE, $warehouseEntryLine->getIdWarehouseEntranceProduct())->count(); if ($warehouseEntryLine->getStatus() == WarehouseEntranceProduct::$Status['Quarantine']) { $quarantineProduct = $this->getQuarantine($warehouseEntryLine->getIdWarehouseEntrance(), $warehouseEntryLine->getIdWarehouseEntranceProduct()); $warehouseEntryLines[$i]['initial_quantity'] = $quarantineProduct->getQuantity(); } $i++; } $this->getCatalog('QuarantineCatalog')->commit(); die(json_encode($warehouseEntryLines)); }
public function fixPaymentTermsAction() { $POPaymentTerms = PurchaseOrderPaymentTermQuery::create()->find(); $this->getPurchaseOrderPaymentTermsCatalog()->beginTransaction(); try { while ($POPaymentTerms->valid()) { $POPaymentTerm = $POPaymentTerms->read(); $this->getPurchaseOrderPaymentTermsCatalog()->deleteById($POPaymentTerm->getIdPurchaseOrderPaymentTerm()); } $purchaseOrderEntries = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::BASE_ENTRY, "", PurchaseOrderEntryQuery::IS_NOT_NULL)->whereAdd(PurchaseOrderEntry::BASE_LINE, "", PurchaseOrderEntryQuery::IS_NOT_NULL)->find(); $purchaseOrderPaymentTerm = new PurchaseOrderPaymentsManager(); $POPaymentTerms = $purchaseOrderPaymentTerm->createPaymentTerms($purchaseOrderEntries); $programmedPayments = PurchaseOrderProgrammedPaymentQuery::create()->find(); $proformaInvoicePaymentTerms = ProformaInvoicePaymentTermQuery::create()->whereAdd(ProformaInvoicePaymentTerm::ID_PROFORMA_INVOICE_PAYMENT, $programmedPayments->getProformaInvoicePaymentTermIds())->find(); while ($programmedPayments->valid()) { $programmedPayment = $programmedPayments->read(); $proformaInvoicePaymentTerm = $proformaInvoicePaymentTerms->getByPK($programmedPayment->getIdProformaInvoicePaymentTerm()); $POPaymentTerm = null; $POPaymentTerms->each(function (PurchaseOrderPaymentTerm $purchaseOrderPaymentTerm) use($programmedPayment, $proformaInvoicePaymentTerm, &$POPaymentTerm) { if ($purchaseOrderPaymentTerm->getIdEvent() == $proformaInvoicePaymentTerm->getIdEvent() && $purchaseOrderPaymentTerm->getLine() == $programmedPayment->getLine() && $purchaseOrderPaymentTerm->getIdPurchaseOrder() == $programmedPayment->getIdPurchaseOrder()) { $POPaymentTerm = $purchaseOrderPaymentTerm; } }); if ($POPaymentTerm instanceof PurchaseOrderPaymentTerm) { $programmedPayment->setIdPurchaseOrderPaymentTerm($POPaymentTerm->getIdPurchaseOrderPaymentTerm()); $this->getPurchaseOrderProgrammedPaymentCatalog()->update($programmedPayment); } } $this->getPurchaseOrderPaymentTermsCatalog()->commit(); die("fin"); } catch (Exception $e) { $this->getPurchaseOrderPaymentTermsCatalog()->rollBack(); die($e->getMessage()); } }
/** * * @param int $idFolioImport */ public function __construct($idFolioImport, $USDToMXN, $EURtoUSD) { $this->folioImport = FolioImportQuery::create()->findByPK($idFolioImport); if ($USDToMXN) { $this->USDToMXN = $USDToMXN; } if ($EURtoUSD) { $this->EURtoUSD = $EURtoUSD; } $this->purchaseOrders = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_FOLIO_IMPORT, $idFolioImport)->find(); $this->purchaseOrdersEntries = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $this->getPurchaseOrders()->getPrimaryKeys())->find(); $this->products = $products = ProductQuery::create()->whereAdd(Product::ITEM_CODE, $this->getPurchaseOrdersEntries()->getProducts())->find(); $this->productAntidumpingDuties = ProductAntidumpingDutyQuery::create()->whereAdd(ProductAntidumpingDuty::PARENT_KEY, $products->getKeyMother())->find(); }
public function zoomInAction() { if ($this->getRequest()->isPost()) { $keyMother = $this->getRequest()->getParam("key_mother"); $itemCode = $this->getRequest()->getParam("item_code"); $products = ProductQuery::create()->find(); $keyMotherProducts = $products->filterByKeyMother($keyMother); $restock = RestockQuery::create()->findOne(); $allRestockEntries = RestockEntryQuery::create()->find(); $restockEntries = $allRestockEntries->filterByArrayIdProduct($keyMotherProducts->getPrimaryKeys()); $freightTypes = FreightTypeQuery::create()->actives()->find(); $restockFinalResultsManager = new RestockFinalResultsManager($allRestockEntries, $products); $product = $products->getByPK($itemCode); $restockAbcClass = RestockAbcClassQuery::create()->find(); $freightFares = FreightFareQuery::create()->find(); $freightFare = $freightFares->getByPK($product->getDefaultFreightFare()); $fobPort = PortCustomQuery::create()->findByPKOrElse($freightFare->getFobPort(), new PortCustom()); $fobPortFreightFares = $freightFares->filterByFobPort($fobPort); $freightTypeList = $freightTypes->containsIndex($freightFare->getIdFreightType()) ? $freightTypes->getByPK($freightFare->getIdFreightType()) : new FreightType(); if ($product->getIdSupplier() != "") { $supplier = SapSupplierQuery::create()->findByPK($product->getIdSupplier()); } else { $supplier = new SapSupplier(); } $keyMotherInfo["keyMother"] = $product->getKeyMother(); $keyMotherInfo["PurchaseKeyMother"] = $restockFinalResultsManager->getTotalPurchaseByKeyMother($keyMother); $keyMotherInfo["catalog"] = $product->getCodPro(); $keyMotherInfo["port"] = $fobPort->getName(); $keyMotherInfo["freightList"] = $freightTypeList->getName(); $keyMotherInfo["supplier"] = $supplier->getCardCode() . " - " . $supplier->getCardname(); $keyMotherInfo["supplierPurchase"] = $restockFinalResultsManager->getTotalPurchaseByIdSupplier($supplier->getIdSupplier()); $keyMotherInfo["fobPortPurchase"] = $restockFinalResultsManager->getTotalByIdFreigthFare($fobPortFreightFares->getPrimaryKeys()); while ($restockEntries->valid()) { $restockEntry = $restockEntries->read(); $product = $products->getByPK($restockEntry->getIdProduct()); $restockInfo[$restockEntry->getIndex()]["idRestockEntry"] = $restockEntry->getIdRestockEntry(); $restockInfo[$restockEntry->getIndex()]["mcParts"] = $product->getMcParts(); $restockInfo[$restockEntry->getIndex()]["volume"] = $product->getVolume(); $restockInfo[$restockEntry->getIndex()]["status"] = $product->getStatus(); $restockInfo[$restockEntry->getIndex()]["itemCode"] = $product->getItemCode(); $restockInfo[$restockEntry->getIndex()]["name"] = $product->getItemName(); $restockInfo[$restockEntry->getIndex()]["onStock"] = $restockEntry->getInvRelat(); $restockInfo[$restockEntry->getIndex()]["VIM"] = $product->getIndividualVim(); $restockInfo[$restockEntry->getIndex()]["VIMMin"] = $restockEntry->getVimMin(); $restockInfo[$restockEntry->getIndex()]["VIMMax"] = $restockEntry->getVimMax(); $restockInfo[$restockEntry->getIndex()]["newQuantityMin"] = $restockEntry->getNewQuantityMin(); $restockInfo[$restockEntry->getIndex()]["newImportMin"] = $restockEntry->getPriceMin(); $restockInfo[$restockEntry->getIndex()]["newQuantityMax"] = $restockEntry->getNewQuantityMax(); $restockInfo[$restockEntry->getIndex()]["newImportMax"] = $restockEntry->getPriceMax(); $restockInfo[$restockEntry->getIndex()]["coverMin"] = $restockEntry->getMinCoverPercent(); $restockInfo[$restockEntry->getIndex()]["coverMax"] = $restockEntry->getMaxCoverPercent(); $restockInfo[$restockEntry->getIndex()]["ABCMin"] = $restockAbcClass->getByPK($restockEntry->getAbcMix())->getName(); $restockInfo[$restockEntry->getIndex()]["desition"] = $restockEntry->getDesitionName(); $restockInfo[$restockEntry->getIndex()]["lastFOB"] = $product->getCost(); $restockInfo[$restockEntry->getIndex()]["targetFOB"] = $restockEntry->getMinTargetPrice(); $restockInfo[$restockEntry->getIndex()]["quantityPurchase"] = $restockEntry->getPurchaseQuantity(); $restockInfo[$restockEntry->getIndex()]["importPurchase"] = $restockEntry->getPurchasePrice(); $restockInfo[$restockEntry->getIndex()]["quantityPercent"] = $restockEntry->getPurchaseQuantityPercernt(); $restockInfo[$restockEntry->getIndex()]["importPercent"] = $restockEntry->getPurchasePricePercent(); $restockInfo[$restockEntry->getIndex()]["quantitySetted"] = $restockEntry->getQuantity(); $restockInfo[$restockEntry->getIndex()]["purchaseSetted"] = $restockFinalResultsManager->getTotalCartonsByIdRestockEntry($restockEntry->getIdRestockEntry()); $restockInfo[$restockEntry->getIndex()]["importPurchaseSetted"] = $restockFinalResultsManager->getPurchaseSettedByIdRestockEntry($restockEntry->getIdRestockEntry()); $restockInfo[$restockEntry->getIndex()]["isManual"] = $product->isManual(); $restockInfo[$restockEntry->getIndex()]["cbm"] = $totalVolume = $restockFinalResultsManager->getTotalVolumeByIdRestockEntry($restockEntry->getIdRestockEntry()); $restockInfo[$restockEntry->getIndex()]["suggestedFreight"] = implode(" / ", $freightTypes->getSuggestedFreights($totalVolume)->toCombo()); $restockInfo[$restockEntry->getIndex()]["checked"] = $restockEntry->getChecked(); } $requisitionEntries = RequisitionEntryQuery::create()->whereAdd(RequisitionEntry::ID_PRODUCT, $keyMotherProducts->getPrimaryKeys(), RequisitionEntryQuery::IN)->whereAdd(RequisitionEntry::STATUS, array(RequisitionEntry::$Status["Closed"], RequisitionEntry::$Status["Canceled"], RequisitionEntry::$Status["Inactive"]), RequisitionEntryQuery::NOT_IN)->find()->toArrayForZoomIn(); $proformaInvoiceEntries = ProformaInvoiceEntryQuery::create()->whereAdd(ProformaInvoiceEntry::ID_PRODUCT, $keyMotherProducts->getPrimaryKeys(), ProformaInvoiceEntryQuery::IN)->whereAdd(ProformaInvoiceEntry::LINE_STATUS, ProformaInvoiceEntry::$LineStatus["Open"])->find()->toArrayForZoomIn(); $purchaseOrderEntries = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PRODUCT, $keyMotherProducts->getPrimaryKeys(), PurchaseOrderEntryQuery::IN)->whereAdd(PurchaseOrderEntry::LINE_STATUS, PurchaseOrderEntry::$LineStatus["Open"])->find()->toArrayForZoomIn(); $documents = array_merge(array_merge($requisitionEntries, $proformaInvoiceEntries), $purchaseOrderEntries); $currencies = CurrencyQuery::create()->find()->toArray(); die(Zend_Json::encode(array("keyMother" => $keyMotherInfo, "restock" => $restockInfo, "documents" => $documents, "currecies" => $currencies))); } }
private function getPurchaseOrders($idFolioImport, $status = null, $in = true) { $id = $idFolioImport; $purchaseOrderFolioQuery = PurchaseOrderFolioQuery::create()->addColumn(PurchaseOrderFolio::ID_PURCHASE_ORDER)->whereAdd(PurchaseOrderFolio::ID_FOLIO_IMPORT, $id); if ($status == null) { $query = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $purchaseOrderFolioQuery, PurchaseOrderQuery::IN)->count(); $purchaseOrderQuery = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $purchaseOrderFolioQuery, PurchaseOrderQuery::IN)->fetchAll(); } else { if ($in) { $query = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $purchaseOrderFolioQuery, PurchaseOrderQuery::IN)->whereAdd(PurchaseOrder::STATUS, PurchaseOrder::$Status[$status], PurchaseOrderQuery::IN)->count(); $purchaseOrderQuery = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $purchaseOrderFolioQuery, PurchaseOrderQuery::IN)->whereAdd(PurchaseOrder::STATUS, PurchaseOrder::$Status[$status], PurchaseOrderQuery::IN)->fetchAll(); } else { $query = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $purchaseOrderFolioQuery, PurchaseOrderQuery::IN)->whereAdd(PurchaseOrder::STATUS, PurchaseOrder::$Status[$status], PurchaseOrderQuery::NOT_EQUAL)->count(); $purchaseOrderQuery = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $purchaseOrderFolioQuery, PurchaseOrderQuery::IN)->whereAdd(PurchaseOrder::STATUS, PurchaseOrder::$Status[$status], PurchaseOrderQuery::NOT_EQUAL)->fetchAll(); } } if ($query) { $i = 0; foreach ($purchaseOrderQuery as $purchaseOrder) { try { $purchaseOrderEntryQuery = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $purchaseOrder['id_purchase_order'])->fetchAll(); $price = 0; $cbm = 0; $individual_packs = 0; $cartons = 0; $quantity = 0; $weight = 0; $valuable = array(); $j = 0; $packingList = PurchaseOrderFileQuery::create()->whereAdd(PurchaseOrderFile::ID_PURCHASE_ORDER, $purchaseOrder['id_purchase_order'])->whereAdd(PurchaseOrderFile::DOCUMENT_TYPE, PurchaseOrderFile::$DocumentType['PackingList'])->count(); $commercialInvoice = PurchaseOrderFileQuery::create()->whereAdd(PurchaseOrderFile::ID_PURCHASE_ORDER, $purchaseOrder['id_purchase_order'])->whereAdd(PurchaseOrderFile::DOCUMENT_TYPE, PurchaseOrderFile::$DocumentType['CommercialInvoice'])->count(); if ($packingList) { $purchaseOrders[$i]['packing_list'] = true; } else { $purchaseOrders[$i]['packing_list'] = false; } if ($commercialInvoice) { $purchaseOrders[$i]['commercial_invoice'] = true; } else { $purchaseOrders[$i]['commercial_invoice'] = false; } foreach ($purchaseOrderEntryQuery as $purchaseOrderEntry) { $product = ProductQuery::create()->findByPK($purchaseOrderEntry['id_product'])->toArray(); if (!empty($product['mc_parts'])) { $cartonsEntry = ceil($purchaseOrderEntry['quantity'] / $product['mc_parts']); } else { $this->setFlash('warning', $this->i18n->_("You must edit MC Parts, it cannot be cero.")); $this->_redirect('product/edit/id/' . $product['id_product']); } $volume = $product['mc_front'] * $product['mc_height'] * $product['mc_depth'] / 1000000; $cbm += $cartonsEntry * $volume; $weight += $cartonsEntry * $product['mc_weight']; $price += $purchaseOrderEntry['quantity'] * $purchaseOrderEntry['price']; $cartons += $cartonsEntry; $quantity += $purchaseOrderEntry['quantity']; $entries[$j]['id_product'] = $product['id_product']; $entries[$j]['status'] = $this->getPurchaseOrderEntryStatus($purchaseOrderEntry['status']); $entries[$j]['important'] = $product['important']; $entries[$j]['item_code'] = $product['item_code']; $entries[$j]['product'] = $product['item_name']; $entries[$j]['price'] = $purchaseOrderEntry['price']; $entries[$j]['amount'] = $purchaseOrderEntry['quantity'] * $purchaseOrderEntry['price']; $entries[$j]['cartons'] = $cartonsEntry; $entries[$j]['quantity'] = $purchaseOrderEntry['quantity']; $entries[$j]['weight'] = $product['mc_weight'] * $cartonsEntry; $entries[$j]['volume'] = number_format($volume * $cartonsEntry, 2); $entries[$j]['default_shipping'] = FreightTypeQuery::create()->findByPK($product['default_freight_fare'])->getName(); if (!empty($product['import_permit'])) { $importPermit = FileQuery::create()->findByPK($product['import_permit']); if ($importPermit) { $entries[$j]['import_permit'] = true; } else { $entries[$j]['import_permit'] = false; } } else { $entries[$j]['import_permit'] = false; } $entries[$j]['row_status'] = 'success'; $purchaseOrders[$i]['row_status'] = 'success'; if (!$entries[$j]['import_permit']) { $entries[$j]['row_status'] = 'error'; $purchaseOrders[$i]['row_status'] = 'error'; $entries[$j]['label'] = $this->i18n->_('This product, does not have an Import Clearance Document.'); $purchaseOrders[$i]['label'] = $this->i18n->_('This Purchase Order has entries without Import Clearance.'); } else { if (!$purchaseOrders[$i]['commercial_invoice']) { $purchaseOrders[$i]['row_status'] = 'error'; $purchaseOrders[$i]['label'] = $this->i18n->_('This Purchase Order, does not have a Commercial Invoice Document.'); } else { if (!$purchaseOrders[$i]['packing_list']) { $purchaseOrders[$i]['row_status'] = 'error'; $purchaseOrders[$i]['label'] = $this->i18n->_('This Purchase Order, does not have a Packing List Document.'); } else { if ($product['important']) { $entries[$j]['row_status'] = 'warning'; $purchaseOrders[$i]['row_status'] = 'warning'; $entries[$j]['label'] = $this->i18n->_('This product is small and valuable.'); $purchaseOrders[$i]['label'] = $this->i18n->_('This Purchase Order has small and valuable stuff.'); } else { $entries[$j]['row_status'] = 'success'; $purchaseOrders[$i]['row_status'] = 'success'; } } } } $j++; } //Checks if the entry has important stuff if (count($valuable) == 1) { $purchaseOrders[$i]['importance'] = $valuable[1]; } else { $flag = 0; $value = $valuable[1]; for ($j = 2; $j <= count($valuable); $j++) { if ($valuable[$j] != $value) { $value = 2; break; } } $purchaseOrders[$i]['importance'] = $value; } switch ($purchaseOrders[$i]['importance']) { case '1': $purchaseOrders[$i]['importance'] = $this->i18n->_('Yes'); break; case '2': $purchaseOrders[$i]['importance'] = $this->i18n->_('Mixed'); break; default: $purchaseOrders[$i]['importance'] = $this->i18n->_('No'); } } catch (Exception $e) { var_dump($e->getMessage()); } $purchaseOrders[$i]['id_purchase_order_folio'] = PurchaseOrderFolioQuery::create()->whereAdd(PurchaseOrderFolio::ID_PURCHASE_ORDER, $purchaseOrder['id_purchase_order'])->whereAdd(PurchaseOrderFolio::ID_FOLIO_IMPORT, $idFolioImport)->findOne()->getIdPurchaseOrderFolio(); $cartons = 0; $quantity = 0; $weight = 0; $cbm = 0; $price = 0; foreach ($entries as $entry) { $cartons += intval($entry['cartons']); $quantity += intval($entry['quantity']); $weight += $entry['weight']; $cbm += $entry['volume']; $price += $entry['price'] * $entry['quantity']; } $purchaseOrders[$i]['entries'] = $entries; $purchaseOrders[$i]['cartons'] = $cartons; $purchaseOrders[$i]['quantity'] = $quantity; $purchaseOrders[$i]['weight'] = $weight; $purchaseOrders[$i]['cbm'] = number_format($cbm, 2); $purchaseOrders[$i]['price'] = $price; $purchaseOrders[$i]['id_purchase_order'] = $purchaseOrder['id_purchase_order']; $purchaseOrders[$i]['courtyard_arrival_date'] = $purchaseOrder['courtyard_arrival_date']; $i++; } return $purchaseOrders; } else { return null; } }
/** * This action get all purchase order history about one product * * @author Erick Guevara Martínez * @return PurchaseOrderEntry */ public function purchasesHistoryAction() { $idProduct = $this->getRequest()->getParam("idProduct"); // Get the searched product to obtain your mother key $product = ProductQuery::create()->findByPKOrThrow($idProduct, $this->i18n->_("The Product with id {$idProduct} does not exist")); // Search all products with the same key mother $motherKeyProducts = ProductQuery::create()->whereAdd(Product::ITEM_CODE, $product->getKeyMother() . "%")->find(); $purchaseOrderEntries = new PurchaseOrderEntryCollection(); if ($motherKeyProducts->count() > 0) { // Search the satisfactory purchases of all searched products previouslly $purchaseOrderEntries = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PRODUCT, $motherKeyProducts->getPrimaryKeys(), BaseQuery::IN)->whereAdd(PurchaseOrderEntry::STATUS, array(PurchaseOrderEntry::$Status["Inactive"], PurchaseOrderEntry::$Status["Cancelled"]), BaseQuery::NOT_IN)->find(); } $purchaseOrders = new PurchaseOrderCollection(); if ($purchaseOrderEntries->count() > 0) { // Search the respective purchase order of the entries searched previouslly $purchaseOrders = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $purchaseOrderEntries->getDistinctPurchaseOrder(), BaseQuery::IN)->whereAdd(PurchaseOrder::CANCELLED, PurchaseOrder::$Cancelled["Yes"], BaseQuery::NOT_EQUAL)->addDescendingOrderBy(PurchaseOrder::PURCHASE_ORDER_DATE)->find(); } $suppliers = new SupplierCollection(); $currencies = new CurrencyCollection(); if ($purchaseOrders->count() > 0) { // Search the respective suppliers of the orders samples searched previouslly $suppliers = SapSupplierQuery::create()->whereAdd(SapSupplier::CARDCODE, $purchaseOrders->getDistinctSuppliers(), BaseQuery::IN)->find(); $currencies = CurrencyQuery::create()->whereAdd(Currency::CURRCODE, $purchaseOrders->getDistinctCurrencies(), BaseQuery::IN)->find(); } // Get the required info to ajax response $response = array(); $i = 0; while ($order = $purchaseOrders->read()) { $entries = $purchaseOrderEntries->filter(function (PurchaseOrderEntry $POEntry) use($order) { if ($POEntry->getIdPurchaseOrder() == $order->getIdPurchaseOrder()) { return $POEntry; } }); $currency = $currencies->getByPK($order->getIdCurrency()); $supplier = $suppliers->getByPK($order->getIdSupplier()); while ($entry = $entries->read()) { $product = $motherKeyProducts->getByPK($entry->getIdProduct()); $response[$i]["status"] = $product->getStatus(); $response[$i]["motherKey"] = $product->getKeyMother(); $response[$i]["productKey"] = $product->getItemCode(); $response[$i]["productName"] = utf8_encode($product->getItemName()); $response[$i]["date"] = utf8_encode($order->getPurchaseOrderDateAsZendDate()->toString("yyyy-MM-dd hh:mm:ss")); $response[$i]["cost"] = $entry->getPrice(); $response[$i]["quantity"] = $entry->getQuantity(); $response[$i]["currencyCode"] = htmlentities($currency->getCurrCode()); $response[$i]["currencySymbol"] = $currency->getDocCurrCode(); $i++; } } die(Zend_Json::encode($response)); }