/// <summary> /// Is this a Valid Transition For .. /// </summary> /// <param name="activity">activity</param> /// <returns>true if valid</returns> public bool IsValidFor(MWFActivity activity) { if (IsStdUserWorkflow()) { PO po = activity.GetPO(); if (po.GetType() == typeof(DocAction) || po.GetType().GetInterface("DocAction") == typeof(DocAction)) { DocAction da = (DocAction)po; String docStatus = da.GetDocStatus(); String docAction = da.GetDocAction(); if (!DocActionVariables.ACTION_COMPLETE.Equals(docAction) || DocActionVariables.STATUS_COMPLETED.Equals(docStatus) || DocActionVariables.STATUS_WAITINGCONFIRMATION.Equals(docStatus) || DocActionVariables.STATUS_WAITINGPAYMENT.Equals(docStatus) || DocActionVariables.STATUS_VOIDED.Equals(docStatus) || DocActionVariables.STATUS_CLOSED.Equals(docStatus) || DocActionVariables.STATUS_REVERSED.Equals(docStatus)) /* || DocAction.ACTION_Complete.equals(docAction) || DocAction.ACTION_ReActivate.equals(docAction) || DocAction.ACTION_None.equals(docAction) || DocAction.ACTION_Post.equals(docAction) || DocAction.ACTION_Unlock.equals(docAction) || DocAction.ACTION_Invalidate.equals(docAction) ) */ { log.Fine("isValidFor =NO= StdUserWF - Status=" + docStatus + " - Action=" + docAction); return(false); } } } // No Conditions if (GetConditions(false).Length == 0) { log.Fine("#0 " + ToString()); return(true); } // First condition always AND bool ok = _conditions[0].Evaluate(activity); for (int i = 1; i < _conditions.Length; i++) { if (_conditions[i].IsOr()) { ok = ok || _conditions[i].Evaluate(activity); } else { ok = ok && _conditions[i].Evaluate(activity); } } // for all conditions log.Fine("isValidFor (" + ok + ") " + ToString()); return(ok); }
///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); }