/// <summary> /// Complete Document /// </summary> /// <returns>new status (Complete, In Progress, Invalid, Waiting ..)</returns> public String CompleteIt() { //added by shubham (JID_1472) To check payment is complete or close int docStatus = Util.GetValueOfInt(DB.ExecuteScalar("SELECT count(c_payment_id) FROM c_payment WHERE c_payment_id in ((SELECT c_payment_id from c_bankstatementline WHERE c_bankstatement_id =" + GetC_BankStatement_ID() + " AND c_payment_id > 0)) AND docstatus NOT IN ('CO' , 'CL')", null, Get_Trx())); if (docStatus != 0) { m_processMsg = Msg.GetMsg(GetCtx(), "paymentnotcompleted"); return(DocActionVariables.STATUS_INVALID); } //shubham // Re-Check if (!m_justPrepared) { String status = PrepareIt(); if (!DocActionVariables.STATUS_INPROGRESS.Equals(status)) { return(status); } } // Implicit Approval if (!IsApproved()) { ApproveIt(); } log.Info("completeIt - " + ToString()); int _CountVA034 = Util.GetValueOfInt(DB.ExecuteScalar("SELECT COUNT(AD_MODULEINFO_ID) FROM AD_MODULEINFO WHERE PREFIX='VA034_' AND IsActive = 'Y'")); // Set Payment reconciled MBankStatementLine[] lines = GetLines(false); //Changes by SUkhwinder on 20 April, if all lines are not matched then dont allow complete. foreach (MBankStatementLine line in lines) { // if Transaction amount exist but no payment reference or Charge amount exist with no Charge then give message for Unmatched lines if ((line.GetTrxAmt() != Env.ZERO && line.GetC_Payment_ID() == 0) || (line.GetChargeAmt() != Env.ZERO && line.GetC_Charge_ID() == 0)) { m_processMsg = Msg.GetMsg(Env.GetCtx(), "LinesNotMatchedYet"); return(DocActionVariables.STATUS_INVALID); } } //Changes by SUkhwinder on 20 April, if all lines are not matched then dont allow complete. Decimal transactionAmt = 0; //Arpit to update only transaction amount in Bank Account UnMatched Balance asked by Ashish Gandhi for (int i = 0; i < lines.Length; i++) { MBankStatementLine line = lines[i]; transactionAmt += line.GetTrxAmt(); if (line.GetC_Payment_ID() != 0) { MPayment payment = new MPayment(GetCtx(), line.GetC_Payment_ID(), Get_TrxName()); payment.SetIsReconciled(true); if (_CountVA034 > 0) { payment.SetVA034_DepositSlipNo(line.GetVA012_VoucherNo()); } payment.Save(Get_TrxName()); } //Pratap 1-2-16 ///// Set Cash Line reconciled int _CountVA012 = Util.GetValueOfInt(DB.ExecuteScalar("SELECT COUNT(AD_MODULEINFO_ID) FROM AD_MODULEINFO WHERE PREFIX='VA012_' AND IsActive = 'Y'")); if (_CountVA012 > 0) { if (line.GetC_CashLine_ID() != 0) { MCashLine cashLine = new MCashLine(GetCtx(), line.GetC_CashLine_ID(), Get_TrxName()); cashLine.SetVA012_IsReconciled(true); cashLine.Save(Get_TrxName()); } } //// } // Update Bank Account MBankAccount ba = MBankAccount.Get(GetCtx(), GetC_BankAccount_ID()); ba.SetCurrentBalance(GetEndingBalance()); ba.SetUnMatchedBalance(Decimal.Subtract(ba.GetUnMatchedBalance(), transactionAmt));//Arpit ba.Save(Get_TrxName()); //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); 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()); payment.SetVA009_ExecutionStatus("R"); if (_CountVA034 > 0) { payment.SetVA034_DepositSlipNo(line.GetVA012_VoucherNo()); } payment.Save(Get_TrxName()); //MInvoicePaySchedule inp = new MInvoicePaySchedule(GetCtx(), payment.GetC_InvoicePaySchedule_ID(), Get_TrxName()); //inp.SetVA009_ExecutionStatus("R"); //inp.Save(Get_TrxName()); // update execution status as received 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 = 'R' WHERE C_Payment_ID = " + line.GetC_Payment_ID(), null, Get_Trx())); } } } } //END----------------------------------Anuj---------------------- // User Validation String valid = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_AFTER_COMPLETE); if (valid != null) { m_processMsg = valid; return(DocActionVariables.STATUS_INVALID); } SetProcessed(true); SetDocAction(DOCACTION_Close); return(DocActionVariables.STATUS_COMPLETED); }