/** * */ public function payAction() { $params = $this->getRequest()->getParams(); $returnAction = $this->getRequest()->getParam("returnAction", "list"); $payment = Zend_Json::decode(stripslashes($params["sapPayment"])); $this->getActualPaymentCatalog()->beginTransaction(); try { $fileUploader = new FileUploader('file'); if (!$fileUploader->isUpload()) { throw new Exception("El archivo es invalido"); } $uploadDir = 'public/files/payments/docnum' . $docnum; $fileUploader->saveFile($uploadDir, false); $file = new File(); $file->setContent($uploadDir . $fileUploader->getFileName()); $file->setType(File::$typeFile['typeImage']); $this->getFileCatalog()->create($file); foreach ($params["payment"] as $programmedPaymentParam) { if ($programmedPaymentParam["payment"] > 0) { $programmedPayment = ProgrammedPaymentQuery::create()->findByPK($programmedPaymentParam["id"]); $balance = $this->getPaymentBalance($programmedPayment); if ($balance + $programmedPaymentParam["payment"] > $programmedPayment->getAmmount()) { throw new Exception("Balance overloaded"); } $actualPayment = ActualPaymentFactory::createFromArray(array(ActualPayment::ID_FILE => $file->getIdFile(), ActualPayment::DOCNUM => $payment["idPayment"], ActualPayment::ID_PROGRAMMED_PAYMENT => $programmedPayment->getIdProgrammedPayment(), ActualPayment::AMMOUNT => $programmedPaymentParam["payment"], ActualPayment::PAYMENT_DATE => $payment["paymentDate"], ActualPayment::TYPE => $payment["type"])); $this->getActualPaymentCatalog()->create($actualPayment); if ($balance + $programmedPaymentParam["payment"] == $programmedPayment->getAmmount()) { $programmedPayment->setStatus(ProgrammedPayment::$TypeStatus['Paid']); $event = ProgrammedPaymentEvent::TOTAL_PAYMENT; } else { $programmedPayment->setStatus(ProgrammedPayment::$TypeStatus['Partial']); $event = ProgrammedPaymentEvent::PARTIAL_PAYMENT; } $this->getProgrammedPaymentCatalog()->update($programmedPayment); $this->getEventDispatcherService()->createProgrammedPaymentNotification($event, $programmedPayment, $actualPayment); //TODO Despachar el evento de Pago Realizado } } $this->getActualPaymentCatalog()->commit(); $this->setFlash("ok", $this->i18n->_('The payments were successfully saved')); } catch (Exception $e) { $this->getActualPaymentCatalog()->rollBack(); $this->setFlash("error", $this->i18n->_('The payments could not be saved: ' . $e->getMessage())); } $this->getHelper('redirector')->goto($returnAction); }
/** * * makeBean * @param array $resultset * @return \Application\Model\Bean\ActualPayment */ protected function makeBean($resultset) { return ActualPaymentFactory::createFromArray($resultset); }