コード例 #1
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            ///
            /// danasa: 06-2018
            ConteudoXML.PreserveWhitespace = false;
            ConteudoXML.Load(this.NomeArquivoXML);

            if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML, StringComparison.InvariantCultureIgnoreCase) ||
                NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML, StringComparison.InvariantCultureIgnoreCase) ||
                NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML, StringComparison.InvariantCultureIgnoreCase) ||
                NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML, StringComparison.InvariantCultureIgnoreCase))
            {
                if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML, StringComparison.InvariantCultureIgnoreCase))
                {
                    Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML) + Propriedade.ExtRetorno.retEnvCCe_ERR));
                }
                if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML, StringComparison.InvariantCultureIgnoreCase))
                {
                    Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML) + Propriedade.ExtRetorno.retCancelamento_ERR));
                }
                if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML, StringComparison.InvariantCultureIgnoreCase))
                {
                    Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML) + Propriedade.ExtRetorno.retManifestacao_ERR));
                }
                if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML, StringComparison.InvariantCultureIgnoreCase))
                {
                    Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML) + Propriedade.ExtRetorno.Eve_ERR));
                }

                DadosenvEvento eve = new DadosenvEvento();
                EnvEvento(emp, eve);
            }

            if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML, StringComparison.InvariantCultureIgnoreCase))
            {
                Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlErro, Path.GetFileName(NomeArquivoXML)));
                Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML) + Propriedade.ExtRetorno.Sit_ERR));

                DadosPedSit sit = new DadosPedSit();
                PedSit(emp, sit);
            }

            if (NomeArquivoXML.EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML, StringComparison.InvariantCultureIgnoreCase))
            {
                var fn = Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML);
                Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, fn + Propriedade.ExtRetorno.Sta_ERR));
                Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, fn + Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).RetornoXML));//"-ped-sta-ret.xml"));

                DadosPedSta sta = new DadosPedSta();
                PedSta(emp, sta);
            }
        }
コード例 #2
0
ファイル: TaskWSExiste.cs プロジェクト: farukaf/UniNFE
        /// <summary>
        /// Alguns estados nao tem o servico de consulta ao cadastro de contribuinte, por exemplo.
        /// Então, antes da aplicacao chamar um servico, ela pode consultar para saber ser um servico está disponivel para um estado
        /// </summary>
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            pedidoWSExiste odados = new pedidoWSExiste();

            odados.cUF      = Empresas.Configuracoes[emp].UnidadeFederativaCodigo;
            odados.tpEmis   = Empresas.Configuracoes[emp].tpEmis;
            odados.tpAmb    = Empresas.Configuracoes[emp].AmbienteCodigo;
            odados.servicos = "";

            //Definir o serviço que será executado para a classe
            Servico = Servicos.WSExiste;

            try
            {
                int intValue;

                if (this.vXmlNfeDadosMsgEhXML)  //danasa 12-9-2009
                {
#if modelo_xml
                    <?xml version = "1.0" encoding = "utf-8"?>
                                                     < dados >
                                                     < cUF > 31 < / cUF > opcional ou se informada a UF por sigla, convertemos para UF->inteiro
                    < tpAmb > 2 < / tpAmb > opcional
                    < tpEmis > 1 < / tpEmis > opcional
                    <servicos> NFeConsultaCadastro, NFeStatusServico, ...< / servicos >
                    < / dados >
#endif
                    Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                          Path.GetFileName(NomeArquivoXML.Replace(Propriedade.Extensao(Propriedade.TipoEnvio.EnvWSExiste).EnvioXML,
                                                                                                  Propriedade.Extensao(Propriedade.TipoEnvio.EnvWSExiste).RetornoXML).Replace(".xml", ".err"))));

                    XmlDocument doc = new XmlDocument();
                    doc.Load(NomeArquivoXML);
                    foreach (XmlNode node in doc.GetElementsByTagName("dados"))
                    {
                        XmlElement elementConfig = (XmlElement)node;

                        odados.tpEmis = Convert.ToInt32(Functions.LerTag(elementConfig, TpcnResources.tpEmis.ToString(), odados.tpEmis.ToString()));
                        odados.tpAmb  = Convert.ToInt32(Functions.LerTag(elementConfig, TpcnResources.tpAmb.ToString(), odados.tpAmb.ToString()));
                        string temp = Functions.LerTag(elementConfig, TpcnResources.cUF.ToString(), odados.cUF.ToString());
                        if (int.TryParse(temp, out intValue))
                        {
                            odados.cUF = intValue;
                        }
                        else
                        {
                            odados.cUF = Functions.UFParaCodigo(temp);
                        }
                        odados.servicos = Functions.LerTag(elementConfig, "servicos", false);
                    }
                }
コード例 #3
0
ファイル: TaskDanfe.cs プロジェクト: Klegy/uninfe
        public override void Execute()
        {
            Servico = Servicos.DANFERelatorio;

            int emp = Empresas.FindEmpresaByThread();

            DateTime datai = DateTime.MinValue, dataf = DateTime.MaxValue;
            bool     imprimir      = false;
            string   exportarPasta = "Enviados";
            string   fm            = "";

            try
            {
                if (this.vXmlNfeDadosMsgEhXML)
                {
#if modelo_xml
                    <?xml version = "1.0" encoding = "utf-8"?>
                                                     < dados >
                                                     < DataInicial > 2014 - 1 - 1 < / DataInicial >
                                                     < DataFinal > 2014 - 12 - 1 < / DataFinal >
                                                     < Imprimir > true </ Imprimir>
                                                     < ExportarPasta > Enviar | Enviados | Erros </ ExportarPasta>
                                                     < / dados >
#endif
                    Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno,
                                                          Path.GetFileName(NomeArquivoXML.Replace(Propriedade.Extensao(Propriedade.TipoEnvio.EnvDanfeReport).EnvioXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvDanfeReport).RetornoXML).Replace(".xml", ".err"))));

                    XmlDocument doc = new XmlDocument();
                    doc.Load(NomeArquivoXML);
                    foreach (XmlNode node in doc.GetElementsByTagName("dados"))
                    {
                        XmlElement elementConfig = (XmlElement)node;

                        exportarPasta = Functions.LerTag(elementConfig, "ExportarPasta", "Enviados");
                        datai         = Convert.ToDateTime(Functions.LerTag(elementConfig, "DataInicial", "2001-1-1"));
                        dataf         = Convert.ToDateTime(Functions.LerTag(elementConfig, "DataFinal", "2999-1-1"));
                        imprimir      = Convert.ToBoolean(Functions.LerTag(elementConfig, "Imprimir", "true"));
                    }
                    fm = Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.EnvDanfeReport).EnvioXML) + Propriedade.Extensao(Propriedade.TipoEnvio.EnvDanfeReport).RetornoXML;
                }
コード例 #4
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            if (NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.EnvCCe_XML, StringComparison.InvariantCultureIgnoreCase) ||
                NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.EnvCancelamento_XML, StringComparison.InvariantCultureIgnoreCase) ||
                NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.EnvManifestacao_XML, StringComparison.InvariantCultureIgnoreCase) ||
                NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.PedEve, StringComparison.InvariantCultureIgnoreCase))
            {
                Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.EnvCCe_XML) + Propriedade.ExtRetorno.retEnvCCe_ERR));
                Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.EnvCancelamento_XML) + Propriedade.ExtRetorno.retCancelamento_ERR));
                Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.EnvManifestacao_XML) + Propriedade.ExtRetorno.retManifestacao_ERR));
                Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedEve) + Propriedade.ExtRetorno.Eve_ERR));

                DadosenvEvento eve = new DadosenvEvento();
                EnvEvento(emp, eve);
            }

            if (NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.PedSit_XML, StringComparison.InvariantCultureIgnoreCase))
            {
                Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlErro, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSit_XML)));
                Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSit_XML) + Propriedade.ExtRetorno.Sit_ERR));

                DadosPedSit sit = new DadosPedSit();
                PedSit(emp, sit);
            }

            if (NomeArquivoXML.EndsWith(Propriedade.ExtEnvio.PedSta_XML, StringComparison.InvariantCultureIgnoreCase))
            {
                Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSta_XML) + Propriedade.ExtRetorno.Sta_ERR));
                Functions.DeletarArquivo(Path.Combine(Empresas.Configuracoes[emp].PastaXmlRetorno, Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.ExtEnvio.PedSta_XML) + "-ped-sta-ret.xml"));

                DadosPedSta sta = new DadosPedSta();
                PedSta(emp, sta);
            }
        }
コード例 #5
0
        public override void Execute()
        {
            switch (Servico)
            {
            case Servicos.DFeEnviar:
                ExtEnvioDFe      = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFe).EnvioXML;
                ExtEnvioDFeTXT   = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFe).EnvioTXT;
                ExtRetornoDFe    = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFe).RetornoXML;
                ExtRetEnvDFe_ERR = Propriedade.ExtRetorno.retEnvDFe_ERR;
                break;

            case Servicos.CTeDistribuicaoDFe:
                ExtEnvioDFe      = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFeCTe).EnvioXML;
                ExtEnvioDFeTXT   = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFeCTe).EnvioTXT;
                ExtRetornoDFe    = Propriedade.Extensao(Propriedade.TipoEnvio.EnvDFeCTe).RetornoXML;
                ExtRetEnvDFe_ERR = Propriedade.ExtRetorno.retEnvDFeCTe_ERR;
                break;
            }

            int        emp         = Empresas.FindEmpresaByThread();
            distDFeInt _distDFeInt = new distDFeInt();

            try
            {
                if (!this.vXmlNfeDadosMsgEhXML)
                {
                    ///versao|1.00
                    ///tpAmb|1
                    ///cUFAutor|35
                    ///CNPJ|
                    /// ou
                    ///CPF|
                    ///ultNSU|123456789012345
                    /// ou
                    ///NSU|123456789012345
                    List <string> cLinhas = Functions.LerArquivo(NomeArquivoXML);
                    Functions.PopulateClasse(_distDFeInt, cLinhas);

                    string f = Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml";

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    // Gerar o XML de envio de DFe a partir do TXT gerado pelo ERP
                    oGerarXML.RecepcaoDFe(f, _distDFeInt);
                }
                else
                {
                    XmlNodeList consdistDFeIntList = ConteudoXML.GetElementsByTagName("distDFeInt");

                    foreach (XmlNode consdistDFeIntNode in consdistDFeIntList)
                    {
                        XmlElement consdistDFeIntElemento = (XmlElement)consdistDFeIntNode;
                        Functions.PopulateClasse(_distDFeInt, consdistDFeIntElemento);
                    }

                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico,
                                                                        emp,
                                                                        991,
                                                                        _distDFeInt.tpAmb, 0);

                    System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(991, _distDFeInt.tpAmb, 1, Servico);

                    object oConsNFDestEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy,
                                        oConsNFDestEvento,
                                        wsProxy.NomeMetodoWS[0],
                                        null,
                                        this,
                                        ExtEnvioDFe,
                                        ExtRetornoDFe,
                                        true,
                                        securityProtocolType);

                    LeRetornoDFe(emp, ConteudoXML);
                }
            }
            catch (Exception ex)
            {
                WriteLogError(ex);
            }
            finally
            {
                try
                {
                    //Deletar o arquivo de solicitação do serviço
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                }
            }
        }
コード例 #6
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                dadosPedSta = new DadosPedSta();
                //Ler o XML para pegar parâmetros de envio
                PedSta(emp, dadosPedSta);

                if (vXmlNfeDadosMsgEhXML)  //danasa 12-9-2009
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy =
                        ConfiguracaoApp.DefinirWS(Servico,
                                                  emp,
                                                  dadosPedSta.cUF,
                                                  dadosPedSta.tpAmb,
                                                  dadosPedSta.tpEmis,
                                                  dadosPedSta.versao,
                                                  dadosPedSta.mod,
                                                  0);

                    System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedSta.cUF, dadosPedSta.tpAmb, dadosPedSta.tpEmis, Servico);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    var oStatusServico = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);

                    object oCabecMsg = null;
                    if (dadosPedSta.versao != "4.00")
                    {
                        oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedSta.cUF, Servico));
                        wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), dadosPedSta.cUF.ToString());
                        wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), dadosPedSta.versao);
                    }

                    new AssinaturaDigital().CarregarPIN(emp, NomeArquivoXML, Servico);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy,
                                        oStatusServico,
                                        wsProxy.NomeMetodoWS[0],
                                        oCabecMsg, this,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).RetornoXML,
                                        true,
                                        securityProtocolType);
                }
                else
                {
                    string f = Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml";

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    // Gerar o XML de solicitacao de situacao do servico a partir do TXT gerado pelo ERP
                    oGerarXML.StatusServicoNFe(f, dadosPedSta.tpAmb, dadosPedSta.tpEmis, dadosPedSta.cUF, dadosPedSta.versao);
                }
            }
            catch (Exception ex)
            {
                var extRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioXML :
                             Propriedade.Extensao(Propriedade.TipoEnvio.PedSta).EnvioTXT;

                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, extRet, Propriedade.ExtRetorno.Sta_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 09/03/2010
                }
            }
            finally
            {
                try
                {
                    //Deletar o arquivo de solicitação do serviço
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de solicitação do serviço,
                    //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar
                    //o arquivo novamente para o webservice
                    //Wandrey 09/03/2010
                }
            }
        }
コード例 #7
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                dadosConsCad = new DadosConsCad();
                //Ler o XML para pegar parâmetros de envio
                ConsCad(NomeArquivoXML);

                if (this.vXmlNfeDadosMsgEhXML)  //danasa 12-9-2009
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosConsCad.cUF, dadosConsCad.tpAmb, (int)NFe.Components.TipoEmissao.teNormal, dadosConsCad.versao);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    object oConsCad  = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                    object oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosConsCad.cUF, Servico));

                    //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), dadosConsCad.cUF.ToString());
                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), this.dadosConsCad.versao);

                    new AssinaturaDigital().CarregarPIN(emp, NomeArquivoXML, Servico);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy,
                                        oConsCad,
                                        wsProxy.NomeMetodoWS[0],
                                        oCabecMsg,
                                        this,
                                        NFe.Components.Propriedade.ExtEnvio.ConsCad_XML.Replace(".xml", ""),
                                        NFe.Components.Propriedade.ExtRetorno.ConsCad_XML.Replace(".xml", ""));//"-cons-cad", "-ret-cons-cad");
                }
                else
                {
                    string f = Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml";

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    //Gerar o XML da consulta cadastro do contribuinte a partir do TXT gerado pelo ERP
                    GravarXml(f);
                }
            }
            catch (Exception ex)
            {
                string ExtRet = string.Empty;

                if (this.vXmlNfeDadosMsgEhXML) //Se for XML
                {
                    ExtRet = Propriedade.ExtEnvio.ConsCad_XML;
                }
                else //Se for TXT
                {
                    ExtRet = Propriedade.ExtEnvio.ConsCad_TXT;
                }

                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.ConsCad_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 09/03/2010
                }
            }
            finally
            {
                try
                {
                    //Deletar o arquivo de solicitação do serviço
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de solicitação do serviço,
                    //infelizmente não posso fazer mais nada, o UniNFe vai tentar mandar
                    //o arquivo novamente para o webservice
                    //Wandrey 09/03/2010
                }
            }
        }
コード例 #8
0
ファイル: TaskConsultaNFDest.cs プロジェクト: farukaf/UniNFE
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            Servico = Servicos.NFeConsultaNFDest;

            try
            {
                oDadosConsultaNFeDest = new DadosConsultaNFeDest();
                //Ler o XML para pegar parâmetros de envio
                EnvConsultaNFeDest(emp, NomeArquivoXML);

                if (vXmlNfeDadosMsgEhXML)
                {
                    int cUF = Empresas.Configuracoes[emp].UnidadeFederativaCodigo;

                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, cUF, oDadosConsultaNFeDest.tpAmb);
                    System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(cUF, oDadosConsultaNFeDest.tpAmb, (int)TipoEmissao.teNormal, PadroesNFSe.NaoIdentificado, Servico);

                    object oConsNFDestEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                    object oCabecMsg         = wsProxy.CriarObjeto(NomeClasseCabecWS(cUF, Servico));

                    //Atribuir conteúdo para duas propriedades da classe nfeCabecMsg
                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), cUF.ToString());
                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLEnvConsultaNFeDest);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy,
                                        oConsNFDestEvento,
                                        wsProxy.NomeMetodoWS[0],
                                        oCabecMsg,
                                        this,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioXML,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).RetornoXML,
                                        true,
                                        securityProtocolType);

                    //Ler o retorno
                    this.LerRetornoConsultaNFeDest(emp);
                }
                else
                {
                    string f = Functions.ExtrairNomeArq(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioTXT) + Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioXML;

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    // Gerar o XML de eventos a partir do TXT gerado pelo ERP
                    oGerarXML.EnvioConsultaNFeDest(f, oDadosConsultaNFeDest);
                }
            }
            catch (Exception ex)
            {
                try
                {
                    var ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioXML :
                                 Propriedade.Extensao(Propriedade.TipoEnvio.ConsNFeDest).EnvioTXT;
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.retConsNFeDest_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 09/03/2010
                }
            }
            finally
            {
                try
                {
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de evento, infelizmente
                    //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido.
                    //Wandrey 09/03/2010
                }
            }
        }
コード例 #9
0
ファイル: TaskRecepcaoDFe.cs プロジェクト: matBatista/uninfe
        public override void Execute()
        {
            int        emp         = Empresas.FindEmpresaByThread();
            distDFeInt _distDFeInt = new distDFeInt();

            Servico = Servicos.DFeEnviar;
            try
            {
                if (!this.vXmlNfeDadosMsgEhXML)
                {
                    ///versao|1.00
                    ///tpAmb|1
                    ///cUFAutor|35
                    ///CNPJ|
                    /// ou
                    ///CPF|
                    ///ultNSU|123456789012345
                    /// ou
                    ///NSU|123456789012345
                    List <string> cLinhas = Functions.LerArquivo(this.NomeArquivoXML);
                    Functions.PopulateClasse(_distDFeInt, cLinhas);

                    string f = System.IO.Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml";

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    // Gerar o XML de envio de DFe a partir do TXT gerado pelo ERP
                    oGerarXML.RecepcaoDFe(f, _distDFeInt);
                }
                else
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(this.NomeArquivoXML);

                    XmlNodeList consdistDFeIntList = doc.GetElementsByTagName("distDFeInt");

                    foreach (XmlNode consdistDFeIntNode in consdistDFeIntList)
                    {
                        XmlElement consdistDFeIntElemento = (XmlElement)consdistDFeIntNode;
                        Functions.PopulateClasse(_distDFeInt, consdistDFeIntElemento);
                    }

                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy =
                        ConfiguracaoApp.DefinirWS(Servico,
                                                  emp,
                                                  991,
                                                  _distDFeInt.tpAmb);

                    object oConsNFDestEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy,
                                        oConsNFDestEvento,
                                        wsProxy.NomeMetodoWS[0],
                                        null,
                                        this,
                                        Propriedade.ExtEnvio.EnvDFe_XML.Replace(".xml", ""),
                                        Propriedade.ExtRetorno.retEnvDFe_XML.Replace(".xml", ""));

                    LeRetornoDFe(emp, doc);
                }
            }
            catch (Exception ex)
            {
                WriteLogError(ex);
            }
            finally
            {
                try
                {
                    //Deletar o arquivo de solicitação do serviço
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                }
            }
        }
コード例 #10
0
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                dadosPedSit = new DadosPedSit();
                PedSit(emp, dadosPedSit);

                if (vXmlNfeDadosMsgEhXML)
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedSit.cUF, dadosPedSit.tpAmb, dadosPedSit.tpEmis, dadosPedSit.versao, dadosPedSit.mod, 0);
                    System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedSit.cUF, dadosPedSit.tpAmb, dadosPedSit.tpEmis, Servico);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    object oConsulta = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);

                    object oCabecMsg = null;
                    if (dadosPedSit.versao != "4.00")
                    {
                        oCabecMsg = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedSit.cUF, Servico));
                        wsProxy.SetProp(oCabecMsg, TpcnResources.cUF.ToString(), dadosPedSit.cUF.ToString());
                        wsProxy.SetProp(oCabecMsg, TpcnResources.versaoDados.ToString(), dadosPedSit.versao);
                    }

                    new AssinaturaDigital().CarregarPIN(emp, NomeArquivoXML, Servico);

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy, oConsulta, wsProxy.NomeMetodoWS[0], oCabecMsg, this,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).RetornoXML,
                                        false,
                                        securityProtocolType);

                    //Efetuar a leitura do retorno da situação para ver se foi autorizada ou não
                    //Na versão 1 não posso gerar o -procNfe, ou vou ter que tratar a estrutura do XML de acordo com a versão, a consulta na versão 1 é somente para obter o resultado mesmo.
                    LerRetornoSitNFe(dadosPedSit.chNFe);

                    //Gerar o retorno para o ERP
                    oGerarXML.XmlRetorno(Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML,
                                         Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).RetornoXML, this.vStrXmlRetorno);
                }
                else
                {
                    string f = Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml";

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    oGerarXML.Consulta(TipoAplicativo.Nfe, f,
                                       dadosPedSit.tpAmb,
                                       dadosPedSit.tpEmis,
                                       dadosPedSit.chNFe,
                                       dadosPedSit.versao);
                }
            }
            catch (Exception ex)
            {
                string ExtEnvio = string.Empty;

                if (this.vXmlNfeDadosMsgEhXML) //Se for XML
                {
                    ExtEnvio = Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioXML;
                }
                else //Se for TXT
                {
                    ExtEnvio = Propriedade.Extensao(Propriedade.TipoEnvio.PedSit).EnvioTXT;
                }

                try
                {
                    TFunctions.GravarArqErroServico(NomeArquivoXML, ExtEnvio, Propriedade.ExtRetorno.Sit_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 09/03/2010
                }
            }
            finally
            {
                try
                {
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de pedido da consulta da situação da NFe, infelizmente
                    //não posso fazser mais nada, o UniNFe vai tentar mantar o arquivo novamente para o webservice, pois ainda não foi excluido.
                    //Wandrey 22/03/2010
                }
            }
        }
コード例 #11
0
ファイル: TaskEventos.cs プロジェクト: farukaf/UniNFE
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                //Ler o XML para pegar parâmetros de envio
                EnvEvento(emp, dadosEnvEvento);

                string currentEvento = dadosEnvEvento.eventos[0].tpEvento;
                // mudei para aqui caso haja erro e qdo for gravar o arquivo de erro precisamos saber qual o servico
                switch (NFe.Components.EnumHelper.StringToEnum <NFe.ConvertTxt.tpEventos>(currentEvento))
                {
                case ConvertTxt.tpEventos.tpEvCancelamentoNFe:
                    Servico = Servicos.EventoCancelamento;
                    break;

                case ConvertTxt.tpEventos.tpEvCCe:
                    Servico = Servicos.EventoCCe;
                    break;

                case ConvertTxt.tpEventos.tpEvEPEC:
                    Servico = Servicos.EventoEPEC;
                    break;

                case ConvertTxt.tpEventos.tpEvPedProrrogacao_ICMS_1:
                case ConvertTxt.tpEventos.tpEvPedProrrogacao_ICMS_2:
                case ConvertTxt.tpEventos.tpEvCancPedProrrogacao_ICMS_1:
                case ConvertTxt.tpEventos.tpEvCancPedProrrogacao_ICMS_2:
                case ConvertTxt.tpEventos.tpEvFiscoRespCancPedProrrogacao_ICMS_1:
                case ConvertTxt.tpEventos.tpEvFiscoRespCancPedProrrogacao_ICMS_2:
                case ConvertTxt.tpEventos.tpEvFiscoRespPedProrrogacao_ICMS_1:
                case ConvertTxt.tpEventos.tpEvFiscoRespPedProrrogacao_ICMS_2:
                    Servico = Servicos.EventoRecepcao;
                    break;

                default:
                    Servico = Servicos.EventoManifestacaoDest;
                    break;
                }
                ValidaEvento(emp, dadosEnvEvento);

                //Pegar o estado da chave, pois na cOrgao pode vir o estado 91 - Wandreuy 22/08/2012
                int cOrgao = dadosEnvEvento.eventos[0].cOrgao;
                //vai pegar o ambiente da Chave da Nfe autorizada p/ corrigir tpEmis
                int tpEmis   = this.dadosEnvEvento.eventos[0].tpEmis; //Convert.ToInt32(this.dadosEnvEvento.eventos[0].chNFe.Substring(34, 1));
                int ufParaWS = cOrgao;

                //Se o cOrgao for igual a 91 tenho que mudar a ufParaWS para que na hora de buscar o WSDL para conectar ao serviço, ele consiga encontrar. Wandrey 23/01/2013
                if (cOrgao == 91)
                {
                    ufParaWS = Convert.ToInt32(dadosEnvEvento.eventos[0].chNFe.Substring(0, 2));
                }

                switch (Servico)
                {
                case Servicos.EventoCancelamento:
                    switch ((NFe.Components.TipoEmissao)tpEmis)
                    {
                    case NFe.Components.TipoEmissao.teSVCAN:
                    case NFe.Components.TipoEmissao.teSVCRS:
                    case NFe.Components.TipoEmissao.teSVCSP:
                    case NFe.Components.TipoEmissao.teNormal:
                        //Se a nota fiscal foi emitida em ambiente NORMAL, o cancelamento tem que ir para o ambiente normal ou gera uma rejeição. Wandrey 15/02/2013
                        break;

                    default:
                        //Os demais tipos de emissão tem que sempre ir para o ambiente NORMAL. Wandrey 22/02/2013
                        tpEmis = (int)NFe.Components.TipoEmissao.teNormal;
                        break;
                    }
                    break;

                case Servicos.EventoCCe:
                    //CCe só existe no ambiente Normal. Wandrey 22/04/2013
                    tpEmis = (int)NFe.Components.TipoEmissao.teNormal;
                    break;
                }

                if (vXmlNfeDadosMsgEhXML)
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(
                        Servico,
                        emp,
                        ufParaWS,
                        dadosEnvEvento.eventos[0].tpAmb,
                        tpEmis,
                        string.Empty,
                        dadosEnvEvento.eventos[0].mod);
                    System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(ufParaWS, dadosEnvEvento.eventos[0].tpAmb, tpEmis, PadroesNFSe.NaoIdentificado, Servico);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    object oRecepcaoEvento = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                    object oCabecMsg       = wsProxy.CriarObjeto(NomeClasseCabecWS(cOrgao, Servico));
                    string xmlExtEnvio     = string.Empty;
                    string xmlExtRetorno   = string.Empty;

                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), cOrgao.ToString());
                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), NFe.ConvertTxt.versoes.VersaoXMLEvento);

                    if (novaNomenclatura)
                    {
                        xmlExtEnvio   = Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML.Replace(".xml", "");
                        xmlExtRetorno = Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).RetornoXML.Replace(".xml", "");
                    }
                    else
                    {
                        switch (Servico)
                        {
                        case Servicos.EventoCCe:
                            xmlExtEnvio   = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML.Replace(".xml", "");
                            xmlExtRetorno = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).RetornoXML.Replace(".xml", "");
                            break;

                        case Servicos.EventoCancelamento:
                            xmlExtEnvio   = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML.Replace(".xml", "");
                            xmlExtRetorno = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).RetornoXML.Replace(".xml", "");
                            break;

                        default:
                            xmlExtEnvio   = Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML.Replace(".xml", "");
                            xmlExtRetorno = Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).RetornoXML.Replace(".xml", "");
                            break;
                        }
                    }

                    //Criar objeto da classe de assinatura digital
                    AssinaturaDigital oAD = new AssinaturaDigital();

                    //Assinar o XML
                    oAD.Assinar(NomeArquivoXML, emp, cOrgao);

                    oInvocarObj.Invocar(wsProxy, oRecepcaoEvento, wsProxy.NomeMetodoWS[0], oCabecMsg, this, xmlExtEnvio, xmlExtRetorno, true, securityProtocolType);

                    //Ler o retorno
                    LerRetornoEvento(emp);
                }
                else
                {
                    // Gerar o XML de eventos a partir do TXT gerado pelo ERP
                    string xmlFileExt    = string.Empty;
                    string xmlFileExtTXT = string.Empty;
                    if (novaNomenclatura)
                    {
                        xmlFileExt    = Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML;
                        xmlFileExtTXT = Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioTXT;
                    }
                    else
                    {
                        switch (Servico)
                        {
                        case Servicos.EventoCCe:
                            xmlFileExt    = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML;
                            xmlFileExtTXT = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioTXT;
                            break;

                        case Servicos.EventoCancelamento:
                            xmlFileExt    = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML;
                            xmlFileExtTXT = Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioTXT;
                            break;

                        default:
                            xmlFileExt    = Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML;
                            xmlFileExtTXT = Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioTXT;
                            break;
                        }
                    }
                    string f = Functions.ExtrairNomeArq(NomeArquivoXML, xmlFileExtTXT) + xmlFileExt;

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    oGerarXML.EnvioEvento(f, dadosEnvEvento);
                }
            }
            catch (Exception ex)
            {
                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    string ExtRet     = string.Empty;
                    string ExtRetorno = string.Empty;

                    if (novaNomenclatura)
                    {
                        ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML :
                                 Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioTXT;
                        ExtRetorno = Propriedade.ExtRetorno.Eve_ERR;
                    }
                    else
                    {
                        if (Servico == Servicos.Nulo)
                        {
                            // pode ter vindo de um txt e houve erro
                            if (NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML) ||
                                NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioTXT))
                            {
                                Servico = Servicos.EventoCCe;
                            }
                            else
                            if (NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML) ||
                                NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioTXT))
                            {
                                Servico = Servicos.EventoManifestacaoDest;
                            }
                            else
                            if (NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML) ||
                                NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioTXT))
                            {
                                Servico = Servicos.EventoCancelamento;
                            }
                        }

                        switch (Servico)
                        {
                        case Servicos.EventoCCe:
                            ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioXML :
                                     Propriedade.Extensao(Propriedade.TipoEnvio.EnvCCe).EnvioTXT;
                            ExtRetorno = Propriedade.ExtRetorno.retEnvCCe_ERR;
                            break;

                        case Servicos.EventoCancelamento:
                            ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioXML :
                                     Propriedade.Extensao(Propriedade.TipoEnvio.EnvCancelamento).EnvioTXT;
                            ExtRetorno = Propriedade.ExtRetorno.retCancelamento_ERR;
                            break;

                        case Servicos.EventoManifestacaoDest:
                            ExtRet = vXmlNfeDadosMsgEhXML ? Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioXML :
                                     Propriedade.Extensao(Propriedade.TipoEnvio.EnvManifestacao).EnvioTXT;
                            ExtRetorno = Propriedade.ExtRetorno.retManifestacao_ERR;
                            break;

                        default:
                            throw new Exception("Nao pode identificar o tipo de serviço para o arquivo: " + NomeArquivoXML);
                        }
                    }

                    if (ExtRetorno != string.Empty)
                    {
                        TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, ExtRetorno, ex);
                    }
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 09/03/2010
                }
            }
            finally
            {
                try
                {
                    Functions.DeletarArquivo(NomeArquivoXML);
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de evento, infelizmente
                    //não posso fazer mais nada, o UniNFe vai tentar mandar o arquivo novamente para o webservice, pois ainda não foi excluido.
                    //Wandrey 09/03/2010
                }
            }
        }
コード例 #12
0
        protected override void EnvEvento(int emp, DadosenvEvento dadosEnvEvento)
        {
            novaNomenclatura =
                NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioXML) ||
                NomeArquivoXML.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.PedEve).EnvioTXT);

            ///
            /// danasa 6/2011
            ///
            if (Path.GetExtension(NomeArquivoXML).ToLower() == ".txt")
            {
                #region --txt

                ///<<<<EVENTO DE CARTA DE CORRECAO>>>>
                ///idLote|000000000015255
                ///evento|1
                ///Id|ID1101103511031029073900013955001000000001105112804101                    <<opcional
                ///cOrgao|35
                ///tpAmb|2
                ///CNPJ|10290739000139
                ///    ou
                ///CPF|12345678901
                ///chNFe|35110310290739000139550010000000011051128041
                ///dhEvento|2011-03-03T08:06:00
                ///tpEvento|110110
                ///nSeqEvento|1
                ///verEvento|1.00
                ///descEvento|Carta de Correção                                                 <<opcional
                ///xCorrecao|Texto de teste para Carta de Correção. Conteúdo do campo xCorrecao.
                ///xCondUso|A Carta de Correção é disciplinada pelo § 1º-A do art. ..........   <<opcional
                ///evento|2
                ///Id|ID1101103511031029073900013955001000000001105112804102
                ///...
                ///evento|20    <<MAXIMO
                ///Id|ID1101103511031029073900013955001000000001105112804103
                ///...

                ///<<<<EVENTO DE CANCELAMENTO>>>>
                /// idLote|000000000015255
                /// evento|1
                /// Id|ID1101113511031029073900013955001000000001105112804102
                /// cOrgao|35
                /// tpAmb|2
                /// CNPJ|10290739000139
                ///    ou
                /// CPF|12345678901
                /// chNFe|35110310290739000139550010000000011051128041
                /// dhEvento|2011-03-03T08:06:00-03:00
                /// tpEvento|110111
                /// nSeqEvento|1
                /// verEvento|1.00
                /// descEvento|Cancelamento                                                      <<opcional
                /// xJust|Justificativa do cancelamento
                /// nProt|010101010101010

                ///<<<<EVENTO DE CONFIRMACAO DA OPERACAO>>>>
                ///idLote|000000000015255
                ///evento|1
                ///Id|ID2102003511031029073900013955001000000001105112804102
                ///cOrgao|35
                ///tpAmb|2
                ///CNPJ|10290739000139
                ///    ou
                ///CPF|12345678901
                ///chNFe|35110310290739000139550010000000011051128041
                ///dhEvento|2011-03-03T08:06:00-03:00
                ///tpEvento|210200
                ///nSeqEvento|1
                ///verEvento|1.00
                ///descEvento|Confirmacao da Operacao                                           <<opcional
                ///xJust|Justificativa.....

                /// ------------------------------------
                ///<<<<EVENTO DE CIENCIA DA OPERACAO>>>>
                ///idLote|000000000015255
                ///evento|1
                ///Id|ID2102103511031029073900013955001000000001105112804102
                ///cOrgao|35
                ///tpAmb|2
                ///CNPJ|10290739000139
                ///    ou
                ///CPF|12345678901
                ///chNFe|35110310290739000139550010000000011051128041
                ///dhEvento|2011-03-03T08:06:00-03:00
                ///tpEvento|210210
                ///nSeqEvento|1
                ///verEvento|1.00
                ///descEvento|Ciencia da Operacao                                               <<opcional

                /// --------------------------------------------
                ///<<<<EVENTO DE DESCONHECIMENTO DA OPERACAO>>>>
                ///idLote|000000000015255
                ///evento|1
                ///Id|ID2102203511031029073900013955001000000001105112804102
                ///cOrgao|35
                ///tpAmb|2
                ///CNPJ|10290739000139
                ///    ou
                ///CPF|12345678901
                ///chNFe|35110310290739000139550010000000011051128041
                ///dhEvento|2011-03-03T08:06:00-03:00
                ///tpEvento|210220
                ///nSeqEvento|1
                ///verEvento|1.00
                ///descEvento|Desconhecimento da Operacao                                        <<opcional
                ///xJust|Justificativa.....

                /// --------------------------------------------
                ///<<<<EVENTO DE OPERACAO NAO REALIZADA>>>>
                ///idLote|000000000015255
                ///evento|1
                ///Id|ID2102403511031029073900013955001000000001105112804102
                ///cOrgao|35
                ///tpAmb|2
                ///CNPJ|10290739000139
                ///    ou
                ///CPF|12345678901
                ///chNFe|35110310290739000139550010000000011051128041
                ///dhEvento|2011-03-03T08:06:00-03:00
                ///tpEvento|210240
                ///nSeqEvento|1
                ///verEvento|1.00
                ///descEvento|Operacao nao realizada                                             <<opcional

                /// --------------------------------------------
                ///<<<<EVENTO EPEC>>>>
                ///idLote|000000000015255
                ///evento|1
                ///Id|ID2102403511031029073900013955001000000001105112804102
                ///cOrgao|35
                ///tpAmb|2
                ///CNPJ|10290739000139
                ///    ou
                ///CPF|12345678901
                ///chNFe|35110310290739000139550010000000011051128041
                ///dhEvento|2011-03-03T08:06:00-03:00
                ///tpEvento|110140
                ///nSeqEvento|1
                ///verEvento|1.00
                ///descEvento|EPEC                                                               <<opcional
                ///epec.cOrgaoAutor|35
                ///epec.tpAutor|1
                ///epec.verAplic|1.1.1.0
                ///epec.dhEmi|2011-03-03T08:06:00-03:00
                ///epec.tpNF|1
                ///epec.IE|ISENTO
                ///epec.dest.UF|SP
                ///epec.dest.CNPJ|10290739000139
                ///     ou
                ///epec.dest.CPF|12345678901
                ///     ou
                ///epec.dest.idEstrangeiro|9999999
                ///epec.dest.IE|nao pode conter o texto 'ISENTO'
                ///epec.dest.vNF|1234.00
                ///epec.dest.vICMS|1.00
                ///epec.dest.vST|2.00

                /// --------------------------------------------
                ///<<<<Evento pedido de prorrogação de ICMS | Evento cancelamento de pedido de prorrogação de ICMS>>>>
                ///idLote|000000000015255
                ///evento|1
                ///Id|ID2102403511031029073900013955001000000001105112804102
                ///cOrgao|35
                ///tpAmb|2
                ///CNPJ|10290739000139
                ///chNFe|35110310290739000139550010000000011051128041
                ///dhEvento|2011-03-03T08:06:00-03:00
                ///tpEvento|111500 ou 111501 ou 111502 ou 111503
                ///nSeqEvento|1
                ///verEvento|1.00
                ///descEvento|Pedido de Prorrogacao                                             <<opcional
                ///nProt|0000000000001
                ///itemPedido.numItem|1
                ///itemPedido.qtdeItem|1
                ///
                ///descEvento|Cancelamento de Pedido de Prorrogacao                             <<opcional
                ///nProt|0000000000001
                ///idPedidoCancelado|ID999999CHAVE-NFE-9

                /// --------------------------------------------
                ///<<<<Evento Fisco Resposta ao Pedido de Prorrogação>>>>
                ///idLote|000000000015255
                ///evento|1
                ///Id|ID2102403511031029073900013955001000000001105112804102
                ///cOrgao|35
                ///tpAmb|2
                ///CNPJ|10290739000139
                ///chNFe|35110310290739000139550010000000011051128041
                ///dhEvento|2011-03-03T08:06:00-03:00
                ///tpEvento|411500 ou 411501 ou 411502 ou 411503
                ///nSeqEvento|1
                ///verEvento|1.00
                ///descEvento|Fisco – Prorrogação ICMS remessa para industrialização            <<opcional
                ///idPedido|
                ///respPedido.statPrazo|
                ///respPedido.itemPedido.numItem|
                ///respPedido.itemPedido.statPedido|
                ///respPedido.itemPedido.justStatus|
                ///respPedido.itemPedido.justStaOutra|
                ///respCancPedido.statCancPedido|
                ///respCancPedido.justStatus|
                ///respCancPedido.justStaOutra|

                List <string>   cLinhas    = Functions.LerArquivo(NomeArquivoXML);
                ProrrogacaoICMS lpcICMS    = null;
                ItemPedido      itemPedido = null;
                const string    err0       = "Informe a linha \"respPedido.itemPedido.numItem\"";

                foreach (string cTexto in cLinhas)
                {
                    string[] dados = cTexto.Split(new char[] { '|' });
                    if (dados.Length == 1)
                    {
                        continue;
                    }

                    switch (dados[0].ToLower())
                    {
                    case "idlote":
                        this.dadosEnvEvento.idLote = dados[1].Trim();
                        break;

                    case "evento":
                        this.dadosEnvEvento.eventos.Add(new Evento());
                        break;

                    case "id":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].Id = dados[1].Trim();
                        break;

                    case "corgao":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].cOrgao = Convert.ToInt32("0" + dados[1].Trim());
                        break;

                    case "tpamb":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpAmb = Convert.ToInt32("0" + dados[1].Trim());
                        break;

                    case "tpemis":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpEmis = Convert.ToInt32("0" + dados[1].Trim());
                        break;

                    case "cnpj":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].CNPJ = dados[1].Trim();
                        break;

                    case "cpf":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].CPF = dados[1].Trim();
                        break;

                    case "chnfe":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].chNFe = dados[1].Trim();
                        break;

                    case "dhevento":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].dhEvento = dados[1].Trim();
                        break;

                    case "tpevento":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].tpEvento = dados[1].Trim();
                        break;

                    case "nseqevento":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].nSeqEvento = Convert.ToInt32("0" + dados[1].Trim());
                        break;

                    case "verevento":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].verEvento = dados[1].Trim();
                        break;

                    case "descevento":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].descEvento = dados[1].Trim();
                        break;

                    case "xcorrecao":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xCorrecao = dados[1].Trim();
                        break;

                    case "xconduso":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xCondUso = dados[1].Trim();
                        break;

                    case "xjust":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].xJust = dados[1].Trim();
                        break;

                    case "nprot":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].nProt = dados[1].Trim();
                        break;

                    ///
                    /// Prorrogacao/Cancelamento de ICMS
                    ///
                    case "itempedido.numitem":
                        lpcICMS = new ProrrogacaoICMS()
                        {
                            numItem = dados[1].Trim()
                        };
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].prorrogacaoICMS.Add(lpcICMS);
                        break;

                    case "itempedido.qtdeitem":
                        if (lpcICMS == null)
                        {
                            throw new Exception("Informe a linha \"itemPedido.numItem\"");
                        }
                        lpcICMS.qtdeItem = dados[1].Trim();
                        lpcICMS          = null;
                        break;

                    case "idpedidocancelado":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].idPedidoCancelado = dados[1].Trim();
                        break;

                    ///
                    /// Fisco – Prorrogação ICMS remessa para industrialização
                    ///
                    case "idpedido":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].idPedido = dados[1].Trim();
                        break;

                    case "resppedido.statprazo":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respPedido.statPrazo = dados[1].Trim();
                        break;

                    case "resppedido.itempedido.numitem":
                        itemPedido = new ItemPedido()
                        {
                            numItem = Convert.ToInt32("0" + dados[1].Trim())
                        };
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respPedido.itemPedido.Add(itemPedido);
                        break;

                    case "resppedido.itempedido.statpedido":
                        if (itemPedido == null)
                        {
                            throw new Exception(err0);
                        }
                        itemPedido.statPedido = Convert.ToInt32("0" + dados[1].Trim());
                        break;

                    case "resppedido.itempedido.juststatus":
                        if (itemPedido == null)
                        {
                            throw new Exception(err0);
                        }
                        itemPedido.justStatus = Convert.ToInt32("0" + dados[1].Trim());
                        break;

                    case "resppedido.itempedido.juststaoutra":
                        if (!string.IsNullOrEmpty(dados[1].Trim()))
                        {
                            if (itemPedido == null)
                            {
                                throw new Exception(err0);
                            }
                            itemPedido.justStaOutra = dados[1].Trim();
                        }
                        break;

                    case "respcancpedido.statcancpedido":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respCancPedido.statCancPedido = Convert.ToInt32("0" + dados[1].Trim());
                        break;

                    case "respcancpedido.juststatus":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respCancPedido.justStatus = Convert.ToInt32("0" + dados[1].Trim());
                        break;

                    case "respcancpedido.juststaoutra":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].respCancPedido.justStaOutra = dados[1].Trim();
                        break;

                    ///
                    /// EPEC
                    ///
                    case "epec.corgaoautor":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.cOrgaoAutor = Convert.ToInt32("0" + dados[1].Trim());
                        break;

                    case "epec.dhemi":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dhEmi = dados[1].Trim();
                        break;

                    case "epec.ie":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.IE = dados[1].Trim();
                        break;

                    case "epec.veraplic":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.verAplic = dados[1].Trim();
                        break;

                    case "epec.tpautor":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.tpAutor = NFe.Components.EnumHelper.StringToEnum <NFe.ConvertTxt.TpcnTipoAutor>(dados[1].Trim());
                        break;

                    case "epec.tpnf":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.tpNF = NFe.Components.EnumHelper.StringToEnum <NFe.ConvertTxt.TpcnTipoNFe>(dados[1].Trim());
                        break;

                    case "epec.dest.idestrangeiro":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.idEstrangeiro = dados[1].Trim();
                        break;

                    case "epec.dest.cnpj":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.CNPJ = dados[1].Trim();
                        break;

                    case "epec.dest.cpf":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.CPF = dados[1].Trim();
                        break;

                    case "epec.dest.ie":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.IE = dados[1].Trim();
                        break;

                    case "epec.dest.uf":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.UF = dados[1].Trim();
                        break;

                    case "epec.dest.vnf":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vNF = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator));
                        break;

                    case "epec.dest.vicms":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vICMS = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator));
                        break;

                    case "epec.dest.vst":
                        this.dadosEnvEvento.eventos[this.dadosEnvEvento.eventos.Count - 1].epec.dest.vST = Convert.ToDouble("0" + dados[1].Trim().Replace(".", System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator));
                        break;
                    }
                }
                foreach (Evento evento in this.dadosEnvEvento.eventos)
                {
                    ConvertTxt.tpEventos tpe = EnumHelper.StringToEnum <ConvertTxt.tpEventos>(evento.tpEvento);
                    switch (tpe)
                    {
                    case ConvertTxt.tpEventos.tpEvEPEC:
                    case ConvertTxt.tpEventos.tpEvCancelamentoNFe:
                    case ConvertTxt.tpEventos.tpEvCienciaOperacao:
                    case ConvertTxt.tpEventos.tpEvConfirmacaoOperacao:
                    case ConvertTxt.tpEventos.tpEvDesconhecimentoOperacao:
                    case ConvertTxt.tpEventos.tpEvOperacaoNaoRealizada:
                        evento.nSeqEvento = 1;
                        break;

                    case ConvertTxt.tpEventos.tpEvEncerramentoMDFe:
                    case ConvertTxt.tpEventos.tpEvInclusaoCondutor:
                    case ConvertTxt.tpEventos.tpEvRegistroPassagem:
                    case ConvertTxt.tpEventos.tpEvRegistroPassagemBRid:
                        break;

                    case ConvertTxt.tpEventos.tpEvPedProrrogacao_ICMS_1:     //pedido de prorrogacao 1
                    case ConvertTxt.tpEventos.tpEvPedProrrogacao_ICMS_2:     //pedido de prorrogacao 2
                        if (string.IsNullOrEmpty(evento.descEvento))
                        {
                            evento.descEvento = "Pedido de Prorrogacao";
                        }
                        break;

                    case ConvertTxt.tpEventos.tpEvCancPedProrrogacao_ICMS_1:     //pedido de cancelamento 1
                    case ConvertTxt.tpEventos.tpEvCancPedProrrogacao_ICMS_2:     //pedido de cancelamento 2
                        if (string.IsNullOrEmpty(evento.descEvento))
                        {
                            evento.descEvento = "Cancelamento de Pedido de Prorrogacao";
                        }
                        break;

                    case ConvertTxt.tpEventos.tpEvFiscoRespPedProrrogacao_ICMS_1:
                    case ConvertTxt.tpEventos.tpEvFiscoRespPedProrrogacao_ICMS_2:
                    case ConvertTxt.tpEventos.tpEvFiscoRespCancPedProrrogacao_ICMS_1:
                    case ConvertTxt.tpEventos.tpEvFiscoRespCancPedProrrogacao_ICMS_2:
                        if (string.IsNullOrEmpty(evento.descEvento))
                        {
                            evento.descEvento = "Fisco – Prorrogacao ICMS remessa para industrializacao";
                        }
                        break;
                    }
                    if (string.IsNullOrEmpty(evento.descEvento))
                    {
                        evento.descEvento = EnumHelper.GetDescription(tpe);
                    }

                    if (string.IsNullOrEmpty(evento.verEvento))
                    {
                        evento.verEvento = "1.00";
                    }

                    if (evento.nSeqEvento == 0)
                    {
                        evento.nSeqEvento = 1;
                    }

                    if (evento.tpAmb == 0)
                    {
                        evento.tpAmb = Empresas.Configuracoes[emp].AmbienteCodigo;
                    }

                    if (evento.cOrgao == 0)
                    {
                        evento.cOrgao = Convert.ToInt32(evento.chNFe.Substring(0, 2));
                    }

                    if (evento.tpEmis == 0)
                    {
                        evento.tpEmis = Convert.ToInt32(evento.chNFe.Substring(34, 1));
                    }

                    if (string.IsNullOrEmpty(evento.Id))
                    {
                        evento.Id = TpcnResources.ID.ToString() + evento.tpEvento + evento.chNFe + evento.nSeqEvento.ToString("00");
                    }

                    if (string.IsNullOrEmpty(evento.xCondUso))
                    {
                        if (evento.descEvento == "Carta de Correcao")
                        {
                            evento.xCondUso =
                                "A Carta de Correcao e disciplinada pelo paragrafo 1o-A do art. 7o do Convenio S/N, " +
                                "de 15 de dezembro de 1970 e pode ser utilizada para regularizacao de erro ocorrido na emissao de " +
                                "documento fiscal, desde que o erro nao esteja relacionado com: I - as variaveis que determinam o " +
                                "valor do imposto tais como: base de calculo, aliquota, diferenca de preco, quantidade, valor da " +
                                "operacao ou da prestacao; II - a correcao de dados cadastrais que implique mudanca do remetente " +
                                "ou do destinatario; III - a data de emissao ou de saida.";
                        }
                        else
                        {
                            evento.xCondUso =
                                "A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser " +
                                "utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado " +
                                "com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, " +
                                "quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do " +
                                "remetente ou do destinatário; III - a data de emissão ou de saída.";
                        }
                    }
                }

                #endregion --txt
            }
            else
            {
                //<?xml version="1.0" encoding="UTF-8"?>
                //<envEvento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe">
                //  <idLote>000000000015255</idLote>
                //  <evento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe">
                //    <infEvento Id="ID1101103511031029073900013955001000000001105112804108">
                //      <cOrgao>35</cOrgao>
                //      <tpAmb>2</tpAmb>
                //      <CNPJ>10290739000139</CNPJ>
                //      <chNFe>35110310290739000139550010000000011051128041</chNFe>
                //      <dhEvento>2011-03-03T08:06:00-03:00</dhEvento>
                //      <tpEvento>110110</tpEvento>
                //      <nSeqEvento>8</nSeqEvento>
                //      <verEvento>1.00</verEvento>
                //      <detEvento versao="1.00">
                //          <descEvento>Carta de Correção</descEvento>
                //          <xCorrecao>Texto de teste para Carta de Correção. Conteúdo do campo xCorrecao.</xCorrecao>
                //          <xCondUso>A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do remetente ou do destinatário; III - a data de emissão ou de saída.</xCondUso>
                //      </detEvento>
                //    </infEvento>
                //  </evento>
                //</envEvento>

                base.EnvEvento(emp, dadosEnvEvento);
            }
        }
コード例 #13
0
ファイル: TaskInutilizacao.cs プロジェクト: farukaf/UniNFE
        public override void Execute()
        {
            int emp = Empresas.FindEmpresaByThread();

            try
            {
                dadosPedInut = new DadosPedInut(emp);
                PedInut(emp, NomeArquivoXML);

                if (vXmlNfeDadosMsgEhXML)  //danasa 12-9-2009
                {
                    //Definir o objeto do WebService
                    WebServiceProxy wsProxy = ConfiguracaoApp.DefinirWS(Servico, emp, dadosPedInut.cUF, dadosPedInut.tpAmb, dadosPedInut.tpEmis, dadosPedInut.versao, dadosPedInut.mod.ToString());
                    System.Net.SecurityProtocolType securityProtocolType = WebServiceProxy.DefinirProtocoloSeguranca(dadosPedInut.cUF, dadosPedInut.tpAmb, dadosPedInut.tpEmis, PadroesNFSe.NaoIdentificado, Servico);

                    //Criar objetos das classes dos serviços dos webservices do SEFAZ
                    object oInutilizacao = wsProxy.CriarObjeto(wsProxy.NomeClasseWS);
                    object oCabecMsg     = wsProxy.CriarObjeto(NomeClasseCabecWS(dadosPedInut.cUF, Servico));

                    //Atribuir conteúdo p ara duas propriedades da classe nfeCabecMsg
                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.cUF.ToString(), dadosPedInut.cUF.ToString());
                    wsProxy.SetProp(oCabecMsg, NFe.Components.TpcnResources.versaoDados.ToString(), dadosPedInut.versao);

                    //Criar objeto da classe de assinatura digita
                    AssinaturaDigital oAD = new AssinaturaDigital();

                    //Assinar o XML
                    oAD.Assinar(NomeArquivoXML, emp, Convert.ToInt32(dadosPedInut.cUF));

                    //Invocar o método que envia o XML para o SEFAZ
                    oInvocarObj.Invocar(wsProxy,
                                        oInutilizacao,
                                        wsProxy.NomeMetodoWS[0],
                                        oCabecMsg, this,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioXML,
                                        Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).RetornoXML,
                                        true,
                                        securityProtocolType);

                    //Ler o retorno do webservice
                    LerRetornoInut();
                }
                else
                {
                    string f = Path.GetFileNameWithoutExtension(NomeArquivoXML) + ".xml";

                    if (NomeArquivoXML.IndexOf(Empresas.Configuracoes[emp].PastaValidar, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        f = Path.Combine(Empresas.Configuracoes[emp].PastaValidar, f);
                    }
                    oGerarXML.Inutilizacao(f,
                                           dadosPedInut.tpAmb,
                                           dadosPedInut.tpEmis,
                                           dadosPedInut.cUF,
                                           dadosPedInut.ano,
                                           dadosPedInut.CNPJ,
                                           dadosPedInut.mod,
                                           dadosPedInut.serie,
                                           dadosPedInut.nNFIni,
                                           dadosPedInut.nNFFin,
                                           dadosPedInut.xJust,
                                           dadosPedInut.versao);
                }
            }
            catch (Exception ex)
            {
                string ExtRet = string.Empty;

                if (vXmlNfeDadosMsgEhXML) //Se for XML
                {
                    ExtRet = Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioXML;
                }
                else //Se for TXT
                {
                    ExtRet = Propriedade.Extensao(Propriedade.TipoEnvio.PedInu).EnvioTXT;
                }

                try
                {
                    //Gravar o arquivo de erro de retorno para o ERP, caso ocorra
                    TFunctions.GravarArqErroServico(NomeArquivoXML, ExtRet, Propriedade.ExtRetorno.Inu_ERR, ex);
                }
                catch
                {
                    //Se falhou algo na hora de gravar o retorno .ERR (de erro) para o ERP, infelizmente não posso fazer mais nada.
                    //Wandrey 09/03/2010
                }
            }
            finally
            {
                try
                {
                    if (!vXmlNfeDadosMsgEhXML) //Se for o TXT para ser transformado em XML, vamos excluir o TXT depois de gerado o XML
                    {
                        Functions.DeletarArquivo(NomeArquivoXML);
                    }
                }
                catch
                {
                    //Se falhou algo na hora de deletar o XML de inutilização, infelizmente não posso
                    //fazer mais nada. Com certeza o uninfe sendo restabelecido novamente vai tentar enviar o mesmo
                    //xml de inutilização para o SEFAZ. Este erro pode ocorrer por falha no HD, rede, Permissão de pastas, etc. Wandrey 23/03/2010
                }
            }
        }
コード例 #14
0
        public override void Execute()
        {
            int           emp         = Empresas.FindEmpresaByThread();
            List <string> arquivosNFe = new List <string>();

            //Aguardar a assinatura de todos os arquivos da pasta de lotes
            arquivosNFe = oAux.ArquivosPasta(Empresas.Configuracoes[emp].PastaXmlEmLote, "*" + Propriedade.Extensao(Propriedade.TipoEnvio.NFe).EnvioXML);
            if (arquivosNFe.Count == 0)
            {
                if (NomeArquivoXML.IndexOf(Propriedade.Extensao(Propriedade.TipoEnvio.MontarLote).EnvioTXT) >= 0)
                {
                    try
                    {
                        StringBuilder xml = new StringBuilder();
                        xml.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
                        xml.Append("<MontarLoteNFe>");
                        foreach (var filename in File.ReadAllLines(NomeArquivoXML, Encoding.Default))
                        {
                            xml.AppendFormat("<ArquivoNFe>{0}</ArquivoNFe>", filename + (filename.ToLower().EndsWith(Propriedade.Extensao(Propriedade.TipoEnvio.NFe).EnvioXML) ? "" : Propriedade.Extensao(Propriedade.TipoEnvio.NFe).EnvioXML));
                        }
                        xml.Append("</MontarLoteNFe>");
                        File.WriteAllText(Path.Combine(Empresas.Configuracoes[emp].PastaXmlEmLote, Path.GetFileName(NomeArquivoXML.Replace(Propriedade.Extensao(Propriedade.TipoEnvio.MontarLote).EnvioTXT, Propriedade.Extensao(Propriedade.TipoEnvio.MontarLote).EnvioXML))), xml.ToString());

                        //Deletar o arquivo de solicitação de montagem do lote de NFe
                        FileInfo oArquivo = new FileInfo(NomeArquivoXML);
                        oArquivo.Delete();
                    }
                    catch (Exception ex)
                    {
                        try
                        {
                            TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.MontarLote).EnvioTXT, Propriedade.ExtRetorno.MontarLote_ERR, ex);
                        }
                        catch
                        {
                            //Se deu algum erro na hora de gravar o arquivo de erro de retorno para o ERP, infelizmente não poderemos fazer nada
                            //pois deve estar ocorrendo alguma falha de rede, hd, permissão de acesso a pasta ou arquivos, etc. Wandrey 22/03/2010
                            //TODO: Não poderia gravar algum LOG para análise? Erro de rede normalmente é erro de IO
                        }
                    }
                }
                else
                {
                    List <ArquivoXMLDFe> notas     = new List <ArquivoXMLDFe>();
                    FileStream           fsArquivo = null;
                    FluxoNfe             fluxoNfe  = new FluxoNfe();

                    try
                    {
                        try
                        {
                            XmlDocument doc = new XmlDocument();                                                             //Criar instância do XmlDocument Class
                            fsArquivo = new FileStream(NomeArquivoXML, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); //Abrir um arquivo XML usando FileStream
                            doc.Load(fsArquivo);                                                                             //Carregar o arquivo aberto no XmlDocument

                            string versaoXml = string.Empty;

                            XmlNodeList documentoList = doc.GetElementsByTagName("MontarLoteNFe"); //Pesquisar o elemento Documento no arquivo XML
                            foreach (XmlNode documentoNode in documentoList)
                            {
                                XmlElement documentoElemento = (XmlElement)documentoNode;

                                int QtdeArquivo = documentoElemento.GetElementsByTagName("ArquivoNFe").Count;

                                for (int d = 0; d < QtdeArquivo; d++)
                                {
                                    string arquivoNFe = Empresas.Configuracoes[emp].PastaXmlEmLote + "\\temp\\" + documentoElemento.GetElementsByTagName("ArquivoNFe")[d].InnerText;

                                    if (File.Exists(arquivoNFe))
                                    {
                                        XmlDocument conteudoXMLNFe = new XmlDocument();
                                        conteudoXMLNFe.Load(arquivoNFe);

                                        DadosNFeClass oDadosNfe = LerXMLNFe(conteudoXMLNFe);

                                        if (string.IsNullOrEmpty(versaoXml))
                                        {
                                            versaoXml = oDadosNfe.versao;
                                        }

                                        if (!fluxoNfe.NFeComLote(oDadosNfe.chavenfe))
                                        {
                                            notas.Add(new ArquivoXMLDFe()
                                            {
                                                NomeArquivoXML = arquivoNFe, ConteudoXML = conteudoXMLNFe
                                            });
                                        }
                                        else
                                        {
                                            throw new Exception("Arquivo: " + arquivoNFe + " já está no fluxo de envio e não será incluido em novo lote.");
                                        }
                                    }
                                    else
                                    {
                                        throw new Exception("Arquivo: " + arquivoNFe + " não existe e não será incluido no lote!");
                                    }
                                }
                            }

                            fsArquivo.Close();

                            XmlDocument     xmlLote     = LoteNfe(notas, versaoXml);
                            TaskNFeRecepcao nfeRecepcao = new TaskNFeRecepcao(xmlLote);
                            nfeRecepcao.Execute();
                        }
                        catch
                        {
                            if (fsArquivo != null)
                            {
                                fsArquivo.Close();
                            }
                        }

                        //Deletar o arquivo de solicitão de montagem do lote de NFe
                        FileInfo oArquivo = new FileInfo(NomeArquivoXML);
                        oArquivo.Delete();
                    }
                    catch (Exception ex)
                    {
                        try
                        {
                            TFunctions.GravarArqErroServico(NomeArquivoXML, Propriedade.Extensao(Propriedade.TipoEnvio.MontarLote).EnvioXML, Propriedade.ExtRetorno.MontarLote_ERR, ex);
                        }
                        catch
                        {
                            //Se deu algum erro na hora de gravar o arquivo de erro de retorno para o ERP, infelizmente não poderemos fazer nada
                            //pois deve estar ocorrendo alguma falha de rede, hd, permissão de acesso a pasta ou arquivos, etc. Wandrey 22/03/2010
                            //TODO: Não poderia gravar algum LOG para análise? Erro de rede normalmente é erro de IO
                        }
                    }
                }
            }
        }