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); } }
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); }
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); } }