/**
  *
  * @param CondensedProgrammedPaymentCollection $condensedPayments
  * @param ProformaInvoiceProgrammedPaymentCollection $proformaInvoiceProgrammedPayments
  * @param PurchaseOrderProgrammedPaymentCollection $purchaseOrderProgrammedPayments
  * @return CondensedProgrammedPaymentCollection
  */
 private function generateMissingProformaInvoiceProgrammedPayments(CondensedProgrammedPaymentCollection $condensedPayments, ProformaInvoiceProgrammedPaymentCollection $proformaInvoiceProgrammedPayments, PurchaseOrderProgrammedPaymentCollection $purchaseOrderProgrammedPayments)
 {
     $proformaInvoices = $this->getProformaInvoiceCollection();
     $proformaInvoicePaymentTerms = ProformaInvoicePaymentTermQuery::create()->whereAdd(ProformaInvoicePaymentTerm::ID_PROFORMA_INVOICE_PAYMENT, $proformaInvoiceProgrammedPayments->getProformaInvoicePaymentTermIds() + $purchaseOrderProgrammedPayments->getProformaInvoicePaymentTermIds(), ProformaInvoicePaymentTermQuery::NOT_IN)->actives()->whereAdd(ProformaInvoicePaymentTerm::ID_PROFORMA_INVOICE, $proformaInvoices->getPrimaryKeys());
     $proformaInvoicePaymentTerms = $proformaInvoicePaymentTerms->find();
     $proformaInvoiceMissingProgrammedPaymentCollection = new ProformaInvoiceProgrammedPaymentCollection();
     $i = 0;
     while ($proformaInvoicePaymentTerm = $proformaInvoicePaymentTerms->read()) {
         $proformaInvoice = $proformaInvoices->getByPK($proformaInvoicePaymentTerm->getIdProformaInvoice());
         $programmedPayment = ProgrammedPaymentFactory::createFromArray(array('id_programmed_payment' => 'VPP' . $proformaInvoicePaymentTerm->getIdProformaInvoicePayment(), 'id_currency' => $proformaInvoicePaymentTerm->getCurrency(), 'id_company' => $proformaInvoice->getIdSupplier(), 'type' => ProgrammedPayment::$TypePayment['ProformaInvoice'], 'ammount' => $proformaInvoicePaymentTerm->getPayment(), 'folio' => 'Not Available', 'due_date' => 'Not Available', 'status' => ProgrammedPayment::$TypeStatus['Virtual']));
         $this->getVirtualProgrammedPaymentCollection()->append($programmedPayment);
         $proformaInvoiceMissingProgrammedPayment = ProformaInvoiceProgrammedPaymentFactory::createFromArray(array('id_proforma_invoice_programmed_payment' => 'VPIPP' . $proformaInvoicePaymentTerm->getIdProformaInvoicePayment(), 'id_proforma_invoice_payment_term' => $proformaInvoicePaymentTerm->getIdProformaInvoicePayment(), 'id_programmed_payment' => $programmedPayment->getIdProgrammedPayment(), 'pieces' => $proformaInvoicePaymentTerm->getPieces(), 'id_proforma_invoice' => $proformaInvoicePaymentTerm->getIdProformaInvoice(), 'line' => $proformaInvoicePaymentTerm->getLine()) + $programmedPayment->toArray());
         $proformaInvoiceMissingProgrammedPayment->setIdProgrammedPayment($programmedPayment->getIdProgrammedPayment());
         $proformaInvoiceMissingProgrammedPaymentCollection->append($proformaInvoiceMissingProgrammedPayment);
         $i++;
     }
     $condensedPayments = $condensedPayments->merge($this->condenseProformaPayments($proformaInvoiceMissingProgrammedPaymentCollection, $proformaInvoicePaymentTerms));
     return $condensedPayments;
 }