} // loadDefault /// <summary> /// Validate Login. /// Creates session and calls ModelValidationEngine /// </summary> /// <param name="org">log-in org</param> /// <returns>error message</returns> public String ValidateLogin(KeyNamePair org) { String info = m_user + ",R:" + m_role.ToString() + ",O=" + m_org.ToString(); int AD_Client_ID = m_ctx.GetAD_Client_ID(); int AD_Org_ID = org.GetKey(); int AD_Role_ID = m_ctx.GetAD_Role_ID(); int AD_User_ID = m_ctx.GetAD_User_ID(); // MSession session = MSession.Get(m_ctx, true); if (AD_Client_ID != session.GetAD_Client_ID()) { session.SetAD_Client_ID(AD_Client_ID); } if (AD_Org_ID != session.GetAD_Org_ID()) { session.SetAD_Org_ID(AD_Org_ID); } if (AD_Role_ID != session.GetAD_Role_ID()) { session.SetAD_Role_ID(AD_Role_ID); } // String error = ModelValidationEngine.Get().LoginComplete(AD_Client_ID, AD_Org_ID, AD_Role_ID, AD_User_ID); if (error != null && error.Length > 0) { session.SetDescription(error); session.Save(); return(error); } // Log session.Save(); return(null); } // validateLogin
} // invalidateIt /// <summary> /// Prepare Document /// </summary> /// <returns>new status (In Progress or Invalid) </returns> public String PrepareIt() { log.Info(ToString()); m_processMsg = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_BEFORE_PREPARE); if (m_processMsg != null) { return(DocActionVariables.STATUS_INVALID); } // Std Period open? - AP (Reimbursement) Invoice if (!MPeriod.IsOpen(GetCtx(), GetDateReport(), VAdvantage.Model.MDocBaseType.DOCBASETYPE_APINVOICE)) { m_processMsg = "@PeriodClosed@"; return(DocActionVariables.STATUS_INVALID); } // 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(), GetDateReport(), GetAD_Org_ID())) { m_processMsg = Common.Common.NONBUSINESSDAY; return(DocActionVariables.STATUS_INVALID); } MTimeExpenseLine[] lines = GetLines(false); if (lines.Length == 0) { m_processMsg = "@NoLines@"; return(DocActionVariables.STATUS_INVALID); } // Add up Amounts Decimal amt = Env.ZERO; for (int i = 0; i < lines.Length; i++) { MTimeExpenseLine line = lines[i]; //amt = amt.add(line.GetApprovalAmt()); amt = Decimal.Add(amt, line.GetApprovalAmt());// amt.add(line.GetApprovalAmt()); } SetApprovalAmt(amt); // Invoiced but no BP for (int i = 0; i < lines.Length; i++) { MTimeExpenseLine line = lines[i]; if (line.IsInvoiced() && line.GetC_BPartner_ID() == 0) { m_processMsg = "@Line@ " + line.GetLine() + ": Invoiced, but no Business Partner"; return(DocActionVariables.STATUS_INVALID); } } m_justPrepared = true; if (!DOCACTION_Complete.Equals(GetDocAction())) { SetDocAction(DOCACTION_Complete); } return(DocActionVariables.STATUS_INPROGRESS); } // prepareIt
} // rejectIt /// <summary> /// Complete Document /// </summary> /// <returns>new status (Complete, In Progress, Invalid, Waiting ..)</returns> public String CompleteIt() { // Re-Check if (!m_justPrepared) { String status = PrepareIt(); if (!DocActionVariables.STATUS_INPROGRESS.Equals(status)) { return(status); } } // Implicit Approval if (!IsApproved()) { ApproveIt(); } log.Info(ToString()); // 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); } // completeIt
/// <summary> /// Prepare Document /// </summary> /// <returns>new status (In Progress or Invalid)</returns> public String PrepareIt() { log.Info(ToString()); _processMsg = ModelValidationEngine.Get().FireDocValidate (this, ModalValidatorVariables.DOCTIMING_BEFORE_PREPARE); if (_processMsg != null) { return(DocActionVariables.STATUS_INVALID); } // Std Period open? if (!MPeriod.IsOpen(GetCtx(), GetDateAcct(), MDocBaseType.DOCBASETYPE_PAYMENTALLOCATION)) { _processMsg = "@PeriodClosed@"; return(DocActionVariables.STATUS_INVALID); } // is Non Business Day? if (MNonBusinessDay.IsNonBusinessDay(GetCtx(), GetDateAcct())) { _processMsg = Common.Common.NONBUSINESSDAY; return(DocActionVariables.STATUS_INVALID); } GetLines(false); if (_lines.Length == 0) { _processMsg = "@NoLines@"; return(DocActionVariables.STATUS_INVALID); } // Add up Amounts & validate Decimal approval = Env.ZERO; for (int i = 0; i < _lines.Length; i++) { MAllocationLine line = _lines[i]; approval = Decimal.Add(Decimal.Add(approval, line.GetWriteOffAmt()), line.GetDiscountAmt()); // Make sure there is BP if (line.GetC_BPartner_ID() == 0) { _processMsg = "No Business Partner"; return(DocActionVariables.STATUS_INVALID); } } SetApprovalAmt(approval); // _justPrepared = true; if (!DOCACTION_Complete.Equals(GetDocAction())) { SetDocAction(DOCACTION_Complete); } return(DocActionVariables.STATUS_INPROGRESS); }
/// <summary> /// Complete Document /// </summary> /// <returns>new status (Complete, In Progress, Invalid, Waiting ..)</returns> public String CompleteIt() { // 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()); // Set Payment reconciled MBankStatementLine[] lines = GetLines(false); for (int i = 0; i < lines.Length; i++) { MBankStatementLine line = lines[i]; if (line.GetC_Payment_ID() != 0) { MPayment payment = new MPayment(GetCtx(), line.GetC_Payment_ID(), Get_TrxName()); payment.SetIsReconciled(true); payment.Save(Get_TrxName()); } } // Update Bank Account MBankAccount ba = MBankAccount.Get(GetCtx(), GetC_BankAccount_ID()); ba.SetCurrentBalance(GetEndingBalance()); ba.Save(Get_TrxName()); // 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); }
/** * Prepare Document * @return new status (In Progress or Invalid) */ public String PrepareIt() { log.Info(ToString()); _processMsg = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_BEFORE_PREPARE); if (_processMsg != null) { return(DocActionVariables.STATUS_INVALID); } /***********Compier comment * MDocType dt = MDocType.Get(GetCtx(), getC_DocTypeTarget_ID()); * * // Std Period open? * if (!MPeriod.IsOpen(GetCtx(), getDateAcct(), dt.GetDocBaseType())) * { * _processMsg = "@PeriodClosed@"; * return DocActionVariables.STATUS_INVALID; * } ****/ MInOutLineConfirm[] lines = GetLines(true); if (lines.Length == 0) { _processMsg = "@NoLines@"; return(DocActionVariables.STATUS_INVALID); } // Set dispute if not fully confirmed Boolean difference = false; for (int i = 0; i < lines.Length; i++) { if (!lines[i].IsFullyConfirmed()) { difference = true; break; } } SetIsInDispute(difference); // _justPrepared = true; if (!DOCACTION_Complete.Equals(GetDocAction())) { SetDocAction(DOCACTION_Complete); } return(DocActionVariables.STATUS_INPROGRESS); }
/// <summary> /// Complete Document /// </summary> /// <returns>new status (Complete, In Progress, Invalid, Waiting ..)</returns> public String CompleteIt() { // Re-Check if (!_justPrepared) { String status = PrepareIt(); if (!DocActionVariables.STATUS_INPROGRESS.Equals(status)) { return(status); } } // Implicit Approval if (!IsApproved()) { ApproveIt(); } log.Info(ToString()); // Link GetLines(false); HashSet <int> bps = new HashSet <int>(); for (int i = 0; i < _lines.Length; i++) { MAllocationLine line = _lines[i]; bps.Add(line.ProcessIt(false)); // not reverse } UpdateBP(bps); // User Validation String valid = ModelValidationEngine.Get().FireDocValidate (this, ModalValidatorVariables.DOCTIMING_AFTER_COMPLETE); if (valid != null) { _processMsg = valid; return(DocActionVariables.STATUS_INVALID); } SetProcessed(true); SetDocAction(DOCACTION_Close); return(DocActionVariables.STATUS_COMPLETED); }
/** * Complete Document * @return new status (Complete, In Progress, Invalid, Waiting ..) */ public String CompleteIt() { // Re-Check if (!_justPrepared) { String status = PrepareIt(); if (!DocActionVariables.STATUS_INPROGRESS.Equals(status)) { return(status); } } // Implicit Approval if (!IsApproved()) { ApproveIt(); } // log.Info(ToString()); // Allocation Header MAllocationHdr alloc = new MAllocationHdr(GetCtx(), false, GetDateAcct(), GetC_Currency_ID(), Msg.Translate(GetCtx(), "C_Cash_ID") + ": " + GetName(), Get_TrxName()); alloc.SetAD_Org_ID(GetAD_Org_ID()); if (!alloc.Save()) { _processMsg = "Could not create Allocation Hdr"; return(DocActionVariables.STATUS_INVALID); } // MCashLine[] lines = GetLines(false); for (int i = 0; i < lines.Length; i++) { MCashLine line = lines[i]; if (Util.GetValueOfInt(line.GetC_InvoicePaySchedule_ID()) != 0) { MInvoicePaySchedule paySch = new MInvoicePaySchedule(GetCtx(), Util.GetValueOfInt(line.GetC_InvoicePaySchedule_ID()), Get_TrxName()); paySch.SetC_CashLine_ID(line.GetC_CashLine_ID()); paySch.Save(); } else { int[] InvoicePaySchedule_ID = MInvoicePaySchedule.GetAllIDs("C_InvoicePaySchedule", "C_Invoice_ID = " + line.GetC_Invoice_ID() + @" AND C_InvoicePaySchedule_ID NOT IN (SELECT NVL(C_InvoicePaySchedule_ID,0) FROM C_InvoicePaySchedule WHERE C_Payment_ID IN (SELECT NVL(C_Payment_ID,0) FROM C_InvoicePaySchedule) UNION SELECT NVL(C_InvoicePaySchedule_ID,0) FROM C_InvoicePaySchedule WHERE C_Cashline_ID IN (SELECT NVL(C_Cashline_ID,0) FROM C_InvoicePaySchedule))", Get_TrxName()); foreach (int invocePay in InvoicePaySchedule_ID) { MInvoicePaySchedule paySch = new MInvoicePaySchedule(GetCtx(), invocePay, Get_TrxName()); paySch.SetC_CashLine_ID(line.GetC_CashLine_ID()); paySch.Save(); } } if (MCashLine.CASHTYPE_Invoice.Equals(line.GetCashType())) { bool differentCurrency = GetC_Currency_ID() != line.GetC_Currency_ID(); MAllocationHdr hdr = alloc; if (differentCurrency) { hdr = new MAllocationHdr(GetCtx(), false, GetDateAcct(), line.GetC_Currency_ID(), Msg.Translate(GetCtx(), "C_Cash_ID") + ": " + GetName(), Get_TrxName()); hdr.SetAD_Org_ID(GetAD_Org_ID()); if (!hdr.Save()) { _processMsg = "Could not create Allocation Hdr"; return(DocActionVariables.STATUS_INVALID); } } // Allocation Line MAllocationLine aLine = new MAllocationLine(hdr, line.GetAmount(), line.GetDiscountAmt(), line.GetWriteOffAmt(), line.GetOverUnderAmt()); aLine.SetC_Invoice_ID(line.GetC_Invoice_ID()); aLine.SetC_CashLine_ID(line.GetC_CashLine_ID()); if (!aLine.Save()) { _processMsg = "Could not create Allocation Line"; return(DocActionVariables.STATUS_INVALID); } if (differentCurrency) { // Should start WF hdr.ProcessIt(DocActionVariables.ACTION_COMPLETE); hdr.Save(); } } else if (MCashLine.CASHTYPE_BankAccountTransfer.Equals(line.GetCashType())) { // Payment just as intermediate info MPayment pay = new MPayment(GetCtx(), 0, Get_TrxName()); pay.SetAD_Org_ID(GetAD_Org_ID()); String documentNo = GetName(); pay.SetDocumentNo(documentNo); pay.SetR_PnRef(documentNo); pay.Set_Value("TrxType", "X"); // Transfer pay.Set_Value("TenderType", "X"); // pay.SetC_BankAccount_ID(line.GetC_BankAccount_ID()); pay.SetC_DocType_ID(true); // Receipt pay.SetDateTrx(GetStatementDate()); pay.SetDateAcct(GetDateAcct()); pay.SetAmount(line.GetC_Currency_ID(), Decimal.Negate(line.GetAmount())); // Transfer pay.SetDescription(line.GetDescription()); pay.SetDocStatus(MPayment.DOCSTATUS_Closed); pay.SetDocAction(MPayment.DOCACTION_None); pay.SetPosted(true); pay.SetIsAllocated(true); // Has No Allocation! pay.SetProcessed(true); if (!pay.Save()) { _processMsg = "Could not create Payment"; return(DocActionVariables.STATUS_INVALID); } } // Added to Update Open Balance of Business Partner else if (MCashLine.CASHTYPE_BusinessPartner.Equals(line.GetCashType())) { if (line.GetC_BPartner_ID() != 0) { Decimal? UpdatedBal = 0; MBPartner bp = new MBPartner(GetCtx(), line.GetC_BPartner_ID(), Get_TrxName()); Decimal?cashAmt = VAdvantage.Model.MConversionRate.ConvertBase(GetCtx(), Decimal.Add(Decimal.Add(line.GetAmount(), line.GetDiscountAmt()), line.GetWriteOffAmt()), GetC_Currency_ID(), GetDateAcct(), 0, GetAD_Client_ID(), GetAD_Org_ID()); if (cashAmt > 0) { UpdatedBal = Decimal.Subtract((Decimal)bp.GetTotalOpenBalance(), (Decimal)cashAmt); Decimal?newCreditAmt = bp.GetSO_CreditUsed(); if (newCreditAmt == null) { newCreditAmt = Decimal.Negate((Decimal)cashAmt); } else { newCreditAmt = Decimal.Subtract((Decimal)newCreditAmt, (Decimal)cashAmt); } // log.Fine("TotalOpenBalance=" + bp.GetTotalOpenBalance(false) + "(" + cashAmt + ", Credit=" + bp.GetSO_CreditUsed() + "->" + newCreditAmt + ", Balance=" + bp.GetTotalOpenBalance(false) + " -> " + UpdatedBal); bp.SetSO_CreditUsed((Decimal)newCreditAmt); } else { UpdatedBal = Decimal.Subtract((Decimal)bp.GetTotalOpenBalance(), (Decimal)cashAmt); log.Fine("Payment Amount =" + line.GetAmount() + "(" + cashAmt + ") Balance=" + bp.GetTotalOpenBalance(false) + " -> " + UpdatedBal); } bp.SetTotalOpenBalance(Convert.ToDecimal(UpdatedBal)); bp.SetSOCreditStatus(); if (!bp.Save(Get_TrxName())) { _processMsg = "Could not update Business Partner"; return(DocActionVariables.STATUS_INVALID); } } } } // Should start WF alloc.ProcessIt(DocActionVariables.ACTION_COMPLETE); alloc.Save(); // User Validation String valid = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_AFTER_COMPLETE); if (valid != null) { _processMsg = valid; return(DocActionVariables.STATUS_INVALID); } // SetProcessed(true); SetDocAction(DOCACTION_Close); if (!UpdateCompletedBalance()) { _processMsg = "Could not update Header"; return(VAdvantage.Process.DocActionVariables.STATUS_INVALID); } return(VAdvantage.Process.DocActionVariables.STATUS_COMPLETED); }
/** * Prepare Document * @return new status (In Progress or Invalid) */ public String PrepareIt() { log.Info(ToString()); _processMsg = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_BEFORE_PREPARE); if (_processMsg != null) { return(DocActionVariables.STATUS_INVALID); } // Std Period open? if (!MPeriod.IsOpen(GetCtx(), GetDateAcct(), MDocBaseType.DOCBASETYPE_CASHJOURNAL)) { _processMsg = "@PeriodClosed@"; return(DocActionVariables.STATUS_INVALID); } // is Non Business Day? if (MNonBusinessDay.IsNonBusinessDay(GetCtx(), GetDateAcct())) { _processMsg = Common.Common.NONBUSINESSDAY; return(DocActionVariables.STATUS_INVALID); } MCashLine[] lines = GetLines(false); if (lines.Length == 0) { _processMsg = "@NoLines@"; return(DocActionVariables.STATUS_INVALID); } // Add up Amounts Decimal difference = Env.ZERO; int C_Currency_ID = GetC_Currency_ID(); for (int i = 0; i < lines.Length; i++) { MCashLine line = lines[i]; if (!line.IsActive()) { continue; } if (C_Currency_ID == line.GetC_Currency_ID()) { difference = Decimal.Add(difference, line.GetAmount()); } else { Decimal amt = MConversionRate.Convert(GetCtx(), line.GetAmount(), line.GetC_Currency_ID(), C_Currency_ID, GetDateAcct(), 0, GetAD_Client_ID(), GetAD_Org_ID()); if (amt == null) { _processMsg = "No Conversion Rate found - @C_CashLine_ID@= " + line.GetLine(); return(DocActionVariables.STATUS_INVALID); } difference = Decimal.Add(difference, amt); } } SetStatementDifference(difference); // setEndingBalance(getBeginningBalance().add(getStatementDifference())); // _justPrepared = true; if (!DOCACTION_Complete.Equals(GetDocAction())) { SetDocAction(DOCACTION_Complete); } return(DocActionVariables.STATUS_INPROGRESS); }
/** * Complete Document * @return new status (Complete, In Progress, Invalid, Waiting ..) */ public String CompleteIt() { // Re-Check if (!_justPrepared) { String status = PrepareIt(); if (!DocActionVariables.STATUS_INPROGRESS.Equals(status)) { return(status); } } // Implicit Approval if (!IsApproved()) { ApproveIt(); } log.Info(ToString()); // MInOut inout = new MInOut(GetCtx(), GetM_InOut_ID(), Get_TrxName()); MInOutLineConfirm[] lines = GetLines(false); /* created by sunil 19/9/2016*/ if (Util.GetValueOfInt(DB.ExecuteScalar("SELECT COUNT(*) FROM AD_ModuleInfo WHERE Prefix = 'DTD001_'")) > 0) { MPackage package = new MPackage(GetCtx(), inout.GetM_Package_ID(), Get_Trx()); if (inout.GetM_Package_ID() > 0 && !package.IsDTD001_IsPackgConfirm()) { _processMsg = Msg.GetMsg(GetCtx(), "PleaseConfirmPackage"); return(DocActionVariables.STATUS_INVALID); } } //End // Check if we need to split Shipment if (IsInDispute()) { MDocType dt = MDocType.Get(GetCtx(), inout.GetC_DocType_ID()); if (dt.IsSplitWhenDifference()) { if (dt.GetC_DocTypeDifference_ID() == 0) { _processMsg = "No Split Document Type defined for: " + dt.GetName(); return(DocActionVariables.STATUS_INVALID); } SplitInOut(inout, dt.GetC_DocTypeDifference_ID(), lines); _lines = null; } } // All lines for (int i = 0; i < lines.Length; i++) { MInOutLineConfirm confirmLine = lines[i]; confirmLine.Set_TrxName(Get_TrxName()); if (!confirmLine.ProcessLine(inout.IsSOTrx(), GetConfirmType())) { _processMsg = "ShipLine not saved - " + confirmLine; return(DocActionVariables.STATUS_INVALID); } if (confirmLine.IsFullyConfirmed()) { confirmLine.SetProcessed(true); confirmLine.Save(Get_TrxName()); } else { if (CreateDifferenceDoc(inout, confirmLine)) { confirmLine.SetProcessed(true); confirmLine.Save(Get_TrxName()); } else { log.Log(Level.SEVERE, "Scrapped=" + confirmLine.GetScrappedQty() + " - Difference=" + confirmLine.GetDifferenceQty()); return(DocActionVariables.STATUS_INVALID); } } } // for all lines if (_creditMemo != null) { _processMsg += " @C_Invoice_ID@=" + _creditMemo.GetDocumentNo(); } if (_inventory != null) { // _processMsg += " @M_Inventory_ID@=" + _inventory.GetDocumentNo(); //new 13 jan _processMsg += " Internal.Inventory= " + _inventory.GetDocumentNo(); } // User Validation String valid = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_AFTER_COMPLETE); if (valid != null) { _processMsg = valid; return(DocActionVariables.STATUS_INVALID); } SetProcessed(true); if (!Save(Get_Trx())) { Get_Trx().Rollback(); _processMsg = "Ship/Receipt Confirmation Not saved"; return(DocActionVariables.STATUS_INVALID); } // Created By Sunil 17/9/2016 // Complete Shipment MInOut io = new MInOut(GetCtx(), GetM_InOut_ID(), Get_TrxName()); var Status = io.CompleteIt(); if (Status == "CO") { io.SetProcessed(true); io.SetDocStatus(DocActionVariables.STATUS_COMPLETED); io.SetDocAction(DocActionVariables.ACTION_CLOSE); io.Save(); } else if (Status == "IN") { Get_Trx().Rollback(); _processMsg = "Shipment Not Completed"; return(DocActionVariables.STATUS_INVALID); } //end //SetProcessed(true); SetDocAction(DOCACTION_Close); return(DocActionVariables.STATUS_COMPLETED); }
/// <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); }
/** * Complete Document * @return new status (Complete, In Progress, Invalid, Waiting ..) */ public String CompleteIt() { try { // Re-Check if (!_justPrepared) { String status = PrepareIt(); if (!DocActionVariables.STATUS_INPROGRESS.Equals(status)) { return(status); } } // Implicit Approval if (!IsApproved()) { ApproveIt(); } log.Info(ToString()); // User Validation String valid = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_AFTER_COMPLETE); if (valid != null) { _processMsg = valid; return(DocActionVariables.STATUS_INVALID); } // SetProcessed(true); SetDocAction(DocActionVariables.ACTION_CLOSE); /**************************************************************************************************************/ Tuple <String, String, String> mInfo = null; if (Env.HasModulePrefix("DTD001_", out mInfo)) { MRequisitionLine[] lines = GetLines(); for (int i = 0; i < lines.Length; i++) { MRequisitionLine line = lines[i]; int loc_id = GetLocation(GetM_Warehouse_ID()); if (loc_id == 0) { //return Msg.GetMsg(GetCtx(),"MMPM_DefineLocator"); _processMsg = "Define Locator For That Warehouse"; return(DocActionVariables.STATUS_INVALID); } if (Util.GetValueOfInt(DB.ExecuteScalar("SELECT COUNT(AD_MODULEINFO_ID) FROM AD_MODULEINFO WHERE PREFIX='VA203_'", null, null)) > 0) { storage = MStorage.Get(GetCtx(), loc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), null); if (storage == null) { storage = MStorage.GetCreate(GetCtx(), loc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), null); } storage.SetDTD001_QtyReserved((Decimal.Add(storage.GetDTD001_QtyReserved(), (Decimal)line.GetQty()))); if (!storage.Save()) { log.Info("Requisition Reserverd Quantity not saved at storage at locator " + loc_id + " and product is " + line.GetM_Product_ID()); } } else { storage = MStorage.Get(GetCtx(), loc_id, line.GetM_Product_ID(), 0, null); if (storage == null) { //MStorage.Add(GetCtx(), GetM_Warehouse_ID(), loc_id, line.GetM_Product_ID(), 0, 0, 0, 0, line.GetQty(), null); MStorage.Add(GetCtx(), GetM_Warehouse_ID(), loc_id, line.GetM_Product_ID(), 0, 0, (Decimal)0, (Decimal)0, (Decimal)0, line.GetQty(), null); } else { storage.SetDTD001_QtyReserved((Decimal.Add(storage.GetDTD001_QtyReserved(), (Decimal)line.GetQty()))); storage.Save(); } } } } } catch (Exception ex) { //MessageBox.Show("MRequisition--CompleteIt"); log.Severe(ex.ToString()); } return(DocActionVariables.STATUS_COMPLETED); }
/** * Prepare Document * @return new status (In Progress or Invalid) */ public String PrepareIt() { try { log.Info(ToString()); _processMsg = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_BEFORE_PREPARE); if (_processMsg != null) { return(DocActionVariables.STATUS_INVALID); } MRequisitionLine[] lines = GetLines(); // Invalid if (GetAD_User_ID() == 0 || GetM_PriceList_ID() == 0 || GetM_Warehouse_ID() == 0 || lines.Length == 0) { return(DocActionVariables.STATUS_INVALID); } // Std Period open? if (!MPeriod.IsOpen(GetCtx(), GetDateDoc(), MDocBaseType.DOCBASETYPE_PURCHASEREQUISITION)) { _processMsg = "@PeriodClosed@"; return(DocActionVariables.STATUS_INVALID); } // is Non Business Day? if (MNonBusinessDay.IsNonBusinessDay(GetCtx(), GetDateDoc())) { _processMsg = Common.Common.NONBUSINESSDAY; return(DocActionVariables.STATUS_INVALID); } // Add up Amounts int precision = MPriceList.GetStandardPrecision(GetCtx(), GetM_PriceList_ID()); Decimal totalLines = Env.ZERO; for (int i = 0; i < lines.Length; i++) { MRequisitionLine line = lines[i]; Decimal lineNet = Decimal.Multiply(line.GetQty(), line.GetPriceActual()); lineNet = Decimal.Round(lineNet, precision);//, MidpointRounding.AwayFromZero); if (lineNet.CompareTo(line.GetLineNetAmt()) != 0) { line.SetLineNetAmt(lineNet); line.Save(); } totalLines = Decimal.Add(totalLines, line.GetLineNetAmt()); } if (totalLines.CompareTo(GetTotalLines()) != 0) { SetTotalLines(totalLines); Save(); } _justPrepared = true; } catch (Exception ex) { // MessageBox.Show("MRequisition--PrepareIt"); log.Severe(ex.ToString()); } return(DocActionVariables.STATUS_INPROGRESS); }
/** * Complete Document * @return new status (Complete, In Progress, Invalid, Waiting ..) */ public String CompleteIt() { try { // Re-Check if (!_justPrepared) { String status = PrepareIt(); if (!DocActionVariables.STATUS_INPROGRESS.Equals(status)) { return(status); } } // JID_1290: Set the document number from completed document sequence after completed (if needed) SetCompletedDocumentNo(); // Implicit Approval if (!IsApproved()) { ApproveIt(); } log.Info(ToString()); // User Validation String valid = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_AFTER_COMPLETE); if (valid != null) { _processMsg = valid; return(DocActionVariables.STATUS_INVALID); } // SetProcessed(true); SetDocAction(DocActionVariables.ACTION_CLOSE); /**************************************************************************************************************/ // Check Column Name new 6jan 0 vikas int _count = Util.GetValueOfInt(DB.ExecuteScalar(" SELECT Count(*) FROM AD_Column WHERE columnname = 'DTD001_SourceReserve' ")); Tuple <String, String, String> mInfo = null; if (Env.HasModulePrefix("DTD001_", out mInfo)) { MRequisitionLine[] lines = GetLines(); MProduct product = null; for (int i = 0; i < lines.Length; i++) { MRequisitionLine line = lines[i]; if (line.GetM_Product_ID() > 0) { product = MProduct.Get(GetCtx(), line.GetM_Product_ID()); } int loc_id = GetLocation(GetM_Warehouse_ID()); //new 6jan 1 int Sourcewhloc_id = GetSwhLocation(GetDTD001_MWarehouseSource_ID()); if (Sourcewhloc_id == 0) { // JID_1098: done by Bharat on 31 Jan 2019, need to correct these messages _processMsg = Msg.GetMsg(GetCtx(), "DTD001_DefineSrcLocator"); //"Define Locator For That SourceWarehouse"; return(DocActionVariables.STATUS_INVALID); } //End if (loc_id == 0) { //return Msg.GetMsg(GetCtx(),"MMPM_DefineLocator"); _processMsg = Msg.GetMsg(GetCtx(), "DTD001_DefineLocator"); //"Define Locator For That Warehouse"; return(DocActionVariables.STATUS_INVALID); } if (line.Get_ColumnIndex("OrderLocator_ID") > 0) { line.SetOrderLocator_ID(loc_id); line.SetReserveLocator_ID(Sourcewhloc_id); if (!line.Save()) { _processMsg = Msg.GetMsg(GetCtx(), "ReqLineNotSaved"); return(DocActionVariables.STATUS_INVALID); } } //if (Util.GetValueOfInt(DB.ExecuteScalar("SELECT COUNT(AD_MODULEINFO_ID) FROM AD_MODULEINFO WHERE PREFIX='VA203_'", null, null)) > 0) // SI_0686_2 : storage should not update in case of product is other than item type. if (Env.IsModuleInstalled("VA203_") && product != null && product.GetProductType() == X_M_Product.PRODUCTTYPE_Item) { storage = MStorage.Get(GetCtx(), loc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); if (storage == null) { storage = MStorage.GetCreate(GetCtx(), loc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); } storage.SetDTD001_QtyReserved((Decimal.Add(storage.GetDTD001_QtyReserved(), (Decimal)line.GetQty()))); if (!storage.Save()) { log.Info("Requisition Reserverd Quantity not saved at storage at locator " + loc_id + " and product is " + line.GetM_Product_ID()); } ///new 6jan 2 if (_count > 0) { Swhstorage = MStorage.Get(GetCtx(), Sourcewhloc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); if (Swhstorage == null) { Swhstorage = MStorage.GetCreate(GetCtx(), Sourcewhloc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); } Swhstorage.SetDTD001_SourceReserve((Decimal.Add(Swhstorage.GetDTD001_SourceReserve(), (Decimal)line.GetQty()))); if (!Swhstorage.Save()) { log.Info("Requisition Reserverd Quantity not saved at storage at locator " + Sourcewhloc_id + " and product is " + line.GetM_Product_ID()); } } //End } else if (product != null && product.GetProductType() == X_M_Product.PRODUCTTYPE_Item) { // SI_0657: consider Attribute also storage = MStorage.Get(GetCtx(), loc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); if (storage == null) { //MStorage.Add(GetCtx(), GetM_Warehouse_ID(), loc_id, line.GetM_Product_ID(), 0, 0, 0, 0, line.GetQty(), null); MStorage.Add(GetCtx(), GetM_Warehouse_ID(), loc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), line.GetM_AttributeSetInstance_ID(), (Decimal)0, (Decimal)0, (Decimal)0, line.GetQty(), Get_Trx()); } else { storage.SetDTD001_QtyReserved((Decimal.Add(storage.GetDTD001_QtyReserved(), (Decimal)line.GetQty()))); storage.Save(); } //new 6jan 3 if (_count > 0) { Swhstorage = MStorage.Get(GetCtx(), Sourcewhloc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); if (Swhstorage == null) { MStorage.Add(GetCtx(), GetDTD001_MWarehouseSource_ID(), Sourcewhloc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), line.GetM_AttributeSetInstance_ID(), (Decimal)0, (Decimal)0, (Decimal)0, 0, Get_Trx()); MStorage StrgResrvQty = null; StrgResrvQty = MStorage.GetCreate(GetCtx(), Sourcewhloc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); StrgResrvQty.SetDTD001_SourceReserve(Decimal.Add(StrgResrvQty.GetDTD001_SourceReserve(), line.GetQty())); StrgResrvQty.Save(); } else { Swhstorage.SetDTD001_SourceReserve((Decimal.Add(Swhstorage.GetDTD001_SourceReserve(), (Decimal)line.GetQty()))); Swhstorage.Save(); } } //End } } } } catch (Exception ex) { //MessageBox.Show("MRequisition--CompleteIt"); log.Severe(ex.ToString()); } return(DocActionVariables.STATUS_COMPLETED); }
} // rejectIt /// <summary> /// Complete Document /// </summary> /// <returns>new status (Complete, In Progress, Invalid, Waiting ..)</returns> public String CompleteIt() { log.Info("completeIt - " + ToString()); // Re-Check if (!m_justPrepared) { String status = PrepareIt(); if (!DocActionVariables.STATUS_INPROGRESS.Equals(status)) { return(status); } } // JID_1290: Set the document number from completed document sequence after completed (if needed) SetCompletedDocumentNo(); // Implicit Approval ApproveIt(); // Add up Amounts & complete them MJournal[] journals = GetJournals(true); Decimal? TotalDr = Env.ZERO; Decimal? TotalCr = Env.ZERO; for (int i = 0; i < journals.Length; i++) { MJournal journal = journals[i]; if (!journal.IsActive()) { journal.SetProcessed(true); journal.SetDocStatus(DOCSTATUS_Voided); journal.SetDocAction(DOCACTION_None); journal.Save(); continue; } // Complete if not closed if (DOCSTATUS_Closed.Equals(journal.GetDocStatus()) || DOCSTATUS_Voided.Equals(journal.GetDocStatus()) || DOCSTATUS_Reversed.Equals(journal.GetDocStatus()) || DOCSTATUS_Completed.Equals(journal.GetDocStatus())) { ; } else { String status = journal.CompleteIt(); if (!DocActionVariables.STATUS_COMPLETED.Equals(status)) { journal.SetDocStatus(status); journal.Save(); m_processMsg = journal.GetProcessMsg(); return(status); } journal.SetDocStatus(DOCSTATUS_Completed); journal.Save(); } // //TotalDr = TotalDr.add(journal.getTotalDr()); TotalDr = Decimal.Add(TotalDr.Value, journal.GetTotalDr()); TotalCr = Decimal.Add(TotalCr.Value, journal.GetTotalCr()); } SetTotalDr(TotalDr.Value); SetTotalCr(TotalCr.Value); // 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); } // completeIt
} // invalidateIt /// <summary> /// Prepare Document /// </summary> /// <returns>new status (In Progress or Invalid) </returns> public String PrepareIt() { log.Info(ToString()); m_processMsg = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_BEFORE_PREPARE); if (m_processMsg != null) { return(DocActionVariables.STATUS_INVALID); } MDocType dt = MDocType.Get(GetCtx(), GetC_DocType_ID()); // Std Period open? if (!MPeriod.IsOpen(GetCtx(), GetDateAcct(), dt.GetDocBaseType())) { m_processMsg = "@PeriodClosed@"; return(DocActionVariables.STATUS_INVALID); } // 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(), GetDateAcct(), GetAD_Org_ID())) { m_processMsg = Common.Common.NONBUSINESSDAY; return(DocActionVariables.STATUS_INVALID); } // JID_0521 - Restrict if debit and credit amount is not equal.-Mohit-12-jun-2019. if (GetTotalCr() != GetTotalDr()) { m_processMsg = Msg.GetMsg(GetCtx(), "DBAndCRAmtNotEqual"); return(DocActionVariables.STATUS_INVALID); } // Add up Amounts & prepare them MJournal[] journals = GetJournals(false); if (journals.Length == 0) { m_processMsg = "@NoLines@"; return(DocActionVariables.STATUS_INVALID); } Decimal TotalDr = Env.ZERO; Decimal TotalCr = Env.ZERO; for (int i = 0; i < journals.Length; i++) { MJournal journal = journals[i]; if (!journal.IsActive()) { continue; } // Prepare if not closed if (DOCSTATUS_Closed.Equals(journal.GetDocStatus()) || DOCSTATUS_Voided.Equals(journal.GetDocStatus()) || DOCSTATUS_Reversed.Equals(journal.GetDocStatus()) || DOCSTATUS_Completed.Equals(journal.GetDocStatus())) { ; } else { String status = journal.PrepareIt(); if (!DocActionVariables.STATUS_INPROGRESS.Equals(status)) { journal.SetDocStatus(status); journal.Save(); m_processMsg = journal.GetProcessMsg(); return(status); } journal.SetDocStatus(DOCSTATUS_InProgress); journal.Save(); } // //TotalDr = TotalDr.add(journal.getTotalDr()); TotalDr = Decimal.Add(TotalDr, journal.GetTotalDr()); TotalCr = Decimal.Add(TotalCr, journal.GetTotalCr()); } SetTotalDr(TotalDr); SetTotalCr(TotalCr); // Control Amount if (Env.ZERO.CompareTo(GetControlAmt()) != 0 && GetControlAmt().CompareTo(GetTotalDr()) != 0) { m_processMsg = "@ControlAmtError@"; return(DocActionVariables.STATUS_INVALID); } // Add up Amounts m_justPrepared = true; return(DocActionVariables.STATUS_INPROGRESS); } // prepareIt
/// <summary> /// Prepare Document /// </summary> /// <returns>new status (In Progress or Invalid) </returns> public String PrepareIt() { log.Info(ToString()); m_processMsg = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_BEFORE_PREPARE); if (m_processMsg != null) { return(DocActionVariables.STATUS_INVALID); } // Std Period open? if (!MPeriod.IsOpen(GetCtx(), GetStatementDate(), MDocBaseType.DOCBASETYPE_BANKSTATEMENT, GetAD_Org_ID())) { m_processMsg = "@PeriodClosed@"; return(DocActionVariables.STATUS_INVALID); } // 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(DocActionVariables.STATUS_INVALID); } MBankStatementLine[] lines = GetLines(true); if (lines.Length == 0) { m_processMsg = "@NoLines@"; return(DocActionVariables.STATUS_INVALID); } // Lines Decimal total = Env.ZERO; DateTime?minDate = GetStatementDate(); DateTime?maxDate = minDate; for (int i = 0; i < lines.Length; i++) { MBankStatementLine line = lines[i]; total = Decimal.Add(total, line.GetStmtAmt()); if (line.GetDateAcct() < (minDate))//before { minDate = line.GetDateAcct(); } if (line.GetDateAcct() > maxDate)//after { maxDate = line.GetDateAcct(); } } SetStatementDifference(total); SetEndingBalance(Decimal.Add(GetBeginningBalance(), total)); if (!MPeriod.IsOpen(GetCtx(), minDate, MDocBaseType.DOCBASETYPE_BANKSTATEMENT, GetAD_Org_ID()) || !MPeriod.IsOpen(GetCtx(), maxDate, MDocBaseType.DOCBASETYPE_BANKSTATEMENT, GetAD_Org_ID())) { m_processMsg = "@PeriodClosed@"; return(DocActionVariables.STATUS_INVALID); } // 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(DocActionVariables.STATUS_INVALID); } m_justPrepared = true; if (!DOCACTION_Complete.Equals(GetDocAction())) { SetDocAction(DOCACTION_Complete); } return(DocActionVariables.STATUS_INPROGRESS); }
} // invalidateIt /// <summary> /// Prepare Document /// </summary> /// <returns>new status (In Progress or Invalid) </returns> public String PrepareIt() { log.Info(ToString()); m_processMsg = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_BEFORE_PREPARE); if (m_processMsg != null) { return(DocActionVariables.STATUS_INVALID); } MDocType dt = MDocType.Get(GetCtx(), GetC_DocType_ID()); // Get Period MPeriod period = MPeriod.Get(GetCtx(), GetDateAcct()); if (period == null) { log.Warning("No Period for " + GetDateAcct()); m_processMsg = "@PeriodNotFound@"; return(DocActionVariables.STATUS_INVALID); } // Standard Period if (period.GetC_Period_ID() != GetC_Period_ID() && period.IsStandardPeriod()) { m_processMsg = "@PeriodNotValid@"; return(DocActionVariables.STATUS_INVALID); } Boolean open = period.IsOpen(dt.GetDocBaseType()); if (!open) { log.Warning(period.GetName() + ": Not open for " + dt.GetDocBaseType() + " (" + GetDateAcct() + ")"); m_processMsg = "@PeriodClosed@"; return(DocActionVariables.STATUS_INVALID); } // Lines MJournalLine[] lines = GetLines(true); if (lines.Length == 0) { m_processMsg = "@NoLines@"; return(DocActionVariables.STATUS_INVALID); } // Add up Amounts Decimal AmtSourceDr = Env.ZERO; Decimal AmtSourceCr = Env.ZERO; for (int i = 0; i < lines.Length; i++) { MJournalLine line = lines[i]; if (!IsActive()) { continue; } // if (line.IsDocControlled()) { m_processMsg = "@DocControlledError@ - @Line@=" + line.GetLine() + " - " + line.GetAccountElementValue(); return(DocActionVariables.STATUS_INVALID); } // AmtSourceDr = Decimal.Add(AmtSourceDr, line.GetAmtSourceDr()); AmtSourceCr = Decimal.Add(AmtSourceCr, line.GetAmtSourceCr()); } SetTotalDr(AmtSourceDr); SetTotalCr(AmtSourceCr); // Control Amount if (Env.ZERO.CompareTo(GetControlAmt()) != 0 && GetControlAmt().CompareTo(GetTotalDr()) != 0) { m_processMsg = "@ControlAmtError@"; return(DocActionVariables.STATUS_INVALID); } // Unbalanced Jornal & Not Suspense if (AmtSourceDr.CompareTo(AmtSourceCr) != 0) { MAcctSchemaGL gl = MAcctSchemaGL.Get(GetCtx(), GetC_AcctSchema_ID()); if (gl == null || !gl.IsUseSuspenseBalancing()) { m_processMsg = "@UnbalancedJornal@"; return(DocActionVariables.STATUS_INVALID); } } if (!DOCACTION_Complete.Equals(GetDocAction())) { SetDocAction(DOCACTION_Complete); } m_justPrepared = true; return(DocActionVariables.STATUS_INPROGRESS); } // prepareIt
} // invalidateIt /// <summary> /// Prepare Document /// </summary> /// <returns>new status (In Progress or Invalid) </returns> public String PrepareIt() { log.Info(ToString()); m_processMsg = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_BEFORE_PREPARE); if (m_processMsg != null) { return(DocActionVariables.STATUS_INVALID); } MDocType dt = MDocType.Get(GetCtx(), GetC_DocType_ID()); // Get Period MPeriod period = MPeriod.Get(GetCtx(), GetDateAcct()); if (period == null) { log.Warning("No Period for " + GetDateAcct()); m_processMsg = "@PeriodNotFound@"; return(DocActionVariables.STATUS_INVALID); } // Standard Period if (period.GetC_Period_ID() != GetC_Period_ID() && period.IsStandardPeriod()) { m_processMsg = "@PeriodNotValid@"; return(DocActionVariables.STATUS_INVALID); } Boolean open = period.IsOpen(dt.GetDocBaseType()); if (!open) { log.Warning(period.GetName() + ": Not open for " + dt.GetDocBaseType() + " (" + GetDateAcct() + ")"); m_processMsg = "@PeriodClosed@"; return(DocActionVariables.STATUS_INVALID); } // Lines MJournalLine[] lines = GetLines(true); if (lines.Length == 0) { m_processMsg = "@NoLines@"; return(DocActionVariables.STATUS_INVALID); } //Manish 18/7/2016 .. Because if line dimention (Amount) column sum is not equals to debit or credit value complete process will not done. int journalDRAndCR = 0; string getlinevalues = "SELECT NVL(ElementType,null) AS ElementType,AmtSourceDr,AmtAcctCr,AmtSourceCr,GL_JournalLine_ID FROM GL_JournalLine where GL_Journal_ID=" + Get_Value("GL_Journal_ID"); DataSet dts = DB.ExecuteDataset(getlinevalues, null, null); if (dts != null && dts.Tables[0].Rows.Count > 0) { for (int i = 0; i < dts.Tables[0].Rows.Count; i++) { journalDRAndCR = 0; if (dts.Tables[0].Rows[i]["ElementType"].ToString() == "") { continue; } if (Convert.ToInt32(dts.Tables[0].Rows[i]["AmtSourceDr"]) > 0) { journalDRAndCR = Convert.ToInt32(dts.Tables[0].Rows[i]["AmtSourceDr"]); } else { if (Convert.ToInt32(dts.Tables[0].Rows[i]["AmtSourceCr"]) > 0) { journalDRAndCR = Convert.ToInt32(dts.Tables[0].Rows[i]["AmtSourceCr"]); } } string getlineval = "SELECT SUM(amount) FROM gl_linedimension where GL_JournalLine_ID=" + Convert.ToInt32(dts.Tables[0].Rows[i]["GL_JournalLine_ID"]); int count = Util.GetValueOfInt(DB.ExecuteScalar(getlineval)); if (journalDRAndCR != count) { m_processMsg = "@AmountNotMatch@"; return(DocActionVariables.STATUS_INVALID); } } } // Add up Amounts Decimal AmtSourceDr = Env.ZERO; Decimal AmtSourceCr = Env.ZERO; for (int i = 0; i < lines.Length; i++) { MJournalLine line = lines[i]; if (!IsActive()) { continue; } // if (line.IsDocControlled()) { m_processMsg = "@DocControlledError@ - @Line@=" + line.GetLine() + " - " + line.GetAccountElementValue(); return(DocActionVariables.STATUS_INVALID); } // AmtSourceDr = Decimal.Add(AmtSourceDr, line.GetAmtAcctDr()); AmtSourceCr = Decimal.Add(AmtSourceCr, line.GetAmtAcctCr()); } SetTotalDr(AmtSourceDr); SetTotalCr(AmtSourceCr); // Control Amount if (Env.ZERO.CompareTo(GetControlAmt()) != 0 && GetControlAmt().CompareTo(GetTotalDr()) != 0) { m_processMsg = "@ControlAmtError@"; return(DocActionVariables.STATUS_INVALID); } // Unbalanced Jornal & Not Suspense if (AmtSourceDr.CompareTo(AmtSourceCr) != 0) { MAcctSchemaGL gl = MAcctSchemaGL.Get(GetCtx(), GetC_AcctSchema_ID()); if (gl == null || !gl.IsUseSuspenseBalancing()) { m_processMsg = "@UnbalancedJornal@"; return(DocActionVariables.STATUS_INVALID); } } if (!DOCACTION_Complete.Equals(GetDocAction())) { SetDocAction(DOCACTION_Complete); } m_justPrepared = true; return(DocActionVariables.STATUS_INPROGRESS); } // prepareIt
/// <summary> /// Prepare Document /// </summary> /// <returns>new status (In Progress or Invalid)</returns> public String PrepareIt() { log.Info(ToString()); _processMsg = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_BEFORE_PREPARE); if (_processMsg != null) { return(DocActionVariables.STATUS_INVALID); } // Std Period open? if (!VAdvantage.Model.MPeriod.IsOpen(GetCtx(), GetUpdated(), VAdvantage.Model.MDocBaseType.DOCBASETYPE_MATERIALMOVEMENT)) { _processMsg = "@PeriodClosed@"; return(DocActionVariables.STATUS_INVALID); } // is Non Business Day? if (VAdvantage.Model.MNonBusinessDay.IsNonBusinessDay(GetCtx(), GetUpdated())) { _processMsg = VAdvantage.Common.Common.NONBUSINESSDAY; return(DocActionVariables.STATUS_INVALID); } MMovementLineConfirm[] lines = GetLines(true); if (lines.Length == 0) { _processMsg = "@NoLines@"; return(DocActionVariables.STATUS_INVALID); } //Boolean difference = false; //for (int i = 0; i < lines.Length; i++) //{ // if (!lines[i].IsFullyConfirmed()) // { // difference = true; // break; // } //} Boolean difference = false; for (int i = 0; i < lines.Length; i++) { if (lines[i].GetTargetQty() != (lines[i].GetConfirmedQty() + lines[i].GetDifferenceQty() + lines[i].GetScrappedQty())) { difference = true; break; } } // SetIsInDispute(difference); if (difference) { _processMsg = "@M_MovementLineConfirm_ID@ <> @IsFullyConfirmed@"; return(DocActionVariables.STATUS_INVALID); } // User Validation String valid = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_AFTER_COMPLETE); if (valid != null) { _processMsg = valid; return(DocActionVariables.STATUS_INVALID); } // _justPrepared = true; if (!DOCACTION_Complete.Equals(GetDocAction())) { SetDocAction(DOCACTION_Complete); } return(DocActionVariables.STATUS_INPROGRESS); }
public string PrepareIt() { log.Info(ToString()); _processMsg = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_BEFORE_PREPARE); if (_processMsg != null) { return(DocActionVariables.STATUS_INVALID); } MDocType dt = MDocType.Get(GetCtx(), GetC_DocType_ID()); //SetIsReturnTrx(dt.IsReturnTrx()); //SetIsSOTrx(dt.IsSOTrx()); // Std Period open? if (!MPeriod.IsOpen(GetCtx(), GetDateAcct(), dt.GetDocBaseType())) { _processMsg = "@PeriodClosed@"; return(DocActionVariables.STATUS_INVALID); } // is Non Business Day? if (MNonBusinessDay.IsNonBusinessDay(GetCtx(), GetDateAcct())) { _processMsg = Common.Common.NONBUSINESSDAY; return(DocActionVariables.STATUS_INVALID); } // Lines MProfitLossLines[] lines = GetLines(true); if (lines.Length == 0) { _processMsg = "@NoLines@"; return(DocActionVariables.STATUS_INVALID); } //// Convert DocType to Target //if (GetC_DocType_ID() != GetC_DocTypeTarget_ID()) //{ // // Cannot change Std to anything else if different warehouses // if (GetC_DocType_ID() != 0) // { // MDocType dtOld = MDocType.Get(GetCtx(), GetC_DocType_ID()); // if (MDocType.DOCSUBTYPESO_StandardOrder.Equals(dtOld.GetDocSubTypeSO()) // From SO // && !MDocType.DOCSUBTYPESO_StandardOrder.Equals(dt.GetDocSubTypeSO())) // To !SO // { // for (int i = 0; i < lines.Length; i++) // { // if (lines[i].GetM_Warehouse_ID() != GetM_Warehouse_ID()) // { // log.Warning("different Warehouse " + lines[i]); // _processMsg = "@CannotChangeDocType@"; // return DocActionVariables.STATUS_INVALID; // } // } // } // } // // New or in Progress/Invalid // if (DOCSTATUS_Drafted.Equals(GetDocStatus()) // || DOCSTATUS_InProgress.Equals(GetDocStatus()) // || DOCSTATUS_Invalid.Equals(GetDocStatus()) // || GetC_DocType_ID() == 0) // { // SetC_DocType_ID(GetC_DocTypeTarget_ID()); // } // else // convert only if offer // { // if (dt.IsOffer()) // SetC_DocType_ID(GetC_DocTypeTarget_ID()); // else // { // _processMsg = "@CannotChangeDocType@"; // return DocActionVariables.STATUS_INVALID; // } // } //} // convert DocType // Mandatory Product Attribute Set Instance //String mandatoryType = "='Y'"; // IN ('Y','S') //String sql = "SELECT COUNT(*) " // + "FROM C_OrderLine ol" // + " INNER JOIN M_Product p ON (ol.M_Product_ID=p.M_Product_ID)" // + " INNER JOIN M_AttributeSet pas ON (p.M_AttributeSet_ID=pas.M_AttributeSet_ID) " // + "WHERE pas.MandatoryType" + mandatoryType // + " AND ol.M_AttributeSetInstance_ID IS NULL" // + " AND ol.C_Order_ID=" + GetC_Order_ID(); //int no = DataBase.DB.GetSQLValue(Get_TrxName(), sql); //if (no != 0) //{ // _processMsg = "@LinesWithoutProductAttribute@ (" + no + ")"; // return DocActionVariables.STATUS_INVALID; //} //// Lines //if (ExplodeBOM()) // lines = GetLines(true, "M_Product_ID"); //if (!ReserveStock(dt, lines)) //{ // _processMsg = "Cannot reserve Stock"; // return DocActionVariables.STATUS_INVALID; //} //if (!CalculateTaxTotal()) //{ // _processMsg = "Error calculating tax"; // return DocActionVariables.STATUS_INVALID; //} //// Credit Check //if (IsSOTrx() && !IsReturnTrx()) //{ // MBPartner bp = MBPartner.Get(GetCtx(), GetC_BPartner_ID()); // if (MBPartner.SOCREDITSTATUS_CreditStop.Equals(bp.GetSOCreditStatus())) // { // _processMsg = "@BPartnerCreditStop@ - @TotalOpenBalance@=" // + bp.GetTotalOpenBalance() // + ", @SO_CreditLimit@=" + bp.GetSO_CreditLimit(); // return DocActionVariables.STATUS_INVALID; // } // if (MBPartner.SOCREDITSTATUS_CreditHold.Equals(bp.GetSOCreditStatus())) // { // _processMsg = "@BPartnerCreditHold@ - @TotalOpenBalance@=" // + bp.GetTotalOpenBalance() // + ", @SO_CreditLimit@=" + bp.GetSO_CreditLimit(); // return DocActionVariables.STATUS_INVALID; // } // Decimal grandTotal = MConversionRate.ConvertBase(GetCtx(), // GetGrandTotal(), GetC_Currency_ID(), GetDateOrdered(), // GetC_ConversionType_ID(), GetAD_Client_ID(), GetAD_Org_ID()); // if (MBPartner.SOCREDITSTATUS_CreditHold.Equals(bp.GetSOCreditStatus(grandTotal))) // { // _processMsg = "@BPartnerOverOCreditHold@ - @TotalOpenBalance@=" // + bp.GetTotalOpenBalance() + ", @GrandTotal@=" + grandTotal // + ", @SO_CreditLimit@=" + bp.GetSO_CreditLimit(); // return DocActionVariables.STATUS_INVALID; // } //} _justPrepared = true; // dont uncomment //if (!DOCACTION_Complete.Equals(getDocAction())) don't set for just prepare // setDocAction(DOCACTION_Complete); return(DocActionVariables.STATUS_INPROGRESS); }
/** * Complete Document * @return new status (Complete, In Progress, Invalid, Waiting ..) */ public String CompleteIt() { // Re-Check if (!_justPrepared) { String status = PrepareIt(); if (!DocActionVariables.STATUS_INPROGRESS.Equals(status)) { return(status); } } // Implicit Approval if (!IsApproved()) { ApproveIt(); } log.Info(ToString()); // MInOut inout = new MInOut(GetCtx(), GetM_InOut_ID(), Get_TrxName()); MInOutLineConfirm[] lines = GetLines(false); // Check if we need to split Shipment if (IsInDispute()) { MDocType dt = MDocType.Get(GetCtx(), inout.GetC_DocType_ID()); if (dt.IsSplitWhenDifference()) { if (dt.GetC_DocTypeDifference_ID() == 0) { _processMsg = "No Split Document Type defined for: " + dt.GetName(); return(DocActionVariables.STATUS_INVALID); } SplitInOut(inout, dt.GetC_DocTypeDifference_ID(), lines); _lines = null; } } // All lines for (int i = 0; i < lines.Length; i++) { MInOutLineConfirm confirmLine = lines[i]; confirmLine.Set_TrxName(Get_TrxName()); if (!confirmLine.ProcessLine(inout.IsSOTrx(), GetConfirmType())) { _processMsg = "ShipLine not saved - " + confirmLine; return(DocActionVariables.STATUS_INVALID); } if (confirmLine.IsFullyConfirmed()) { confirmLine.SetProcessed(true); confirmLine.Save(Get_TrxName()); } else { if (CreateDifferenceDoc(inout, confirmLine)) { confirmLine.SetProcessed(true); confirmLine.Save(Get_TrxName()); } else { log.Log(Level.SEVERE, "Scrapped=" + confirmLine.GetScrappedQty() + " - Difference=" + confirmLine.GetDifferenceQty()); return(DocActionVariables.STATUS_INVALID); } } } // for all lines if (_creditMemo != null) { _processMsg += " @C_Invoice_ID@=" + _creditMemo.GetDocumentNo(); } if (_inventory != null) { _processMsg += " @M_Inventory_ID@=" + _inventory.GetDocumentNo(); } // User Validation String valid = ModelValidationEngine.Get().FireDocValidate(this, ModalValidatorVariables.DOCTIMING_AFTER_COMPLETE); if (valid != null) { _processMsg = valid; return(DocActionVariables.STATUS_INVALID); } SetProcessed(true); SetDocAction(DOCACTION_Close); return(DocActionVariables.STATUS_COMPLETED); }