/** * * @author Erick Guevara Martíne< * @param PurchaseOrderEntryCollection $entries * @return array */ public function getCondensedPayments(PurchaseOrder $purchaseOrder) { $purchaseOrderPaymentTerms = PurchaseOrderPaymentTermQuery::create()->whereAdd(PurchaseOrderPaymentTerm::ID_PURCHASE_ORDER, $purchaseOrder->getIdPurchaseOrder())->find(); $purchaseOrderProgrammedPayments = PurchaseOrderProgrammedPaymentQuery::create()->whereAdd(PurchaseOrderProgrammedPayment::ID_PURCHASE_ORDER_PAYMENT_TERM, $purchaseOrderPaymentTerms->getPrimaryKeys())->find(); $events = EventQuery::create()->whereAdd(Event::ID_EVENT, $purchaseOrderPaymentTerms->getEventIds())->find(); $payments = array(); while ($purchaseOrderPaymentTerms->valid()) { $purchaseOrderPaymentTerm = $purchaseOrderPaymentTerms->read(); $event = $events->getByPK($purchaseOrderPaymentTerm->getIdEvent()); $purchaseOrderProgrammedPayments->filterByPurchaseOrderPaymentTerm($purchaseOrderPaymentTerm); $payments[$event->getIdEvent()]["event"] = $event->getName(); $payments[$event->getIdEvent()]["idEvent"] = $event->getIdEvent(); $payments[$event->getIdEvent()]["payment"] += $purchaseOrderPaymentTerm->getAmount(); $payments[$event->getIdEvent()]["currency"] = $purchaseOrderPaymentTerm->getCurrency(); if (!$purchaseOrderProgrammedPayments->isEmpty()) { $payments[$event->getIdEvent()]["noEdit"] = true; } } return $payments; }
/** * * */ private function setPurchaseOrderCollection() { if (empty($this->filters['type']) && empty($this->filters['proforma_invoice_doc_num']) || $this->filters['type'] == ProgrammedPayment::$TypePayment['PurchaseOrder']) { $purchaseOrderQuery = PurchaseOrderQuery::create(); if (!empty($this->filters['id_company'])) { $purchaseOrderQuery->whereAdd(PurchaseOrder::ID_SUPPLIER, $this->filters['id_company']); } if (!empty($this->filters['id_requisition'])) { $purchaseOrderQuery->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $this->getPurchaseOrderByRequisition()->getPrimaryKeys()); } if (!empty($this->filters['purchase_order_doc_num'])) { $purchaseOrderQuery->whereAdd(PurchaseOrder::SAP_DOCUMENT_NUMBER, $this->filters['purchase_order_doc_num']); } else { $purchaseOrderIds = PurchaseOrderPaymentTermQuery::create()->addColumn(PurchaseOrderPaymentTerm::ID_PURCHASE_ORDER)->distinct()->fetchAll(); $purchaseOrderQuery->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $purchaseOrderIds); } $purchaseOrderCollection = $purchaseOrderQuery->find(); } else { $purchaseOrderCollection = new PurchaseOrderCollection(); } $this->purchaseOrderCollection = $purchaseOrderCollection; }
/** * * Cancela los pagos relacionados con la proforma invoice * @param int $idProformaInvoice */ private function cancelPaymentsByIdProformaInvoice($idProformaInvoice) { $proformaInvoicePaymentTerms = ProformaInvoicePaymentTermQuery::create()->whereAdd(ProformaInvoicePaymentTerm::ID_PROFORMA_INVOICE, $idProformaInvoice)->find(); $proformaInvoiceProgrammedPayments = ProformaInvoiceProgrammedPaymentQuery::create()->whereAdd(ProformaInvoiceProgrammedPayment::ID_PROFORMA_INVOICE, $idProformaInvoice)->find(); $purchaseOrderPaymentTerms = PurchaseOrderPaymentTermQuery::create()->whereAdd(PurchaseOrderPaymentTerm::ID_PROFORMA_INVOICE_PAYMENT_TERM, $proformaInvoicePaymentTerms->getPrimaryKeys())->find(); $purchaseOrderProgrammedPayments = PurchaseOrderProgrammedPaymentQuery::create()->whereAdd(PurchaseOrderProgrammedPayment::ID_PURCHASE_ORDER_PAYMENT_TERM, $purchaseOrderPaymentTerms->getPrimaryKeys())->find(); $actualPayments = ActualPaymentQuery::create()->whereAdd(ActualPayment::ID_PROGRAMMED_PAYMENT, $proformaInvoiceProgrammedPayments->getProgrammedPaymentIds() + $purchaseOrderProgrammedPayments->getProgrammedPaymentIds())->find(); while ($proformaInvoicePaymentTerm = $proformaInvoicePaymentTerms->read()) { $proformaInvoicePaymentTerm->setStatus(ProformaInvoicePaymentTerm::$Status['Canceled']); $this->getProformaInvoicePaymentTermCatalog()->update($proformaInvoicePaymentTerm); } while ($proformaInvoiceProgrammedPayment = $proformaInvoiceProgrammedPayments->read()) { $proformaInvoiceProgrammedPayment->setStatus(ProformaInvoiceProgrammedPayment::$TypeStatus['Canceled']); $this->getProformaInvoiceProgrammedPaymentCatalog()->update($proformaInvoiceProgrammedPayment); } while ($purchaseOrderPaymentTerm = $purchaseOrderPaymentTerms->read()) { $purchaseOrderPaymentTerm->setStatus(PurchaseOrderPaymentTerm::$Status['Canceled']); $this->getPurchaseOrderPaymentTermsCatalog()->update($purchaseOrderPaymentTerm); } while ($purchaseOrderProgrammedPayment = $purchaseOrderProgrammedPayments->read()) { $purchaseOrderProgrammedPayment->setStatus(PurchaseOrderProgrammedPayment::$TypeStatus['Canceled']); $this->getPurchaseOrderProgrammedPaymentCatalog()->update($purchaseOrderProgrammedPayment); } while ($actualPayment = $actualPayments->read()) { $actualPayment->setStatus(ActualPayment::$Status['Canceled']); $this->getActualPaymentCatalog()->update($actualPayment); } }
/** * * @param int $idPurchaseOrder * @param int $idEvent */ private function getMissingPurchaseInformation($idPurchaseOrder, $idEvent) { $purchaseOrder = PurchaseOrderQuery::create()->findByPKOrThrow($idPurchaseOrder, $this->i18n->_("PurchaseOrder with id {$idPurchaseOrder} not found.")); $supplier = SapSupplierQuery::create()->findByPKOrThrow($purchaseOrder->getIdSupplier(), $this->i18n->_("SapSupplier with id {$purchaseOrder->getIdSupplier()} not found.")); $event = EventQuery::create()->findByPKOrThrow($idEvent, $this->i18n->_("Event with id {$idEvent} not found.")); $purchaseOrderEntries = PurchaseOrderEntryQuery::create()->whereAdd(PurchaseOrderEntry::ID_PURCHASE_ORDER, $purchaseOrder->getIdPurchaseOrder())->find(); $proformaInvoiceEntries = ProformaInvoiceEntryQuery::create()->whereAdd(ProformaInvoiceEntry::ID_PROFORMA_INVOICE, $purchaseOrderEntries->getDisctinctProformaInvoiceIds())->find(); $paymentTerms = PurchaseOrderPaymentTermQuery::create()->whereAdd(PurchaseOrderPaymentTerm::ID_PURCHASE_ORDER, $purchaseOrder->getIdPurchaseOrder())->whereAdd(ProformaInvoicePaymentTerm::ID_EVENT, $event->getIdEvent())->find(); $purchasePayments = new PurchaseOrderProgrammedPaymentCollection(); while ($purchaseOrderPaymentTerm = $paymentTerms->read()) { $purchaseOrderMissingProgrammedPayment = PurchaseOrderProgrammedPaymentFactory::createFromArray(array('id_purchase_order_programmed_payment' => 'VPOPP' . $purchaseOrderPaymentTerm->getIdPurchaseOrderPaymentTerm(), 'id_proforma_invoice_payment_term' => $purchaseOrderPaymentTerm->getIdProformaInvoicePaymentTerm(), 'id_purchase_order_payment_term' => $purchaseOrderPaymentTerm->getIdPurchaseOrderPaymentTerm(), 'pieces' => $purchaseOrderPaymentTerm->getPieces(), 'id_purchase_order' => $purchaseOrderPaymentTerm->getIdPurchaseOrder(), 'line' => $purchaseOrderPaymentTerm->getLine(), 'id_purchase_order_entry' => $purchaseOrderPaymentTerm->getIdPurchaseOrderEntry(), 'id_programmed_payment' => 'VPP' . $purchaseOrderPaymentTerm->getIdPurchaseOrderPaymentTerm(), 'id_currency' => $purchaseOrderPaymentTerm->getCurrency(), 'id_company' => $purchaseOrder->getIdSupplier(), 'type' => ProgrammedPayment::$TypePayment['PurchaseOrder'], 'ammount' => $purchaseOrderPaymentTerm->getAmount(), 'folio' => 'Not Available', 'due_date' => 'Not Available', 'status' => ProgrammedPayment::$TypeStatus['Virtual'])); $purchasePayments->append($purchaseOrderMissingProgrammedPayment); } $response = array("docNum" => $purchaseOrder->getSapDocumentNumber(), "docEntry" => $purchaseOrder->getIdPurchaseOrder(), "createDate" => $purchaseOrder->getDeliveryEstimateDate(), "supplier" => $supplier->getCardCode(), "supplierName" => $supplier->getCardname(), "event" => $event->getName()); while ($purchaseOrderEntries->valid()) { $purchaseOrderEntry = $purchaseOrderEntries->read(); $proformaInvoiceEntry = $proformaInvoiceEntries->getByIdProformaInvoiceAndLine($purchaseOrderEntry->getBaseEntry(), $purchaseOrderEntry->getBaseLine()); $programmedPayment = $purchasePayments->filterByPurchaseOrderEntry($purchaseOrderEntry)->getOne(); $response["entries"][] = array("line" => $purchaseOrderEntry->getLine(), "product" => $purchaseOrderEntry->getIdProduct(), "quantity" => $purchaseOrderEntry->getQuantity(), "price" => $purchaseOrderEntry->getPrice(), "currency" => $purchaseOrderEntry->getCurrency(), "requisitions" => implode($proformaInvoiceEntry->getRequisitionIdsToArray()), "PI_Line" => $purchaseOrderEntry->getBaseEntry() . "/" . $purchaseOrderEntry->getBaseLine(), "ammount" => $programmedPayment->getAmmount(), "credits" => 0, "pendingBalance" => $programmedPayment->getAmmount()); } return $response; }
public function createGenericPayment(PurchaseOrderEvent $event, $type) { $purchaseOrder = $event->getPurchaseOrder(); //TODO: agregar arreglo de eventos a PurchaseOrderPaymentTerm $paymentTerms = PurchaseOrderPaymentTermQuery::create()->whereAdd(PurchaseOrderPaymentTerm::ID_EVENT, $type)->whereAdd(PurchaseOrderPaymentTerm::ID_PURCHASE_ORDER, $purchaseOrder->getIdPurchaseOrder())->find(); try { $this->getPurchaseOrderProgrammedPaymentCatalog()->beginTransaction(); while ($paymentTerms->valid()) { $paymentTerm = $paymentTerms->read(); if (PurchaseOrderProgrammedPaymentQuery::create()->whereAdd(PurchaseOrderProgrammedPayment::ID_PURCHASE_ORDER_PAYMENT_TERM, $paymentTerm->getIdPurchaseOrderPaymentTerm())->find()->count() > 0) { continue; } $payment = new PurchaseOrderProgrammedPayment(); $payment->setIdPurchaseOrderPaymentTerm($paymentTerm->getIdPurchaseOrderPaymentTerm()); $payment->setAmmount($paymentTerm->getAmount()); $payment->setDueDate(\Zend_Date::now()->addDay(15)->get("YYYY-MM-dd")); //TODO: dias del cat�logo $payment->setIdCompany(SupplierQuery::create()->findByPK($purchaseOrder->getIdSupplier())->getIdCompany()); $payment->setIdCurrency($purchaseOrder->getIdCurrency()); $payment->setIdPurchaseOrder($purchaseOrder->getIdPurchaseOrder()); $payment->setStatus(PurchaseOrderProgrammedPayment::$TypeStatus['Pending']); $payment->setType(PurchaseOrderProgrammedPayment::$TypePayment['PurchaseOrder']); $this->getPurchaseOrderProgrammedPaymentCatalog()->create($payment); } $this->getPurchaseOrderProgrammedPaymentCatalog()->commit(); } catch (Exception $e) { $this->getPurchaseOrderProgrammedPaymentCatalog()->rollBack(); throw $e; } }
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()); } }