/// <summary> /// Parent Constructor /// </summary> /// <param name="account">Bank Account</param> /// <param name="isManual">Manual statement</param> public MBankStatement(MBankAccount account, bool isManual) : this(account.GetCtx(), 0, account.Get_TrxName()) { SetClientOrg(account); SetC_BankAccount_ID(account.GetC_BankAccount_ID()); SetStatementDate(DateTime.Today.Date);//new DateTime(System.currentTimeMillis())); SetBeginningBalance(account.GetCurrentBalance()); SetName(GetStatementDate().ToString()); SetIsManual(isManual); }
/// <summary> /// Set Bank Account - Callout /// </summary> /// <param name="oldC_BankAccount_ID">Oldbank</param> /// <param name="newC_BankAccount_ID">new bank</param> /// <param name="windowNo">window no</param> /// @UICallout public void SetC_BankAccount_ID(String oldC_BankAccount_ID, String newC_BankAccount_ID, int windowNo) { if (newC_BankAccount_ID == null || newC_BankAccount_ID.Length == 0) { return; } int C_BankAccount_ID = int.Parse(newC_BankAccount_ID); if (C_BankAccount_ID == 0) { return; } SetC_BankAccount_ID(C_BankAccount_ID); MBankAccount ba = GetBankAccount(); SetBeginningBalance(ba.GetCurrentBalance()); }
/// <summary> /// Void Document. /// </summary> /// <returns>false</returns> public bool VoidIt() { log.Info(ToString()); if (DOCSTATUS_Closed.Equals(GetDocStatus()) || DOCSTATUS_Reversed.Equals(GetDocStatus()) || DOCSTATUS_Voided.Equals(GetDocStatus())) { m_processMsg = "Document Closed: " + GetDocStatus(); SetDocAction(DOCACTION_None); return(false); } // Not Processed if (DOCSTATUS_Drafted.Equals(GetDocStatus()) || DOCSTATUS_Invalid.Equals(GetDocStatus()) || DOCSTATUS_InProgress.Equals(GetDocStatus()) || DOCSTATUS_Approved.Equals(GetDocStatus()) || DOCSTATUS_NotApproved.Equals(GetDocStatus())) { ; } // Std Period open? else { if (!MPeriod.IsOpen(GetCtx(), GetStatementDate(), MDocBaseType.DOCBASETYPE_BANKSTATEMENT, GetAD_Org_ID())) { m_processMsg = "@PeriodClosed@"; return(false); } // is Non Business Day? // JID_1205: At the trx, need to check any non business day in that org. if not fund then check * org. if (MNonBusinessDay.IsNonBusinessDay(GetCtx(), GetStatementDate(), GetAD_Org_ID())) { m_processMsg = Common.Common.NONBUSINESSDAY; return(false); } if (MFactAcct.Delete(Table_ID, GetC_BankStatement_ID(), Get_TrxName()) < 0) { return(false); // could not delete } } // Set lines to 0 Decimal transactionAmt = 0; //To update transaction amount in unMatched Balance in case of void MBankStatementLine[] lines = GetLines(true); for (int i = 0; i < lines.Length; i++) { MBankStatementLine line = lines[i]; transactionAmt += line.GetTrxAmt(); if (line.GetStmtAmt().CompareTo(Env.ZERO) != 0) { String description = Msg.Translate(GetCtx(), "Voided") + " (" + Msg.Translate(GetCtx(), "StmtAmt") + "=" + line.GetStmtAmt(); if (line.GetTrxAmt().CompareTo(Env.ZERO) != 0) { description += ", " + Msg.Translate(GetCtx(), "TrxAmt") + "=" + line.GetTrxAmt(); } if (line.GetChargeAmt().CompareTo(Env.ZERO) != 0) { description += ", " + Msg.Translate(GetCtx(), "ChargeAmt") + "=" + line.GetChargeAmt(); } if (line.GetInterestAmt().CompareTo(Env.ZERO) != 0) { description += ", " + Msg.Translate(GetCtx(), "InterestAmt") + "=" + line.GetInterestAmt(); } description += ")"; line.AddDescription(description); line.SetStmtAmt(Env.ZERO); line.SetTrxAmt(Env.ZERO); line.SetChargeAmt(Env.ZERO); line.SetInterestAmt(Env.ZERO); line.Save(Get_TrxName()); if (line.GetC_Payment_ID() != 0) { MPayment payment = new MPayment(GetCtx(), line.GetC_Payment_ID(), Get_TrxName()); payment.SetIsReconciled(false); payment.Save(Get_TrxName()); } } } AddDescription(Msg.Translate(GetCtx(), "Voided")); Decimal voidedDifference = GetStatementDifference(); SetStatementDifference(Env.ZERO); //VA009----------------------------------Anuj---------------------- //int _CountVA009 = Util.GetValueOfInt(DB.ExecuteScalar("SELECT COUNT(AD_MODULEINFO_ID) FROM AD_MODULEINFO WHERE PREFIX='VA009_' AND IsActive = 'Y'")); if (Env.IsModuleInstalled("VA009_")) { MBankStatementLine[] STlines = GetLines(false); string status = "R"; // Received for (int i = 0; i < STlines.Length; i++) { MBankStatementLine line = STlines[i]; if (line.GetC_Payment_ID() != 0) { MPayment payment = new MPayment(GetCtx(), line.GetC_Payment_ID(), Get_TrxName()); string _paymentMethod = Util.GetValueOfString(DB.ExecuteScalar("Select va009_paymentbaseType from va009_paymentmethod where va009_paymentmethod_id=" + payment.GetVA009_PaymentMethod_ID() + " And IsActive = 'Y' AND AD_Client_ID = " + GetAD_Client_ID())); if (_paymentMethod == "S") // Check { status = "B"; // Bounced } else { status = "C"; // Rejected } payment.SetVA009_ExecutionStatus(status); payment.Save(Get_TrxName()); //MInvoicePaySchedule inp = new MInvoicePaySchedule(GetCtx(), payment.GetC_InvoicePaySchedule_ID(), Get_TrxName()); //inp.SetVA009_ExecutionStatus(status); //inp.Save(Get_TrxName()); // update execution status as set on Payment on Invoice Schedule - for those payment which are completed or closed if (payment.GetDocStatus() == DOCSTATUS_Closed || payment.GetDocStatus() == DOCSTATUS_Completed) { int no = Util.GetValueOfInt(DB.ExecuteQuery(@"UPDATE C_InvoicePaySchedule SET VA009_ExecutionStatus = '" + payment.GetVA009_ExecutionStatus() + @"' WHERE C_Payment_ID = " + line.GetC_Payment_ID(), null, Get_Trx())); } } } } //END----------------------------------Anuj---------------------- // Update Bank Account MBankAccount ba = MBankAccount.Get(GetCtx(), GetC_BankAccount_ID()); ba.SetCurrentBalance(Decimal.Subtract(ba.GetCurrentBalance(), voidedDifference)); ba.SetUnMatchedBalance(Decimal.Add(ba.GetUnMatchedBalance(), transactionAmt)); //Arpit ba.Save(Get_TrxName()); SetProcessed(true); SetDocAction(DOCACTION_None); return(true); }
//private bool UpdateBSAndLine() public bool UpdateBSAndLine(bool DeletingLinesFromHeader = false) { // Update Bank Statement //bool DeletingLinesFromHeader_ = DeletingLinesFromHeader; UpdateHeader(DeletingLinesFromHeader); // Update BankAccount and BankAccountLine MBankStatement parent = GetParent(); MBankAccount bankAccount = new MBankAccount(GetCtx(), parent.GetC_BankAccount_ID(), Get_TrxName()); // bankAccount.SetUnMatchedBalance(Decimal.Add(Decimal.Subtract(bankAccount.GetUnMatchedBalance(), old_ebAmt), new_ebAmt)); //Commented Arpit..To updated only if document gets completed..asked by Ashish if (!bankAccount.Save(Get_TrxName())) { log.Warning("Cannot update unmatched balance."); return(false); } DataTable dtBankAccountLine; int C_BANKACCOUNTLINE_ID = 0; string sql = "SELECT C_BANKACCOUNTLINE_ID FROM C_BANKACCOUNTLINE WHERE C_BANKACCOUNT_ID=" + bankAccount.GetC_BankAccount_ID() + " AND STATEMENTDATE=" + DB.TO_DATE(GetStatementLineDate()) + " AND AD_ORG_ID=" + GetAD_Org_ID(); dtBankAccountLine = DB.ExecuteDataset(sql, null, Get_TrxName()).Tables[0]; if (dtBankAccountLine.Rows.Count > 0) { C_BANKACCOUNTLINE_ID = Util.GetValueOfInt(dtBankAccountLine.Rows[0][0]); } MBankAccountLine bankAccountLine = new MBankAccountLine(GetCtx(), C_BANKACCOUNTLINE_ID, Get_TrxName()); if (C_BANKACCOUNTLINE_ID == 0) { bankAccountLine.SetC_BankAccount_ID(bankAccount.GetC_BankAccount_ID()); //Arpit To set same orgnization as Bank Statement on Account Line //bankAccountLine.SetAD_Org_ID(GetCtx().GetAD_Org_ID()); //bankAccountLine.SetAD_Client_ID(GetCtx().GetAD_Client_ID()); bankAccountLine.SetAD_Org_ID(parent.GetAD_Org_ID()); bankAccountLine.SetAD_Client_ID(parent.GetAD_Client_ID()); bankAccountLine.SetEndingBalance( Decimal.Add(Decimal.Add(Decimal.Subtract(bankAccountLine.GetEndingBalance(), old_ebAmt), new_ebAmt), bankAccount.GetCurrentBalance())); } else { bankAccountLine.SetEndingBalance(Decimal.Add(Decimal.Subtract(bankAccountLine.GetEndingBalance(), old_ebAmt), new_ebAmt)); } bankAccountLine.SetStatementDate(GetStatementLineDate()); bankAccountLine.SetStatementDifference(Decimal.Add(Decimal.Subtract(bankAccountLine.GetStatementDifference(), old_sdAmt), new_sdAmt)); //bankAccountLine.SetEndingBalance(Decimal.Add(Decimal.Subtract(bankAccountLine.GetEndingBalance(), old_ebAmt), new_ebAmt)); //Arpit commented because Ending Balance Already updated in above Lines if (!bankAccountLine.Save(Get_TrxName())) { log.Warning("Cannot create/update bank account line."); return(false); } return(true); }
private bool UpdateBSAndLine() { // Update Bank Statement UpdateHeader(); // Update BankAccount and BankAccountLine MBankStatement parent = GetParent(); MBankAccount bankAccount = new MBankAccount(GetCtx(), parent.GetC_BankAccount_ID(), Get_TrxName()); bankAccount.SetUnMatchedBalance(Decimal.Add(Decimal.Subtract(bankAccount.GetUnMatchedBalance(), old_ebAmt), new_ebAmt)); if (!bankAccount.Save()) { log.Warning("Cannot update unmatched balance."); return(false); } DataTable dtBankAccountLine; int C_BANKACCOUNTLINE_ID = 0; string sql = "SELECT C_BANKACCOUNTLINE_ID FROM C_BANKACCOUNTLINE WHERE C_BANKACCOUNT_ID=" + bankAccount.GetC_BankAccount_ID() + " AND STATEMENTDATE=" + DB.TO_DATE(GetStatementLineDate()) + " AND AD_ORG_ID=" + GetAD_Org_ID(); dtBankAccountLine = DB.ExecuteDataset(sql, null, null).Tables[0]; if (dtBankAccountLine.Rows.Count > 0) { C_BANKACCOUNTLINE_ID = Util.GetValueOfInt(dtBankAccountLine.Rows[0][0]); } MBankAccountLine bankAccountLine = new MBankAccountLine(GetCtx(), C_BANKACCOUNTLINE_ID, Get_TrxName()); if (C_BANKACCOUNTLINE_ID == 0) { bankAccountLine.SetC_BankAccount_ID(bankAccount.GetC_BankAccount_ID()); bankAccountLine.SetAD_Org_ID(GetCtx().GetAD_Org_ID()); bankAccountLine.SetAD_Client_ID(GetCtx().GetAD_Client_ID()); bankAccountLine.SetEndingBalance( Decimal.Add(Decimal.Add(Decimal.Subtract(bankAccountLine.GetEndingBalance(), old_ebAmt), new_ebAmt), bankAccount.GetCurrentBalance())); } else { bankAccountLine.SetEndingBalance(Decimal.Add(Decimal.Subtract(bankAccountLine.GetEndingBalance(), old_ebAmt), new_ebAmt)); } bankAccountLine.SetStatementDate(GetStatementLineDate()); bankAccountLine.SetStatementDifference(Decimal.Add(Decimal.Subtract(bankAccountLine.GetStatementDifference(), old_sdAmt), new_sdAmt)); bankAccountLine.SetEndingBalance(Decimal.Add(Decimal.Subtract(bankAccountLine.GetEndingBalance(), old_ebAmt), new_ebAmt)); if (!bankAccountLine.Save()) { log.Warning("Cannot create/update bank account line."); return(false); } return(true); }
/// <summary> /// Void Document. /// </summary> /// <returns>false</returns> public bool VoidIt() { log.Info(ToString()); if (DOCSTATUS_Closed.Equals(GetDocStatus()) || DOCSTATUS_Reversed.Equals(GetDocStatus()) || DOCSTATUS_Voided.Equals(GetDocStatus())) { m_processMsg = "Document Closed: " + GetDocStatus(); SetDocAction(DOCACTION_None); return(false); } // Not Processed if (DOCSTATUS_Drafted.Equals(GetDocStatus()) || DOCSTATUS_Invalid.Equals(GetDocStatus()) || DOCSTATUS_InProgress.Equals(GetDocStatus()) || DOCSTATUS_Approved.Equals(GetDocStatus()) || DOCSTATUS_NotApproved.Equals(GetDocStatus())) { ; } // Std Period open? else { if (!MPeriod.IsOpen(GetCtx(), GetStatementDate(), MDocBaseType.DOCBASETYPE_BANKSTATEMENT)) { m_processMsg = "@PeriodClosed@"; return(false); } // is Non Business Day? if (MNonBusinessDay.IsNonBusinessDay(GetCtx(), GetStatementDate())) { m_processMsg = Common.Common.NONBUSINESSDAY; return(false); } if (MFactAcct.Delete(Table_ID, GetC_BankStatement_ID(), Get_TrxName()) < 0) { return(false); // could not delete } } // Set lines to 0 MBankStatementLine[] lines = GetLines(true); for (int i = 0; i < lines.Length; i++) { MBankStatementLine line = lines[i]; if (line.GetStmtAmt().CompareTo(Env.ZERO) != 0) { String description = Msg.Translate(GetCtx(), "Voided") + " (" + Msg.Translate(GetCtx(), "StmtAmt") + "=" + line.GetStmtAmt(); if (line.GetTrxAmt().CompareTo(Env.ZERO) != 0) { description += ", " + Msg.Translate(GetCtx(), "TrxAmt") + "=" + line.GetTrxAmt(); } if (line.GetChargeAmt().CompareTo(Env.ZERO) != 0) { description += ", " + Msg.Translate(GetCtx(), "ChargeAmt") + "=" + line.GetChargeAmt(); } if (line.GetInterestAmt().CompareTo(Env.ZERO) != 0) { description += ", " + Msg.Translate(GetCtx(), "InterestAmt") + "=" + line.GetInterestAmt(); } description += ")"; line.AddDescription(description); line.SetStmtAmt(Env.ZERO); line.SetTrxAmt(Env.ZERO); line.SetChargeAmt(Env.ZERO); line.SetInterestAmt(Env.ZERO); line.Save(Get_TrxName()); if (line.GetC_Payment_ID() != 0) { MPayment payment = new MPayment(GetCtx(), line.GetC_Payment_ID(), Get_TrxName()); payment.SetIsReconciled(false); payment.Save(Get_TrxName()); } } } AddDescription(Msg.Translate(GetCtx(), "Voided")); Decimal voidedDifference = GetStatementDifference(); SetStatementDifference(Env.ZERO); // Update Bank Account MBankAccount ba = MBankAccount.Get(GetCtx(), GetC_BankAccount_ID()); ba.SetCurrentBalance(Decimal.Subtract(ba.GetCurrentBalance(), voidedDifference)); ba.Save(Get_TrxName()); SetProcessed(true); SetDocAction(DOCACTION_None); return(true); }