/// <summary>
        /// Compõe os dados do detalhe
        /// </summary>
        /// <param name="crgRetDetEn"></param>
        /// <param name="acsPrgGcrEN"></param>
        /// <param name="idRegistro"></param>
        /// <param name="numLinha"></param>
        private void CompoeDetalhe(CargaRetornoDetalheEN crgRetDetEn, ACSOPRGCR_RDetalheEN acsPrgGcrEN, string idRegistro, int numLinha)
        {
            acsPrgGcrEN.TpIdentificacao = crgRetDetEn.TpIdentificacao;
            acsPrgGcrEN.Identificacao   = crgRetDetEn.Identificacao;
            acsPrgGcrEN.StatusCart      = crgRetDetEn.StatusCart;
            acsPrgGcrEN.StatusProc      = (!String.IsNullOrEmpty(crgRetDetEn.Retorno)) ? upSight.CartaoCorp.EnumRetornoBase.StatusProcessamento.ErroGenérico
                                                                                   : upSight.CartaoCorp.EnumRetornoBase.StatusProcessamento.Sucesso;
            acsPrgGcrEN.Retorno = crgRetDetEn.Retorno;

            acsPrgGcrEN.IdRegistro = idRegistro;
            acsPrgGcrEN.NumLinha   = numLinha;
        }
Exemplo n.º 2
0
        private static ACSOPRGCR_RDetalheEN Mapeia(SqlDataReader dr)
        {
            var acsPrgCrgDetEN = new ACSOPRGCR_RDetalheEN()
            {
                IdArquivo       = (int)dr["IdArquivo"],
                TpIdentificacao = (EnumRetornoBase.TipoIdentificacao)dr["TpPanProxy"],
                Identificacao   = dr["PanProxy"].ToString(),
                StatusProc      = (EnumRetornoBase.StatusProcessamento)dr["StatusProc"],
                StatusCart      = (EnumRetornoBase.StatusCartao)dr["StatusCart"],
                Retorno         = dr["Descricao"].ToString(),
                IdRegistro      = dr["IdRegistro"].ToString(),
                NumLinha        = (int)dr["NumLinha"]
            };

            return(acsPrgCrgDetEN);
        }
Exemplo n.º 3
0
        public static void Insere(this ACSOPRGCR_RDetalheEN acsCrgRetDet)
        {
            using (SqlConnection cnx = new SqlConnection(ConfigurationManager.ConnectionStrings["Global"].ConnectionString))
            {
                try
                {
                    string query = " INSERT crpACSOPRGCR_RDetalhe " +
                                   "         (IdArquivo, TpRegistro, TpPanProxy, PanProxy, StatusProc, StatusCart, Descricao, IdRegistro, NumLinha) " +
                                   " SELECT  @IdArquivo, @TpRegistro, @TpPanProxy, @PanProxy, @StatusProc, @StatusCart, @Descricao, @IdRegistro, @NumLinha ";

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

                        cmd.Parameters.Add("IdArquivo", SqlDbType.Int).Value          = acsCrgRetDet.IdArquivo;
                        cmd.Parameters.Add("TpRegistro", SqlDbType.Char, 1).Value     = ACSOPRGCR_RDetalheEN.TpRegistro;
                        cmd.Parameters.Add("TpPanProxy", SqlDbType.TinyInt).Value     = (byte)acsCrgRetDet.TpIdentificacao;
                        cmd.Parameters.Add("PanProxy", SqlDbType.VarChar, 32).Value   = acsCrgRetDet.Identificacao;
                        cmd.Parameters.Add("StatusProc", SqlDbType.Int).Value         = (int)acsCrgRetDet.StatusProc;
                        cmd.Parameters.Add("StatusCart", SqlDbType.TinyInt).Value     = BDGeral.BDObtemValor <byte>((byte)acsCrgRetDet.StatusCart);
                        cmd.Parameters.Add("Descricao", SqlDbType.VarChar, 50).Value  = BDGeral.BDObtemValor(acsCrgRetDet.Retorno);
                        cmd.Parameters.Add("IdRegistro", SqlDbType.VarChar, 10).Value = BDGeral.BDObtemValor(acsCrgRetDet.IdRegistro);
                        cmd.Parameters.Add("NumLinha", SqlDbType.Int).Value           = acsCrgRetDet.NumLinha;

                        cnx.Open();

                        cmd.ExecuteNonQuery();
                    }
                }
                catch (SqlException sqlExc)
                {
                    if (upSight.Consulta.Base.BD.Geral.TS.TraceError)
                    {
                        Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOIDTSC_R.DetBD", sqlExc });
                    }
                    throw;
                }
                catch (Exception ex)
                {
                    if (upSight.Consulta.Base.BD.Geral.TS.TraceError)
                    {
                        Trace.TraceError("{0}: {1}", new object[] { "u.CrtCorp.ACSOIDTSC_R.Det", ex });
                    }
                    throw;
                }
            }
        }
        /// <summary>
        /// Processa os dados retornados no arquivo de retorno de carga
        /// </summary>
        /// <param name="idArquivo"></param>
        /// <returns></returns>
        public void ProcessaDadosParaGerarArquivoRetornoCarga(int idArquivo, string pathArquivoOrigem, string codConvenio = "ACSO")
        {
            //using (StringWriter sw = new StringWriter(new System.Globalization.CultureInfo("pt-BR")))
            //{
                DateTime dtAgora = DateTime.Now;
                string pathDestino = ConfigurationManager.AppSettings["ACSOIDTSC_R.CRI.DiretotioDestino"];
                string nomeArquivo = this.FormataNomeArquivo(codConvenio, dtAgora);
                string pathCompleto = Path.Combine(pathDestino, nomeArquivo);

                ENLog.MapaArquivos mapArq = new ENLog.MapaArquivos(nomeArquivo, ENLog.TipoArquivo.ACSOIDTSC_R, pathArquivoOrigem, 0);
                Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.NaoProcessado, pathCompleto, "Inicia processamento de arquivo");
                mapArq.IdArquivo = idArquivo;
                int novoIdArquivo = mapArq.IdArquivo;

                int numLinha = 0;

                EnumRetornoBase.StatusProcessamento statusProc = EnumRetornoBase.StatusProcessamento.Sucesso;

                try
                {

                    //Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.EmProcessamento, pathDestino, "Inicia processamento de arquivo");
                    numLinha++;

                    //Gero Cabeçalho
                    var cab = this.MontaCabecalho(novoIdArquivo, dtAgora, nomeArquivo, "ACSO", "ACESSO", numLinha);
                    cab.Insere();
                    //sw.WriteLine(cab.ToString());

                    //Busco os detalhes
                    var detalhe = new ACSOPRGCR_RDetalheEN();
                    detalhe.IdArquivo = novoIdArquivo;
                    var detalhesRetorno = DetalheRetornoBaseBD.ConsultaDetalheCarga(idArquivo);

                    //Totalizadores
                    var cargaRejet = detalhesRetorno.Where(crgRej => !String.IsNullOrEmpty(crgRej.Retorno));

                    int totalRejeitadas = (cargaRejet != null) ? cargaRejet.Count() : 0;
                    int totalCarga = detalhesRetorno.Count() - totalRejeitadas;
                    decimal vlrTotalCrgRej = cargaRejet.Sum(vlrCrgRejet => vlrCrgRejet.Valor);
                    decimal vlrTotalCrg = detalhesRetorno.Sum(vlrCrg => vlrCrg.Valor) - vlrTotalCrgRej;

                    //Se houve rejeições mudo o status do processamento
                    if (totalRejeitadas > 0)
                        statusProc = EnumRetornoBase.StatusProcessamento.ErroGenérico;

                    //Gero Lote
                    this.MontaLote(novoIdArquivo, "01", totalRejeitadas, totalCarga, numLinha, statusProc).Insere();
                    //sw.WriteLine(this.MontaLote(novoIdArquivo, "", totalRejeitadas, totalCarga, numLinha, statusProc).ToString());

                    int contErro = 0;
                    //Gero Detalhe
                    detalhesRetorno.ForEach(delegate(CargaRetornoDetalheEN crgdet)
                        {
                            try
                            {
                                numLinha++;
                                this.CompoeDetalhe(crgdet, detalhe, codConvenio, numLinha);
                                detalhe.Insere();
                                //sw.WriteLine(detalhe.ToString());
                            }
                            catch (Exception)
                            {
                                contErro++;
                                string descErro = String.Format("Total de linhas com erro: {0}", contErro);
                                //this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Informação, contErro);
                                this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Alerta, descErro);
                            }
                        }
                                            );

                    numLinha++;
                    //Gero Rodapé
                    var rdp = this.MontaRodape(novoIdArquivo, totalCarga, totalCarga, vlrTotalCrg, totalRejeitadas, vlrTotalCrg, numLinha);
                    rdp.Insere();
                    //sw.WriteLine(rdp.ToString());
                }
                catch (Exception)
                {
                    string descErro = "Erro processamento arquivo";
                    Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.ProcessadoErro, pathCompleto, descErro);
                    this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Informação, descErro);
                }
            //}
        }
        /// <summary>
        /// Compõe os dados do detalhe
        /// </summary>
        /// <param name="crgRetDetEn"></param>
        /// <param name="acsPrgGcrEN"></param>
        /// <param name="idRegistro"></param>
        /// <param name="numLinha"></param>
        private void CompoeDetalhe(CargaRetornoDetalheEN crgRetDetEn, ACSOPRGCR_RDetalheEN acsPrgGcrEN, string idRegistro, int numLinha)
        {
            acsPrgGcrEN.TpIdentificacao = crgRetDetEn.TpIdentificacao;
            acsPrgGcrEN.Identificacao = crgRetDetEn.Identificacao;
            acsPrgGcrEN.StatusCart = crgRetDetEn.StatusCart;
            acsPrgGcrEN.StatusProc = (!String.IsNullOrEmpty(crgRetDetEn.Retorno)) ? upSight.CartaoCorp.EnumRetornoBase.StatusProcessamento.ErroGenérico
                                                                                   : upSight.CartaoCorp.EnumRetornoBase.StatusProcessamento.Sucesso;
            acsPrgGcrEN.Retorno = crgRetDetEn.Retorno;

            acsPrgGcrEN.IdRegistro = idRegistro;
            acsPrgGcrEN.NumLinha = numLinha;
        }
Exemplo n.º 6
0
        private static ACSOPRGCR_RDetalheEN Mapeia(SqlDataReader dr)
        {
            var acsPrgCrgDetEN = new ACSOPRGCR_RDetalheEN()
            {
                IdArquivo = (int)dr["IdArquivo"],
                TpIdentificacao = (EnumRetornoBase.TipoIdentificacao)dr["TpPanProxy"],
                Identificacao = dr["PanProxy"].ToString(),
                StatusProc = (EnumRetornoBase.StatusProcessamento)dr["StatusProc"],
                StatusCart = (EnumRetornoBase.StatusCartao)dr["StatusCart"],
                Retorno = dr["Descricao"].ToString(),
                IdRegistro = dr["IdRegistro"].ToString(),
                NumLinha = (int)dr["NumLinha"]
            };

            return acsPrgCrgDetEN;
        }
        /// <summary>
        /// Processa os dados retornados no arquivo de retorno de carga
        /// </summary>
        /// <param name="idArquivo"></param>
        /// <returns></returns>
        public void ProcessaDadosParaGerarArquivoRetornoCarga(int idArquivo, string pathArquivoOrigem, string codConvenio = "ACSO")
        {
            //using (StringWriter sw = new StringWriter(new System.Globalization.CultureInfo("pt-BR")))
            //{
            DateTime dtAgora      = DateTime.Now;
            string   pathDestino  = ConfigurationManager.AppSettings["ACSOIDTSC_R.CRI.DiretotioDestino"];
            string   nomeArquivo  = this.FormataNomeArquivo(codConvenio, dtAgora);
            string   pathCompleto = Path.Combine(pathDestino, nomeArquivo);

            ENLog.MapaArquivos mapArq = new ENLog.MapaArquivos(nomeArquivo, ENLog.TipoArquivo.ACSOIDTSC_R, pathArquivoOrigem, 0);
            Log.AtualizaArquivo <ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.NaoProcessado, pathCompleto, "Inicia processamento de arquivo");
            mapArq.IdArquivo = idArquivo;
            int novoIdArquivo = mapArq.IdArquivo;

            int numLinha = 0;

            EnumRetornoBase.StatusProcessamento statusProc = EnumRetornoBase.StatusProcessamento.Sucesso;

            try
            {
                //Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.EmProcessamento, pathDestino, "Inicia processamento de arquivo");
                numLinha++;

                //Gero Cabeçalho
                var cab = this.MontaCabecalho(novoIdArquivo, dtAgora, nomeArquivo, "ACSO", "ACESSO", numLinha);
                cab.Insere();
                //sw.WriteLine(cab.ToString());

                //Busco os detalhes
                var detalhe = new ACSOPRGCR_RDetalheEN();
                detalhe.IdArquivo = novoIdArquivo;
                var detalhesRetorno = DetalheRetornoBaseBD.ConsultaDetalheCarga(idArquivo);

                //Totalizadores
                var cargaRejet = detalhesRetorno.Where(crgRej => !String.IsNullOrEmpty(crgRej.Retorno));

                int     totalRejeitadas = (cargaRejet != null) ? cargaRejet.Count() : 0;
                int     totalCarga      = detalhesRetorno.Count() - totalRejeitadas;
                decimal vlrTotalCrgRej  = cargaRejet.Sum(vlrCrgRejet => vlrCrgRejet.Valor);
                decimal vlrTotalCrg     = detalhesRetorno.Sum(vlrCrg => vlrCrg.Valor) - vlrTotalCrgRej;

                //Se houve rejeições mudo o status do processamento
                if (totalRejeitadas > 0)
                {
                    statusProc = EnumRetornoBase.StatusProcessamento.ErroGenérico;
                }

                //Gero Lote
                this.MontaLote(novoIdArquivo, "01", totalRejeitadas, totalCarga, numLinha, statusProc).Insere();
                //sw.WriteLine(this.MontaLote(novoIdArquivo, "", totalRejeitadas, totalCarga, numLinha, statusProc).ToString());

                int contErro = 0;
                //Gero Detalhe
                detalhesRetorno.ForEach(delegate(CargaRetornoDetalheEN crgdet)
                {
                    try
                    {
                        numLinha++;
                        this.CompoeDetalhe(crgdet, detalhe, codConvenio, numLinha);
                        detalhe.Insere();
                        //sw.WriteLine(detalhe.ToString());
                    }
                    catch (Exception)
                    {
                        contErro++;
                        string descErro = String.Format("Total de linhas com erro: {0}", contErro);
                        //this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Informação, contErro);
                        this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Alerta, descErro);
                    }
                }
                                        );

                numLinha++;
                //Gero Rodapé
                var rdp = this.MontaRodape(novoIdArquivo, totalCarga, totalCarga, vlrTotalCrg, totalRejeitadas, vlrTotalCrg, numLinha);
                rdp.Insere();
                //sw.WriteLine(rdp.ToString());
            }
            catch (Exception)
            {
                string descErro = "Erro processamento arquivo";
                Log.AtualizaArquivo <ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.ProcessadoErro, pathCompleto, descErro);
                this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Informação, descErro);
            }
            //}
        }