コード例 #1
0
ファイル: MPInstance.cs プロジェクト: vuongthai91/ERP-CMR-DMS
        /// <summary>
        /// Create Process Instance from Process and create parameters
        /// </summary>
        /// <param name="process">process</param>
        /// <param name="Record_ID">Record</param>
        public MPInstance(MProcess process, int Record_ID)
            : this(process.GetCtx(), 0, null)
        {
            if (process.Get_ID() <= 0)
            {
                return;
            }
            SetAD_Process_ID(process.GetAD_Process_ID());
            SetRecord_ID(Record_ID);
            SetAD_User_ID(process.GetCtx().GetAD_User_ID());

            // PO Save below
            if (!Save())                //	need to save for parameters
            {
                throw new ArgumentException("Cannot Save");
            }

            //	Set Parameter Base Info
            MProcessPara[] para = process.GetParameters();
            for (int i = 0; i < para.Length; i++)
            {
                MPInstancePara pip = new MPInstancePara(this, para[i].GetSeqNo());
                pip.SetParameterName(para[i].GetColumnName());
                pip.SetInfo(para[i].GetName());
                pip.Save(); //  PO Save
            }
        }
コード例 #2
0
    public static string GetItemString(IntPtr Handle, int N)
    {
        string CL_Name        = MethodBase.GetCurrentMethod().DeclaringType.FullName + "+MAINSTRUCT";//`1";
        IntPtr ProcessPointer = MProcess.GetProcessPointer(Handle);

        if (MProcess.IsWin64(ProcessPointer))
        {
            CL_Name = CL_Name + "64";
        }
        else
        {
            CL_Name = CL_Name + "32";
        }
        Type myType = Type.GetType(CL_Name);

        /* myType = (MProcess.IsWin64(ProcessPointer)) ? myType.MakeGenericType(new Type[] { Type.GetType("System.UInt64") }) :
         * myType.MakeGenericType(new Type[] { Type.GetType("System.UInt32") });*/
        object  Data = Activator.CreateInstance(myType);
        IGetSet GS = Data as IGetSet;
        uint    MaxT = 256; byte[] List_COL = new byte[MaxT];
        IntPtr  ItemPointerT = Memory.VirtualAllocEx(ProcessPointer, IntPtr.Zero, MaxT, Memory.AllocationType.Commit, Memory.MemoryProtection.ReadWrite);

        GS.GetSet().SetFieldValue(new string[] { "mask", "cchTextMax", "pszText" }, (SETGETMSG.WIDTH | SETGETMSG.TEXT), MaxT, ItemPointerT);
        IntPtr ItemPointerD = Memory.WriteProcessMemory(ProcessPointer, Data);

        Message.P.SM(Handle, (uint)MSG.GETITEMA, N, ItemPointerD);
        bool bSuccess3 = Memory.ReadProcessMemory(ProcessPointer, ItemPointerT, (object)List_COL);

        Memory.VirtualFreeEx(ProcessPointer, ItemPointerT, 0, Memory.FreeType.Release);
        Memory.VirtualFreeEx(ProcessPointer, ItemPointerD, 0, Memory.FreeType.Release);
        return(System.Text.Encoding.Default.GetString(List_COL).Trim('\0'));
    }
コード例 #3
0
ファイル: MPInstance.cs プロジェクト: vuongthai91/ERP-CMR-DMS
 /// <summary>
 /// After Save
 /// </summary>
 /// <param name="newRecord">new</param>
 /// <param name="success">success</param>
 /// <returns>success</returns>
 protected override bool AfterSave(bool newRecord, bool success)
 {
     //	Update Statistics
     if (!newRecord &&
         !IsProcessing() &&
         Is_ValueChanged("IsProcessing"))
     {
         //long ms = System.currentTimeMillis() - GetCreated().getTime();
         long ms      = CommonFunctions.CurrentTimeMillis() - GetCreated().Millisecond;
         int  seconds = (int)(ms / 1000);
         if (seconds < 1)
         {
             seconds = 1;
         }
         MProcess prc = MProcess.Get(GetCtx(), GetAD_Process_ID());
         prc.AddStatistics(seconds);
         if (prc.Get_ID() != 0 && prc.Save())
         {
             log.Fine("afterSave - Process Statistics updated Sec=" + seconds);
         }
         else
         {
             log.Warning("afterSave - Process Statistics not updated");
         }
     }
     return(success);
 }
コード例 #4
0
        /// <summary>
        /// Based on Report ID, Generate report and then save it in physcal location
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="_trx"></param>
        /// <param name="AD_TableID"></param>
        /// <param name="recordID"></param>
        /// <param name="AD_UserID"></param>
        /// <param name="AD_ClientID"></param>
        /// <param name="nodeName"></param>
        /// <param name="windowID"></param>
        /// <param name="WFActivity"></param>
        /// <returns>file info.</returns>
        public FileInfo GetPdfReportForMail(Ctx ctx, Trx _trx, int AD_TableID, int recordID, int AD_UserID, int AD_ClientID, string nodeName, int windowID, int WFActivity)
        {
            try
            {
                int reportID = GetDoctypeBasedReport(ctx, AD_TableID, recordID, windowID, WFActivity);

                if (reportID == 0)
                {
                    VLogger.Get().Warning("No Report found on DocType and Window Tab. For Table=" + AD_TableID);
                    return(null);
                }
                FileInfo temp    = null;
                MProcess process = MProcess.Get(ctx, reportID);

                ProcessInfo pi = new ProcessInfo(nodeName, reportID,
                                                 AD_TableID, recordID);
                pi.SetAD_User_ID(AD_UserID);
                pi.SetAD_Client_ID(AD_ClientID);
                MPInstance pInstance = new MPInstance(process, recordID);
                //FillParameter(pInstance, trx);
                pi.SetAD_PInstance_ID(pInstance.GetAD_PInstance_ID());

                if (process.GetIsCrystalReport() == "Y")
                {
                    pi.SetIsCrystal(true);
                }
                else
                {
                    pi.SetIsCrystal(false);
                }

                pi.SetAD_ReportFormat_ID(process.GetAD_ReportFormat_ID());
                pi.SetAD_ReportMaster_ID(process.GetAD_ReportMaster_ID());
                process.ProcessIt(pi, _trx);

                IReportEngine repo    = ReportRun(pi, ctx, _trx);
                byte[]        bytes   = repo.GetReportBytes();
                string        repPath = repo.GetReportFilePath(true, out bytes);

                repPath = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath + repPath;
                ctx.SetContext("FetchingDocReport", "N");
                if (!string.IsNullOrEmpty(repPath))
                {
                    temp = new FileInfo(repPath);
                    if (temp.Exists)
                    {
                        return(temp);
                    }
                    return(null);
                }
                return(null);
            }
            catch
            {
                ctx.SetContext("FetchingDocReport", "N");
                return(null);
            }
        }
コード例 #5
0
        protected override void DoWork()
        {
            m_summary = new StringBuilder(m_model.ToString())
                        .Append(" - ");
            MProcess process = m_model.GetProcess();

            //
            try
            {
                //	Explicitly set Environment
                Ctx ctx = m_model.GetCtx();
                ctx.SetAD_Client_ID(m_model.GetAD_Client_ID());
                ctx.SetContext("AD_Client_ID", m_model.GetAD_Client_ID());
                ctx.SetAD_Org_ID(m_model.GetAD_Org_ID());
                ctx.SetContext("AD_Org_ID", m_model.GetAD_Org_ID());
                ctx.SetAD_User_ID(m_model.GetUpdatedBy());
                ctx.SetContext("AD_User_ID", m_model.GetUpdatedBy());
                ctx.SetContext("#SalesRep_ID", m_model.GetUpdatedBy());
                //
                m_trx = Trx.Get("Scheduler");
                String result = m_model.Execute(m_trx);
                m_summary.Append(result);
                m_trx.Commit();
            }
            catch (Exception e)
            {
                if (m_trx != null)
                {
                    m_trx.Rollback();
                }
                log.Log(Level.WARNING, process.ToString(), e);
                m_summary.Append(e.ToString());
            }
            if (m_trx != null)
            {
                m_trx.Close();
            }
            //
            int no = m_model.DeleteLog();

            m_summary.Append("Logs deleted=").Append(no);
            //
            MSchedulerLog pLog = new MSchedulerLog(m_model, m_summary.ToString());

            pLog.SetReference("#" + (_runCount.ToString())
                              + " - " + TimeUtil.FormatElapsed(VAdvantage.Classes.CommonFunctions.CovertMilliToDate(_startWork)));
            pLog.Save();
        }
コード例 #6
0
 private void ReceiveData(string data)
 {
     if (data.Contains("RING") && data.Contains("CLIP"))
     {
         if (data.Contains(SignalView.GSMSignaler.Phone.Replace("+", "")))
         {
             if (LastIncomingCall > DateTime.Now.AddSeconds(-60))
             {
                 CounterCalls++;
                 if (CounterCalls == 8)
                 {
                     MProcess.CloseTerminal();
                     SignalView.GSMSignaler.SendSignalResetCall();
                 }
             }
             else
             {
                 LastIncomingCall = DateTime.Now;
                 CounterCalls     = 1;
             }
         }
     }
 }
コード例 #7
0
        /// <summary>
        /// Assign/UnAssign process from group to role
        /// </summary>
        /// <param name="AD_Group_ID"></param>
        /// <param name="AD_Role_ID"></param>
        /// <param name="grantAccess"></param>
        private void ProvideProcessAccessToRole(int AD_Group_ID, int AD_Role_ID, bool grantAccess)
        {
            string                 sql                    = "SELECT AD_Process_ID from AD_Group_Process WHERE IsActive='Y' AND AD_GroupInfo_ID=" + AD_Group_ID;
            DataSet                ds                     = DB.ExecuteDataset(sql);
            List <int>             groupWindowIDs         = new List <int>();
            Dictionary <int, bool> roleWindowIDsDictinary = new Dictionary <int, bool>();
            StringBuilder          winIDs                 = new StringBuilder();

            if (ds != null && ds.Tables[0].Rows.Count > 0)
            {
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    if (ds.Tables[0].Rows[i]["AD_Process_ID"] != null && ds.Tables[0].Rows[i]["AD_Process_ID"] != DBNull.Value)
                    {
                        if (winIDs.Length > 0)
                        {
                            winIDs.Append(",");
                        }
                        winIDs.Append(ds.Tables[0].Rows[i]["AD_Process_ID"].ToString());
                        groupWindowIDs.Add(Convert.ToInt32(ds.Tables[0].Rows[i]["AD_Process_ID"]));
                    }
                }

                groupWindowIDs.Sort();

                sql = "SELECT AD_Process_ID,IsReadWrite FROM AD_Process_Access WHERE AD_Role_ID=" + AD_Role_ID + " AND AD_Process_ID IN(" + winIDs.ToString() + ")";
                ds  = DB.ExecuteDataset(sql);
                if (ds != null && ds.Tables[0].Rows.Count > 0)
                {
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        roleWindowIDsDictinary[Convert.ToInt32(ds.Tables[0].Rows[i]["AD_Process_ID"])] = ds.Tables[0].Rows[i]["IsReadWrite"].ToString() == "Y" ? true : false;
                    }
                }

                for (int i = 0; i < groupWindowIDs.Count(); i++)
                {
                    MProcess       wind    = new MProcess(ctx, groupWindowIDs[i], null);
                    MProcessAccess wAccess = new MProcessAccess(wind, AD_Role_ID);
                    if (roleWindowIDsDictinary.ContainsKey(groupWindowIDs[i]))
                    {
                        if (roleWindowIDsDictinary[groupWindowIDs[i]] != grantAccess)
                        {
                            //wAccess.SetIsReadWrite(grantAccess);
                            //wAccess.Save();
                            if (grantAccess)
                            {
                                sql = "UPDATE AD_Process_Access Set IsReadWrite='Y',IsActive='Y' WHERE AD_Process_ID=" + groupWindowIDs[i] + " AND AD_Role_ID=" + AD_Role_ID;
                            }
                            else
                            {
                                sql = "UPDATE AD_Process_Access Set IsReadWrite='N',IsActive='N' WHERE AD_Process_ID=" + groupWindowIDs[i] + " AND AD_Role_ID=" + AD_Role_ID;
                            }
                            DB.ExecuteQuery(sql, null, null);
                        }
                    }
                    else
                    {
                        wAccess.SetAD_Client_ID(ctx.GetAD_Client_ID());
                        wAccess.SetAD_Org_ID(ctx.GetAD_Org_ID());
                        wAccess.SetAD_Role_ID(AD_Role_ID);
                        wAccess.SetAD_Process_ID(groupWindowIDs[i]);
                        wAccess.SetIsReadWrite(grantAccess);
                        wAccess.Save();
                    }
                }
            }
        }
コード例 #8
0
        /// <summary>
        /// Complete the Payment Record
        /// </summary>
        /// <param name="ctx">Context</param>
        /// <param name="Record_ID">C_Payment_ID</param>
        /// <param name="Process_ID">AD_Process_ID</param>
        /// <param name="DocAction">Documnet Action</param>
        /// <returns>return message</returns>
        public string CompletePayment(Ctx ctx, int Record_ID, int Process_ID, string DocAction)
        {
            string result = "";
            MRole  role   = MRole.Get(ctx, ctx.GetAD_Role_ID());

            if (Util.GetValueOfBool(role.GetProcessAccess(Process_ID)))
            {
                DB.ExecuteQuery("UPDATE C_Payment SET DocAction = '" + DocAction + "' WHERE C_Payment_ID = " + Record_ID);

                MProcess   proc = new MProcess(ctx, Process_ID, null);
                MPInstance pin  = new MPInstance(proc, Record_ID);
                if (!pin.Save())
                {
                    ValueNamePair vnp      = VLogger.RetrieveError();
                    string        errorMsg = "";
                    if (vnp != null)
                    {
                        errorMsg = vnp.GetName();
                        if (errorMsg == "")
                        {
                            errorMsg = vnp.GetValue();
                        }
                    }
                    if (errorMsg == "")
                    {
                        result = Msg.GetMsg(ctx, "DocNotCompleted");
                    }

                    return(result);
                }

                MPInstancePara para = new MPInstancePara(pin, 20);
                para.setParameter("DocAction", DocAction);
                if (!para.Save())
                {
                    //String msg = "No DocAction Parameter added"; // not translated
                }
                ProcessInfo pi = new ProcessInfo("WF", Process_ID);
                pi.SetAD_User_ID(ctx.GetAD_User_ID());
                pi.SetAD_Client_ID(ctx.GetAD_Client_ID());
                pi.SetAD_PInstance_ID(pin.GetAD_PInstance_ID());
                pi.SetRecord_ID(Record_ID);
                pi.SetTable_ID(335); //AD_Table_ID=335 for C_Payment

                ProcessCtl worker = new ProcessCtl(ctx, null, pi, null);
                worker.Run();

                if (pi.IsError())
                {
                    ValueNamePair vnp      = VLogger.RetrieveError();
                    string        errorMsg = "";
                    if (vnp != null)
                    {
                        errorMsg = vnp.GetName();
                        if (errorMsg == "")
                        {
                            errorMsg = vnp.GetValue();
                        }
                    }

                    if (errorMsg == "")
                    {
                        errorMsg = pi.GetSummary();
                    }

                    if (errorMsg == "")
                    {
                        errorMsg = Msg.GetMsg(ctx, "DocNotCompleted");
                    }
                    result = errorMsg;
                    return(result);
                }
                else
                {
                    result = "";
                }
            }
            else
            {
                result = Msg.GetMsg(ctx, "NoAccess");
                return(result);
            }
            return(result);
        }