/** * * * @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; }