Exemplo n.º 1
0
 /**
  *
  *
  * @author Erick Guevara Martínez
  * @param PurchaseOrderProgrammedPaymentCollection $purchaseProgrammedPayments
  * @param ProformaInvoicePaymentTermCollection $proformaPaymentTerms
  * @return CondensedProgrammedPaymentCollection
  */
 private function condensePurchasePayments(PurchaseOrderProgrammedPaymentCollection $purchaseProgrammedPayments, ProformaInvoicePaymentTermCollection $proformaPaymentTerms)
 {
     $condensedPayments = new CondensedProgrammedPaymentCollection();
     $actualPayments = ActualPaymentQuery::create()->whereAdd(ActualPayment::ID_PROGRAMMED_PAYMENT, $purchaseProgrammedPayments->getProgrammedPayments())->find();
     $purchaseOrders = PurchaseOrderQuery::create()->whereAdd(PurchaseOrder::ID_PURCHASE_ORDER, $purchaseProgrammedPayments->getPurchaseOrderIds())->find();
     while ($purchaseProgrammedPayments->valid()) {
         $programmedPayment = $purchaseProgrammedPayments->read();
         $paymentTerm = $proformaPaymentTerms->getByPK($programmedPayment->getIdProformaInvoicePaymentTerm());
         if (!$paymentTerm instanceof ProformaInvoicePaymentTerm) {
             $paymentTerm = new ProformaInvoicePaymentTerm();
         }
         $credits = $actualPayments->filterByProgrammedPayment($programmedPayment);
         $purchaseOrder = $purchaseOrders->getByPK($programmedPayment->getIdPurchaseOrder()) ?: new PurchaseOrder();
         $pk = $programmedPayment->getIdPurchaseOrder() . $programmedPayment->getType() . $paymentTerm->getIdEvent();
         $condensedPayment = $condensedPayments->getByPkOrElse($pk, new CondensedProgrammedPayment());
         $programmedPaymentIds = array_merge($condensedPayment->getProgrammedPaymentIds(), array($programmedPayment->getIdProgrammedPayment()));
         CondensedProgrammedPaymentFactory::populate($condensedPayment, array(CondensedProgrammedPayment::ID_DOCUMENT => $programmedPayment->getIdPurchaseOrder(), CondensedProgrammedPayment::SAP_DOCNUM => $purchaseOrder->getSapDocumentNumber(), CondensedProgrammedPayment::ID_EVENT => $paymentTerm->getIdEvent(), CondensedProgrammedPayment::ID_SUPPLIER => $programmedPayment->getIdCompany(), CondensedProgrammedPayment::TYPE => $programmedPayment->getType(), CondensedProgrammedPayment::AMMOUNT => $condensedPayment->getAmmount() + $programmedPayment->getAmmount(), CondensedProgrammedPayment::CREDITS => $condensedPayment->getCredits() + $credits->getTotalAmmount(), CondensedProgrammedPayment::CURRENCY => $programmedPayment->getIdCurrency(), CondensedProgrammedPayment::DUE_DATE => $programmedPayment->getDueDate(), CondensedProgrammedPayment::PROGRAMMED_PAYMENT_IDS => $programmedPaymentIds, CondensedProgrammedPayment::STATUS => $programmedPayment->getStatus()));
         $condensedPayments->append($condensedPayment);
     }
     return $condensedPayments;
 }
 /**
  * 
  * 
  * @author Erick Guevara Martínez
  * @param ProformaInvoicePaymentTerm $proformaInvoicePaymentTerm
  * @return \Application\Model\Collection\ProformaInvoiceProgrammedPaymentCollection
  */
 public function filterByPaymentTerm(ProformaInvoicePaymentTerm $proformaInvoicePaymentTerm)
 {
     return $this->filter(function (ProformaInvoiceProgrammedPayment $proformaInvoiceProgrammedPayment) use($proformaInvoicePaymentTerm) {
         return $proformaInvoiceProgrammedPayment->getIdProformaInvoicePaymentTerm() == $proformaInvoicePaymentTerm->getIdProformaInvoicePayment();
     });
 }