Ejemplo n.º 1
0
        private bool deleteTrxPayroll(ISession session, String id, ILog log)
        {
            bool isTrue = true;

            try
            {
                TrxPayroll trx = session.CreateCriteria(typeof(TrxPayroll))
                                 .Add(Expression.Eq("Id", id))
                                 .UniqueResult <TrxPayroll>();

                if (trx != null)
                {
                    session.Delete(trx);
                    session.Flush();
                    isTrue = true;
                }
            }
            catch (Exception ex)
            {
                isTrue = false;
                log.Error("== " + SchedulllerCode + " = Scheduller GetFilePayrollKai Failed to Start => Exception Message =" + " " + ex.Message);
                log.Error("== " + SchedulllerCode + " = Scheduller GetFilePayrollKai Failed to Start => Exception InnerMessage =" + " " + ex.InnerException);
                log.Error("== " + SchedulllerCode + " = Scheduller GetFilePayrollKai Failed to Start => Exception StackTrace =" + " " + ex.StackTrace);
            }

            return(isTrue);
        }
Ejemplo n.º 2
0
    //Payroll Reject Detail
    public static bool rejectAllChild(ISession session, TrxPayroll payroll, out string outMsgUpdate, ILog log)
    {
        outMsgUpdate = "";
        bool result = true;

        try
        {
            log.Info("Reject All Child.");
            //Create Connection
            Parameter       dbConf = session.Load <Parameter>("CMS_DBCONNECTION");
            MySqlConnection conn   = new MySqlConnection(dbConf.Data);
            conn.Open();
            MySqlCommand command = conn.CreateCommand();
            command.CommandText = "update trxpayrolldetails set status=" + ParameterHelper.TRXSTATUS_REJECT + ", description='Rejected by System' where pid='" + payroll.Id + "'";
            int i = command.ExecuteNonQuery();
            log.Info("command Execute = " + i);
            conn.Close();
        }
        catch (Exception e)
        {
            string eMsg = "Error on update child " + e.Message + "==" + e.InnerException + "==" + e.StackTrace;
            log.Error(eMsg);
            outMsgUpdate = eMsg;
            result       = false;
        }
        return(result);
    }
Ejemplo n.º 3
0
        private void Commitjob_transaction(ILog log)
        {
            try
            {
                IList <TrxPayrollDetail> trxList = session.CreateCriteria(typeof(TrxPayrollDetail))
                                                   .Add(Expression.Eq("Status", ParameterHelper.TRXSTATUS_SUCCESS))
                                                   .Add(Expression.Not(Expression.Eq("Email", "")))
                                                   .Add(Expression.Eq("EmailTransactionId", 0))
                                                   .AddOrder(Order.Asc("Id"))
                                                   .List <TrxPayrollDetail>();

                log.Info("Jumlah transaksi butuh email : " + trxList.Count);
                //we've found some data
                foreach (TrxPayrollDetail trx in trxList)
                {
                    try
                    {
                        //get parent
                        TrxPayroll payroll = trx.Parent;
                        string     remark  = payroll.FileDescription;

                        //get client name
                        Client cli     = session.Load <Client>(payroll.ClientID);
                        string lembaga = cli.Name;

                        double amount      = trx.Amount / 100;
                        string text_amount = string.Format("{0:N}", amount);

                        //set email content
                        string email_content = EmailHelperUniversal.EmailTemplateInternalTransfertoBenef(session, "PAYROLL", lembaga, trx.Account, trx.Name, "IDR", text_amount, remark, payroll.ProcessTime.ToString("dd/MM/yyyy hh:mm:ss"));

                        //send email
                        int    idEmailTransaction = 0;
                        string OutMsg             = "";
                        if (EmailHelperUniversal.AddEmailTransaction(session, int.Parse(trx.Id.ToString()), 100, "PAYROLL BENEF", payroll.ClientID, trx.Email, "Payroll Transfer Notification - Cash Management System BRI", email_content, "", 2, out idEmailTransaction, out OutMsg))
                        {
                            trx.EmailTransactionId = idEmailTransaction;
                        }
                        else
                        {
                            trx.ErrorDescription = "Email exception. " + OutMsg;
                        }

                        session.Update(trx);
                        session.Flush();
                    }
                    catch (Exception e)
                    {
                        log.Error("Exception >>" + e.Message + ">>" + e.InnerException + ">>" + e.StackTrace);
                        trx.ErrorDescription = "Send Email Exception >>" + e.Message + ">>" + e.InnerException + ">>" + e.StackTrace;
                        session.Update(trx);
                        session.Flush();
                    }
                }
            }
            catch (Exception e)
            {
                log.Error("Exception Send Email >>" + e.Message + ">>" + e.InnerException + ">>" + e.StackTrace);
            }
        }
Ejemplo n.º 4
0
        public static Boolean cekDebetAcc(ISession session, Transaction trx, ILog log)
        {
            Boolean result = false;
            //get trxpayrolls object
            XmlDocument   doc = new XmlDocument();
            XmlSerializer ser = new XmlSerializer(typeof(TrxPayroll));

            doc.LoadXml(trx.TObject);
            XmlNodeReader reader = new XmlNodeReader(doc.DocumentElement);
            object        obj    = ser.Deserialize(reader);

            TrxPayroll ObjPayroll = (TrxPayroll)obj;
            TrxPayroll payroll    = session.Load <TrxPayroll>(ObjPayroll.Id);
            string     dbAcc      = payroll.DebitAccount;

            //dsini update Debet account jika beda (Khusu ftp jane) - denny
            #region update Debet Account tabel Transactions

            try
            {
                if (ObjPayroll.DebitAccount.Equals(payroll.DebitAccount))
                {
                    //Ya udah oke no problem
                    log.Info("Transaksi Payroll ID transactions : " + trx.Id + " :: Debet Transactions is Match ");
                    result = true;
                }
                else
                {
                    //Rubah biar samaan
                    log.Info("FTP Payroll ID transactions : " + trx.Id + " is Detected :: Debet Transactions is not Match ");
                    ObjPayroll.DebitAccount = dbAcc;
                    string hasilAkhir = ObjPayroll.ToString();
                    trx.TObject = hasilAkhir;
                    session.Update(trx);
                    session.Flush();
                    result = true;
                }
                #endregion update Debet Account tabel Transactions
            }
            catch (Exception ex)
            {
                log.Error("Ada exception, Trxid : " + trx.Id + "gagal cek atau update debit account");
                result = false;
            }
            return(result);
        }
Ejemplo n.º 5
0
        private void ParseResponseFile(TrxPayroll payroll, String fileName, ISession session)
        {
            ILog logs = LogManager.GetLogger(typeof(GetPayrollResponse));

            logs.Info(">>>>Start parsing file...." + fileName);
            PayrollLog(session, "Start parsing file...." + fileName);

            try
            {
                //ITransaction tx = session.BeginTransaction();
                //logs.Info("isi tx --> " + tx + "filename : " + fileName);
                //PayrollLog(session,"isi tx --> "+tx + "filename : "+fileName);

                //20170524 - sayedzul - handler file balikan dari host 0 KB
                FileInfo fl = new FileInfo(fileName);
                if (fl.Length == 0)
                {
                    payroll.StatusIFT         = ParameterHelper.PAYROLL_EXCEPTION;
                    payroll.Status            = ParameterHelper.PAYROLL_EXCEPTION;
                    payroll.Description       = "Cannot Read File Response From Host, Plese contact Administrator||" + payroll.Description;
                    payroll.ErrorDescription += "||FileResponse From Host NULL";
                    logs.Error("Payroll SeqNumber: " + payroll.SeqNumber.ToString() + " === File Balikan dari Host 0 KB!");
                    session.Update(payroll);
                    session.Flush();
                    return;
                }

                FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);

                logs.Info("isi fs : " + fs);
                PayrollLog(session, "isi fs : " + fs);

                StreamReader sr = new StreamReader(fs);
                logs.Info("isi sr : " + fs);
                PayrollLog(session, "isi sr : " + fs);

                Boolean _next    = true;
                Boolean _confirm = true;
                double  totamt   = 0;
                double  totfee   = 0;
                double  totaltrx = 0;
                String  accfrom  = "";
                while (_next && _confirm)
                {
                    logs.Info("isi boolean next : " + _next + "isi boolean confirm : " + _confirm);
                    PayrollLog(session, "isi boolean next : " + _next + "isi boolean confirm : " + _confirm);

                    String detail = sr.ReadLine();

                    logs.Info("isi detail : " + detail);
                    PayrollLog(session, "isi detail : " + detail);

                    if (null == detail)
                    {
                        break;
                    }
                    _confirm = false;
                    switch (detail.Substring(0, 2))
                    {
                    case "FH":
                        String _response = detail.Substring(37, 3);
                        if (!"000".Equals(_response))
                        {
                            logs.Info("File header error, code : " + _response);
                            PayrollLog(session, "File header error , code : " + _response);

                            payroll.StatusIFT         = ParameterHelper.PAYROLL_EXCEPTION;
                            payroll.Description       = payroll.Description.Replace("PROCESSED", ParameterHelper.TRXDESCRIPTION_REJECT);
                            payroll.LastUpdate        = DateTime.Now;
                            payroll.ErrorDescription += "Status 20|File header (FH) error, code : " + _response;
                            session.Update(payroll);
                            _next = false;
                        }
                        else
                        {
                            logs.Info("File header succesfully proceed");
                            PayrollLog(session, "File header succesfully proceed");
                            _confirm = true;
                        }
                        break;

                    case "CH":
                        _response = detail.Substring(11, 3);
                        if (!"000".Equals(_response))
                        {
                            logs.Info("Client header error, code : " + _response);
                            PayrollLog(session, "Client header error, code : " + _response);

                            payroll.StatusIFT         = ParameterHelper.PAYROLL_EXCEPTION;
                            payroll.Description       = payroll.Description.Replace("PROCESSED", ParameterHelper.TRXDESCRIPTION_REJECT);
                            payroll.LastUpdate        = DateTime.Now;
                            payroll.ErrorDescription += "||Status 20|Client Header(CH) error, code : " + _response;
                            session.Update(payroll);
                            _next = false;
                        }
                        else
                        {
                            logs.Info("Client header succesfully proceed");
                            PayrollLog(session, "Client header succesfully proceed");
                            _confirm = true;
                        }
                        break;

                    case "BH":
                        _response = detail.Substring(101, 3);
                        accfrom   = detail.Substring(23, 15);
                        if (!"000".Equals(_response))
                        {
                            logs.Info("Batch header error, code : " + _response);
                            PayrollLog(session, "Batch header error, code : " + _response);

                            if (_response.Equals("005"))
                            {
                                payroll.StatusIFT   = ParameterHelper.TRXSTATUS_REJECT;
                                payroll.Description = payroll.Description.Replace("PROCESSED", "REJECT - SALDO TIDAK CUKUP (Rekening tidak terdebet)");
                            }
                            else if (_response.Equals("003"))
                            {
                                payroll.StatusIFT   = ParameterHelper.TRXSTATUS_REJECT;
                                payroll.Description = payroll.Description.Replace("PROCESSED", "REJECT" + _response);
                            }
                            else
                            {
                                payroll.StatusIFT   = ParameterHelper.PAYROLL_EXCEPTION;
                                payroll.Description = payroll.Description.Replace("PROCESSED", ParameterHelper.TRXDESCRIPTION_REJECT);
                            }

                            payroll.LastUpdate        = DateTime.Now;
                            payroll.ErrorDescription += "||Status 20|Batch Header (BH) error, code : " + _response;
                            session.Update(payroll);
                            _next = false;
                        }
                        else
                        {
                            logs.Info("Batch header succesfully proceed");
                            PayrollLog(session, "Batch header succesfully proceed");
                            _confirm = true;
                        }
                        break;

                    case "BD":
                        try
                        {
                            _response = detail.Substring(161, 3);
                            logs.Info("isi response : " + _response);
                            PayrollLog(session, "isi response : " + _response);

                            String account = detail.Substring(22, 16);
                            logs.Info("isi account : " + account);
                            PayrollLog(session, "isi account : " + account);

                            String amount = detail.Substring(41, 15);
                            logs.Info("isi amount : " + amount);
                            PayrollLog(session, "isi amount : " + amount);

                            String fee = detail.Substring(71, 15);
                            logs.Info("isi fee : " + fee);
                            PayrollLog(session, "isi fee : " + fee);

                            String description = detail.Substring(164, 40);
                            logs.Info("isi description : " + description);
                            PayrollLog(session, "isi description : " + description);

                            account = account.TrimStart('0');
                            logs.Info("isi account after trim : " + account);
                            PayrollLog(session, "isi account after trim : " + account);

                            //20170202 - sayedzul - add padding account for a better query
                            account = account.PadLeft(15, '0');
                            logs.Info("isi account after trim : " + account);
                            PayrollLog(session, "isi account after trim : " + account);

                            amount = amount.TrimStart('0');
                            logs.Info("isi amount after trim : " + amount);
                            PayrollLog(session, "isi amount after trim : " + amount);

                            fee = fee.TrimStart('0');
                            if (fee == "")
                            {
                                fee = "0";
                            }
                            logs.Info("isi fee after trim : " + fee);
                            PayrollLog(session, "isi fee after trim : " + fee);

                            logs.Info("Going into sql command..");
                            PayrollLog(session, "Going into sql command..");

                            //rfqconnection
                            Parameter       dbConf = session.Load <Parameter>("CMS_DBCONNECTION");
                            MySqlConnection conn   = new MySqlConnection(dbConf.Data);
                            //conn.ConnectionTimeout = 20000;
                            conn.Open();

                            MySqlCommand command = conn.CreateCommand();

                            PayrollLog(session, "Sql Connection status : " + command.Connection);
                            if (!"000".Equals(_response))
                            {
                                command.CommandText = "update trxpayrolldetails set status=" +
                                                      ParameterHelper.TRXSTATUS_REJECT + ", description='" + description + "' where pid='" + payroll.Id
                                                      + "' and account = '" + account + "' and amount = " + amount;
                                PayrollLog(session, "Update trxpayrolldetails set status to reject, desc : " + description + "' where pid='" + payroll.Id
                                           + "' and account = '" + account + "' and amount = " + amount);
                            }
                            else
                            {
                                totfee += double.Parse(fee);
                                totamt += double.Parse(amount);
                                totaltrx++;
                                command.CommandText = "update trxpayrolldetails set status=" +
                                                      ParameterHelper.TRXSTATUS_SUCCESS + " where pid='" + payroll.Id
                                                      + "' and account = '" + account + "' and amount = " + amount;
                                PayrollLog(session, "Update trxpayrolldetails set status to success, desc : " + description + "' where pid='" + payroll.Id
                                           + "' and account = '" + account + "' and amount = " + amount);
                            }
                            int i = command.ExecuteNonQuery();
                            PayrollLog(session, "Command Execute Non Query status : " + i);
                            if (i > 0)
                            {
                                logs.Info("Update detail succesfully proceed : " + account);
                                PayrollLog(session, "Update detail succesfully proceed : " + account);

                                payroll.StatusIFT   = ParameterHelper.TRXSTATUS_PAYROLLNEW_BOOK_IFT_COMPLETE;
                                payroll.Description = payroll.Description.Replace("PROCESSED", ParameterHelper.TRXDESCRIPTION_SUCCESS);
                                _confirm            = true;
                            }
                            else
                            {
                                logs.Error("Suspect detail detected, cannot execute query where account : " + account);
                                PayrollLog(session, "Suscpect detail detected, cannot execute query where account : " + account);

                                payroll.StatusIFT = ParameterHelper.PAYROLL_EXCEPTION;
                                //payroll.Description = payroll.Description.Replace("PROCESSED", "SUSPECT");
                                payroll.ErrorDescription += "||Suspect detail detected, cannot execute query where account : " + account;
                                _confirm = false;
                            }
                            //tutup koneksi
                            conn.Close();
                        }
                        catch (Exception e)
                        {
                            logs.Info("Suspect detail detected, cannot process BD header");
                            PayrollLog(session, "Suspect detail detected, cannot process BD header");

                            payroll.StatusIFT         = ParameterHelper.PAYROLL_EXCEPTION;
                            payroll.ErrorDescription += "||Suspect detail detected, cannot process BD header >>>" + e.Message + "==" + e.InnerException + "==" + e.StackTrace;
                            //payroll.Description = payroll.Description.Replace("PROCESSED", "SUSPECT");
                            _confirm = false;
                        }
                        break;

                    default:
                        _confirm = true;
                        break;
                    }
                }

                #region trxobhist
                //if (_confirm)
                //{
                //    TrxOBHist ob = new TrxOBHist();
                //    ob.ParentId = 0;
                //    Client cl = session.CreateCriteria(typeof(Client))
                //        .Add(Expression.Like("Handle", payroll.CreatedBy.Substring(0, payroll.CreatedBy.IndexOf("/")).Trim()))
                //        .UniqueResult<Client>();
                //    ob.ClientId = cl.Id;
                //    ob.TrxCode = TotalOBHelper.Payroll;
                //    ob.TrxType = 1;
                //    ob.TrxActId = "0";
                //    ob.ValueDate = DateTime.Now.ToString("yyMMdd");
                //    ob.CreditCur = "IDR";
                //    ob.CreditAmt = totamt / 100;
                //    ob.KursBeliTrx = "1";
                //    ob.KursJualTrx = "1";
                //    ob.DebitCur = "IDR";
                //    ob.DebitAmt = totamt / 100;
                //    ob.BaseCur = "IDR";
                //    ob.BaseAmt = totamt / 100;
                //    ob.KursJualBase = "1";
                //    ob.TrxRemark = payroll.Id; // pid payroll
                //    ob.VoucherCode = "";
                //    ob.ChargeCur = "IDR";
                //    ob.ChargeAmt = totfee / 100;
                //    ob.DebitAcc = accfrom;
                //    logs.Info("Number : " + accfrom);
                //    logs.Info("PID : " + cl.Id);
                //    ClientAccount cd = session.CreateCriteria(typeof(ClientAccount))
                //        .Add(Expression.Like("Number", accfrom))
                //        .Add(Expression.Eq("Pid", cl.Id))
                //        .UniqueResult<ClientAccount>();
                //    ob.DebitAccName = cd.Code;
                //    ob.BenAcc = totaltrx.ToString();
                //    ob.BenAccName = "-";
                //    ob.BenBankIdentifier = "0002";
                //    ob.BenBankName = "PT.BRI (PERSERO) TBK.";
                //    ob.MakerInfo = payroll.Maker;
                //    ob.CheckerInfo = payroll.Checker;
                //    ob.ApproverInfo = payroll.Approver;
                //    ob.LastUpdate = DateTime.Now;
                //    if (payroll.Description.Contains("SUCCESS"))
                //    {
                //        ob.Description = "Success";
                //        ob.Status = 3;
                //    }
                //    else
                //    {
                //        ob.Description = payroll.Description;
                //        ob.Status = 4;
                //    }
                //    session.Save(ob);
                //}
                #endregion

                //payroll.StatusEmail = ParameterHelper.PAYROLL_NEEDEMAIL;
            }
            catch (Exception ex)
            {
                payroll.ErrorDescription += "||Status 20|Error : " + ex.Message + ">>" + ex.InnerException + ">>" + ex.StackTrace;
                payroll.Status            = ParameterHelper.PAYROLL_EXCEPTION;
                logs.Error("Error : " + ex.Message + ">>" + ex.InnerException + ">>" + ex.StackTrace);
            }

            session.Update(payroll, payroll.Id);
            session.Flush();

            logs.Info("=== End Parsing File ===");
            PayrollLog(session, "End parsing file..");
        }
Ejemplo n.º 6
0
    public static Boolean workflowCheckerPayroll(ISession session, Transaction trx, ILog log)
    {
        //get trxpayrolls object
        XmlDocument   doc = new XmlDocument();
        XmlSerializer ser = new XmlSerializer(typeof(TrxPayroll));

        doc.LoadXml(trx.TObject);
        XmlNodeReader reader = new XmlNodeReader(doc.DocumentElement);
        object        obj    = ser.Deserialize(reader);

        TrxPayroll ObjPayroll = (TrxPayroll)obj;
        TrxPayroll payroll    = session.Load <TrxPayroll>(ObjPayroll.Id);

        bool   result         = true;
        string HeaderErrorMsg = "||" + DateTime.Now.ToString("dd-MM-yyyy hh:mm:ss") + " ";

        //invalid authority setting status
        string StatusInvalidAuth = "";

        try
        {
            int    user_id  = 0;
            string clientID = trx.ClientId.ToString();

            //sayedzul add - 20161108
            #region cek rek debet notpool or not
            string debAcc             = payroll.DebitAccount.Trim().PadLeft(15, '0');
            NotionalPoolingMember npm = session.CreateCriteria(typeof(NotionalPoolingMember))
                                        .Add(Expression.Eq("AccountNumber", debAcc))
                                        .Add(Expression.Eq("Status", "A"))
                                        .UniqueResult <NotionalPoolingMember>();
            if (npm != null)
            {
                String[] desc = payroll.Description.Split(new String[] { "||" }, StringSplitOptions.None);
                payroll.Status            = ParameterHelper.TRXSTATUS_REJECT;
                payroll.StatusEmail       = ParameterHelper.PAYROLL_NEEDEMAIL;
                payroll.Description       = ParameterHelper.TRXDESCRIPTION_REJECT + " - Notional pooling account not permitted for payroll transaction||" + desc[1];
                payroll.ErrorDescription += HeaderErrorMsg + "Notional pooling account not permitted for payroll transaction";

                session.Update(payroll);

                //reject child
                string outRejectChild = "";
                if (rejectAllChild(session, payroll, out outRejectChild, log))
                {
                    log.Info("Success Update All Child.");
                    payroll.ErrorDescription += HeaderErrorMsg + " Success reject child";
                    //delete transactions
                    session.Delete(trx);
                }
                else
                {
                    payroll.Status           = ParameterHelper.PAYROLL_EXCEPTION;
                    payroll.ErrorDescription = HeaderErrorMsg + outRejectChild;
                }

                session.Update(payroll);
                session.Flush();
                return(true);
            }
            #endregion
            //end sayedzul

            #region get usermaps/user_id
            UserMap umap = null;
            try
            {
                if (!string.IsNullOrEmpty(trx.Approver))
                {
                    String[] tempmaker = trx.Approver.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (String makinfo in tempmaker)
                    {
                        String[] detmake = makinfo.Split(new String[] { " - " }, StringSplitOptions.RemoveEmptyEntries);
                        umap = session.CreateCriteria(typeof(UserMap))
                               .Add(Expression.Like("UserHandle", detmake[0].Trim()))
                               .Add(Expression.Like("ClientEntity", int.Parse(clientID)))
                               .UniqueResult <UserMap>();
                        user_id = umap.UserEntity;
                    }
                }
                else if (!string.IsNullOrEmpty(trx.Checker))
                {
                    String[] tempmaker = trx.Checker.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (String makinfo in tempmaker)
                    {
                        String[] detmake = makinfo.Split(new String[] { " - " }, StringSplitOptions.RemoveEmptyEntries);
                        umap = session.CreateCriteria(typeof(UserMap))
                               .Add(Expression.Like("UserHandle", detmake[0].Trim()))
                               .Add(Expression.Like("ClientEntity", int.Parse(clientID)))
                               .UniqueResult <UserMap>();
                        user_id = umap.UserEntity;
                    }
                }
                else//maker
                {
                    String[] tempmaker = trx.Maker.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (String makinfo in tempmaker)
                    {
                        String[] detmake = makinfo.Split(new String[] { " - " }, StringSplitOptions.RemoveEmptyEntries);
                        umap = session.CreateCriteria(typeof(UserMap))
                               .Add(Expression.Like("UserHandle", detmake[0].Trim()))
                               .Add(Expression.Like("ClientEntity", int.Parse(clientID)))
                               .UniqueResult <UserMap>();
                        user_id = umap.UserEntity;
                    }
                }
            }
            catch (Exception ex)
            {
                payroll.ErrorDescription = "Exception on Scheduller Payroll Get Auth :: " + ex.Message + " => " + ex.StackTrace + " => " + ex.InnerException;
                payroll.Status           = ParameterHelper.PAYROLL_EXCEPTION;
                session.Update(payroll);
                session.Flush();

                log.Error("Exception on Scheduller Payroll Get Auth :: " + ex.Message + " => " + ex.StackTrace + " => " + ex.InnerException);
                //EvtLogger.Write("Exception on Scheduller Payroll Get Auth :: " + ex.Message + " => " + ex.StackTrace, System.Diagnostics.EventLogEntryType.Error);
                result = false;
            }
            log.Info("User Id : " + user_id);
            #endregion

            //get total TRX
            //|susccess|fail|total| ==> |1:200|:|2:300|
            //string[] total = payroll.TotalTrx.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
            //string[] pecahan = total[2].Split(':');
            //string counttrx = pecahan[0];
            //string totalamount = pecahan[1];

            //trx.TotalTrx = "|" + feeIFT + "|" + reject + "|" + totalTrx + "|" + feeRTG + "|" + feeLLG + "|";
            if (payroll.TotalTrx.Equals("|0:0|0:0|0:0|0:0|0:0|"))
            {
                //countift : sumift| countrejectAll : sumrejectAll | countAll : sumAll | countRTG : sumRTG | countLLG : sumLLG|
                //ga dipake pun, ga usah lah

                int    _countSuccess = payroll.TrxPayrollDetail.Where(x => x.Status != ParameterHelper.TRXSTATUS_REJECT).Count();
                double _sumSuccess   = payroll.TrxPayrollDetail.Where(x => x.Status != ParameterHelper.TRXSTATUS_REJECT).Sum(x => x.Amount / 100);
                int    _countInvalid = payroll.TrxPayrollDetail.Where(x => x.Status == ParameterHelper.TRXSTATUS_REJECT).Count();
                double _sumInvalid   = payroll.TrxPayrollDetail.Where(x => x.Status == ParameterHelper.TRXSTATUS_REJECT).Sum(x => x.Amount / 100);
                int    _countTotal   = payroll.TrxPayrollDetail.Count();
                double _sumTotal     = payroll.TrxPayrollDetail.Sum(x => x.Amount / 100);
                payroll.TotalTrx = "|" + _countSuccess.ToString() + ":" + _sumSuccess.ToString() + "|" + _countInvalid.ToString() + ":" + _sumInvalid.ToString() + "|" + _countTotal.ToString() + ":" + _sumTotal.ToString() + "|";
                //log.Info("Trx Id = " + payroll.Id + ", Total Trx : " + payroll.TotalTrx);
                //session.Update(trx);
                //session.Flush();


                //Denny coba
                //string TotalTrxNew = "|0:0|0:0|0:0|0:0|0:0|";
                //TotalTrxNew = "|" + _countSuccess.ToString() + ":" + _sumSuccess.ToString() + "|" + _countInvalid.ToString() + ":" + _sumInvalid.ToString() + "|" + _countTotal.ToString() + ":" + _sumTotal.ToString() + "|";

                #region Native update Parent payroll
                //string temp_query2 = "";
                //string msg2 = "";
                //int count2 = 0;
                //string dbResult2 = "";
                //temp_query2 = @"update trxpayrolls set totaltrx = '" + TotalTrxNew + "' where id = '" + payroll.Id + "';";

                //if (!PayrollHelper.ExecuteQueryValue(session, temp_query2, out dbResult2, out msg2))
                //{
                //    log.Error("(TrxID " + payroll.Id + ") Failed Query: " + temp_query2 + " " + msg2);

                //}
                #endregion native update
            }
            string counttrx    = payroll.TrxPayrollDetail.Where(x => x.Status != ParameterHelper.TRXSTATUS_REJECT).Count().ToString();
            double totalamount = payroll.TrxPayrollDetail.Where(x => x.Status != ParameterHelper.TRXSTATUS_REJECT).Sum(x => x.Amount / 100);

            //get debit acc
            string[]      debAccArr  = payroll.Description.Split(new String[] { "||" }, StringSplitOptions.RemoveEmptyEntries);
            string        debitAccId = debAccArr[1];
            ClientAccount ClientAcc  = session.Load <ClientAccount>(int.Parse(debitAccId));
            string        debitAcc   = ClientAcc.Number;

            string valueDate = payroll.ProcessTime.ToString("yyMMdd");
            if (valueDate.Equals("010101"))
            {
                valueDate = "991231";
            }

            #region cek limit-limit
            if (trx.CheckWork == 0 && trx.ApproveWork == 0)
            {
                string outMsgAuthorityError = "";
                if (CekAuthority(session, 100, umap, "PAYROLL", valueDate, totalamount, "IDR", out outMsgAuthorityError))
                {
                    if (!outMsgAuthorityError.Equals(""))
                    {
                        StatusInvalidAuth = "[LIMIT]" + outMsgAuthorityError;
                    }
                }
                else
                {
                    StatusInvalidAuth = "[EXCEPTION]" + outMsgAuthorityError;
                }
            }
            #endregion


            #region cek Authority Setting
            //Pengecekkan bypass transaksi di Settingan LIsence - Denny
            bool isWithAuthority    = true;
            IList <ClientMatrix> cm = session.CreateCriteria(typeof(ClientMatrix))
                                      .Add(Expression.Eq("Id", trx.ClientId))
                                      .List <ClientMatrix>();
            foreach (ClientMatrix cm1 in cm)
            {
                AuthorityHelper ah = null;
                ah = new AuthorityHelper(cm1.Matrix);
                isWithAuthority = ah.isDirectTransaction(100);

                //Kondisi menggunakan Direct Transactions
                if (trx.CheckTotal == 0 && trx.ApproveTotal == 0 && isWithAuthority)
                {
                    StatusInvalidAuth = "";
                }

                if (trx.CheckWork == 0 && trx.ApproveWork == 0 && isWithAuthority == false)
                {
                    log.Error("debit Account : " + debitAcc);
                    log.Error("total Account : " + totalamount);
                    log.Error("umap Client Entity : " + umap.ClientEntity);
                    //string nextProcessor = UserGroupHelper.getNextAppTemp(session, 100, umap, trx.Approver, "Payroll", debitAcc, "IDR", double.Parse(totalamount));


                    string nextProcessorChecker  = "GAK PAKE CHECKER";
                    string nextProcessorApprover = "GAK PAKE APPROVER";
                    if (trx.CheckTotal != 0)
                    {
                        nextProcessorChecker = UserGroupHelper.getNextCheTemp(session, 100, umap, "", "Payroll", debitAcc, "IDR", totalamount);
                    }
                    if (trx.ApproveTotal != 0)
                    {
                        nextProcessorApprover = UserGroupHelper.getNextAppTemp(session, 100, umap, "", "Payroll", debitAcc, "IDR", totalamount);
                    }

                    log.Error("Checker : " + nextProcessorChecker);
                    log.Error("Approver : " + nextProcessorApprover);

                    nextProcessorChecker  = nextProcessorChecker.Replace("|", "");
                    nextProcessorApprover = nextProcessorApprover.Replace("|", "");

                    if (string.IsNullOrEmpty(nextProcessorChecker))
                    {
                        StatusInvalidAuth += "CHECKER";
                    }
                    if (string.IsNullOrEmpty(nextProcessorApprover))
                    {
                        StatusInvalidAuth += " and APPROVER";
                    }
                }
            }

            #endregion


            if (StatusInvalidAuth.Equals(""))//authority valid
            {
                //transaction complete
                if (trx.CheckWork >= trx.CheckTotal)
                {
                    if (trx.ApproveWork >= trx.ApproveTotal)//FINAL, transactions ready to process
                    {
                        //update trxpayroll
                        String[] des = payroll.Description.Split(new String[] { "||" }, StringSplitOptions.None);
                        if (payroll.ProcessTime.ToString("yyyy-MM-dd").Equals("0001-01-01"))
                        {
                            payroll.ProcessTime = DateTime.Now;
                        }

                        //20170423 sayedzul add handler payroll processtime
                        if (payroll.IsPayrollBankLain == 1)
                        {
                            payroll.ProcessTime = PayrollHelper.GetRealProcessTime(session, payroll.ProcessTime);
                        }

                        payroll.Maker       = trx.Maker;
                        payroll.Checker     = trx.Checker;
                        payroll.Approver    = trx.Approver;
                        payroll.Status      = ParameterHelper.TRXSTATUS_RUNNING_AFTERCHECKACCOUNT;//19
                        payroll.Description = "PROCESSED" + "||" + des[1];
                        session.Update(payroll);
                        session.Flush();

                        //delete transactions
                        session.Delete(trx);
                        session.Flush();

                        log.Info("Finish. Data deleteled from table transactions");
                    }
                    else
                    {
                        //Masih Butuh Approval
                        log.Info("Total Amount" + totalamount);
                        string nextProcessor = UserGroupHelper.getNextAppTemp(session, 100, umap, trx.Approver, "Payroll", debitAcc, "IDR", totalamount);

                        trx.NextProcessor = nextProcessor;
                        trx.Status        = short.Parse(ParameterHelper.TRXSTATUS_APPROVE.ToString());
                        session.Update(trx);
                        log.Info("Masih Butuh Approver");

                        session.Flush();

                        #region Send Notification
                        if (!nextProcessor.Trim().Replace("|", "").Equals(""))
                        {
                            String[] uid_np = nextProcessor.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                            foreach (String idnp in uid_np)
                            {
                                UserMatrix      umx = session.Load <UserMatrix>(int.Parse(idnp));
                                AuthorityHelper ahe = new AuthorityHelper(umx.Matrix);
                                if (ahe.isNeedPendingEmail(100))
                                {
                                    User uid = session.Load <User>(int.Parse(idnp));
                                    //state=0->inProcess verify; state=1->inProc Approve; state=2->Succed; state=3->reject
                                    EmailNotificationHelper.MassNotification(session, uid.Email, trx.ClientId, trx.Id, "Payroll", 1, payroll.FileDescription, counttrx, totalamount.ToString(), payroll.CreatedTime, trx.Maker, payroll.ProcessTime, "Need Approve");
                                }
                            }
                        }
                        #endregion
                    }
                }
                else
                {
                    //Masih Butuh Checker
                    Console.Write("===User Handle : " + umap.UserHandle);

                    string nextProcessor = UserGroupHelper.getNextCheTemp(session, 100, umap, trx.Checker, "Payroll", debitAcc, "IDR", totalamount);

                    trx.NextProcessor = nextProcessor;
                    trx.Status        = short.Parse(ParameterHelper.TRXSTATUS_VERIFY.ToString());
                    session.Update(trx);

                    session.Flush();
                    log.Info("Next Processor : " + nextProcessor);
                    log.Info("Masih Butuh Checker");

                    #region Send Notification
                    if (!nextProcessor.Trim().Replace("|", "").Equals(""))
                    {
                        String[] uid_np = nextProcessor.Split(new String[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                        foreach (String idnp in uid_np)
                        {
                            UserMatrix      umx = session.Load <UserMatrix>(int.Parse(idnp));
                            AuthorityHelper ahe = new AuthorityHelper(umx.Matrix);
                            if (ahe.isNeedPendingEmail(100))
                            {
                                User uid = session.Load <User>(int.Parse(idnp));
                                //state=0->inProcess verify; state=1->inProc Approve; state=2->Succed; state=3->reject
                                EmailNotificationHelper.MassNotification(session, uid.Email, trx.ClientId, trx.Id, "Payroll", 0, payroll.FileDescription, counttrx, totalamount.ToString(), payroll.CreatedTime, trx.Maker, payroll.ProcessTime, "Need Verify");
                            }
                        }
                    }
                    #endregion
                }
            }
            else//invalid authority setting
            {
                string invalidMsg = "";
                if (StatusInvalidAuth.Equals(" and APPROVER"))
                {
                    invalidMsg = "APPROVER";
                }
                else
                {
                    invalidMsg = StatusInvalidAuth;
                }

                String[] desc = payroll.Description.Split(new String[] { "||" }, StringSplitOptions.None);
                payroll.Status      = ParameterHelper.TRXSTATUS_REJECT;
                payroll.StatusEmail = ParameterHelper.PAYROLL_NEEDEMAIL;
                if (invalidMsg.Contains("[LIMIT]"))
                {
                    payroll.Description       = ParameterHelper.TRXDESCRIPTION_REJECT + " - " + invalidMsg.Replace("[LIMIT]", "") + "||" + desc[1];
                    payroll.ErrorDescription += HeaderErrorMsg + "Invalid Authority Settting on " + invalidMsg;
                }
                else if (invalidMsg.Contains("[EXCEPTION]"))
                {
                    payroll.Status           = ParameterHelper.PAYROLL_EXCEPTION;
                    payroll.ErrorDescription = HeaderErrorMsg + invalidMsg.Replace("[EXCEPTION]", "");
                }
                else
                {
                    payroll.Description       = ParameterHelper.TRXDESCRIPTION_REJECT + " - Invalid Authority Setting on " + invalidMsg + "||" + desc[1];
                    payroll.ErrorDescription += HeaderErrorMsg + "Invalid Authority Settting on " + invalidMsg;
                }
                session.Update(payroll);

                //reject child
                string outRejectChild = "";
                if (rejectAllChild(session, payroll, out outRejectChild, log))
                {
                    log.Info("Success Update All Child.");
                    payroll.ErrorDescription += HeaderErrorMsg + " Success reject child";
                    //delete transactions
                    session.Delete(trx);
                }
                else
                {
                    payroll.Status           = ParameterHelper.PAYROLL_EXCEPTION;
                    payroll.ErrorDescription = HeaderErrorMsg + outRejectChild;
                }
            }


            session.Update(payroll);
            session.Flush();



            result = true;
        }
        catch (Exception ex)
        {
            log.Error("Exception on Scheduller Workflow Check Payroll :: " + ex.Message + " => " + ex.StackTrace + " => " + ex.InnerException);
            //EvtLogger.Write("Exception on Scheduller FT Workflow Check :: " + ex.Message + " => " + ex.StackTrace, System.Diagnostics.EventLogEntryType.Error);
            payroll.ErrorDescription += HeaderErrorMsg + "|Exception on Scheduller Workflow Check Payroll :: " + ex.Message + " => " + ex.StackTrace + " => " + ex.InnerException;
            payroll.Status            = ParameterHelper.PAYROLL_EXCEPTION;
            session.Update(payroll);
            session.Flush();
            result = false;
        }
        return(result);
    }
Ejemplo n.º 7
0
        private bool saveTransaction(ISession session, String filename, TrxPayroll trx, int cid, ILog log, out int IDTrxs, UserMap umap)
        {
            IDTrxs = 0;
            Boolean isTrue = true;

            try
            {
                String[]    tmpfileInfo = filename.Split('!');
                Transaction tx          = new Transaction();
                tx.Handle        = "ADD PAYROLLBRI";
                tx.TransactionId = 101;
                //tx.CreatedTime = DateTime.ParseExact(tmpfileInfo[0], "ddMMyyhhmmss", System.Globalization.CultureInfo.InvariantCulture);// Dari Split
                tx.CreatedTime  = DateTime.Now;
                tx.VerifiedTime = DateTime.Now;
                tx.ApprovedTime = DateTime.Now;
                tx.TObject      = trx.ToString();
                tx.ClientId     = cid;
                tx.Status       = 1;
                tx.Action       = "ADD";
                tx.Maker        = umap.UserHandle + " - " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                Console.WriteLine("AA => " + umap.UserHandle + " - " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"));
                Console.WriteLine("BB => " + tx.Maker);
                tx.Checker     = "";
                tx.Approver    = "";
                tx.Checker     = "";
                tx.Approver    = "";
                tx.CheckWork   = 0;
                tx.CheckTotal  = 0;
                tx.ApproveWork = 0;
                tx.CheckTotal  = 0;

                ClientWorkflow cm = session.CreateCriteria(typeof(ClientWorkflow))
                                    .Add(Expression.Eq("Id", cid))
                                    .UniqueResult <ClientWorkflow>();

                WorkflowHelper wh = new WorkflowHelper(cm.Workflow);
                if (!(null == wh))
                {
                    Workflow flow = wh.GetWorkflow(100);
                    if (!(null == flow))
                    {
                        //tx.Maker = "";
                        tx.Approver     = "";
                        tx.CheckTotal   = flow.TotalVerifier;
                        tx.ApproveTotal = flow.TotalApprover;
                    }
                    else
                    {
                        throw new Exception("Matrix PAYROLL is Null for this Client");
                    }
                }


                IDTrxs = (int)session.Save(tx);
                session.Flush();
                isTrue = true;
            }
            catch (Exception ex)
            {
                isTrue = false;
                log.Error("== " + SchedulllerCode + " = Scheduller GetFilePayrollKai Failed to Start => Exception Message =" + " " + ex.Message);
                log.Error("== " + SchedulllerCode + " = Scheduller GetFilePayrollKai Failed to Start => Exception InnerMessage =" + " " + ex.InnerException);
                log.Error("== " + SchedulllerCode + " = Scheduller GetFilePayrollKai Failed to Start => Exception StackTrace =" + " " + ex.StackTrace);
            }
            return(isTrue);
        }
Ejemplo n.º 8
0
        private Boolean saveTransactionPayroll(ISession session, ILog log, String pathFileSource, int cid, out String IdTrxPayroll, out int IDTrx)
        {
            Boolean isTrue   = true;
            String  fileName = "";

            IdTrxPayroll = "";
            IDTrx        = 0;
            try
            {
                log.Info("== " + SchedulllerCode + " = START Save Transactions PAYROLL ==");
                if (!fileIsInserted(session, log, pathFileSource, cid))
                {
                    try
                    {
                        fileName = Path.GetFileName(pathFileSource);
                        String[] fileNameArray = fileName.Split('!');
                        if (fileNameArray.Length == 4)
                        {
                            UserMap umap       = getUsermapsValues(session, log, cid);
                            String  created    = umap.ClientHandle.ToLower() + "/" + umap.UserHandle.ToLower();
                            String  pathNoName = Path.GetDirectoryName(pathFileSource);

                            TrxPayroll trx         = new TrxPayroll();
                            String     createdTime = fileNameArray[0].Substring(0, 8);
                            //trx.CreatedTime = DateTime.ParseExact(createdTime, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
                            trx.CreatedTime  = DateTime.Now;
                            trx.SeqNumber    = 0;
                            trx.Maker        = umap.UserHandle + " - " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                            trx.DebitAccount = fileNameArray[3].Substring(0, 15).ToString();
                            trx.LastUpdate   = DateTime.Now;
                            trx.CreatedBy    = created;
                            trx.Approver     = "";
                            //trx.FileName = path + fname;
                            trx.FileName        = pathNoName + "\\" + "COMPLETE!DONE!" + fileName;
                            trx.FileDescription = fileNameArray[1] + "_" + DateTime.Now.ToString("ffff");//Baca dr Split
                            trx.Status          = ParameterHelper.PAYROLL_WAITINGSEQNUM;
                            trx.StatusEmail     = 0;
                            int idClientAccount = getIDClientAccount(session, log, fileNameArray[3], cid);
                            if (idClientAccount > 0)
                            {
                                trx.Description = ParameterHelper.TRXDESCRIPTION_WAITING + "||" + idClientAccount.ToString() + "||";//Baca dr split
                            }
                            else
                            {
                                throw new Exception("This Debet Account:: [" + fileNameArray[3] + "] is not registered");
                            }

                            DateTime tempDate = DateTime.ParseExact(fileNameArray[2], "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);// Baca dr Split
                            DateTime dt       = new DateTime();
                            if (tempDate.Date > DateTime.Now.Date)
                            {
                                dt = new DateTime(tempDate.Date.Year, tempDate.Date.Month, tempDate.Date.Day, 06, 00, 00);
                            }
                            else if (tempDate.Date < DateTime.Now.Date)
                            {
                                throw new Exception("Invalid Process Time, Date less than " + DateTime.Now.ToString("ddMMyyyy") + " with File Name:: " + fileName);
                            }
                            if (tempDate.Date == DateTime.Now.Date)
                            {
                                //dt = new DateTime(tempDate.Date.Year, tempDate.Date.Month, tempDate.Date.Day, DateTime.Now.TimeOfDay.Hours, DateTime.Now.TimeOfDay.Minutes, DateTime.Now.TimeOfDay.Seconds);
                                dt = new DateTime(0001, 01, 01, 00, 00, 00);
                            }

                            trx.ProcessTime = dt;
                            trx.FilePath    = pathFileSource;
                            trx.ClientID    = cid;
                            trx.PassKey     = "";
                            IdTrxPayroll    = (String)session.Save(trx);
                            session.Flush();

                            int IDTrxs = 0;
                            if (saveTransaction(session, fileName, trx, cid, log, out IDTrxs, umap))
                            {
                                isTrue = true;
                                IDTrx  = IDTrxs;
                            }
                            else
                            {
                                session.Delete(trx);
                                session.Flush();
                                isTrue = false;
                            }
                        }
                        else
                        {
                            throw new Exception("Thie File :: " + fileName + " can't be proceed, please check file format");
                        }
                    }
                    catch (Exception ex)
                    {
                        isTrue = false;
                        log.Error("== " + SchedulllerCode + " = Scheduller GetFilePayrollKai Failed to Start => Exception Message =" + " " + ex.Message);
                        log.Error("== " + SchedulllerCode + " = Scheduller GetFilePayrollKai Failed to Start => Exception InnerMessage =" + " " + ex.InnerException);
                        log.Error("== " + SchedulllerCode + " = Scheduller GetFilePayrollKai Failed to Start => Exception StackTrace =" + " " + ex.StackTrace);
                    }
                }
                else
                {
                    isTrue = false;
                    throw new Exception("File :: " + fileName + " is [[EXIST]]");
                }
            }
            catch (Exception ex)
            {
                isTrue = false;
                log.Error("== " + SchedulllerCode + " = Scheduller GetFilePayrollKai Failed to Start => Exception Message =" + " " + ex.Message);
                log.Error("== " + SchedulllerCode + " = Scheduller GetFilePayrollKai Failed to Start => Exception InnerMessage =" + " " + ex.InnerException);
                log.Error("== " + SchedulllerCode + " = Scheduller GetFilePayrollKai Failed to Start => Exception StackTrace =" + " " + ex.StackTrace);
            }

            return(isTrue);
        }
Ejemplo n.º 9
0
        private Boolean job_GenerateMT100KAI(ISession session, String payrollID, String pathFile, ILog log, out String fName)
        {
            fName = "";
            Boolean generated = true;

            string[] tempLine = new string[24];
            try
            {
                TrxPayroll trxList = session.CreateCriteria(typeof(TrxPayroll))
                                     .Add(Expression.Eq("Id", payrollID))
                                     .UniqueResult <TrxPayroll>();

                IList <TrxPayrollDetail> trxResult = trxList.TrxPayrollDetail;
                String   FName     = Path.GetFileName(trxList.FileName);
                String[] splitFile = FName.Split('!');
                String   fileName  = splitFile[2];
                fName = fileName + ".txt";
                if (splitFile.Length == 6)
                {
                    if (trxResult.Count > 0)
                    {
                        using (StreamWriter sw = new StreamWriter(pathFile + "\\Output\\" + fileName + ".txt"))
                        {
                            int count = 0;
                            foreach (var item in trxResult)
                            {
                                count++;
                                String tempStatus = "";
                                tempStatus = item.Status != 5 ? "GAGAL" : "SUKSES";
                                #region (asignValue)
                                tempLine     = new string[23];
                                tempLine[0]  = "MT100";
                                tempLine[1]  = count.ToString();
                                tempLine[2]  = splitFile[2].Substring(0, 8);
                                tempLine[3]  = "IDR";
                                tempLine[4]  = item.Amount.ToString();
                                tempLine[5]  = splitFile[2].Substring(14, 5);
                                tempLine[6]  = splitFile[5].Substring(0, 15);
                                tempLine[7]  = "";
                                tempLine[8]  = "";
                                tempLine[9]  = "";
                                tempLine[10] = "";
                                tempLine[11] = "";
                                tempLine[12] = "";
                                tempLine[13] = "BRI";
                                tempLine[14] = "";
                                tempLine[15] = "";
                                tempLine[16] = "";
                                tempLine[17] = item.Account;
                                tempLine[18] = item.Name;
                                tempLine[19] = trxList.FileDescription;
                                tempLine[20] = "";
                                tempLine[21] = "OUR";
                                tempLine[22] = "";
                                tempLine[22] = tempStatus;
                                #endregion
                                String line = String.Join("|", tempLine);
                                sw.Write(line);
                                sw.Write("\r\n");
                            }
                        }

                        if (generated)
                        {
                            trxList.StatusEmail = 4;
                            session.Update(trxList);
                            session.Flush();
                        }
                    }
                    else
                    {
                        generated = false;
                        log.Error("== " + SchedulllerCode + " = Scheduller GanerateMT100 Failed to Start => " + " " + " Because Detailed File Is Null");
                    }
                }
                else
                {
                    generated = false;
                    log.Error("== " + SchedulllerCode + " = Scheduller GanerateMT100 Failed to Start => " + " " + " Because Incorect File Format");
                }
            }
            catch (Exception ex)
            {
                generated = false;
                log.Error("== " + SchedulllerCode + " = Scheduller GanerateMT100 Failed to Start => Exception Message =" + " " + ex.Message);
                log.Error("== " + SchedulllerCode + " = Scheduller GanerateMT100 Failed to Start => Exception InnerMessage =" + " " + ex.InnerException);
                log.Error("== " + SchedulllerCode + " = Scheduller GanerateMT100 Failed to Start => Exception StackTrace =" + " " + ex.StackTrace);
            }

            return(generated);
        }
Ejemplo n.º 10
0
        //method decript
        private string DecryptFile(ISession session, TrxPayroll payroll, FileInfo encryptedFile, String key, ILog log)
        {
            // decrypts the file using GnuPG, saves it to the file system
            // and returns the new (decrypted) file name.

            // encrypted file: thefile.xml.gpg decrypted: thefile.xml

            //log.Info("Decrypt File:");

            string outputFileName = encryptedFile.Name.Substring(0, encryptedFile.Name.Length - 4) + ".csv";
            // whatever you want here - just a convention

            string path = encryptedFile.DirectoryName;
            string outputFileNameFullPath = path + "\\" + outputFileName;

            try
            {
                System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("cmd.exe");
                psi.CreateNoWindow         = true;
                psi.UseShellExecute        = false;
                psi.RedirectStandardInput  = true;
                psi.RedirectStandardOutput = true;
                psi.RedirectStandardError  = true;
                psi.WorkingDirectory       = "C:\\Program Files (x86)\\GNU\\GnuPG";

                //string sCommandLine = "gpg.exe --allow-secret-key-import --import cmsPubKey.asc";
                string sCommandLine = "\"C:/Program Files (x86)/GNU/GnuPG/gpg.exe\" --passphrase \"" + key + "\" -o \"" +
                                      outputFileNameFullPath + "\" --decrypt \"" +
                                      encryptedFile.FullName + "\"";
                //psi.FileName = CreateBat(session,"ita",sCommandLine);

                System.Diagnostics.Process process = System.Diagnostics.Process.Start(psi);
                // actually NEED to set this as a local string variable
                // and pass it - bombs otherwise!


                log.Info("cmd :: " + sCommandLine);
                process.StandardInput.WriteLine(sCommandLine);
                process.StandardInput.Flush();
                process.StandardInput.Close();
                process.WaitForExit();

                using (StreamReader reader = process.StandardError)
                {
                    string result = reader.ReadToEnd();
                    log.Info("Result decrypt :: " + result);
                }

                process.Close();
            }
            catch (Exception exce)
            {
                log.Error(":: Opening file error : " + exce.Message + "||" + exce.InnerException + "||" + exce.StackTrace);
                payroll.Status            = ParameterHelper.PAYROLL_EXCEPTION;
                payroll.LastUpdate        = DateTime.Now;
                payroll.ErrorDescription += ":: Opening file error : " + exce.Message + "||" + exce.InnerException + "||" + exce.StackTrace;
                session.Update(payroll);
                session.Flush();
                outputFileName = "";
            }
            return(outputFileName);
        }
Ejemplo n.º 11
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_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");
            }
        }