public static NFeProc XmlStringParaNFeProc(string xml) { NFeProc nfeProc = null; object retorno = CarregarClasse <NFeProc>(xml); if (retorno == null) { retorno = CarregarClasse <NFe>(xml); } if (retorno == null) { throw new Exception("Formato de XML inválido"); } if (retorno is NFeProc proc) { nfeProc = proc; } else { nfeProc = new NFeProc { NFe = (NFe)retorno }; } return(nfeProc); }
private void popularForm(NFeProc nfe) { /* Populando tab Identificação */ txtNaturezaOperacao.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Identificacao.natOp; txtNumero.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Identificacao.nNF; txtModelo.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Identificacao.mod; txtSerie.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Identificacao.serie.ToString(); txtDataEmissao.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Identificacao.dhEmi.ToShortDateString(); /* Populando tab Emitente */ txtRazaoSocial.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.xNome; txtNomeFantasia.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.xFant; txtCpfCnpjEmitente.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.CNPJ; txtInscricaoEstadual.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.IE; txtLogradouroEmitente.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.Endereco.xLgr; txtNroEmitente.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.Endereco.nro; txtMunicipioEmitente.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.Endereco.xMun; txtUFEmitente.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.Endereco.UF; /* Populando tab Destinatário */ txtDestNomeFantasia.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.xNome; txtDestCpfCnpj.Text = string.IsNullOrEmpty(nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.CNPJ) ? nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.CPF : nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.CNPJ; txtDestEmail.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.email; txtDestLogradouro.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.Endereco.xLgr; txtDestNumero.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.Endereco.nro; txtDestMunicipio.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.Endereco.xMun; txtDestUF.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.Endereco.UF; txtDestCEP.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.Endereco.CEP; txtDestBairro.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.Endereco.xBairro; }
internal static DanfeViewModel CreateFromXmlString(string xml) { try { var nfe = NFeProc.Load(xml); return(CreateFromXml(nfe)); } catch (System.Exception ex) { throw new System.Exception("Não foi possível interpretar o texto Xml.", ex); } }
private void popularForm(NFeProc nfe) { // Limpa o grid Grid.Rows.Clear(); /* Populando tab Identificação */ txtnometipooperacao.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Identificacao.natOp; txtnumeronota.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Identificacao.nNF; //txtModelo.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Identificacao.mod; txtserienota.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Identificacao.serie.ToString(); txtdtemissao.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Identificacao.dhEmi.ToShortDateString(); /* Populando tab Emitente */ txtnomefornecedor.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.xNome; //txtnomefornecedor.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.xFant; txtCpfCnpjEmitente.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.CNPJ; //txtInscricaoEstadual.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.IE; //txtLogradouroEmitente.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.Endereco.xLgr; //txtNroEmitente.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.Endereco.nro; //txtMunicipioEmitente.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.Endereco.xMun; //txtUFEmitente.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Emitente.Endereco.UF; /* Populando tab Destinatário */ //txtDestNomeFantasia.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.xNome; //txtDestCpfCnpj.Text = string.IsNullOrEmpty(nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.CNPJ) ? nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.CPF : nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.CNPJ; //txtDestEmail.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.email; //txtDestLogradouro.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.Endereco.xLgr; //txtDestNumero.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.Endereco.nro; //txtDestMunicipio.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.Endereco.xMun; //txtDestUF.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.Endereco.UF; //txtDestCEP.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.Endereco.CEP; //txtDestBairro.Text = nfe.NotaFiscalEletronica.InformacoesNFe.Destinatario.Endereco.xBairro; int num = nfe.NotaFiscalEletronica.InformacoesNFe.Detalhe.Count(); string teste = ""; for (int i = 0; i < num; i++) { //define um array de strings com nCOlunas string[] linhaDados = new string[6]; linhaDados[0] = nfe.NotaFiscalEletronica.InformacoesNFe.Detalhe[i].Produtos.cProd; linhaDados[1] = nfe.NotaFiscalEletronica.InformacoesNFe.Detalhe[i].Produtos.xProd; linhaDados[2] = nfe.NotaFiscalEletronica.InformacoesNFe.Detalhe[i].Produtos.qCom.ToString(); linhaDados[3] = nfe.NotaFiscalEletronica.InformacoesNFe.Detalhe[i].Produtos.vUnCom.ToString(); linhaDados[4] = ""; linhaDados[5] = ""; Grid.Rows.Add(linhaDados); } }
internal static DanfeViewModel CreateFromXmlStream(Stream stream) { try { var nfe = NFeProc.Load(stream); return(CreateFromXml(nfe)); } catch (System.Exception ex) { if (ex.InnerException is XmlException e) { throw new System.Exception($"Não foi possível interpretar o Xml. Linha {e.LineNumber} Posição {e.LinePosition}."); } throw new XmlException("O Xml não parece ser uma NF-e processada.", ex); } }
public NFeRetAutorizacaoResposta(string xmlEnvio, string xmlRetorno, string envelopeSoap, string respostaWs, bool loadRetorno = true) : base(xmlEnvio, xmlRetorno, envelopeSoap, respostaWs, loadRetorno) { NFeAutorizadas = new NFeProc[0]; }
public static DanfeViewModel CreateFromXml(NFeProc procNfe) { var model = new DanfeViewModel(); var nfe = procNfe.NFe; var infNfe = nfe.InfNFe; var ide = infNfe.Ide; model.TipoEmissao = ide.TipoEmissao; if (ide.Modelo != NFeModelo.NFe) { throw new NotSupportedException("Somente o mod==55 está implementado."); } if (!FormasEmissaoSuportadas.Contains(model.TipoEmissao)) { throw new NotSupportedException($"O tpEmis {ide.TipoEmissao} não é suportado."); } model.Orientacao = ide.TipoImpressao == TipoImpressao.NormalRetrato ? Orientacao.Retrato : Orientacao.Paisagem; var infProt = procNfe.ProtNFe.InfProt; model.CodigoStatusReposta = infProt.CStat; model.DescricaoStatusReposta = infProt.Motivo; model.TipoAmbiente = (int)ide.TpAmb; model.NfNumero = (int)ide.NumeroNFe; model.NfSerie = ide.Serie; model.NaturezaOperacao = ide.NatOp; model.ChaveAcesso = procNfe.NFe.InfNFe.Id.Substring(3); model.TipoNF = (int)ide.TipoNFe; model.Emitente = ObterEmitente(infNfe.Emitente); model.Destinatario = ObterDestinatario(infNfe.Destinatario); #region Compra / Entrega / Retirada if (infNfe.Retirada != null) { model.LocalRetirada = ObterLocalRetirada(infNfe.Retirada); } if (infNfe.Entrega != null) { model.LocalEntrega = ObterLocalEntrega(infNfe.Entrega); } model.NotasFiscaisReferenciadas = ide.NFref.Select(x => x.ToString()).ToList(); if (infNfe.Compra != null) { model.Contrato = infNfe.Compra.XCont; model.NotaEmpenho = infNfe.Compra.XNEmp; model.Pedido = infNfe.Compra.XPed; } #endregion #region Detalhes foreach (var det in infNfe.Detalhe) { var produto = new ProdutoViewModel { Codigo = det.Produto.Codigo, Descricao = det.Produto.XProd, Ncm = det.Produto.NCM, Cfop = det.Produto.CFOP, Unidade = det.Produto.UCom, Quantidade = (double)det.Produto.QCom, ValorUnitario = (double)det.Produto.VUnCom, ValorTotal = (double)det.Produto.VProd, InformacoesAdicionais = det.InfAdProd }; var imposto = det.Imposto; if (imposto != null) { var icms = imposto.Imposto; if (icms != null) { var modelIcms = ObterIcms(icms); produto.ValorIcms = modelIcms.VIcms; produto.BaseIcms = modelIcms.VBc; produto.AliquotaIcms = modelIcms.PIcms; produto.OCst = modelIcms.OrigemMercadoria.GetDFeValue() + modelIcms.Cst + modelIcms.Csosn; } if (imposto.Ipi.Imposto is IpiTrib ipi) { produto.ValorIpi = (double?)ipi.VIpi; produto.AliquotaIpi = (double?)ipi.PIpi; } } model.Produtos.Add(produto); } #endregion #region Cobrança if (infNfe.Cobranca != null) { var duplicatas = infNfe.Cobranca.Duplicata.Select(x => new DuplicataViewModel { Numero = x.NDup, Valor = (double?)x.VDup, Vecimento = x.DVenc }); model.Duplicatas = duplicatas.ToList(); } #endregion #region Total model.CalculoImposto = ObterTotalImposto(infNfe.Total.IcmsTot); var issqnTotal = infNfe.Total.IssqnTot; if (issqnTotal != null) { var c = model.CalculoIssqn; c.InscricaoMunicipal = infNfe.Emitente.IM; c.BaseIssqn = (double?)issqnTotal.VBc; c.ValorTotalServicos = (double?)issqnTotal.VServ; c.ValorIssqn = (double?)issqnTotal.VIss; c.Mostrar = true; } #endregion #region Transportadora var transp = infNfe.Transporte; var transportadora = transp.Transporta; var transportadoraModel = model.Transportadora; transportadoraModel.ModalidadeFrete = (int)transp.ModFrete; if (transp.VeicTransp != null) { transportadoraModel.VeiculoUf = transp.VeicTransp.UF; transportadoraModel.CodigoAntt = transp.VeicTransp.RNTC; transportadoraModel.Placa = transp.VeicTransp.Placa; } if (transportadora != null) { transportadoraModel.RazaoSocial = transportadora.XNome; transportadoraModel.EnderecoUf = transportadora.UF; transportadoraModel.CnpjCpf = !string.IsNullOrWhiteSpace(transportadora.Cnpj) ? transportadora.Cnpj : transportadora.Cpf; transportadoraModel.EnderecoLogadrouro = transportadora.XEnder; transportadoraModel.Municipio = transportadora.XMun; transportadoraModel.Ie = transportadora.IE; } var vol = transp.Vol.FirstOrDefault(); if (vol != null) { transportadoraModel.QuantidadeVolumes = vol.QVol; transportadoraModel.Especie = vol.Especie; transportadoraModel.Marca = vol.Marca; transportadoraModel.Numeracao = vol.NVol; transportadoraModel.PesoBruto = (double?)vol.PesoB; transportadoraModel.PesoLiquido = (double?)vol.PesoL; } #endregion #region Informação Adicional var infAdic = infNfe.InformacaoAdicional; if (infAdic != null) { model.InformacoesComplementares = procNfe.NFe.InfNFe.InformacaoAdicional.InformacaoComplementar; model.InformacoesAdicionaisFisco = procNfe.NFe.InfNFe.InformacaoAdicional.InformacaoFisco; } #endregion var infoProt = procNfe.ProtNFe.InfProt; model.ProtocoloAutorizacao = string.Format(DanfeHelper.Cultura, "{0} - {1}", infoProt.NProt, infoProt.DhRecbto.DateTime); model.DataHoraEmissao = ide.DhEmi.DateTime; model.DataSaidaEntrada = ide.DhSaiEnt?.DateTime; if (model.DataSaidaEntrada.HasValue) { model.HoraSaidaEntrada = model.DataSaidaEntrada?.TimeOfDay; } // Contingência SVC-AN e SVC-RS if (model.TipoEmissao == TipoEmissao.SVCAN || model.TipoEmissao == TipoEmissao.SVCRS) { model.ContingenciaDataHora = ide.DhCont; model.ContingenciaJustificativa = ide.XJust; } return(model); }
public static DanfeViewModel Criar(NFeProc nfeProc) { DanfeViewModel vm = new DanfeViewModel(); var nfe = nfeProc.NFe; var infNfe = nfe.infNFe; var ide = infNfe.ide; vm.TipoEmissao = ide.tpEmis; if (ide.mod != 65) { throw new NotSupportedException("Modelo não implementado"); } if (!FormasEmissaoSuportadas.Contains(vm.TipoEmissao)) { throw new NotSupportedException($"Tipo de emissão [{ide.tpEmis}] não é suportado."); } if (vm.TipoEmissao == TipoEmissao.Normal) { var infProt = nfeProc.protNFe.infProt; vm.ProtocoloAutorizacao = infProt.nProt; vm.DataAutorizacao = infProt?.dhRecbto.ToString("G"); } vm.NFNumero = ide.nNF; vm.NFSerie = ide.serie; vm.ChaveAcesso = nfeProc.NFe.infNFe.Id.Substring(3); vm.DataEmissao = nfeProc.NFe.infNFe.ide.dhEmi?.ToString("G"); vm.TipoNF = ide.tpNF; vm.UrlChave = nfeProc.NFe.infNFeSupl.urlChave; vm.QrCode = nfeProc.NFe.infNFeSupl.qrCode; vm.Emitente = EmitenteViewModel.Factory.Criar(infNfe.emit); vm.Destinatario = DestinatarioViewModel.Factory.Criar(infNfe.dest); #region Itens vm.Itens = new List <ItemViewModel>(); foreach (var item in nfeProc.NFe.infNFe.det) { var ivm = new ItemViewModel { nItem = item.nItem, Codigo = item.prod.cProd, Descricao = item.prod.xProd, Unidade = item.prod.uCom, Preco = item.prod.vUnCom, Desconto = item.prod.vDesc, Quantidade = item.prod.qCom, SubTotal = item.prod.vProd }; vm.Itens.Add(ivm); } #endregion #region Pagamentos foreach (var pag in nfeProc.NFe.infNFe.pag) { if (pag.detPag == null) { continue; } foreach (var detPag in pag.detPag) { vm.Pagamentos.Add( new PagamentoViewModel { FormaPagamento = detPag.tPag.Description(), Valor = detPag.vPag } ); } } #endregion vm.TributosIncidentes = nfeProc.NFe.infNFe.total.ICMSTot.vTotTrib ?? 0; //vm.Observacoes = nfe.infNFe?.infAdic?.infCpl; vm.Observacoes = " is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum"; return(vm); }