Beispiel #1
0
        /// <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);
        }