/// <summary> /// Perrform Process. /// </summary> /// <returns>Message (clear text)</returns> protected override String DoIt() { log.Info("C_PaySelection_ID=" + _C_PaySelection_ID + ", PaymentRule=" + _PaymentRule); MPaySelection psel = new MPaySelection(GetCtx(), _C_PaySelection_ID, Get_TrxName()); if (psel.Get_ID() == 0) { throw new ArgumentException("Not found C_PaySelection_ID=" + _C_PaySelection_ID); } if (psel.IsProcessed()) { throw new ArgumentException("@Processed@"); } // MPaySelectionLine[] lines = psel.GetLines(false); for (int i = 0; i < lines.Length; i++) { MPaySelectionLine line = lines[i]; if (!line.IsActive() || line.IsProcessed()) { continue; } CreateCheck(line); } // psel.SetProcessed(true); psel.Save(); return("@C_PaySelectionCheck_ID@ - #" + _list.Count); }
/// <summary> /// Generate PaySelection /// </summary> public string GeneratePaySelect(Ctx ctx, List <GridRecords> selectedRecords, Decimal?paymentAmt, String paymentRule, int C_BankAccount_ID, DateTime?payDate) { Trx trx = null; Trx p_trx = null; List <int> Invoice_ID = new List <int>(); List <Decimal?> openAmt = new List <Decimal?>(); List <Decimal?> payAmt = new List <Decimal?>(); int rowsSelected = 0; Decimal?totalAmt = 0; // BindingSource rowSource = vdgvPayment.ItemsSource as BindingSource; for (int i = 0; i < selectedRecords.Count; i++) { if ((Convert.ToBoolean(selectedRecords[i].SELECT))) { Decimal?amt = Util.GetValueOfDecimal(selectedRecords[i].PAYMENTAMOUNT); Invoice_ID.Add(Util.GetValueOfInt(selectedRecords[i].C_INVOICE_ID)); openAmt.Add(Util.GetValueOfDecimal(selectedRecords[i].AMOUNTDUE)); payAmt.Add(Util.GetValueOfDecimal(selectedRecords[i].PAYMENTAMOUNT)); rowsSelected++; } } if (rowsSelected == 0) { return(""); } //String paymentRule = Util.GetValueOfString(cmbPaymentRule.SelectedValue); //int C_BankAccount_ID = Util.GetValueOfInt(cmbBankAccount.SelectedValue); //// Create Header //DateTime? payDate = Util.GetValueOfDateTime(vdtpPayDate.SelectedDate); MPaySelection m_ps = new MPaySelection(ctx, 0, null); m_ps.SetName(Msg.GetMsg(ctx, "VPaySelect") + " - " + paymentRule + " - " + payDate.Value.Date); m_ps.SetPayDate(payDate); m_ps.SetC_BankAccount_ID(C_BankAccount_ID); m_ps.SetIsApproved(true); if (!m_ps.Save()) { //log.SaveError("SaveError", Msg.Translate(Envs.GetCtx(), "C_PaySelection_ID")); m_ps = null; return(""); } _C_PaySelection_ID = m_ps.GetC_PaySelection_ID(); string name = m_ps.GetName(); //string sqlTableID = "select ad_table_id from ad_table where tablename = 'C_PaySelection'"; //int AD_Table_ID = Util.GetValueOfInt(DB.ExecuteScalar(sqlTableID, null, null)); // log.Config(m_ps.ToString()); bool isSOTrx = false; if (X_C_Order.PAYMENTRULE_DirectDebit.Equals(paymentRule)) { isSOTrx = true; } int line = 0; Decimal?pAmt = Decimal.Zero; Decimal?oldpAmt = Decimal.Zero; for (int j = 0; j < Invoice_ID.Count; j++) { line = line + 10; if (Decimal.Add(pAmt.Value, Util.GetValueOfDecimal(payAmt[j])) > paymentAmt) { oldpAmt = Decimal.Subtract(paymentAmt.Value, pAmt.Value); } pAmt = Decimal.Add(pAmt.Value, Util.GetValueOfDecimal(payAmt[j])); // pAmt = Util.GetValueOfDecimal(payAmt[j]); MPaySelectionLine psl = new MPaySelectionLine(m_ps, line, paymentRule); //psl.SetInvoice(Util.GetValueOfInt(Invoice_ID[j]), isSOTrx, Util.GetValueOfDecimal(openAmt[j]), Util.GetValueOfDecimal(payAmt[j]), Decimal.Subtract(Util.GetValueOfDecimal(openAmt[j]), Util.GetValueOfDecimal(payAmt[j]))); if (paymentAmt >= pAmt) { psl.SetInvoice(Util.GetValueOfInt(Invoice_ID[j]), isSOTrx, Util.GetValueOfDecimal(openAmt[j]), Util.GetValueOfDecimal(payAmt[j]), Decimal.Zero); if (!psl.Save()) { // log.SaveError("PaymentSelectionLineNotSaved", "PaymentSelectionLineNotSaved"); return(""); } // log.Fine("C_Invoice_ID=" + Util.GetValueOfInt(Invoice_ID[j]) + ", PayAmt=" + Util.GetValueOfDecimal(payAmt[j])); } else { psl.SetInvoice(Util.GetValueOfInt(Invoice_ID[j]), isSOTrx, Util.GetValueOfDecimal(openAmt[j]), oldpAmt.Value, Decimal.Zero); if (!psl.Save()) { // log.SaveError("PaymentSelectionLineNotSaved", "PaymentSelectionLineNotSaved"); return(""); } // log.Fine("C_Invoice_ID=" + Util.GetValueOfInt(Invoice_ID[j]) + ", PayAmt=" + Util.GetValueOfDecimal(payAmt[j])); } } //if (false.Equals(((Message)sc).DialogResult)) //{ // Dispose(); // return; //} MPaySelection psel = new MPaySelection(ctx, _C_PaySelection_ID, null); if (psel.Get_ID() == 0) { throw new ArgumentException("Not found C_PaySelection_ID=" + _C_PaySelection_ID); } if (psel.IsProcessed()) { throw new ArgumentException("@Processed@"); } // MPaySelectionLine[] lines = psel.GetLines(false); List <MPaySelectionCheck> _list = new List <MPaySelectionCheck>(); for (int i = 0; i < lines.Length; i++) { MPaySelectionLine payLine = lines[i]; if (!payLine.IsActive() || payLine.IsProcessed()) { continue; } CreateCheck(ctx, payLine, _list); } // psel.SetProcessed(true); psel.Save(); //string sql = "select ad_form_id from ad_form where classname = 'VAdvantage.Apps.AForms.VPayPrint'"; //int AD_Form_ID = Util.GetValueOfInt(DB.ExecuteScalar(sql, null, null)); return("@C_PaySelectionCheck_ID@ - #" + _list.Count); //SetBusy(false); //Dispose(); //FormFrame ff = new FormFrame(); //ff.OpenForm(AD_Form_ID); } // generatePaySelect