示例#1
0
        private void Commitjob_transaction(ILog log)
        {
            IList <TrxPayrollDetail> txList = session.CreateSQLQuery("select * from trxpayrolldetails where status = ? and instructioncode in ('" + TotalOBHelper.RTGS + "','" + TotalOBHelper.LLG + "') and lastupdate < now()")
                                              .AddEntity(typeof(TrxPayrollDetail))
                                              .SetInt32(0, ParameterHelper.TRXSTATUS_PAYROLLNEW_CHECK_MBASEANDWS_RTGSANDLLG)
                                              .List <TrxPayrollDetail>();

            if (txList.Count > 0)
            {
                foreach (TrxPayrollDetail pd in txList)
                {
                    Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " - " + SchCode + " === Start Check TrxId: " + pd.Id);
                    try
                    {
                        /*Modified by Mettaw : 1 Oct 2019
                         *
                         * Terjadi perubahan Flow MBASE pada Payroll LLG (Kliring) namun tidak pada Payroll RTGS
                         * Code Sedikit dirombak , bila RTGS pakai flow Lama, yaitu Check ke tbl MBASEandWS
                         *
                         *
                         * Sedangkan LLG di Check ke tbl baru ExpressProcess.
                         *
                         *
                         */


                        if (pd.InstructionCode == TotalOBHelper.RTGS)
                        {
                            #region Check MBASEandWS
                            // proses update
                            Mbaseandws mw = session.Load <Mbaseandws>(pd.IdMBASEAndWS);

                            if (mw.Status == ParameterHelper.SCH_BOOKSUCCESS)
                            {
                                log.Info(SchCode + " === (TrxID " + pd.Id + ") === MBASEANDWS SUCCESS");
                                pd.Status      = ParameterHelper.TRXSTATUS_SUCCESS;
                                pd.Description = mw.Description;
                                pd.LastUpdate  = DateTime.Now;
                                session.Update(pd);
                                session.Flush();
                            }
                            else if (mw.Status == ParameterHelper.SCH_BOOKFAILED)
                            {
                                Booking book = session.Load <Booking>(pd.IdBooking);
                                if (book.Status == ParameterHelper.SCH_BOOKSUCCESS)
                                {
                                    if (book.StatusEC == ParameterHelper.SCH_ECSUCCESS)
                                    {
                                        // transaksi berhasil dan sudah sukses EC
                                        pd.Status      = ParameterHelper.TRXSTATUS_REJECT;
                                        pd.Description = mw.Description;
                                        pd.LastUpdate  = DateTime.Now;
                                        session.Update(pd);
                                        session.Flush();
                                    }
                                    else if (book.StatusEC == 0)
                                    {
                                        book.StatusEC = ParameterHelper.SCH_ECWAITING;
                                        session.Update(book);
                                        session.Flush();
                                    }
                                }
                                else
                                {
                                    pd.Status      = ParameterHelper.TRXSTATUS_REJECT;
                                    pd.Description = mw.Description;
                                    pd.LastUpdate  = DateTime.Now;
                                    session.Update(pd);
                                    session.Flush();
                                }
                            }
                            else
                            {
                                Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " - " + SchCode + " === TrxId: " + pd.Id + " Not Finished Yet");
                            }
                            #endregion
                        }
                        else if (pd.InstructionCode == TotalOBHelper.LLG)
                        {
                            #region Check ExpressProcess
                            ExpressProcess exprocess = session.CreateCriteria(typeof(ExpressProcess))
                                                       .Add(Expression.Eq("TrxID", pd.Id.ToString()))
                                                       .UniqueResult <ExpressProcess>();


                            if (exprocess != null)
                            {
                                log.Info(SchCode + " ===  (TrxID " + pd.Id + " ) Begin Check MBASE Process");


                                if (exprocess.Status == ParameterHelper.SCH_MBASE_PROCESS) /*2: PROCESS MBASE*/
                                {
                                    #region COMPLETE

                                    /*Trx Payroll*/
                                    pd.Status      = ParameterHelper.TRXSTATUS_SUCCESS;
                                    pd.Description = exprocess.Description;
                                    pd.LastUpdate  = DateTime.Now;

                                    /*Express Process*/
                                    exprocess.Status      = ParameterHelper.SCH_MBASE_SUCCESS; /*3: Success*/
                                    exprocess.Description = ParameterHelper.MBASEDESC_SUCCESSMBASE;

                                    session.Update(exprocess);
                                    session.Update(pd);
                                    session.Flush();

                                    log.Info(SchCode + " === (TrxID " + pd.Id + ") === Check MBASE Express SUCCESS");
                                    #endregion
                                }
                                else if (exprocess.Status == ParameterHelper.SCH_MBASE_FAILED) /*4: FAILED MBASE*/
                                {
                                    #region REVERSAL
                                    Booking book = session.Load <Booking>(pd.IdBooking);

                                    if (book.Status == ParameterHelper.SCH_BOOKSUCCESS)
                                    {
                                        if (book.StatusEC == ParameterHelper.SCH_ECSUCCESS)
                                        {
                                            #region COMPLETE
                                            // transaksi berhasil dan sudah sukses EC
                                            pd.Status      = ParameterHelper.TRXSTATUS_REJECT;
                                            pd.Description = exprocess.Description;
                                            pd.LastUpdate  = DateTime.Now;

                                            session.Update(pd);
                                            session.Flush();
                                            #endregion
                                        }
                                        else if (book.StatusEC == 0)
                                        {
                                            #region UPDATE EC
                                            book.StatusEC = ParameterHelper.SCH_ECWAITING;
                                            session.Update(book);
                                            session.Flush();
                                            #endregion
                                        }
                                        else
                                        {
                                            #region ROLLBACK
                                            pd.Status      = ParameterHelper.TRXSTATUS_PAYROLLNEW_CHECK_MBASEANDWS_RTGSANDLLG;
                                            pd.Description = "proses express".ToUpper();
                                            pd.LastUpdate  = DateTime.Now;

                                            session.Update(pd);
                                            session.Flush();
                                            #endregion
                                        }
                                    }
                                    else
                                    {
                                        pd.Status      = ParameterHelper.TRXSTATUS_REJECT;
                                        pd.Description = exprocess.Description;
                                        pd.LastUpdate  = DateTime.Now;

                                        session.Update(pd);
                                        session.Flush();
                                    }
                                    #endregion
                                }
                                else
                                {
                                    log.Error(SchCode + " === " + SchName + " Transaksi menunggu diproses ");
                                }
                            }
                            else
                            {
                                log.Error(SchCode + " === " + SchName + " Data ExpressPrcess tidak ditemukan ");
                            }
                            #endregion
                        }
                        else
                        {
                            log.Error(SchCode + " === " + SchName + " InstructionCode tidak valid ");
                        }


                        Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " - " + SchCode + " === Finish Check TrxId: " + pd.Id);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " - " + SchCode + " === Exception Check TrxId: " + pd.Id);
                        Console.WriteLine("Exception Message: " + ex.Message);
                        Console.WriteLine("Exception StackTrace: " + ex.StackTrace);
                    }
                }
            }
            else
            {
                Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " - " + SchCode + " === Tidak ada Trx yang diproses");
            }
        }
示例#2
0
        public static bool insertMbaseandws(ISession session, int trxid, Int32 fid, String fitur, Int32 clientid, String instructioncode,
                                            String debitaccount, String debitaccountname, String creditaccount, String creditaccountname, String creditAddress,
                                            String trxremark, string bucketamt, int idbooking, String rmnumber, String BankCode, String Jseq,
                                            String chrgeType, Double chrgeAmt, string debitAccAddress, out Int32 idmbaseandws, out String OutMsg)
        {
            bool result = true;

            idmbaseandws = 0;
            OutMsg       = "";
            int _gagalMbasews  = 4;
            int _suksesMbasews = 5;

            try
            {
                string theQuery = "select id from mbaseandws where trxid = '" + trxid.ToString() + "' and fid = " + fid + " and status <> " + ParameterHelper.SCH_BOOKFAILED + " and status <> " + ParameterHelper.SCH_BOOKSUCCESS + " limit 1;";
                string theId    = "";
                string msg      = "";
                if (!MBASEAndWSHelper.ExecuteQueryValue(session, theQuery, out theId, out msg))
                {
                    result = false;
                    OutMsg = "Exception on checking duplicate trx - Message: " + msg;
                    //Console.WriteLine("Exception Id: " + trxid + " === " + OutMsg);
                    return(result);
                }
                else
                {
                    if (!String.IsNullOrEmpty(theId))
                    {
                        result    = false;
                        idbooking = int.Parse(theId);
                        OutMsg    = "Transaction already exist: " + idbooking;
                        return(result);
                    }
                }
            }
            catch (Exception ex) { }

            try
            {
                Mbaseandws mbws = new Mbaseandws();
                if (string.IsNullOrEmpty(trxid.ToString()))
                {
                    OutMsg = "trxid is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.TrxId = trxid.ToString();
                }

                if (string.IsNullOrEmpty(fid.ToString()))
                {
                    OutMsg = "fid is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.FID = fid;
                }

                if (string.IsNullOrEmpty(fitur))
                {
                    OutMsg = "fitur is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.Fitur = fitur;
                }

                if (string.IsNullOrEmpty(debitAccAddress))
                {
                    OutMsg = "DebitAccAddress is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.DebitAccAddress = debitAccAddress;
                }

                if (string.IsNullOrEmpty(instructioncode))
                {
                    OutMsg = "instructioncode is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.InstructionCode = instructioncode.Trim();
                }


                if (string.IsNullOrEmpty(clientid.ToString()))
                {
                    OutMsg = "clientid is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.ClientId = clientid;
                }


                mbws.CreatedTime = DateTime.Now;
                mbws.TrxDate     = DateTime.Now;
                mbws.LastUpdate  = DateTime.Now;

                if (string.IsNullOrEmpty(rmnumber))
                {
                    OutMsg = "rmnumber is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.RemittanceNumner = rmnumber;
                }

                if (string.IsNullOrEmpty(debitaccount))
                {
                    OutMsg = "debitaccount is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.DebetAccount = debitaccount;
                }

                if (string.IsNullOrEmpty(debitaccountname))
                {
                    OutMsg = "debitaccountname is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.DebetAccountName = debitaccountname;
                }

                if (string.IsNullOrEmpty(creditaccount))
                {
                    OutMsg = "creditaccount is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.BenAcc = creditaccount;
                }

                if (string.IsNullOrEmpty(creditaccountname))
                {
                    OutMsg = "Error creditaccountname is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.BenAccName = creditaccountname;
                }

                if (string.IsNullOrEmpty(creditAddress))
                {
                    OutMsg = "creditAddress is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.BenAccAddress = creditAddress;
                }

                if (string.IsNullOrEmpty(idbooking.ToString()))
                {
                    OutMsg = "idbooking is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.IdBooking = idbooking;
                }

                if (string.IsNullOrEmpty(BankCode))
                {
                    OutMsg = "BankCode is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    mbws.BankCode = BankCode;
                }

                mbws.Status       = ParameterHelper.SCH_WAITINGBOOK;
                mbws.ChargeAmount = chrgeAmt;
                mbws.JurnalSeq    = Jseq;
                mbws.BucketAmount = bucketamt;
                mbws.Remark       = trxremark;
                mbws.RtgsTrxReff  = "IFT00000";
                //mbws.ChargeType = "OUR";  //default-nye 'BEN'
                //mbws.Log = null;
                //mbws.Description = "";
                //mbws.TicketNumber = null;
                //mbws.CnNumber = null;

                mbws.StatusData = ParameterHelper._needMBASE1;
                mbws.ChargeType = chrgeType;

                session.Save(mbws);
                idmbaseandws = mbws.Id;
                session.Flush();
                result = true;
            }
            catch (Exception e)
            {
                OutMsg = "Exception " + e.Message + "||" + e.InnerException + "||" + e.StackTrace;
                result = false;
            }

            return(result);
        }