Beispiel #1
0
        /// <summary>
        /// Set User from
        /// - (1) Responsible
        /// - (2) Document Sales Rep
        /// - (3) Document UpdatedBy
        /// - (4) Process invoker
        /// </summary>
        /// <param name="User_ID">process invoker</param>
        private void SetUser_ID(int User_ID)
        {
            //	Responsible
            MWFResponsible resp = MWFResponsible.Get(GetCtx(), GetAD_WF_Responsible_ID());
            //	(1) User - Directly responsible
            int AD_User_ID = resp.GetAD_User_ID();

            //	Invoker - get Sales Rep or last updater of Document
            if (AD_User_ID == 0 && resp.IsInvoker())
            {
                GetPO();
                //	(2) Doc Owner
                //if (_po != null && _po instanceof DocAction)
                if (_po != null && (_po.GetType() == typeof(DocAction) || _po.GetType().GetInterface("DocAction") == typeof(DocAction)))
                {
                    DocAction da = (DocAction)_po;
                    AD_User_ID = da.GetDoc_User_ID();
                }
                //	(2) Sales Rep
                if (AD_User_ID == 0 && _po != null && _po.Get_ColumnIndex("SalesRep_ID") != -1)
                {
                    Object sr = _po.Get_Value("SalesRep_ID");
                    if (sr != null && sr.GetType() == typeof(int))
                    {
                        AD_User_ID = int.Parse(sr.ToString());
                    }
                }
                //	(3) UpdatedBy
                if (AD_User_ID == 0 && _po != null)
                {
                    AD_User_ID = _po.GetUpdatedBy();
                }
            }

            //	(4) Process Owner
            if (AD_User_ID == 0)
            {
                AD_User_ID = User_ID;
            }
            //	Fallback
            if (AD_User_ID == 0)
            {
                AD_User_ID = GetCtx().GetAD_User_ID();
            }
            //
            SetAD_User_ID(AD_User_ID);
        }