Пример #1
0
 public static string ToPDFCartaCorrecao(TNfeProc nota, CartaCorrecao.TProcEvento evento, ConfiguracaoHiperNFe config)
 {
     try
     {
         var arquivoPDF = evento.NomeArquivo.Replace(".xml", ".pdf");
         var danfe      = Print.CartaCorrecao(nota, evento, config);
         danfe.ExportToDisk(ExportFormatType.PortableDocFormat, arquivoPDF);
         return(arquivoPDF);
     }
     catch (Exception ex)
     {
         throw new Exception("Erro ao gerar o arquivo do DANFE: " + ex.Message);
     }
 }
Пример #2
0
        public static ReportDocument CartaCorrecao(TNfeProc nfe, CartaCorrecao.TProcEvento evento, ConfiguracaoHiperNFe config)
        {
            var doc     = XDocument.Load(evento.NomeArquivo);
            var dataSet = new DataSet();

            dataSet.ReadXml(doc.CreateReader());

            var cartaCorrecao = new ImpressaoCartaCorrecao.CartaCorrecao();

            cartaCorrecao.Load(Path.Combine(Environment.CurrentDirectory, "CartaCorrecao.rpt"), OpenReportMethod.OpenReportByDefault);
            var imageds = new ImpressaoCartaCorrecao.ImageDataSet();

            imageds.Images.AddImagesRow(Logo.ToBytes(config), Barras.ToArray(evento.retEvento.infEvento.chNFe), config.Site);


            var row = ((ImpressaoCartaCorrecao.ImageDataSet.CartaCorrecaoRow)(imageds.CartaCorrecao.NewRow()));

            #region Nota Fiscal Eletrônica
            row.Modelo        = Funcoes.ConvertEnumToString(nfe.NFe.infNFe.ide.mod);
            row.Serie         = nfe.NFe.infNFe.ide.serie;
            row.Numero        = nfe.NFe.infNFe.ide.nNF;
            row.MesAnoEmissao = nfe.NFe.infNFe.ide.dEmi.Substring(5, 2) + "/" + nfe.NFe.infNFe.ide.dEmi.Substring(2, 2);
            row.ChaveAcesso   = nfe.protNFe.infProt.chNFe;
            #endregion Nota Fiscal Eletrônica

            #region Carta de Correção Eletrônica
            row.Orgao            = Funcoes.ConvertEnumToString(evento.evento.infEvento.cOrgao);
            row.Ambiente         = Funcoes.ConvertEnumToString(evento.evento.infEvento.tpAmb);
            row.DataHoraEvento   = evento.evento.infEvento.dhEvento;
            row.Evento           = Funcoes.ConvertEnumToString(evento.evento.infEvento.tpEvento);
            row.DescricaoEvento  = Funcoes.ConvertEnumToString(evento.evento.infEvento.detEvento.descEvento);
            row.SequenciaEvento  = evento.evento.infEvento.nSeqEvento;
            row.VersaoEvento     = Funcoes.ConvertEnumToString(evento.evento.infEvento.verEvento);
            row.Status           = evento.retEvento.infEvento.cStat + " - " + evento.retEvento.infEvento.xMotivo;
            row.Protocolo        = evento.retEvento.infEvento.nProt;
            row.DataHoraRegistro = evento.retEvento.infEvento.dhRegEvento;
            #endregion Carta de Correção Eletrônica

            #region Emitente
            row.RazaoSocial_Emit = nfe.NFe.infNFe.emit.xNome;
            row.CNPJCPF_Emit     = nfe.NFe.infNFe.emit.Item;
            row.Endereco_Emit    = nfe.NFe.infNFe.emit.enderEmit.xLgr + " " + nfe.NFe.infNFe.emit.enderEmit.nro + " " + nfe.NFe.infNFe.emit.enderEmit.xCpl;
            row.Bairro_Emit      = nfe.NFe.infNFe.emit.enderEmit.xBairro;
            row.CEP_Emit         = nfe.NFe.infNFe.emit.enderEmit.CEP;
            row.Municipio_Emit   = nfe.NFe.infNFe.emit.enderEmit.xMun;
            row.FoneFax_Emit     = nfe.NFe.infNFe.emit.enderEmit.fone;
            row.Estado_Emit      = nfe.NFe.infNFe.emit.enderEmit.UF.ToString();
            row.IE_Emit          = nfe.NFe.infNFe.emit.IE;
            #endregion Emitente

            #region Destinatário / Remetente
            row.RazaoSocial_Dest = nfe.NFe.infNFe.dest.xNome;
            row.CNPJCPF_Dest     = nfe.NFe.infNFe.dest.Item;
            row.Endereco_Dest    = nfe.NFe.infNFe.dest.enderDest.xLgr + " " + nfe.NFe.infNFe.dest.enderDest.nro + " " + nfe.NFe.infNFe.dest.enderDest.xCpl;
            row.Bairro_Dest      = nfe.NFe.infNFe.dest.enderDest.xBairro;
            row.CEP_Dest         = nfe.NFe.infNFe.dest.enderDest.CEP;
            row.Municipio_Dest   = nfe.NFe.infNFe.dest.enderDest.xMun;
            row.FoneFax_Dest     = nfe.NFe.infNFe.dest.enderDest.fone;
            row.Estado_Dest      = nfe.NFe.infNFe.dest.enderDest.UF.ToString();
            row.IE_Dest          = nfe.NFe.infNFe.dest.IE;
            #endregion Destinatário / Remetente

            row.CondicoesUso = Funcoes.ConvertEnumToString(evento.evento.infEvento.detEvento.xCondUso);
            row.Correcao     = evento.evento.infEvento.detEvento.xCorrecao;

            imageds.CartaCorrecao.AddCartaCorrecaoRow(row);
            cartaCorrecao.SetDataSource(dataSet);
            cartaCorrecao.Database.Tables["Images"].SetDataSource(imageds);
            return(cartaCorrecao);
        }
Пример #3
0
        public CartaCorrecao.TRetEnvEvento CartaCorrecao(TNfeProc nota, string Correcao, X509Certificate2 pCertificado, int numLote, int nSequencia, TAmb ambiente, out ACBr.Net.NFe.CartaCorrecao.TProcEvento procEvento)
        {
            string arqPedCorecao  = _PastaLog + nota.NFe.infNFe.Id.Substring(3) + "-ped-evento.xml";//-ped-cce.xml ???
            string retPedCorrecao = _PastaLog + nota.NFe.infNFe.Id.Substring(3) + "-eve.xml";

            C_WebService.ListaUrl listaURL = default(C_WebService.ListaUrl);
            listaURL = WsUrls.BuscaURL(nota.NFe.infNFe.ide.cUF, ambiente);

            #region evento
            CartaCorrecao.TEvento evento = new CartaCorrecao.TEvento();
            evento.versao = "1.00";

            #region infEvento
            CartaCorrecao.TEventoInfEvento infEvento = new CartaCorrecao.TEventoInfEvento();
            infEvento.tpAmb           = ambiente;
            infEvento.chNFe           = nota.NFe.infNFe.Id.Substring(3);
            infEvento.cOrgao          = PegarCodigoOrgaoUF(nota.NFe.infNFe.ide.cUF);
            infEvento.dhEvento        = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzzz");
            infEvento.Id              = "ID" + "110110" + nota.NFe.infNFe.Id.Substring(3) + nSequencia.ToString("D2");
            infEvento.ItemElementName = ACBr.Net.NFe.CartaCorrecao.ItemChoiceTypeCC.CNPJ;
            infEvento.Item            = nota.NFe.infNFe.emit.Item;
            infEvento.nSeqEvento      = nSequencia.ToString();
            infEvento.verEvento       = ACBr.Net.NFe.CartaCorrecao.TEventoInfEventoVerEvento.Item100;
            infEvento.tpEvento        = ACBr.Net.NFe.CartaCorrecao.TEventoInfEventoTpEvento.Item110110;

            #region detEvento
            CartaCorrecao.TEventoInfEventoDetEvento detEvento = new CartaCorrecao.TEventoInfEventoDetEvento();
            detEvento.descEvento = ACBr.Net.NFe.CartaCorrecao.TEventoInfEventoDetEventoDescEvento.CartadeCorrecao;
            detEvento.versao     = ACBr.Net.NFe.CartaCorrecao.TEventoInfEventoDetEventoVersao.Item100;
            detEvento.xCondUso   = ACBr.Net.NFe.CartaCorrecao.TEventoInfEventoDetEventoXCondUso.ACartadeCorrecaoedisciplinadapeloparagrafo1oAdoart7odoConvenioSNde15dedezembrode1970epodeserutilizadapararegularizacaodeerroocorridonaemissaodedocumentofiscaldesdequeoerronaoestejarelacionadocomIasvariaveisquedeterminamovalordoimpostotaiscomobasedecalculoaliquotadiferencadeprecoquantidadevalordaoperacaooudaprestacaoIIacorrecaodedadoscadastraisqueimpliquemudancadoremetenteoudodestinatarioIIIadatadeemissaooudesaida;
            detEvento.xCorrecao  = Correcao;
            #endregion detEvento

            infEvento.detEvento = detEvento;
            #endregion infEvento

            evento.infEvento = infEvento;

            XmlDocument xmldoc = new XmlDocument();
            xmldoc.LoadXml(Funcoes.RemoveNameSpaceFromXml(evento.Serialize()));
            xmldoc = CertificadoDigital.Assinar(xmldoc, "infEvento", pCertificado);
            xmldoc.Save(arqPedCorecao);

            #endregion evento

            dynamic envEvento = GeraLoteEvento(arqPedCorecao, numLote);

            try
            {
                RecepcaoEvento.nfeCabecMsg    cab   = new RecepcaoEvento.nfeCabecMsg();
                RecepcaoEvento.RecepcaoEvento wsMsg = default(RecepcaoEvento.RecepcaoEvento);

                // UF E VERSÃO DO CABEÇALHO
                cab.cUF         = PegarCodigoUF(nota.NFe.infNFe.ide.cUF);
                cab.versaoDados = "1.00";

                //CABEÇALHO USADA PARA ENVIO DE LOTE
                wsMsg = new RecepcaoEvento.RecepcaoEvento(listaURL.UrlRecepcaoEvento);
                wsMsg.nfeCabecMsgValue = cab;
                wsMsg.Timeout          = 100000;
                wsMsg.ClientCertificates.Add(pCertificado);
                wsMsg.SoapVersion = SoapProtocolVersion.Soap12;

                //RETORNO DA SEFAZ
                XmlElement  strRetorno = wsMsg.nfeRecepcaoEvento(envEvento);
                XmlDocument xmlRetorno = new XmlDocument();
                xmlRetorno.LoadXml(strRetorno.OuterXml);
                xmlRetorno.Save(retPedCorrecao);

                ACBr.Net.NFe.CartaCorrecao.TRetEnvEvento retCorrecaoNFe = ACBr.Net.NFe.CartaCorrecao.TRetEnvEvento.LoadFromFile(retPedCorrecao);

                //saída
                procEvento           = new CartaCorrecao.TProcEvento();
                procEvento.evento    = ACBr.Net.NFe.CartaCorrecao.TEvento.Deserialize(xmldoc.OuterXml);
                procEvento.retEvento = retCorrecaoNFe.retEvento[0];
                procEvento.versao    = "1.00";

                return(retCorrecaoNFe);
            }
            catch (Exception ex)
            {
                throw new System.InvalidOperationException("Erro ao corrigir NFe. Erro: " + ex.Message);
            }
        }