Exemplo n.º 1
0
 /**
  *
  *
  * @author Erick Guevara Martínez
  * @param ProgrammedPaymentCollection $proformaProgrammedPayments
  * @param ProformaInvoicePaymentTermCollection $proformaPaymentTerms
  * @return CondensedProgrammedPaymentCollection
  */
 private function condenseProformaPayments(ProformaInvoiceProgrammedPaymentCollection $proformaProgrammedPayments, ProformaInvoicePaymentTermCollection $proformaPaymentTerms)
 {
     $condensedPayments = new CondensedProgrammedPaymentCollection();
     $actualPayments = ActualPaymentQuery::create()->whereAdd(ActualPayment::ID_PROGRAMMED_PAYMENT, $proformaProgrammedPayments->getProgrammedPaymentIds())->find();
     $proformasInvoice = ProformaInvoiceQuery::create()->whereAdd(ProformaInvoice::ID_PROFORMA_INVOICE, $proformaProgrammedPayments->getProformaInvoiceIds())->find();
     while ($proformaProgrammedPayments->valid()) {
         $programmedPayment = $proformaProgrammedPayments->read();
         $paymentTerm = $proformaPaymentTerms->getByPK($programmedPayment->getIdProformaInvoicePaymentTerm());
         $credits = $actualPayments->filterByProgrammedPayment($programmedPayment);
         $proformaInvoice = $proformasInvoice->getByPK($programmedPayment->getIdProformaInvoice());
         $pk = $programmedPayment->getIdProformaInvoice() . $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->getIdProformaInvoice(), CondensedProgrammedPayment::SAP_DOCNUM => $proformaInvoice->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;
 }