示例#1
0
        public static IEnumerable <ACSOEMIS_RCabecalhoEN> ConsultaCabecalho(this ACSOEMIS_RCabecalhoEN acsemisRCab)
        {
            using (SqlConnection cnx = new SqlConnection(upSight.Consulta.Base.BD.Conexao.StringConexaoBDGlobal))
            {
                try
                {
                    string query =
                        "crtCabecalhoCartoesEmitidos";

                    using (SqlCommand cmd = new SqlCommand(query, cnx))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.Add("@idProcesso", SqlDbType.Int).Value = acsemisRCab.IdArquivo;

                        cnx.Open();
                        using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleResult))
                        {
                            while (dr.Read())
                            {
                                acsemisRCab.CodConvenio = dr["codConvenio"].ToString();
                                yield return(acsemisRCab);
                            }
                        }
                    }
                }
                finally
                {
                    if (cnx.State == ConnectionState.Open)
                    {
                        cnx.Close();
                    }
                }
            }
        }
        /// <summary>
        /// Compõe o objeto para testes
        /// </summary>
        /// <param name="acsEmisRCab"></param>
        public void CompoeACSOEMIS_RCabecalho(ACSOEMIS_RCabecalhoEN acsEmisRCab)
        {
            var cab = acsEmisRCab.ConsultaCabecalho();

            foreach (var detalhe in cab)
            {
                acsEmisRCab.Versao      = "1.1";
                acsEmisRCab.DataGeracao = DateTime.Now;
                acsEmisRCab.SeqArquivo  = 3;
                acsEmisRCab.NomeArquivo = "ic13021504.xml";
                acsEmisRCab.CodEmpresa  = "08903632000177";
            }
        }
        /// <summary>
        /// Compõe o objeto para testes
        /// </summary>
        /// <param name="acsEmisRCab"></param>
        public void CompoeACSOEMIS_RCabecalho(ACSOEMIS_RCabecalhoEN acsEmisRCab)
        {
            var cab = acsEmisRCab.ConsultaCabecalho();

            foreach (var detalhe in cab)
            {
                acsEmisRCab.Versao = "1.1";
                acsEmisRCab.DataGeracao = DateTime.Now;
                acsEmisRCab.SeqArquivo = 3;
                acsEmisRCab.NomeArquivo = "ic13021504.xml";
                acsEmisRCab.CodEmpresa = "08903632000177";
            }
        }
        public string GeraArquivoRetorno(string path, int idArquivo)
        {
            int numLinha = 0;
            string nomeArquivoFormatado = string.Empty;
            string nomeArquivo = string.Empty;

            ENLog.MapaArquivos mapArq = new ENLog.MapaArquivos(string.Empty,ENLog.TipoArquivo.ACSOEMIS_R,string.Empty,0);

            try
            {
                if (!Directory.Exists(path))
                    Directory.CreateDirectory(path);

                numLinha++;
                //Gera cabeçalho
                var cab = new ACSOEMIS_RCabecalhoEN();
                cab.IdArquivo = idArquivo;
                cab.CompoeACSOEMIS_RCabecalho(cab);

                cab.NumLinha = numLinha;

                nomeArquivo = FormataNomeArquivo(cab.CodConvenio);
                nomeArquivoFormatado = System.IO.Path.Combine(path, nomeArquivo);

                mapArq = new ENLog.MapaArquivos(nomeArquivoFormatado, ENLog.TipoArquivo.ACSOEMIS_R, path, 0);
                this.Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.NaoProcessado, path, "Inicia processamento de arquivo");
                int novoIdArquivo = mapArq.IdArquivo;

                using (var sw = new StreamWriter(nomeArquivoFormatado, false, Encoding.UTF8))
                {

                    sw.WriteLine(cab.ToString());

                    //Gera detalhes
                    numLinha++;
                    var det = new ACSOEMIS_RDetalheEN();
                    det.IdArquivo = idArquivo;
                    det.NumLinha = numLinha;
                    det.CompoeACSOEMIS_RDetalheENEmissRet(det);

                    sw.WriteLine(det.ToString(TpRetornoDetalhe.RetornoDeEmissão));

                    var iDetCm = det.ConsultaDetalhe();

                    int contEmissao = 0;
                    int contErro = 0;
                    foreach (var detalhe in iDetCm)
                    {
                        try
                        {
                            this.Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.EmProcessamento, String.Empty, "Inicia processamento de arquivo");

                            contEmissao++;
                            numLinha++;

                            detalhe.numSeq = contEmissao.ToString("000000");
                            detalhe.Proxy = upSight.Consulta.Base.Sistema.CompletaEspacoDireita(contEmissao, 32);
                            detalhe.NumLinha = numLinha;

                            //gera proxy
                            string prxParcial = String.Concat(detalhe.CodConvenio, contEmissao.ToString("00000000000"));
                            string dv = DigitoVerificador.CalculaDV(prxParcial, DigitoVerificador.TipoDigitoVerificador.Modulo10);
                            detalhe.Proxy = String.Concat(prxParcial, dv);

                            sw.WriteLine(detalhe.ToString(TpRetornoDetalhe.DetalheDosCartões));
                        }
                        catch (Exception e)
                        {
                            if (BDGeral.TS.TraceError)
                                Trace.TraceError("{0}: {1}", new object[] { "u.E.L.E.GAE", e });
                            contErro++;
                            string descErro = String.Format("Total de linhas com erro: {0}", contErro);
                            this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Informação, descErro);
                        }
                    }

                    //Gera Rodapé
                    numLinha++;
                    var rdp = ACSOEMIS_RRodapeEN.CompoeACSOEMIS_RRodapeEN(contEmissao, numLinha);
                    sw.WriteLine(rdp.ToString());
                }

            }
            catch (Exception e)
            {
                if (BDGeral.TS.TraceError)
                    Trace.TraceError("{0}: {1}", new object[] { "u.E.L.E.GAE", e });
                string descErro = "Erro processamento arquivo";
                Log.AtualizaArquivo<ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.ProcessadoErro, path, descErro);
                this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Informação, descErro);
            }

            return nomeArquivo;
        }
        public string GeraArquivoRetorno(string path, int idArquivo)
        {
            int    numLinha             = 0;
            string nomeArquivoFormatado = string.Empty;
            string nomeArquivo          = string.Empty;

            ENLog.MapaArquivos mapArq = new ENLog.MapaArquivos(string.Empty, ENLog.TipoArquivo.ACSOEMIS_R, string.Empty, 0);

            try
            {
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }

                numLinha++;
                //Gera cabeçalho
                var cab = new ACSOEMIS_RCabecalhoEN();
                cab.IdArquivo = idArquivo;
                cab.CompoeACSOEMIS_RCabecalho(cab);

                cab.NumLinha = numLinha;

                nomeArquivo          = FormataNomeArquivo(cab.CodConvenio);
                nomeArquivoFormatado = System.IO.Path.Combine(path, nomeArquivo);

                mapArq = new ENLog.MapaArquivos(nomeArquivoFormatado, ENLog.TipoArquivo.ACSOEMIS_R, path, 0);
                this.Log.AtualizaArquivo <ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.NaoProcessado, path, "Inicia processamento de arquivo");
                int novoIdArquivo = mapArq.IdArquivo;


                using (var sw = new StreamWriter(nomeArquivoFormatado, false, Encoding.UTF8))
                {
                    sw.WriteLine(cab.ToString());

                    //Gera detalhes
                    numLinha++;
                    var det = new ACSOEMIS_RDetalheEN();
                    det.IdArquivo = idArquivo;
                    det.NumLinha  = numLinha;
                    det.CompoeACSOEMIS_RDetalheENEmissRet(det);

                    sw.WriteLine(det.ToString(TpRetornoDetalhe.RetornoDeEmissão));

                    var iDetCm = det.ConsultaDetalhe();

                    int contEmissao = 0;
                    int contErro    = 0;
                    foreach (var detalhe in iDetCm)
                    {
                        try
                        {
                            this.Log.AtualizaArquivo <ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.EmProcessamento, String.Empty, "Inicia processamento de arquivo");

                            contEmissao++;
                            numLinha++;

                            detalhe.numSeq   = contEmissao.ToString("000000");
                            detalhe.Proxy    = upSight.Consulta.Base.Sistema.CompletaEspacoDireita(contEmissao, 32);
                            detalhe.NumLinha = numLinha;

                            //gera proxy
                            string prxParcial = String.Concat(detalhe.CodConvenio, contEmissao.ToString("00000000000"));
                            string dv         = DigitoVerificador.CalculaDV(prxParcial, DigitoVerificador.TipoDigitoVerificador.Modulo10);
                            detalhe.Proxy = String.Concat(prxParcial, dv);

                            sw.WriteLine(detalhe.ToString(TpRetornoDetalhe.DetalheDosCartões));
                        }
                        catch (Exception e)
                        {
                            if (BDGeral.TS.TraceError)
                            {
                                Trace.TraceError("{0}: {1}", new object[] { "u.E.L.E.GAE", e });
                            }
                            contErro++;
                            string descErro = String.Format("Total de linhas com erro: {0}", contErro);
                            this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Informação, descErro);
                        }
                    }

                    //Gera Rodapé
                    numLinha++;
                    var rdp = ACSOEMIS_RRodapeEN.CompoeACSOEMIS_RRodapeEN(contEmissao, numLinha);
                    sw.WriteLine(rdp.ToString());
                }
            }
            catch (Exception e)
            {
                if (BDGeral.TS.TraceError)
                {
                    Trace.TraceError("{0}: {1}", new object[] { "u.E.L.E.GAE", e });
                }
                string descErro = "Erro processamento arquivo";
                Log.AtualizaArquivo <ENLog.MapaArquivos>(mapArq, ENLog.StatusProcessamentoArquivo.ProcessadoErro, path, descErro);
                this.InsereLog(mapArq, numLinha, ENLog.TipoLog.Informação, descErro);
            }

            return(nomeArquivo);
        }