示例#1
0
 /**
  *
  * makeBean
  * @param array $resultset
  * @return \Application\Model\Bean\File
  */
 protected function makeBean($resultset)
 {
     return FileFactory::createFromArray($resultset);
 }
 /**
  *
  * @return array
  */
 public function updateAction()
 {
     $params = $this->getRequest()->getParams();
     if ($this->getRequest()->isPost()) {
         $idProformaInvoice = $this->getRequest()->getParam('id_proforma_invoice');
         $proformaInvoiceParams['date'] = $this->getRequest()->getParam('date', null);
         $proformaInvoiceParams['folio'] = $this->getRequest()->getParam('folio', null);
         $proformaInvoiceParams['id_courtyard'] = $this->getRequest()->getParam('id_courtyard', null);
         $proformaInvoiceParams['id_currency'] = $this->getRequest()->getParam('id_currency');
         $proformaInvoiceParams['comments'] = $this->getRequest()->getParam('comments', null);
         $proformaInvoiceEntriesParams['warehouseStore'] = $this->getRequest()->getParam('warehouse_store', '');
         $proformaInvoiceEntriesParams['entries'] = $this->getRequest()->getParam('entries', array());
         $proformaInvoicePaymentTermIds = ProformaInvoiceProgrammedPaymentQuery::create()->addColumn(ProformaInvoiceProgrammedPayment::ID_PROFORMA_INVOICE_PAYMENT_TERM)->whereAdd(ProformaInvoiceProgrammedPayment::ID_PROFORMA_INVOICE, $idProformaInvoice)->fetchCol();
         $proformaInvoiceNotErasableEvents = ProformaInvoicePaymentTermQuery::create()->addColumn(ProformaInvoicePaymentTerm::ID_EVENT)->whereAdd(ProformaInvoicePaymentTerm::ID_PROFORMA_INVOICE_PAYMENT, $proformaInvoicePaymentTermIds, ProformaInvoicePaymentTermQuery::IN)->distinct()->fetchCol();
         $erasableEvents = EventQuery::create()->addColumn(Event::ID_EVENT)->whereAdd(Event::ID_EVENT, $proformaInvoiceNotErasableEvents, EventQuery::NOT_IN)->distinct()->fetchCol();
         $proformaInvoicePaymentTermsParams["events"] = $this->getRequest()->getParam('events', array());
         $totalAmmount = $this->getRequest()->getParam('quantityMatch');
         $totalProformaInvoiceEntries = count($proformaInvoiceEntriesParams['entries']);
         try {
             $proformaInvoice = ProformaInvoiceQuery::create()->findByPKOrThrow($idProformaInvoice, $this->i18n->_("Proforma Invoice with id {$idProformaInvoice} not found"));
             $proformaInvoiceEntries = ProformaInvoiceEntryQuery::create()->whereAdd(ProformaInvoiceEntry::ID_PROFORMA_INVOICE, $proformaInvoice->getIdProformaInvoice())->find();
             foreach ($proformaInvoiceEntriesParams['entries'] as $index => $values) {
                 $proformaInvoiceEntry = $proformaInvoiceEntries->getByPK($index);
                 $values["id_warehouse_store"] = $proformaInvoiceEntriesParams['warehouseStore'];
                 ProformaInvoiceEntryFactory::populate($proformaInvoiceEntry, $values);
             }
             ProformaInvoiceFactory::populate($proformaInvoice, $proformaInvoiceParams);
             $sapConnectionClient = new SAPConnectorClient();
             $result = $sapConnectionClient->purchaseQuotation($proformaInvoice, $proformaInvoiceEntries);
             if ($result->purchaseQuotationResult->code == 200) {
                 $proformaInvoiceFiles = ProformaInvoiceFileQuery::create()->whereAdd(ProformaInvoiceFile::ID_PROFORMA_INVOICE, $proformaInvoice->getIdProformaInvoice())->find();
                 $uploadPath = 'public/' . ($filePath = "files/proformas/" . $result->purchaseQuotationResult->id);
                 if ($_FILES["proforma_invoice_file"]["name"] != "") {
                     $fileUploader = new FileUploader("proforma_invoice_file");
                     $fileUploader->saveFile($uploadPath, false);
                     $newFile = FileFactory::createFromArray(array(File::CONTENT => $filePath . $fileUploader->getFileName(), File::TYPE => file::$typeFile["typeFile"]));
                     $this->getFileCatalog()->create($newFile);
                     $newProformaInvoiceFile = ProformaInvoiceFileFactory::createFromArray(array(ProformaInvoiceFile::ID_PROFORMA_INVOICE => $proformaInvoice->getIdProformaInvoice(), ProformaInvoiceFile::ID_FILE => $newFile->getIdFile(), ProformaInvoiceFile::TYPE => ProformaInvoiceFile::$Types["PINew"]));
                     $this->getProformaInvoiceFileCatalog()->create($newProformaInvoiceFile);
                     $proformaInvoiceFile = $proformaInvoiceFiles->getByType(ProformaInvoiceFile::$Types["PINew"]);
                     if ($proformaInvoiceFile->getIdProformaInvoiceFile() > 0) {
                         $this->getProformaInvoiceFileCatalog()->deleteById($proformaInvoiceFile->getIdProformaInvoiceFile());
                         $this->getFileCatalog()->deleteById($proformaInvoiceFile->getIdFile());
                     }
                 }
                 if ($_FILES["proforma_invoice_file_authorized"]["name"] != "") {
                     $fileUploader = new FileUploader("proforma_invoice_file_authorized");
                     $fileUploader->saveFile($uploadPath, false);
                     $newFile = FileFactory::createFromArray(array(File::CONTENT => $filePath . $fileUploader->getFileName(), File::TYPE => file::$typeFile["typeFile"]));
                     $this->getFileCatalog()->create($newFile);
                     $newProformaInvoiceFile = ProformaInvoiceFileFactory::createFromArray(array(ProformaInvoiceFile::ID_PROFORMA_INVOICE => $proformaInvoice->getIdProformaInvoice(), ProformaInvoiceFile::ID_FILE => $newFile->getIdFile(), ProformaInvoiceFile::TYPE => ProformaInvoiceFile::$Types["PIAuthorized"]));
                     $this->getProformaInvoiceFileCatalog()->create($newProformaInvoiceFile);
                     $proformaInvoiceFile = $proformaInvoiceFiles->getByType(ProformaInvoiceFile::$Types["PIAuthorized"]);
                     if ($proformaInvoiceFile->getIdProformaInvoiceFile() > 0) {
                         $this->getProformaInvoiceFileCatalog()->deleteById($proformaInvoiceFile->getIdProformaInvoiceFile());
                         $this->getFileCatalog()->deleteById($proformaInvoiceFile->getIdFile());
                     }
                 }
                 $allPaymentTerms = ProformaInvoicePaymentTermQuery::create()->whereAdd(ProformaInvoicePaymentTerm::ID_PROFORMA_INVOICE, $proformaInvoice->getIdProformaInvoice())->find();
                 try {
                     $this->getProformaInvoicePaymentTermCatalog()->beginTransaction();
                     $paymentTerms = $allPaymentTerms->filterByEventId($erasableEvents);
                     while ($paymentTerms->valid()) {
                         $paymentTerm = $paymentTerms->read();
                         $this->getProformaInvoicePaymentTermCatalog()->deleteById($paymentTerm->getIdProformaInvoicePayment());
                     }
                     $notErasabledPaymentTerms = $allPaymentTerms->filterByEventId($proformaInvoiceNotErasableEvents, $line);
                     $programmedPayments = ProformaInvoiceProgrammedPaymentQuery::create()->whereAdd(ProformaInvoiceProgrammedPayment::ID_PROFORMA_INVOICE_PAYMENT_TERM, $notErasabledPaymentTerms->getPrimaryKeys())->find();
                     while ($proformaInvoiceEntries->valid()) {
                         $proformaInvoiceEntry = $proformaInvoiceEntries->read();
                         $totalPayment = 0;
                         foreach ($proformaInvoicePaymentTermsParams["events"] as $key => $payment) {
                             $amount = str_replace(",", "", $payment['payment']);
                             $proformaInvoicePaymentTermsParams["events"][$key]['percentage'] = $amount / $totalAmmount * 100;
                         }
                         foreach ($proformaInvoicePaymentTermsParams["events"] as $event) {
                             $newPaymentTerm = ProformaInvoicePaymentTermFactory::createFromArray(array(ProformaInvoicePaymentTerm::ID_PROFORMA_INVOICE => $proformaInvoice->getIdProformaInvoice(), ProformaInvoicePaymentTerm::ID_PROFORMA_INVOICE_ENTRY => $proformaInvoiceEntry->getIdProformaInvoiceEntry(), ProformaInvoicePaymentTerm::LINE => $proformaInvoiceEntry->getVisOrder(), ProformaInvoicePaymentTerm::ID_EVENT => $event["id"], ProformaInvoicePaymentTerm::PIECES => $proformaInvoiceEntry->getQuantity(), ProformaInvoicePaymentTerm::PAYMENT => $proformaInvoiceEntry->getTotalImport() * $event["percentage"] / 100, ProformaInvoicePaymentTerm::CURRENCY => $proformaInvoice->getIdCurrency()));
                             $this->getProformaInvoicePaymentTermCatalog()->create($newPaymentTerm);
                         }
                         $entryPaymentTerms = $notErasabledPaymentTerms->filterByProformaInvoiceEntry($proformaInvoiceEntry);
                         while ($entryPaymentTerms->valid()) {
                             $paymentTerm = $entryPaymentTerms->read();
                             $entryProgrammedPayments = $programmedPayments->filterByPaymentTerm($paymentTerm);
                             while ($entryProgrammedPayments->valid()) {
                                 $payment = $entryProgrammedPayments->read();
                                 $payment->setIdCurrency($proformaInvoice->getIdCurrency());
                                 $payment->setLine($proformaInvoiceEntry->getVisOrder());
                                 $this->getProformaInvoiceProgrammedPaymentCatalog()->update($payment);
                             }
                             $paymentTerm->setCurrency($proformaInvoice->getIdCurrency());
                             $paymentTerm->setIdProformaInvoiceEntry($proformaInvoiceEntry->getIdProformaInvoiceEntry());
                             $paymentTerm->setLine($proformaInvoiceEntry->getVisOrder());
                             $this->getProformaInvoicePaymentTermCatalog()->update($paymentTerm);
                         }
                     }
                     $this->newLogForUpdate($proformaInvoice);
                     $this->getProformaInvoicePaymentTermCatalog()->commit();
                     $this->setFlash('ok', $this->i18n->_("Proforma Invoice with id {$result->purchaseQuotationResult->id} was updated."));
                 } catch (Exception $e) {
                     $this->getProformaInvoicePaymentTermCatalog()->rollBack();
                     $this->setFlash('error', $this->i18n->_($e->getMessage()));
                 }
             } else {
                 $this->setFlash('error', $result->purchaseQuotationResult->code . " - " . $result->purchaseQuotationResult->message);
             }
         } catch (Exception $e) {
             $this->setFlash('error', $this->i18n->_($e->getMessage()));
         }
     }
     $this->_redirect('proforma-invoice/list');
 }
示例#3
0
 /**
  * 
  * @param NotificationType $notificationType
  * @return \Application\Model\Collection\FileCollection
  */
 private function getFiles(Notification $notification)
 {
     $notificationType = NotificationTypeQuery::create()->findByPK($notification->getIdNotificationType());
     $array = array();
     $files = new FileCollection($array);
     switch ($notificationType->getIdNotificationType()) {
         case NotificationType::$id['CLAIM_REPORT_NOTIFICATION']:
             $vars = json_decode($notification->getVariables(), true);
             $filename = sys_get_temp_dir() . '/claim_report.pdf';
             $claimReport = new ClaimReport();
             $claimReport->setDocumentName($filename);
             $claimReport->setFolio($vars['folio']);
             $claimReport->setPurchaseOrder($vars['purchaseOrder']);
             $claimReport->setPercentageOfAceptance($vars['percentageOfAcceptance']);
             $claimReport->setPercentageOfDefects($vars['percentageOfDefects']);
             $claimReport->setDescription($vars['description']);
             $claimReport->setIncreasableFreight($vars['increasableFreight']);
             $claimReport->setGood($vars['claimReport']['good']);
             $claimReport->setRejected($vars['claimReport']['rejected']);
             $claimReport->setMissing($vars['claimReport']['missing']);
             $claimReport->setEstimatedRecuperationCost($vars['ERCost']);
             $claimReport->setRefuseTotal($vars['refuseTotal']);
             $claimReport->setComments($vars['comments']);
             $claimReport->setOutputDestination(ClaimReport::$OutputDestination['SAVE_LOCAL_DESTINATION']);
             $claimReport->generateClaimReport();
             $files->append(FileFactory::createFromArray(array('content' => $filename)));
             break;
     }
     return $files;
 }