/// <summary> /// Check to see if the appropriate periods are open for this document /// </summary> /// <param name="doc">Doc</param> /// <returns>null if all periods open; otherwise the error message</returns> public static String IsPeriodOpen(DocAction doc) { List <int> docOrgs = new List <int>(); String errorMsg = null; if (errorMsg == null) { // check if lines exist // get all the orgs stamped on the document lines VAdvantage.Utility.Env.QueryParams qParams = doc.GetLineOrgsQueryInfo(); if (qParams != null) { //Object[][] result = QueryUtil.ExecuteQuery(doc.Get_Trx(), qParams.sql, // qParams.parameters.ToList()); Object[][] result = VAdvantage.Utility.QueryUtil.ExecuteQuery(doc.Get_Trx(), qParams.sql, qParams.parameters.ToList()); foreach (Object[] row in result) { docOrgs.Add(Utility.Util.GetValueOfInt(Utility.Util.GetValueOfDecimal(row[0]))); } // check if lines are missing if (result.Length == 0) { errorMsg = "@NoLines@"; } } } if (errorMsg == null) { DateTime?docDate = doc.GetDocumentDate(); String docBaseType = doc.GetDocBaseType(); if (docDate != null && docBaseType != null) { // check if period is open // add doc header org to the list of orgs if (!docOrgs.Contains(doc.GetAD_Org_ID())) { docOrgs.Add(doc.GetAD_Org_ID()); } // Std Period open? errorMsg = MPeriod.IsOpen(doc.GetCtx(), doc.GetAD_Client_ID(), docOrgs, docDate, docBaseType); } } return(errorMsg); }
///Manfacturing /// <summary> /// Process document. This replaces DocAction.processIt(). /// </summary> /// <param name="doc">Doc Action</param> /// <param name="processAction">processAction</param> /// <returns>true if performed</returns> /// <date>07-march-2011</date> /// <writer>raghu</writer> public static Boolean ProcessIt(DocAction doc, String processAction) { DateTime time = DateTime.Now.Date; Boolean success = false; VAdvantage.Utility.Ctx ctx = doc.GetCtx(); Boolean oldIsBatchMode = ctx.IsBatchMode(); ctx.SetBatchMode(true); DocumentEngine engine = new DocumentEngine(doc, doc.GetDocStatus()); success = engine.ProcessIt(processAction, doc.GetDocAction()); ctx.SetBatchMode(oldIsBatchMode); return(success); }
/// <summary> /// Process actual document - do not call directly. /// Calls the individual actions which call the document action /// </summary> /// <param name="action">document action</param> /// <returns>true if performed</returns> public bool ProcessIt(String action) { _message = null; _action = action; // if (ACTION_UNLOCK.Equals(_action)) { return(UnlockIt()); } if (ACTION_INVALIDATE.Equals(_action)) { return(InvalidateIt()); } if (ACTION_PREPARE.Equals(_action)) { return(STATUS_INPROGRESS.Equals(PrepareIt())); } if (ACTION_APPROVE.Equals(_action)) { return(ApproveIt()); } if (ACTION_REJECT.Equals(_action)) { return(RejectIt()); } if (ACTION_COMPLETE.Equals(_action) || ACTION_WAITCOMPLETE.Equals(_action)) { String status = null; if (IsDrafted() || IsInvalid()) // prepare if not prepared yet { status = PrepareIt(); if (!STATUS_INPROGRESS.Equals(status)) { return(false); } } status = CompleteIt(); if (_document != null && !Ini.IsClient()) // Post Immediate if on Server { MClient client = MClient.Get(_document.GetCtx(), _document.GetAD_Client_ID()); if (STATUS_COMPLETED.Equals(status) && client.IsPostImmediate()) { _document.Save(); PostIt(); } } return(STATUS_COMPLETED.Equals(status) || STATUS_INPROGRESS.Equals(status) || STATUS_WAITINGPAYMENT.Equals(status) || STATUS_WAITINGCONFIRMATION.Equals(status)); } if (ACTION_REACTIVATE.Equals(_action)) { return(ReActivateIt()); } if (ACTION_REVERSE_ACCRUAL.Equals(_action)) { return(ReverseAccrualIt()); } if (ACTION_REVERSE_CORRECT.Equals(_action)) { return(ReverseCorrectIt()); } if (ACTION_CLOSE.Equals(_action)) { return(CloseIt()); } if (ACTION_VOID.Equals(_action)) { return(VoidIt()); } if (ACTION_POST.Equals(_action)) { return(PostIt()); } // return(false); }