示例#1
0
 /// <summary>
 /// Mapeia dados do limite de cartao
 /// </summary>
 /// <param name="dr"></param>
 /// <param name="prmCrg"></param>
 private static void Mapeia(SqlDataReader dr, ACSOPRGCRDetalheEN prmcrgLimite)
 {
     if (dr.HasRows)
     {
         prmcrgLimite.ValMinCredito       = (decimal)dr["ValMinCredito"];
         prmcrgLimite.ValMaxCredito       = (decimal)dr["ValMaxCredito"];
         prmcrgLimite.ValLimiteCreditoMes = (decimal)dr["ValLimiteCreditoMes"];
     }
 }
示例#2
0
        /// <summary>
        /// Monta o objeto
        /// </summary>
        /// <param name="idArquivo"></param>
        /// <param name="numLinha"></param>
        /// <param name="dr"></param>
        /// <returns></returns>
        public static ACSOPRGCRDetalheEN MapeiaExcel(int idArquivo, int numLinha, DataRow dr)
        {
            var acsCrgDetEn = new ACSOPRGCRDetalheEN()
            {
                IdArquivo  = idArquivo,
                CodPrgCrg  = dr["Codigo Prg Carga"].ToString(),
                TpPanProxy = (TipoPanProxy)Convert.ToByte(dr["TpPanProxy"].ToString()),
                PanProxy   = dr["PanProxy"].ToString(),
                Valor      = Convert.ToDecimal(dr["Valor"]),
                IdRegistro = BaseSistema.ObtemValor(dr["IdRegistro"].ToString()),
                NumLinha   = numLinha
            };

            return(acsCrgDetEn);
        }
示例#3
0
        /// <summary>
        /// Gera arquivo de teste de carga
        /// </summary>
        /// <param name="path"></param>
        public void GeraArquivoCarga(string path)
        {
            try
            {
                if (!Directory.Exists(path))
                    Directory.CreateDirectory(path);

                string pathCompleto = Path.Combine(path, FormataNomeArquivo());
                int numLinha = 0;
                int qtdCrg = 0;
                int numCrt = 0;
                int idArquivo = 1;
                string nomeArquivo = Path.GetFileName(pathCompleto);
                string codConvenio = "ACS1";
                decimal vlrCrg = 0.0M;

                using (StreamWriter sw = new StreamWriter(pathCompleto, false, Encoding.UTF8))
                {
                    numLinha++;
                    //Gera Cabeçalho
                    sw.WriteLine(new ACSOPRGCRCabecalhoEN().MontaACSOPRGCRCabecalhoEN(idArquivo, nomeArquivo, numLinha, codConvenio).ToString());

                    numLinha++;
                    //Gera Lote
                    sw.WriteLine(new ACSOPRGCRLoteEN().MontaACSOPRGCRLoteEN(idArquivo, codConvenio, numLinha).ToString());

                    //Gera detalhes
                    foreach (var det in ACSOPRGCRDetalheEN.MontaACSOPRGCRDetalheEN())
                    {
                        numLinha++;
                        qtdCrg++;
                        numCrt++;
                        vlrCrg += det.Valor;
                        det.NumLinha = numLinha;

                        sw.WriteLine(det.ToString());
                    }

                    numLinha++;
                    //Gera Rodapé
                    sw.WriteLine(new ACSOPRGCRRodapeEN().MontaACSOPRGCRRodapeEN(qtdCrg, numCrt, vlrCrg, numLinha).ToString());
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
示例#4
0
        /// <summary>
        /// Gera linhas detalhe
        /// </summary>
        /// <returns></returns>
        public static ACSOPRGCRDetalheEN[] MontaACSOPRGCRDetalheEN()
        {
            ACSOPRGCRDetalheEN[] detalhes = new ACSOPRGCRDetalheEN[]
            { new ACSOPRGCRDetalheEN()
              {
                  CodPrgCrg  = "125AA4",
                  TpPanProxy = TipoPanProxy.PAN,
                  PanProxy   = "5292050025256369",
                  Valor      = 25.3M,
                  IdRegistro = "12541"
              },
              new ACSOPRGCRDetalheEN()
              {
                  CodPrgCrg  = "125AA4",
                  TpPanProxy = TipoPanProxy.PAN,
                  PanProxy   = "5292050052847596",
                  Valor      = 65.0M,
                  IdRegistro = "12541"
              },
              new ACSOPRGCRDetalheEN()
              {
                  CodPrgCrg  = "125AA4",
                  TpPanProxy = TipoPanProxy.PAN,
                  PanProxy   = "5292050014586532",
                  Valor      = 62.25M,
                  IdRegistro = "12541"
              },
              new ACSOPRGCRDetalheEN()
              {
                  CodPrgCrg  = "125AA4",
                  TpPanProxy = TipoPanProxy.PAN,
                  PanProxy   = "5292050054752135",
                  Valor      = 33.0M,
                  IdRegistro = "12541"
              },
              new ACSOPRGCRDetalheEN()
              {
                  CodPrgCrg  = "125AA4",
                  TpPanProxy = TipoPanProxy.PAN,
                  PanProxy   = "5292050054455547",
                  Valor      = 21.52M,
                  IdRegistro = "12541"
              } };

            return(detalhes);
        }
示例#5
0
        public static ACSOPRGCRDetalheEN ConsultaLimiteCliente(string idEntidade)
        {
            using (SqlConnection cnx = new SqlConnection(ConfigurationManager.ConnectionStrings["Global"].ConnectionString))
            {
                ACSOPRGCRDetalheEN prmCrgLimite = null;
                try
                {
                    string query = "[crpConsultaLimiteCliente]";

                    using (SqlCommand cmd = new SqlCommand(query, cnx))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;

                        cmd.Parameters.Add("idEntidade", SqlDbType.Int).Value = idEntidade;

                        cnx.Open();

                        SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow);

                        prmCrgLimite = new ACSOPRGCRDetalheEN();
                        while (dr.Read())
                        {
                            Mapeia(dr, prmCrgLimite);
                        }
                    }
                }
                catch (SqlException sqlExc)
                {
                    if (BDGeral.TS.TraceError)
                    {
                        Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOPRGCR.DetBD", sqlExc });
                    }
                    throw;
                }
                catch (Exception exp)
                {
                    if (BDGeral.TS.TraceError)
                    {
                        Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOPRGCR.Det", exp });
                    }
                    throw;
                }
                return(prmCrgLimite);
            }
        }
示例#6
0
        /// <summary>
        /// Valida os valores dos campos
        /// </summary>
        /// <param name="prgCrDet"></param>
        /// <returns></returns>
        public List <ValidationResult> Valida(ACSOPRGCRDetalheEN prgCrDet)
        {
            try
            {
                List <ValidationResult> lstVr = lstVr = new List <ValidationResult>();
                //Validação PAN e Proxy
                this.ValidaPanProxy(prgCrDet, lstVr);

                this.ValidaLimiteCliente(prgCrDet, lstVr);

                if (!String.IsNullOrEmpty(prgCrDet.IdRegistro))
                {
                    this._Rgx = new Regex(this._ExprRglrRegistro);

                    if (!this._Rgx.Match(prgCrDet.IdRegistro).Success)
                    {
                        if (prgCrDet.IdRegistro.Length > 10)
                        {
                            lstVr.Add(new ValidationResult(String.Concat("IdRegistro contém quantidade de caracteres maior que 10: ", prgCrDet.IdRegistro), new[] { "IdRegistro" }));
                        }
                    }
                    else
                    {
                        lstVr.Add(new ValidationResult(String.Concat("IdRegistro contém caracteres inválidos: ", prgCrDet.IdRegistro), new[] { "IdRegistro" }));
                    }
                }

                this._Rgx = new Regex(this._ExpRglrValor);
                if (!this._Rgx.Match(prgCrDet.Valor.ToString()).Success)
                {
                    lstVr.Add(new ValidationResult(String.Concat("Valor somente caractere numérico: ", prgCrDet.IdRegistro), new[] { "Valor" }));
                }

                return(lstVr);
            }
            catch (Exception e)
            {
                if (upSight.Consulta.Base.BD.Geral.TS.TraceError)
                {
                    Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOIDTS.PtrCN", e });
                }
                throw;
            }
        }
示例#7
0
        public static void Insere(this ACSOPRGCRDetalheEN acsCrgDet)
        {
            using (SqlConnection cnx = new SqlConnection(ConfigurationManager.ConnectionStrings["Global"].ConnectionString))
            {
                try
                {
                    string query = "[crpInsereCargaDetalhe]";

                    using (SqlCommand cmd = new SqlCommand(query, cnx))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;

                        cmd.Parameters.Add("IdArquivo", SqlDbType.Int).Value          = acsCrgDet.IdArquivo;
                        cmd.Parameters.Add("TpRegistro", SqlDbType.Char, 1).Value     = ACSOPRGCRDetalheEN.TpRegistro;
                        cmd.Parameters.Add("CodPrgCrg", SqlDbType.VarChar, 10).Value  = acsCrgDet.CodPrgCrg;
                        cmd.Parameters.Add("TpPanProxy", SqlDbType.TinyInt).Value     = (byte)acsCrgDet.TpPanProxy;
                        cmd.Parameters.Add("PanProxy", SqlDbType.VarChar, 32).Value   = acsCrgDet.PanProxy;
                        cmd.Parameters.Add("Valor", SqlDbType.Money).Value            = acsCrgDet.Valor;
                        cmd.Parameters.Add("IdRegistro", SqlDbType.VarChar, 10).Value = BDGeral.BDObtemValor(acsCrgDet.IdRegistro);
                        cmd.Parameters.Add("NumLinha", SqlDbType.Int).Value           = acsCrgDet.NumLinha;

                        cnx.Open();

                        cmd.ExecuteNonQuery();
                    }
                }
                catch (SqlException sqlExc)
                {
                    if (BDGeral.TS.TraceError)
                    {
                        Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOPRGCR.DetBD", sqlExc });
                    }
                    throw;
                }
                catch (Exception exp)
                {
                    if (BDGeral.TS.TraceError)
                    {
                        Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOPRGCR.Det", exp });
                    }
                    throw;
                }
            }
        }
示例#8
0
        /// <summary>
        /// Valida PAN(1) ou Proxy(2)
        /// </summary>
        /// <param name="tpIdentif"></param>
        /// <param name="Identificacao"></param>
        /// <returns></returns>
        private void ValidaPanProxy(ACSOPRGCRDetalheEN prgCrDet, List <ValidationResult> lstVr)
        {
            try
            {
                this._Rgx = new Regex(this._ExpRglrNumerico);

                if (!this._Rgx.Match(prgCrDet.Identificacao).Success)
                {
                    if (this.ValidaExistenciaPanProxy(prgCrDet))
                    {
                        switch (prgCrDet.TpPanProxy)
                        {
                        case TipoPanProxy.PAN:
                            if (!prgCrDet.Identificacao.Length.Equals(16))
                            {
                                lstVr.Add(new ValidationResult(String.Concat("Identificacao com quantidade de caracteres divergentes a 16: ", prgCrDet.Identificacao), new[] { "Identificacao" }));
                            }
                            break;

                        case TipoPanProxy.Proxy:
                            if (prgCrDet.Identificacao.Length < 8 || prgCrDet.Identificacao.Length > 32)
                            {
                                lstVr.Add(new ValidationResult(String.Concat("Identificacao com quantidade de caracteres divergentes( menor que 8 ou maior que 32): ", prgCrDet.Identificacao), new[] { "Identificacao" }));
                            }
                            break;
                        }
                    }
                }
                else
                {
                    lstVr.Add(new ValidationResult(String.Concat("Identificacao com caracteres alfa-numéricos: ", prgCrDet.Identificacao), new[] { "Identificacao" }));
                }
            }
            catch (Exception e)
            {
                if (upSight.Consulta.Base.BD.Geral.TS.TraceError)
                {
                    Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOIDTS.PtrCN", e });
                }
                throw;
            }
        }
示例#9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="prgCrDet"></param>
        /// <param name="lstVr"></param>
        private void ValidaLimiteCliente(ACSOPRGCRDetalheEN prgCrDet, List <ValidationResult> lstVr)
        {
            try
            {
                var limite = ACSOPRGCRDetalheDB.ConsultaLimiteCliente(prgCrDet.IdEntidade);

                if (limite.ValMaxCredito < prgCrDet.Valor || limite.ValMinCredito > prgCrDet.Valor)
                {
                    lstVr.Add(new ValidationResult(String.Concat("Valores de limites fora do range de aprovação.", prgCrDet.Valor), new[] { "Valor" }));
                }
            }
            catch (Exception e)
            {
                if (upSight.Consulta.Base.BD.Geral.TS.TraceError)
                {
                    Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOIDTS.PtrCN", e });
                }
                throw;
            }
        }
示例#10
0
        /// <summary>
        /// Valida se existe os cartões na base
        /// </summary>
        /// <param name="ptr"></param>
        /// <returns></returns>
        private bool ValidaExistenciaPanProxy(ACSOPRGCRDetalheEN prgCrDet)
        {
            bool vExist = false;

            try
            {
                vExist = ACSOPRGCRDetalheDB.ConsultaCartoes(prgCrDet);
            }

            catch (Exception e)
            {
                if (upSight.Consulta.Base.BD.Geral.TS.TraceError)
                {
                    Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOIDTS.PtrCN", e });
                }
                throw;
            }

            return(vExist);
        }
示例#11
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="ptr"></param>
        /// <returns></returns>
        public static bool ConsultaCartoes(ACSOPRGCRDetalheEN prgCrDet)
        {
            using (SqlConnection cnx = new SqlConnection(upSight.Consulta.Base.BD.Conexao.StringConexaoBDGlobal))
            {
                bool bRetorno = false;
                try
                {
                    string query = "[crpConsultaCartaoCarga]";

                    using (SqlCommand cmd = new SqlCommand(query, cnx))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;

                        cmd.Parameters.Add("@Identificacao", SqlDbType.VarChar, 32).Value = prgCrDet.Identificacao.TrimEnd(null);
                        cmd.Parameters.Add("@idEntidade", SqlDbType.VarChar, 10).Value = prgCrDet.IdEntidade;
                        cmd.Parameters.Add("@codConvenio", SqlDbType.VarChar, 32).Value = prgCrDet.CodConvenio;

                        cnx.Open();

                        SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleResult);

                        while (dr.Read())
                        {
                            bRetorno = true;
                            break;
                        }
                    }
                }
                catch (SqlException sql)
                {
                    throw sql;
                }
                catch (Exception e)
                {

                    throw e;
                }

                return bRetorno;
            }
        }
示例#12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ptr"></param>
        /// <returns></returns>
        public static bool ConsultaCartoes(ACSOPRGCRDetalheEN prgCrDet)
        {
            using (SqlConnection cnx = new SqlConnection(upSight.Consulta.Base.BD.Conexao.StringConexaoBDGlobal))
            {
                bool bRetorno = false;
                try
                {
                    string query = "[crpConsultaCartaoCarga]";

                    using (SqlCommand cmd = new SqlCommand(query, cnx))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;

                        cmd.Parameters.Add("@Identificacao", SqlDbType.VarChar, 32).Value = prgCrDet.Identificacao.TrimEnd(null);
                        cmd.Parameters.Add("@idEntidade", SqlDbType.VarChar, 10).Value    = prgCrDet.IdEntidade;
                        cmd.Parameters.Add("@codConvenio", SqlDbType.VarChar, 32).Value   = prgCrDet.CodConvenio;

                        cnx.Open();

                        SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleResult);

                        while (dr.Read())
                        {
                            bRetorno = true;
                            break;
                        }
                    }
                }
                catch (SqlException sql)
                {
                    throw sql;
                }
                catch (Exception e)
                {
                    throw e;
                }

                return(bRetorno);
            }
        }
示例#13
0
        public static ACSOPRGCRDetalheEN ConsultaLimiteCliente(string idEntidade)
        {
            using (SqlConnection cnx = new SqlConnection(ConfigurationManager.ConnectionStrings["Global"].ConnectionString))
            {
                ACSOPRGCRDetalheEN prmCrgLimite = null;
                try
                {
                    string query = "[crpConsultaLimiteCliente]";

                    using (SqlCommand cmd = new SqlCommand(query, cnx))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;

                        cmd.Parameters.Add("idEntidade", SqlDbType.Int).Value = idEntidade;

                        cnx.Open();

                        SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow);

                        prmCrgLimite = new ACSOPRGCRDetalheEN();
                        while (dr.Read())
                            Mapeia(dr, prmCrgLimite);
                    }
                }
                catch (SqlException sqlExc)
                {
                    if (BDGeral.TS.TraceError)
                        Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOPRGCR.DetBD", sqlExc });
                    throw;
                }
                catch (Exception exp)
                {
                    if (BDGeral.TS.TraceError)
                        Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOPRGCR.Det", exp });
                    throw;
                }
                return prmCrgLimite;
            }
        }
示例#14
0
        /// <summary>
        /// Valida os valores dos campos
        /// </summary>
        /// <param name="prgCrDet"></param>
        /// <returns></returns>
        public List<ValidationResult> Valida(ACSOPRGCRDetalheEN prgCrDet)
        {
            try
            {
                List<ValidationResult> lstVr = lstVr = new List<ValidationResult>();
                //Validação PAN e Proxy
                this.ValidaPanProxy(prgCrDet, lstVr);

                this.ValidaLimiteCliente(prgCrDet, lstVr);

                if (!String.IsNullOrEmpty(prgCrDet.IdRegistro))
                {
                    this._Rgx = new Regex(this._ExprRglrRegistro);

                    if (!this._Rgx.Match(prgCrDet.IdRegistro).Success)
                    {
                        if (prgCrDet.IdRegistro.Length > 10)
                            lstVr.Add(new ValidationResult(String.Concat("IdRegistro contém quantidade de caracteres maior que 10: ", prgCrDet.IdRegistro), new[] { "IdRegistro" }));
                    }
                    else
                        lstVr.Add(new ValidationResult(String.Concat("IdRegistro contém caracteres inválidos: ", prgCrDet.IdRegistro), new[] { "IdRegistro" }));
                }

                this._Rgx = new Regex(this._ExpRglrValor);
                if(!this._Rgx.Match(prgCrDet.Valor.ToString()).Success)
                    lstVr.Add(new ValidationResult(String.Concat("Valor somente caractere numérico: ", prgCrDet.IdRegistro), new[] { "Valor" }));

                return lstVr;
            }
            catch (Exception e)
            {
                if (upSight.Consulta.Base.BD.Geral.TS.TraceError)
                    Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOIDTS.PtrCN", e });
                throw;
            }
        }
示例#15
0
        /// <summary>
        /// Insere cartões de arquivos XLS e TXT.
        /// </summary>
        /// <param name="ds"></param>
        /// <param name="idArquivo"></param>
        /// <param name="tpLog"></param>
        /// <param name="mapArq"></param>
        private void InsereCartoes(DataSet ds, int idArquivo, ENLog.TipoLog tpLog, ENLog.MapaArquivos mapArq)
        {
            int qtdCgr = 0;
            try
            {
                var acsCrgDetEn = new ACSOPRGCRDetalheEN();
                var crgCn = new CargaCN();

                List<ValidationResult> lstVr = null;

                int numLinha = 0;
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    try
                    {
                        if (!String.IsNullOrEmpty(dr["Identificacao"].ToString()))
                        {
                            numLinha++;
                            lstVr = acsCrgDetEn.Mapeia(dr, crgCn.CriaMapaColuna(dr));

                            if (lstVr.Count == 0)
                            {
                                lstVr = crgCn.Valida(acsCrgDetEn);
                                if (lstVr.Count == 0)
                                {
                                    acsCrgDetEn.NumLinha = numLinha;
                                    acsCrgDetEn.IdArquivo = idArquivo;
                                    acsCrgDetEn.Insere();
                                    qtdCgr++;
                                }
                                else
                                {
                                    tpLog = ENLog.TipoLog.Informação;
                                    this.InsereLogErros(mapArq, tpLog, qtdCgr, numLinha, lstVr);
                                }
                            }
                            else
                            {
                                tpLog = ENLog.TipoLog.Informação;
                                this.InsereLogErros(mapArq, tpLog, qtdCgr, numLinha, lstVr);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        tpLog = ENLog.TipoLog.Alerta;
                        string descErro = String.Format("Erro ao processar arquivo de Programação de Carga de Cartões. Linha: {0}", numLinha);
                        this.InsereLog(mapArq, qtdCgr, tpLog, descErro);
                    }
                }
            }
            catch (Exception e)
            {
                tpLog = ENLog.TipoLog.Erro;
                string descErro = "Erro ao processar arquivo de Programação de Carga de Cartões";
                this.InsereLog(mapArq, qtdCgr, tpLog, descErro);
                throw;
            }

            switch (tpLog)
            {
                case upSight.Global.Log.EN.TipoLog.Erro:
                    Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.NaoProcessado, mapArq.Arquivo, "Finaliza processamento de arquivo");
                    break;
                default:
                    Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.ProcessadoOk, mapArq.Arquivo, "Finaliza processamento de arquivo");
                    break;
            }

            string desc = String.Format("Total de cargas realizadas: {0}", qtdCgr);
            this.InsereLog(mapArq, qtdCgr, ENLog.TipoLog.Informação, desc);
        }
示例#16
0
        /// <summary>
        /// Valida PAN(1) ou Proxy(2) 
        /// </summary>
        /// <param name="tpIdentif"></param>
        /// <param name="Identificacao"></param>
        /// <returns></returns>
        private void ValidaPanProxy(ACSOPRGCRDetalheEN prgCrDet, List<ValidationResult> lstVr)
        {
            try
            {
                this._Rgx = new Regex(this._ExpRglrNumerico);

                if (!this._Rgx.Match(prgCrDet.Identificacao).Success)
                {
                    if (this.ValidaExistenciaPanProxy(prgCrDet))
                    {
                        switch (prgCrDet.TpPanProxy)
                        {
                            case TipoPanProxy.PAN:
                                if (!prgCrDet.Identificacao.Length.Equals(16))
                                    lstVr.Add(new ValidationResult(String.Concat("Identificacao com quantidade de caracteres divergentes a 16: ", prgCrDet.Identificacao), new[] { "Identificacao" }));
                                break;

                            case TipoPanProxy.Proxy:
                                if (prgCrDet.Identificacao.Length < 8 || prgCrDet.Identificacao.Length > 32)
                                    lstVr.Add(new ValidationResult(String.Concat("Identificacao com quantidade de caracteres divergentes( menor que 8 ou maior que 32): ", prgCrDet.Identificacao), new[] { "Identificacao" }));
                                break;
                        }
                    }
                }
                else
                    lstVr.Add(new ValidationResult(String.Concat("Identificacao com caracteres alfa-numéricos: ", prgCrDet.Identificacao), new[] { "Identificacao" }));
            }
            catch (Exception e)
            {
                if (upSight.Consulta.Base.BD.Geral.TS.TraceError)
                    Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOIDTS.PtrCN", e });
                throw;
            }
        }
示例#17
0
        /// <summary>
        /// Dado o arquivo ele é realizado o parser e seus dados são salvos nas tabelas correspondentes
        /// </summary>
        /// <param name="path"></param>
        public void ProcessaArquivoCarga(string path, int idEdntidade, int idArquivo = 0)
        {
            string nomeArquivo = Path.GetFileName(path);

            ENLog.MapaArquivos mapArq = new ENLog.MapaArquivos(nomeArquivo, ENLog.TipoArquivo.ACSOPRGCR, path, 0, idArquivo);

            Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.NaoProcessado, mapArq.Arquivo, "Inicia processamento de arquivo");
            int novoidArquivo = mapArq.IdArquivo;

            int linhaAtual = 0;
            int qtdCarga = 0;


            using (StreamReader sr = new StreamReader(path))
            {

                DataSet ds = new DataSet();
                DataTable dt = new DataTable();

                ENLog.TipoLog tpLog = ENLog.TipoLog.Informação;
                Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.EmProcessamento, mapArq.Arquivo, "Em processamento de arquivo");
                string descErro = String.Empty;
                while (!sr.EndOfStream)
                {
                    try
                    {
                        linhaAtual++;
                        string linha = sr.ReadLine();

                        switch (linha.Substring(0, 1))
                        {
                            case "0":
                                var cab = new ACSOPRGCRCabecalhoEN(novoidArquivo, linha);
                                cab.Insere();
                                break;
                            case "1":
                                var lot = new ACSOPRGCRLoteEN(novoidArquivo, linha);
                                lot.Insere();
                                break;
                            case "2":
                                var det = new ACSOPRGCRDetalheEN(novoidArquivo, linha);
                                dt.Rows.Add(ACSOPRGCRDetalheEN.MapeiaTXT(linha, novoidArquivo, dt, idEdntidade));
                                //det.Insere();
                                qtdCarga++;
                                break;
                            case "9":
                                var rdp = new ACSOPRGCRRodapeEN(novoidArquivo, linha);
                                rdp.Insere();
                                break;
                        }
                    }
                    catch (Exception e)
                    {
                        descErro = String.Format("Erro ao processar arquivo de Carga de Cartões. Linha: {0}", linhaAtual);
                        this.InsereLog(mapArq, linhaAtual, ENLog.TipoLog.Alerta, descErro);
                        throw;
                    }
                }

                ds.Tables.Add(dt);
                InsereCartoes(ds, idArquivo, tpLog, mapArq);

                //Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.ProcessadoOk, mapArq.Arquivo, "Finaliza processamento de arquivo");

                //descErro = String.Format("Total de cargas processadas: {0}", qtdCarga);
                //this.InsereLog(mapArq, linhaAtual, ENLog.TipoLog.Informação, descErro);
            }

            ACSPRGCRBD.InsereNovoServico(idArquivo);
        }
示例#18
0
        /// <summary>
        /// Insere cartões de arquivos XLS e TXT.
        /// </summary>
        /// <param name="ds"></param>
        /// <param name="idArquivo"></param>
        /// <param name="tpLog"></param>
        /// <param name="mapArq"></param>
        private void InsereCartoes(DataSet ds, int idArquivo, ENLog.TipoLog tpLog, ENLog.MapaArquivos mapArq)
        {
            int qtdCgr = 0;
            try
            {
                var acsCrgDetEn = new ACSOPRGCRDetalheEN();
                var crgCn = new CargaCN();

                List<ValidationResult> lstVr = null;

                int numLinha = 0;
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    try
                    {
                        if (!String.IsNullOrEmpty(dr["Identificacao"].ToString()))
                        {
                            numLinha++;
                            lstVr = acsCrgDetEn.Mapeia(dr, crgCn.CriaMapaColuna(dr));

                            if (lstVr.Count == 0)
                            {
                                lstVr = crgCn.Valida(acsCrgDetEn);
                                if (lstVr.Count == 0)
                                {
                                    acsCrgDetEn.NumLinha = numLinha;
                                    acsCrgDetEn.IdArquivo = idArquivo;
                                    acsCrgDetEn.Insere();
                                    qtdCgr++;
                                }
                                else
                                {
                                    tpLog = ENLog.TipoLog.Informação;
                                    this.InsereLogErros(mapArq, tpLog, qtdCgr, numLinha, lstVr);
                                }
                            }
                            else
                            {
                                tpLog = ENLog.TipoLog.Informação;
                                this.InsereLogErros(mapArq, tpLog, qtdCgr, numLinha, lstVr);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        tpLog = ENLog.TipoLog.Alerta;
                        string descErro = String.Format("Erro ao processar arquivo de Programação de Carga de Cartões. Linha: {0}", numLinha);
                        this.InsereLog(mapArq, qtdCgr, tpLog, descErro);
                    }
                }
            }
            catch (Exception e)
            {
                tpLog = ENLog.TipoLog.Erro;
                string descErro = "Erro ao processar arquivo de Programação de Carga de Cartões";
                this.InsereLog(mapArq, qtdCgr, tpLog, descErro);
                throw;
            }


            switch (tpLog)
            {
                case upSight.Global.Log.EN.TipoLog.Erro:
                    Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.NaoProcessado, mapArq.Arquivo, "Finaliza processamento de arquivo");
                    break;
                default:
                    Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.ProcessadoOk, mapArq.Arquivo, "Finaliza processamento de arquivo");
                    break;
            }

            string desc = String.Format("Total de cargas realizadas: {0}", qtdCgr);
            this.InsereLog(mapArq, qtdCgr, ENLog.TipoLog.Informação, desc);
        }
示例#19
0
        /// <summary>
        /// Mapeia a partir da leitura Excel
        /// </summary>
        /// <param name="port"></param>
        /// <param name="dr"></param>
        public static List <ValidationResult> Mapeia(this ACSOPRGCRDetalheEN detCrgEn, DataRow dr, MapaColunaCrgDetalhe mapa)
        {
            List <ValidationResult> resultValid = new List <ValidationResult>();

            try
            {
                //Obrigatórios
                //PanProxy
                if (mapa.TpIdentif > -1)
                {
                    detCrgEn.TpPanProxy = (TipoPanProxy)Convert.ToByte(dr[mapa.TpIdentif].ToString());
                }
                else
                {
                    resultValid.Add(new ValidationResult("Tipo da Identificação deve ser preenchida.", new[] { "TpIdentif" }));
                }

                if (mapa.Identificacao > -1)
                {
                    detCrgEn.Identificacao = dr[mapa.Identificacao].ToString();
                }
                else
                {
                    resultValid.Add(new ValidationResult("Identificação deve ser preenchida.", new[] { "Identificacao" }));
                }

                if (mapa.CodPrgCrg > -1)
                {
                    detCrgEn.CodPrgCrg = dr[mapa.CodPrgCrg].ToString();
                }
                else
                {
                    resultValid.Add(new ValidationResult("Código do programa de carga.", new[] { "CodPrgCrg" }));
                }

                if (mapa.Identificacao > -1)
                {
                    detCrgEn.PanProxy = dr[mapa.Identificacao].ToString();
                }
                else
                {
                    resultValid.Add(new ValidationResult("Pan/Proxy deve ser preenchida.", new[] { "Pan/Proxy" }));
                }

                if (mapa.Valor > -1)
                {
                    detCrgEn.Valor = Convert.ToDecimal(dr[mapa.Valor].ToString());
                }
                else
                {
                    resultValid.Add(new ValidationResult("Valor da carga deve ser preenchido.", new[] { "Valor" }));
                }

                string idRegistro = dr["IdRegistro"].ToString();
                detCrgEn.IdRegistro = (!String.IsNullOrEmpty(idRegistro)) ? idRegistro : null;

                detCrgEn.IdEntidade = dr["idEntidade"].ToString();
            }
            catch (Exception e)
            {
                if (upSight.Consulta.Base.BD.Geral.TS.TraceError)
                {
                    Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOPRGCR.PtrCN", e });
                }
                throw;
            }

            return(resultValid);
        }
示例#20
0
 /// <summary>
 /// Mapeia dados do limite de cartao
 /// </summary>
 /// <param name="dr"></param>
 /// <param name="prmCrg"></param>
 private static void Mapeia(SqlDataReader dr, ACSOPRGCRDetalheEN prmcrgLimite)
 {
     if (dr.HasRows)
     {
         prmcrgLimite.ValMinCredito = (decimal)dr["ValMinCredito"];
         prmcrgLimite.ValMaxCredito = (decimal)dr["ValMaxCredito"];
         prmcrgLimite.ValLimiteCreditoMes = (decimal)dr["ValLimiteCreditoMes"];
     }
 }
示例#21
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="prgCrDet"></param>
        /// <param name="lstVr"></param>
        private void ValidaLimiteCliente(ACSOPRGCRDetalheEN prgCrDet, List<ValidationResult> lstVr)
        {
            try
            {
                var limite = ACSOPRGCRDetalheDB.ConsultaLimiteCliente(prgCrDet.IdEntidade);

                if (limite.ValMaxCredito < prgCrDet.Valor || limite.ValMinCredito > prgCrDet.Valor)
                {
                    lstVr.Add(new ValidationResult(String.Concat("Valores de limites fora do range de aprovação.", prgCrDet.Valor), new[] { "Valor" }));
                }
            }
            catch (Exception e)
            {
                if (upSight.Consulta.Base.BD.Geral.TS.TraceError)
                    Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOIDTS.PtrCN", e });
                throw;
            }
        }
示例#22
0
        /// <summary>
        /// Monta o objeto
        /// </summary>
        /// <param name="idArquivo"></param>
        /// <param name="numLinha"></param>
        /// <param name="dr"></param>
        /// <returns></returns>
        public static ACSOPRGCRDetalheEN MapeiaExcel(int idArquivo, int numLinha, DataRow dr)
        {
            var acsCrgDetEn = new ACSOPRGCRDetalheEN ()
            {
                IdArquivo = idArquivo,
                CodPrgCrg = dr["Codigo Prg Carga"].ToString(),
                TpPanProxy = (TipoPanProxy)Convert.ToByte(dr["TpPanProxy"].ToString()),
                PanProxy = dr["PanProxy"].ToString(),
                Valor = Convert.ToDecimal(dr["Valor"]),
                IdRegistro = BaseSistema.ObtemValor(dr["IdRegistro"].ToString()),
                NumLinha = numLinha
            };

            return acsCrgDetEn;
        }
示例#23
0
        /// <summary>
        /// Dado o arquivo ele é realizado o parser e seus dados são salvos nas tabelas correspondentes
        /// </summary>
        /// <param name="path"></param>
        public void ProcessaArquivoCarga(string path, int idEdntidade, int idArquivo = 0)
        {
            string nomeArquivo = Path.GetFileName(path);

            ENLog.MapaArquivos mapArq = new ENLog.MapaArquivos(nomeArquivo, ENLog.TipoArquivo.ACSOPRGCR, path, 0, idArquivo);

            Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.NaoProcessado, mapArq.Arquivo, "Inicia processamento de arquivo");
            int novoidArquivo = mapArq.IdArquivo;

            int linhaAtual = 0;
            int qtdCarga = 0;

            using (StreamReader sr = new StreamReader(path))
            {

                DataSet ds = new DataSet();
                DataTable dt = new DataTable();

                ENLog.TipoLog tpLog = ENLog.TipoLog.Informação;
                Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.EmProcessamento, mapArq.Arquivo, "Em processamento de arquivo");
                string descErro = String.Empty;
                while (!sr.EndOfStream)
                {
                    try
                    {
                        linhaAtual++;
                        string linha = sr.ReadLine();

                        switch (linha.Substring(0, 1))
                        {
                            case "0":
                                var cab = new ACSOPRGCRCabecalhoEN(novoidArquivo, linha);
                                cab.Insere();
                                break;
                            case "1":
                                var lot = new ACSOPRGCRLoteEN(novoidArquivo, linha);
                                lot.Insere();
                                break;
                            case "2":
                                var det = new ACSOPRGCRDetalheEN(novoidArquivo, linha);
                                dt.Rows.Add(ACSOPRGCRDetalheEN.MapeiaTXT(linha, novoidArquivo, dt, idEdntidade));
                                //det.Insere();
                                qtdCarga++;
                                break;
                            case "9":
                                var rdp = new ACSOPRGCRRodapeEN(novoidArquivo, linha);
                                rdp.Insere();
                                break;
                        }
                    }
                    catch (Exception e)
                    {
                        descErro = String.Format("Erro ao processar arquivo de Carga de Cartões. Linha: {0}", linhaAtual);
                        this.InsereLog(mapArq, linhaAtual, ENLog.TipoLog.Alerta, descErro);
                        throw;
                    }
                }

                ds.Tables.Add(dt);
                InsereCartoes(ds, idArquivo, tpLog, mapArq);

                //Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.ProcessadoOk, mapArq.Arquivo, "Finaliza processamento de arquivo");

                //descErro = String.Format("Total de cargas processadas: {0}", qtdCarga);
                //this.InsereLog(mapArq, linhaAtual, ENLog.TipoLog.Informação, descErro);
            }

            ACSPRGCRBD.InsereNovoServico(idArquivo);
        }
示例#24
0
        /// <summary>
        /// Gera linhas detalhe
        /// </summary>
        /// <returns></returns>
        public static ACSOPRGCRDetalheEN[] MontaACSOPRGCRDetalheEN()
        {
            ACSOPRGCRDetalheEN[] detalhes = new ACSOPRGCRDetalheEN[]
                                            { new ACSOPRGCRDetalheEN(){
                                                                        CodPrgCrg = "125AA4",
                                                                        TpPanProxy = TipoPanProxy.PAN,
                                                                        PanProxy = "5292050025256369",
                                                                        Valor = 25.3M,
                                                                        IdRegistro = "12541"},
                                              new ACSOPRGCRDetalheEN(){
                                                                        CodPrgCrg = "125AA4",
                                                                        TpPanProxy = TipoPanProxy.PAN,
                                                                        PanProxy = "5292050052847596",
                                                                        Valor = 65.0M,
                                                                        IdRegistro = "12541"},
                                              new ACSOPRGCRDetalheEN(){
                                                                        CodPrgCrg = "125AA4",
                                                                        TpPanProxy = TipoPanProxy.PAN,
                                                                        PanProxy = "5292050014586532",
                                                                        Valor = 62.25M,
                                                                        IdRegistro = "12541"},
                                              new ACSOPRGCRDetalheEN(){
                                                                        CodPrgCrg = "125AA4",
                                                                        TpPanProxy = TipoPanProxy.PAN,
                                                                        PanProxy = "5292050054752135",
                                                                        Valor = 33.0M,
                                                                        IdRegistro = "12541"},
                                              new ACSOPRGCRDetalheEN(){
                                                                        CodPrgCrg = "125AA4",
                                                                        TpPanProxy = TipoPanProxy.PAN,
                                                                        PanProxy = "5292050054455547",
                                                                        Valor = 21.52M,
                                                                        IdRegistro = "12541"}};

            return detalhes;
        }
示例#25
0
        /// <summary>
        /// Valida se existe os cartões na base
        /// </summary>
        /// <param name="ptr"></param>
        /// <returns></returns>
        private bool ValidaExistenciaPanProxy(ACSOPRGCRDetalheEN prgCrDet)
        {
            bool vExist = false;

            try
            {
                vExist = ACSOPRGCRDetalheDB.ConsultaCartoes(prgCrDet);
            }

            catch (Exception e)
            {
                if (upSight.Consulta.Base.BD.Geral.TS.TraceError)
                    Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOIDTS.PtrCN", e });
                throw;
            }

            return vExist;
        }