Beispiel #1
0
        public static bool InsertMBASEExpress(ISession session, double trxid, string fitur, ExpressProcess exprocess, out String OutMsg, out int idexpress)
        {
            bool result = true;

            OutMsg    = "";
            idexpress = 0;

            try
            {
                #region Check is transaction valid
                string theQuery = "select id from expressprocess where trxid = '" + trxid.ToString() + "' and status not in (" + ParameterHelper.SCH_MBASE_FAILED + "," + ParameterHelper.SCH_MBASE_SUCCESS + ") limit 1;";
                string theId    = "";
                string msg      = "";
                if (!ExecuteQueryValue(session, theQuery, out theId, out msg))
                {
                    result = false;
                    OutMsg = "Exception on checking duplicate trx - Message: " + msg;
                    return(result);
                }
                else
                {
                    if (!String.IsNullOrEmpty(theId))
                    {
                        result    = false;
                        idexpress = int.Parse(theId);
                        OutMsg    = "Transaction already exist: " + idexpress;
                        return(result);
                    }
                }
                #endregion
            }
            catch (Exception ex) { }


            try
            {
                #region Mandatory

                /*Trx ID*/
                if (string.IsNullOrEmpty(trxid.ToString()))
                {
                    OutMsg = "trx id is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    exprocess.TrxID = trxid.ToString();
                }

                /*Trx Type*/
                if (string.IsNullOrEmpty(fitur))
                {
                    OutMsg = "trx type is null or empty";
                    result = false;
                    return(result);
                }
                else
                {
                    exprocess.TrxType = fitur;
                }


                /*Tanggal Transaksi*/
                if (exprocess.Tanggal_Transaksi == DateTime.MinValue)
                {
                    OutMsg = "tanggal transaksi is null or empty";
                    result = false;
                    return(result);
                }
                /*Sarana Transaksi*/
                if (string.IsNullOrEmpty(exprocess.Sarana_Transaksi))
                {
                    OutMsg = "sarana transaksi is null or empty";
                    result = false;
                    return(result);
                }
                /*Kode Transaksi*/
                if (string.IsNullOrEmpty(exprocess.Kode_Transaksi))
                {
                    OutMsg = "kode transaksi is null or empty";
                    result = false;
                    return(result);
                }

                /*Peserta Pengirim Asal*/
                if (string.IsNullOrEmpty(exprocess.Peserta_Pengirim_Asal))
                {
                    OutMsg = "peserta pengirim asal is null or empty";
                    result = false;
                    return(result);
                }
                /*Sandi Kota Asal*/
                if (string.IsNullOrEmpty(exprocess.Sandi_Kota_Asal))
                {
                    OutMsg = "sandi kota asal is null or empty";
                    result = false;
                    return(result);
                }
                /*Peserta Pengirim Penerus*/
                if (string.IsNullOrEmpty(exprocess.Peserta_Pengirim_Penerus))
                {
                    OutMsg = "peserta pengirim penerus is null or empty";
                    result = false;
                    return(result);
                }
                /*Peserta Penerima Akhir*/
                if (string.IsNullOrEmpty(exprocess.Peserta_Penerima_Akhir))
                {
                    OutMsg = "peserta penerima akhir is null or empty";
                    result = false;
                    return(result);
                }
                /*Sandi Kota Tujuan*/
                if (string.IsNullOrEmpty(exprocess.Sandi_Kota_Tujuan))
                {
                    OutMsg = "sandi kota tujuan is null or empty";
                    result = false;
                    return(result);
                }
                /*Peserta Penerima Penerus*/
                if (string.IsNullOrEmpty(exprocess.Peserta_Penerima_Penerus))
                {
                    OutMsg = "peserta penerima penerus is null or empty";
                    result = false;
                    return(result);
                }
                /*Jenis Nasabah*/
                if (string.IsNullOrEmpty(exprocess.Jenis_Nasabah))
                {
                    OutMsg = "jenis nasabah is null or empty";
                    result = false;
                    return(result);
                }
                /*No Rekening Pengirim*/
                if (string.IsNullOrEmpty(exprocess.No_Rekening_Pengirim))
                {
                    OutMsg = "no rekening pengirim is null or empty";
                    result = false;
                    return(result);
                }
                /*Nama Pengirim*/
                if (string.IsNullOrEmpty(exprocess.Nama_Pengirim))
                {
                    OutMsg = "nama pengirim is null or empty";
                    result = false;
                    return(result);
                }
                /*No Identitas Pengirim*/
                if (string.IsNullOrEmpty(exprocess.No_Identitas_Pengirim))
                {
                    OutMsg = "no identitas pengirim is null or empty";
                    result = false;
                    return(result);
                }
                /*Jenis Nasabah Pengirim*/
                if (string.IsNullOrEmpty(exprocess.Jenis_Nasabah_Pengirim))
                {
                    OutMsg = "jenis nasabah pengirim is null or empty";
                    result = false;
                    return(result);
                }
                /*Status Kependudukan Pengirim*/
                if (string.IsNullOrEmpty(exprocess.Status_Kependudukan_Pengirim))
                {
                    OutMsg = "Status Kependudukan Pengirim is null or empty";
                    result = false;
                    return(result);
                }
                /*Alamat Pengirim*/
                if (string.IsNullOrEmpty(exprocess.Alamat_Pengirim))
                {
                    OutMsg = "alamat pengirim is null or empty";
                    result = false;
                    return(result);
                }
                /*No Rekening Tujuan*/
                if (string.IsNullOrEmpty(exprocess.No_Rekening_Tujuan))
                {
                    OutMsg = "no rekening tujuan is null or empty";
                    result = false;
                    return(result);
                }
                /*Nama Penerima*/
                if (string.IsNullOrEmpty(exprocess.Nama_Penerima))
                {
                    OutMsg = "nama penerima is null or empty";
                    result = false;
                    return(result);
                }
                /*Jenis Nasabah Penerima*/
                if (string.IsNullOrEmpty(exprocess.Jenis_Nasabah_Penerima))
                {
                    OutMsg = "jenis nasabah penerima is null or empty";
                    result = false;
                    return(result);
                }
                /*Status Kependudukan Penerima*/
                if (string.IsNullOrEmpty(exprocess.Status_Kependudukan_Penerima))
                {
                    OutMsg = "status kependudukan penerima is null or empty";
                    result = false;
                    return(result);
                }
                /*Alamat Penerima*/
                if (string.IsNullOrEmpty(exprocess.Alamat_Penerima))
                {
                    OutMsg = "alamat penerima is null or empty";
                    result = false;
                    return(result);
                }
                /*Cara Penyetoran*/
                if (string.IsNullOrEmpty(exprocess.Cara_Penyetoran))
                {
                    OutMsg = "cara penyetoran is null or empty";
                    result = false;
                    return(result);
                }
                /*No Rekening Asal*/
                if (string.IsNullOrEmpty(exprocess.No_Rekening_Asal))
                {
                    OutMsg = "no rekening asal is null or empty";
                    result = false;
                    return(result);
                }
                /*Nama*/
                if (string.IsNullOrEmpty(exprocess.Nama))
                {
                    OutMsg = "nama transaksi is null or empty";
                    result = false;
                    return(result);
                }
                /*Jumlah Dikirim*/
                if (string.IsNullOrEmpty(exprocess.Jumlah_Dikirim))
                {
                    OutMsg = "jumlah dikirim is null or empty";
                    result = false;
                    return(result);
                }
                /*Currency Dikirim*/
                if (string.IsNullOrEmpty(exprocess.Currency_Dikirim))
                {
                    if (exprocess.Currency_Dikirim != "IDR")
                    {
                        OutMsg = "currency dikirim is not IDR";
                    }
                    else
                    {
                        OutMsg = "currency dikirim is null or empty";
                    }

                    result = false;
                    return(result);
                }
                /*Kode Transaksi*/
                if (string.IsNullOrEmpty(exprocess.Kode_Transaksi))
                {
                    OutMsg = "kode transaksi is null or empty";
                    result = false;
                    return(result);
                }
                /*Biaya*/
                if (string.IsNullOrEmpty(exprocess.Biaya))
                {
                    OutMsg = "biaya is null or empty";
                    result = false;
                    return(result);
                }
                /*Total*/
                if (string.IsNullOrEmpty(exprocess.Total))
                {
                    OutMsg = "total transaksi is null or empty";
                    result = false;
                    return(result);
                }
                /*Currency Total*/
                if (string.IsNullOrEmpty(exprocess.Currency_Total))
                {
                    if (exprocess.Currency_Total != "IDR")
                    {
                        OutMsg = "currency total is not IDR";
                    }
                    else
                    {
                        OutMsg = "currency total is null or empty";
                    }

                    result = false;
                    return(result);
                }
                /*Kanca Asal*/
                if (string.IsNullOrEmpty(exprocess.Kanca_Asal))
                {
                    OutMsg = "kanca asal is null or empty";
                    result = false;
                    return(result);
                }
                /*User Approve*/
                if (string.IsNullOrEmpty(exprocess.User_Approve))
                {
                    OutMsg = "user approve is null or empty";
                    result = false;
                    return(result);
                }
                /*Cabang*/
                if (string.IsNullOrEmpty(exprocess.Cabang))
                {
                    OutMsg = "cabang is null or empty";
                    result = false;
                    return(result);
                }
                /*No Remittance*/
                if (string.IsNullOrEmpty(exprocess.No_Remitance))
                {
                    OutMsg = "no remittance is null or empty";
                    result = false;
                    return(result);
                }
                /*Jurnal Seq*/
                if (string.IsNullOrEmpty(exprocess.Jurnal_Seq))
                {
                    OutMsg = "jurnal seq is null or empty";
                    result = false;
                    return(result);
                }
                /*Nama Bank Penerima*/
                if (string.IsNullOrEmpty(exprocess.Nama_Bank_Penerima))
                {
                    OutMsg = "nama bank penerima is null or empty";
                    result = false;
                    return(result);
                }
                /*Provinsi Penerima*/
                if (string.IsNullOrEmpty(exprocess.Provinsi_Penerima))
                {
                    OutMsg = "provinsi penerima is null or empty";
                    result = false;
                    return(result);
                }
                /*Jenis Badan Usaha*/
                if (string.IsNullOrEmpty(exprocess.Jenis_Badan_Usaha))
                {
                    OutMsg = "jenis badan usaha is null or empty";
                    result = false;
                    return(result);
                }
                /*Kode Bank Brinets Penerima*/
                if (string.IsNullOrEmpty(exprocess.Kode_Bank_Brinets_Penerima))
                {
                    OutMsg = "kode bank brinets penerima is null or empty";
                    result = false;
                    return(result);
                }
                /*Channel*/
                if (string.IsNullOrEmpty(exprocess.Channel))
                {
                    OutMsg = "channel is null or empty";
                    result = false;
                    return(result);
                }
                #endregion

                exprocess.CreatedTime = DateTime.Now;
                session.Save(exprocess);
                idexpress = exprocess.Id;
                session.Flush();
                result = true;
            }
            catch (Exception e)
            {
                OutMsg = "Exception " + e.Message + "||" + e.InnerException + "||" + e.StackTrace;
                result = false;
            }

            return(result);
        }
Beispiel #2
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");
            }
        }
        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_POST_MBASEANDWS_RTGSANDLLG)
                                              .List <TrxPayrollDetail>();

            if (txList.Count > 0)
            {
                foreach (TrxPayrollDetail o in txList)
                {
                    try
                    {
                        #region PARAMETERS
                        int    outid  = 0;
                        string outmsg = "";
                        Double _amt   = 0;

                        TrxPayroll    p         = o.Parent;
                        ClientAccount clientAcc = new ClientAccount();

                        Booking b = session.Load <Booking>(o.IdBooking);

                        ClientMatrix    cm     = session.Load <ClientMatrix>(p.ClientID);
                        Client          client = session.Load <Client>(p.ClientID);
                        AuthorityHelper ah     = new AuthorityHelper(cm.Matrix);

                        if (o.InstructionCode.Equals(TotalOBHelper.RTGS))
                        {
                            _amt = Double.Parse(ah.GetTransactionFee(session, 100, 2).ToString());
                        }
                        else if (o.InstructionCode.Equals(TotalOBHelper.LLG))
                        {
                            _amt = Double.Parse(ah.GetTransactionFee(session, 100, 3).ToString());
                        }

                        int    fid           = 100;
                        string fitur         = TotalOBHelper.Payroll;
                        string debitAcc      = "";
                        string debitAccName  = "";
                        string creditAcc     = o.Account;
                        string creditAccName = o.Name;
                        string benAddress    = o.BenAddress;
                        string remark        = o.TrxRemark.Trim();
                        string bucketAmt     = b.Bucket;
                        string chargeType    = "OUR";
                        if (b.FeeBen > 0)
                        {
                            chargeType = "BEN";
                        }
                        string debitAccAddress = client.Address1;

                        try
                        {
                            IList <ClientAccount> clAccs = session.CreateCriteria(typeof(ClientAccount))
                                                           .Add(Expression.Eq("Number", p.DebitAccount))
                                                           .Add(Expression.Eq("Pid", p.ClientID))
                                                           .Add(Expression.Eq("StatusDel", 0))
                                                           .SetMaxResults(1)
                                                           .List <ClientAccount>();

                            clientAcc = clAccs[0];

                            debitAcc     = p.DebitAccount;
                            debitAccName = clientAcc.Name;
                        }
                        catch { }
                        #endregion

                        #region PROCESS INSERT

                        /*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 Insert ke tbl MBASEandWS
                         * dan dimakan sama Sch MBASEAndWS
                         *
                         * Sedangkan LLG di insert ke tbl baru ExpressProcess.
                         * dan dimakan sama ExpressProcessSch
                         *
                         */

                        if (o.InstructionCode.Equals(TotalOBHelper.RTGS))
                        {
                            #region Insert to MBASEandWS
                            log.Info(SchCode + " === (TrxID " + o.Id + ") === Begin Posting to MBASEANDWS");

                            if (MBASEAndWSHelper.insertMbaseandws(session, int.Parse(o.Id.ToString()), fid, fitur, p.ClientID, o.InstructionCode, debitAcc,
                                                                  debitAccName, creditAcc, creditAccName, benAddress, remark, bucketAmt, o.IdBooking, o.RemittanceNumber,
                                                                  o.BankCode.Trim(), b.JournalSeq.Trim(), chargeType, _amt, debitAccAddress, out outid, out outmsg))
                            {
                                o.Status       = ParameterHelper.TRXSTATUS_PAYROLLNEW_CHECK_MBASEANDWS_RTGSANDLLG;
                                o.IdMBASEAndWS = outid;
                                o.Description  = "proses mbaseandws".ToUpper();
                                log.Info(SchCode + " === (TrxID " + o.Id + ") === Posting to MBASEANDWS SUCCESS");
                            }
                            else
                            {
                                if (outid > 0)
                                {
                                    o.Status       = ParameterHelper.TRXSTATUS_PAYROLLNEW_CHECK_MBASEANDWS_RTGSANDLLG;
                                    o.IdMBASEAndWS = outid;
                                    o.Description  = "proses mbaseandws".ToUpper();

                                    log.Info(SchCode + " === (TrxID " + o.Id + ") === Already Exist, Posting to MBASEANDWS SUCCESS");
                                }
                                else
                                {
                                    //gagal insert Mbaseandws
                                    o.LastUpdate = DateTime.Now.AddMinutes(2);

                                    log.Error(SchCode + " === (TrxID " + o.Id + ") === Posting to MBASEANDWS FAILED: " + outmsg);
                                }
                            }
                            session.Update(o);
                            session.Flush();

                            log.Info(SchCode + " === (TrxID " + o.Id + ") === End Posting to MBASEANDWS");
                            #endregion
                        }
                        else if (o.InstructionCode.Equals(TotalOBHelper.LLG))
                        {
                            #region Insert to ExpressProcess
                            log.Info(SchCode + " === (TrxID " + o.Id + ") === Begin Posting to ExpressProcess");

                            #region PARAMETERS FOR ExpressProcess
                            ExpressProcess exprocess = new ExpressProcess();

                            String _fitur = "PAYROLL LLG";

                            BankKliring bank = session.CreateCriteria(typeof(BankKliring))
                                               .Add(Expression.Eq("BankCode", o.Account))
                                               .UniqueResult <BankKliring>();

                            double _instamount  = o.Amount;
                            string _instcur     = SchHelper._Currency(o.RemittanceNumber);
                            string _benbankname = bank.Nama;
                            #endregion

                            #region ADD ExpressProcess

                            /*New added by Mettaw :
                             * tampung data disini... untuk parameter WS Express
                             * dan insert ke tbl expressprocess
                             * 9 september 2019*/

                            /*DATA MANDATORY*/
                            exprocess.Tanggal_Transaksi            = DateTime.Now;
                            exprocess.Sarana_Transaksi             = "2";
                            exprocess.Kode_Transaksi               = "50";
                            exprocess.Peserta_Pengirim_Asal        = "BRINIDJA";
                            exprocess.Sandi_Kota_Asal              = "0391";
                            exprocess.Peserta_Pengirim_Penerus     = "BRINIDJA";
                            exprocess.Peserta_Penerima_Akhir       = bank.BankCode;
                            exprocess.Sandi_Kota_Tujuan            = bank.SandiKota;
                            exprocess.Peserta_Penerima_Penerus     = bank.BankCode;
                            exprocess.Jenis_Nasabah                = "1";
                            exprocess.No_Rekening_Pengirim         = debitAcc;
                            exprocess.Nama_Pengirim                = debitAccName;
                            exprocess.No_Identitas_Pengirim        = "NIKPENGRMCMS";
                            exprocess.Jenis_Nasabah_Pengirim       = "1";
                            exprocess.Status_Kependudukan_Pengirim = "1";
                            exprocess.Alamat_Pengirim              = client.Address1;
                            exprocess.No_Rekening_Tujuan           = creditAcc;
                            exprocess.Nama_Penerima                = creditAccName;
                            exprocess.Jenis_Nasabah_Penerima       = "1";
                            exprocess.Status_Kependudukan_Penerima = "1";
                            exprocess.Alamat_Penerima              = benAddress;
                            exprocess.Cara_Penyetoran              = "DEBET_REK";
                            exprocess.No_Rekening_Asal             = debitAcc;
                            exprocess.Nama                       = debitAccName;
                            exprocess.Jumlah_Dikirim             = _instamount.ToString("0.00");
                            exprocess.Currency_Dikirim           = _instcur;
                            exprocess.Biaya                      = _amt.ToString("0.00");
                            exprocess.Total                      = (double.Parse(_instamount.ToString()) + _amt).ToString("0.00");
                            exprocess.Currency_Total             = _instcur;
                            exprocess.Kanca_Asal                 = "CMS";
                            exprocess.User_Approve               = "0374891";
                            exprocess.Cabang                     = "0374";
                            exprocess.No_Remitance               = o.RemittanceNumber;
                            exprocess.Jurnal_Seq                 = o.IdBooking.ToString();
                            exprocess.Nama_Bank_Penerima         = _benbankname;
                            exprocess.Provinsi_Penerima          = bank.SandiPropinsi;
                            exprocess.Jenis_Badan_Usaha          = bank.JenisUsaha.Trim();
                            exprocess.Kode_Bank_Brinets_Penerima = bank.Code;
                            exprocess.Channel                    = "CMS";
                            exprocess.Booking_Id                 = o.IdBooking.ToString();


                            /*DATA TIDAK MANDATORY*/
                            exprocess.Telepon_Pengirim      = "TELPPNGRMCMS";
                            exprocess.No_Identitas_Penerima = "NIKPENRMMCMS";
                            exprocess.Telepon_Penerima      = "TELPPNRMCMS";
                            exprocess.NoCekBG           = "";
                            exprocess.Berita            = o.TrxRemark;
                            exprocess.Sumber_Dana       = "";
                            exprocess.Keperluan         = "";
                            exprocess.Pekerjaan         = "";
                            exprocess.Jabatan           = "";
                            exprocess.Ttl               = "";
                            exprocess.User_Id           = "";
                            exprocess.Cif               = "";
                            exprocess.Kode_Pos_Pengirim = "";
                            exprocess.Kode_Pos_Penerima = "";
                            exprocess.Remark            = remark;
                            #endregion

                            #region PROCESS
                            log.Info(SchCode + " === (TrxID " + o.Id + ") === DO INSERT TO ExpressProcess");

                            if (MBASEHelper.InsertMBASEExpress(session, o.Id, _fitur, exprocess, out outmsg, out outid))
                            {
                                #region COMPLETE

                                /*Express Process*/
                                exprocess.Status      = ParameterHelper.SCH_MBASE_WAITING; /*1: Waiting*/
                                exprocess.Description = ParameterHelper.MBASEDESC_WAITINGMBASE;
                                exprocess.LastUpdate  = DateTime.Now;
                                session.Update(exprocess);

                                /*Trx Payroll*/
                                o.Status      = ParameterHelper.TRXSTATUS_PAYROLLNEW_CHECK_MBASEANDWS_RTGSANDLLG;
                                o.Description = "proses express".ToUpper();

                                log.Info(SchCode + " === (TrxID " + o.Id + ") === Posting to ExpressProcess SUCCESS");
                                #endregion
                            }
                            else
                            {
                                if (outid > 0)
                                {
                                    #region COMPLETE
                                    /*bila gagal validasi insert, tapi id sudah terbuat, update aja coy */

                                    /*Express Process*/
                                    ExpressProcess ex = session.Load <ExpressProcess>(outid);
                                    ex.Status      = ParameterHelper.SCH_MBASE_WAITING; /*1: Waiting MBASE*/
                                    ex.Description = ParameterHelper.MBASEDESC_WAITINGMBASE;
                                    ex.LastUpdate  = DateTime.Now;
                                    session.Update(ex);

                                    /*Trx Payroll*/
                                    o.Status      = ParameterHelper.TRXSTATUS_PAYROLLNEW_CHECK_MBASEANDWS_RTGSANDLLG;
                                    o.Description = "proses express".ToUpper();

                                    log.Info(SchCode + " === (TrxID " + o.Id + ") === Already Exist, Posting to ExpressProcess SUCCESS");
                                    #endregion
                                }
                                else
                                {
                                    #region REVERSAL PROCESS
                                    /*Gagal Insert to ExpressProcess, do Reversal.*/

                                    /*Booking*/
                                    Booking book = session.Load <Booking>(o.IdBooking);
                                    book.StatusEC = ParameterHelper.SCH_ECWAITING;

                                    /*Trx Payroll*/
                                    o.Status      = ParameterHelper.TRXSTATUS_REJECT;
                                    o.Description = "REJECTED";
                                    o.LastUpdate  = DateTime.Now;

                                    session.Update(book);
                                    session.Flush();

                                    log.Info(SchCode + " ===  (TrxID " + o.Id + " ) Insert to ExpressProcess FAILED: " + outmsg + ". DO Reject & REVERSAL");

                                    #endregion
                                }
                            }

                            session.Update(o);
                            session.Flush();

                            log.Info(SchCode + " === (TrxID " + o.Id + ") === End Posting to ExpressProcess");
                            #endregion

                            #endregion
                        }
                        else
                        {
                            log.Error(SchCode + " === " + SchName + " IntructionCode tidak terdefenisi ");
                        }
                        #endregion
                    }
                    catch (Exception ex)
                    {
                        log.Error(SchCode + " === (TrxID " + o.Id + ") === Exception: " + ex.Message + " >>> " + ex.InnerException + " >>> " + ex.StackTrace);
                    }
                }
            }
            else
            {
                Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + " - " + SchCode + " === Tidak ada Trx yang diproses");
            }
        }