/** * */ public function saveQuarantineDebugAction() { $url = 'warehouse-entrance/quarantine-list'; $SapConnection = new SAPConnectorClient(); $entrances = $this->getRequest()->getParam('entrances'); $entrance = $entrances[0]; $idWarehouseEntry = $entrance['idWarehouseEntrance']; $idWarehouseEntryLine = $entrance['idWarehouseEntranceProduct']; $warehouseEntry = WarehouseEntranceQuery::create()->findByPK($idWarehouseEntry); $warehouseEntryLine = WarehouseEntranceProductQuery::create()->whereAdd(WarehouseEntranceProduct::ID_WAREHOUSE_ENTRANCE, $idWarehouseEntry)->whereAdd(WarehouseEntranceProduct::ID_WAREHOUSE_ENTRANCE_PRODUCT, $idWarehouseEntryLine)->findOne(); $folioImport = FolioImportQuery::create()->findByPK($warehouseEntry->getIdFolioImport()); $this->getCatalog('QuarantineCatalog')->beginTransaction(); $quarantine = $this->getQuarantine($idWarehouseEntry, $idWarehouseEntryLine); $quantity = $quarantine->getQuantity() - $entrance['ppv'] - $entrance['second'] - $entrance['destruction'] - $entrance['missing'] - $entrance['other_code']; $quarantine->setQuantity($quantity); $quarantine->setPpv($entrance['ppv'] + $quarantine->getPpv()); $quarantine->setSecond($entrance['second'] + $quarantine->getSecond()); $quarantine->setDestruction($entrance['destruction'] + $quarantine->getDestruction()); $quarantine->setMissing($entrance['missing'] + $quarantine->getMissing()); $quarantine->setLeftover($entrance['leftover'] + $quarantine->getLeftover()); $quarantine->setOtherCode($entrance['other_code'] + $quarantine->getOtherCode()); $this->getCatalog('QuarantineCatalog')->update($quarantine); $transfer = TransferQuery::create()->whereAdd(Transfer::ID_FOLIO_IMPORT, $warehouseEntry->getIdFolioImport())->whereAdd(TransferLine::ITEM_CODE, $warehouseEntryLine->getIdProduct())->innerJoinTransferLine()->findOne(); $baseTransferLine = TransferLineQuery::create()->whereAdd(TransferLine::ID_TRANSFER, $transfer->getIdTransfer())->whereAdd(TransferLine::ITEM_CODE, $warehouseEntryLine->getIdProduct())->findOne(); $warehouseStore = WarehouseStoreQuery::create()->whereAdd(WarehouseStore::CODE, $warehouseEntryLine->getIdWarehouse())->findOne(); $idWarehouse = $warehouseEntryLine->getIdWarehouse(); $ppvToQuarantine = array_flip(TransferLine::$fromQuarantineToPpv); $idWarehouseQuarantine = $ppvToQuarantine[$idWarehouse]; $idWarehousePpv = TransferLine::$fromQuarantineToPpv[$idWarehouseQuarantine]; $entries['ppv'] = $entrance['ppv']; $entries['second'] = $entrance['second']; $entries['destruction'] = $entrance['destruction']; $entries['missing'] = $entrance['missing']; $entries['otherCode'] = $entrance['other_code']; if ($entrance['leftover']) { $idPurchaseOrder = $warehouseEntryLine->getIdPurchaseOrder(); $purchaseOrderEntryLine = $warehouseEntryLine->getBaseLine(); $purchaseOrder = PurchaseOrderQuery::create()->findByPK($idPurchaseOrder); $specialWarehouseEntry = new WarehouseEntrance(); $specialWarehouseEntry->setArrivalDate(\Zend_Date::now()->get('YYYY-MM-dd')); $specialWarehouseEntry->setComments($entrance['commentaries'] . ' '); $specialWarehouseEntry->setCurrency($purchaseOrder->getIdCurrency()); $specialWarehouseEntry->setImportLicense($batchNumber); $specialWarehouseEntry->setGroupnum($purchaseOrder->getGroupnum()); $specialWarehouseEntry->setIdFolioImport($folioImport->getIdFolioImport()); $specialWarehouseEntry->setIdSupplier($purchaseOrder->getIdSupplier()); $specialWarehouseEntry->setSamplingType(WarehouseEntrance::$SampingType['Normal']); $specialWarehouseEntry->setNumAtCard(0); $specialWarehouseEntry->setQuarantine(0); $specialWarehouseEntry->setStatus(0); $specialWarehouseEntry->setImportLicense(str_replace(' ', '', $folioImport->getImportLicence())); $purchaseOrderEntry = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $idPurchaseOrder)->whereAdd(PurchaseOrderEntry::LINE, $purchaseOrderEntryLine)->findOne(); $specialWarehouseEntryLine = new WarehouseEntranceProduct(); $specialWarehouseEntryLine->setBaseLine(0); $specialWarehouseEntryLine->setIdWarehouseEntranceProduct(0); $specialWarehouseEntryLine->setBaseRef(0); $specialWarehouseEntryLine->setFolioWarehouse($entrance['folioWarehouse']); $specialWarehouseEntryLine->setIdProduct($purchaseOrderEntry->getIdProduct()); $specialWarehouseEntryLine->setIdPurchaseOrder($idPurchaseOrder); $specialWarehouseEntryLine->setIdWarehouse($idWarehousePpv); $specialWarehouseEntryLine->setIdWarehouseEntrance(0); $specialWarehouseEntryLine->setIdWarehouseEntranceProduct($line); $specialWarehouseEntryLine->setPrice($purchaseOrderEntry->getPrice()); $specialWarehouseEntryLine->setQuantity($entrance['leftover']); $specialWarehouseEntryLine->setQuantityByWarehouse($purchaseOrderEntry->getQuantityByWarehouse()); $specialWarehouseEntryLine->setStatus(0); $specialWarehouseEntryLine->setTaxCode($purchaseOrderEntry->getTaxCode()); $specialWarehouseEntryLine->setCurrency($purchaseOrder->getIdCurrency()); $specialWarehouseEntry->getLines()->append($specialWarehouseEntryLine); $result = $SapConnection->createFreeWarehouseEntry($specialWarehouseEntry); } $transfer = new Transfer(); $transfer->setComments($entrance['commentaries']); $transfer->setFolioWarehouse($entrance['folioWarehouse']); $transfer->setIdFolioImport($warehouseEntry->getIdFolioImport()); $transfer->setIdWarehouseOrigin($idWarehouseQuarantine); $transfer->setInspectionResult(0); $transfer->setSamplingType(0); $transfer->setStatus(0); $i = 0; $ppvBase = StoreHouseByLocationQuery::create()->whereAdd(StoreHouseByLocation::WHS_CODE_STORE_HOUSES_DESTINATION, $baseTransferLine->getIdWarehouse())->findOne(); foreach ($entries as $type => $entry) { if ($entry) { if (StoreHouseByLocationQuery::create()->whereAdd(StoreHouseByLocation::WHS_CODE_STORE_HOUSES_PPV, $warehouseEntryLine->getIdWarehouse())->whereAdd(StoreHouseByLocation::TYPE, WarehouseStore::$Type[$type])->count()) { $idWarehouseStore = StoreHouseByLocationQuery::create()->whereAdd(StoreHouseByLocation::WHS_CODE_STORE_HOUSES_PPV, $warehouseEntryLine->getIdWarehouse())->whereAdd(StoreHouseByLocation::TYPE, WarehouseStore::$Type[$type])->findOne()->getWhsCodeStoreHousesDestination(); } else { $idWarehouseStore = $warehouseEntryLine->getIdWarehouse(); } $transferLine = new TransferLine(); // $baseIdWarehouse =StoreHouseByLocationQuery::create()->whereAdd(StoreHouseByLocation::WHS_CODE_STORE_HOUSES_PPV, $baseTransferLine->getIdWarehouse())->whereAdd(StoreHouseByLocation::TYPE, WarehouseStore::$Type['quarantine'])->findOne()->getWhsCodeStoreHousesDestination(); if ($idWarehouseStore != $baseTransferLine->getIdWarehouse()) { $transferLine->setBaseEntry($baseTransferLine->getIdTransfer()); $transferLine->setBaseLine($baseTransferLine->getLineNum()); $transferLine->setFolioWarehouse($folioImport->getImportLicence()); $transferLine->setItemCode($warehouseEntryLine->getIdProduct()); $transferLine->setLineNum($i); $transferLine->setIdWarehouse($idWarehouseStore); $transferLine->setQuantity($entry); $transferLine->setStatus(0); $transfer->getLines()->append($transferLine); $i++; } } } $result = $SapConnection->createTransfer($transfer, $folioImport->getImportLicence(), true); if ($result->createTransferResult->success) { $this->setFlash('ok', $this->i18n->_('The quarantine debugging has been saved.')); $this->getCatalog('QuarantineCatalog')->commit(); } else { $this->setFlash('error', $result->createTransferResult->message); $this->getCatalog('QuarantineCatalog')->rollBack(); } $this->_redirect($url); }
/** * * @param Transfer $transfer * @param string $batchNumber * @param bool $quarantine * @return stdClass */ public function createTransfer(Transfer $transfer, $batchNumber, $quarantine = false) { $lines = array(); $transferLines = $transfer->getLines(); $numberOfLines = $transfer->getLines()->count(); while ($transferLine = $transferLines->read()) { $lines[] = $this->createTransferLine($transferLine, $batchNumber); } $quarantine = $quarantine == false ? 0 : 1; $parameters['transfer'] = array('fromWarehouse' => utf8_encode($transfer->getIdWarehouseOrigin()), 'IdFolioImport' => $transfer->getIdFolioImport(), 'InspectionResult' => utf8_encode($transfer->getInspectionResult()), 'SamplingType' => $transfer->getSamplingType(), 'Status' => $transfer->getStatus(), 'Comments' => utf8_encode($transfer->getComments()), 'Quarantine' => $quarantine, 'transferLines' => $lines); if ($numberOfLines) { $result = $this->soapClient->createTransfer($parameters); } else { $result->createTransferResult->success = true; $result->createTransferResult->message = true; } return $result; }