internal static DanfeViewModel CreateFromXmlFile(String path) { if (String.IsNullOrWhiteSpace(path)) { throw new ArgumentException("O arquivo Xml precisa ser especificado."); } if (!File.Exists(path)) { throw new FileNotFoundException("O arquivo Xml não foi encontrado.", path); } ProcNFe nfe = null; XmlSerializer serializer = new XmlSerializer(typeof(ProcNFe)); try { using (StreamReader reader = new StreamReader(path, true)) { nfe = (ProcNFe)serializer.Deserialize(reader); } return(CreateFromXml(nfe)); } catch (System.InvalidOperationException e) { if (e.InnerException is XmlException) { XmlException ex = (XmlException)e.InnerException; throw new Exception(String.Format("Não foi possível interpretar o Xml. Linha {0} Posição {1}.", ex.LineNumber, ex.LinePosition)); } throw new XmlException("O Xml não parece ser uma NF-e processada.", e); } }
public static NotaFiscal Parse(ProcNFe nf) { var inf = nf.NFe.infNFe; return(new NotaFiscal { Chave = nf.protNFe.infProt.chNFe, Emissao = DateTime.Parse(inf.ide.dhEmi != null ? inf.ide.dhEmi.Value.ToString() : inf.ide.dEmi.Value.ToString()), Emitente = GetEmitente(inf.emit), Destinatario = GetDestinatario(inf.dest), Itens = GetItens(inf.det) }); }
internal static DanfeViewModel CreateDanfeNFCeFromXmlString(String xml) { ProcNFe nfe = null; try { using (var reader = new StringReader(xml)) { nfe = (ProcNFe)ProcNFeSerializer.Deserialize(reader); } return(CreateFromProcNFCe(nfe)); } catch (InvalidOperationException e) { throw new Exception("Não foi possível interpretar o texto Xml.", e); } }
internal static DanfeViewModel CreateFromXmlString(String xml) { bool xml_processado = false; // validar se é um xml processado ou não if (xml.ToLower().Contains("<nfeproc")) { xml_processado = true; } ProcNFe procNfe = null; XmlSerializer serializer_procNFe = new XmlSerializer(typeof(ProcNFe)); NFe nfe = null; XmlSerializer serializer_nfe = new XmlSerializer(typeof(NFe)); try { using (TextReader reader = new StringReader(xml)) { if (xml_processado) { procNfe = (ProcNFe)serializer_procNFe.Deserialize(reader); } else { nfe = (NFe)serializer_nfe.Deserialize(reader); } } if (xml_processado) { return(CreateFromXml(procNfe)); } else { return(CreateFromXMLNFe(nfe)); } } catch (System.InvalidOperationException e) { throw new Exception("Não foi possível interpretar o texto Xml.", e); } }
internal static DanfeViewModel CreateFromXmlString(string xml) { ProcNFe nfe = null; XmlSerializer serializer = new XmlSerializer(typeof(ProcNFe)); try { using (TextReader reader = new StringReader(xml)) { nfe = (ProcNFe)serializer.Deserialize(reader); } return(CreateFromXml(nfe)); } catch (System.InvalidOperationException e) { throw new Exception("Não foi possível interpretar o texto Xml.", e); } }
private static DanfeViewModel CriarDeArquivoXmlInternal(TextReader reader) { ProcNFe nfe = null; try { nfe = (ProcNFe)ProcNFeSerializer.Deserialize(reader); return(CreateFromProcNFe(nfe)); } catch (InvalidOperationException e) { if (e.InnerException is XmlException ex) { throw new XmlException(String.Format("Não foi possível interpretar o Xml. Linha {0} Posição {1}.", ex.LineNumber, ex.LinePosition), e.InnerException, ex.LineNumber, ex.LinePosition); } throw new XmlException("O Xml não parece ser uma NF-e processada.", e); } }
private void GerarProcNFe(NFe nfe, RetConsReciNFe retConsReciNFe, string caminhoNF) { XmlDocument xmlNFe = new XmlDocument(); ProcNFe procNFe = new ProcNFe(); procNFe.Versao = retConsReciNFe.Versao; procNFe.ProtNFe = retConsReciNFe.ProtNFe; xmlNFe.Load(caminhoNF); XmlDocument xmlProc = procNFe.ToXmlDocument(); XmlNode node = xmlProc.ImportNode(xmlNFe.DocumentElement, true); xmlProc.DocumentElement.PrependChild(node); xmlProc.PreserveWhitespace = true; xmlProc.Save(ObterCaminhoArquivo($"{nfe.InfNFe.Id.Substring(3)}{SufixoProcNFe}.xml")); ProtocoloAutorizacao = retConsReciNFe.ProtNFe.InfProt.NProt; DataHoraAutorizacao = retConsReciNFe.ProtNFe.InfProt.DhRecbto; }
public static DanfeViewModel CreateFromXml(ProcNFe procNfe) { DanfeViewModel model = new DanfeViewModel(); var nfe = procNfe.NFe; var infNfe = nfe.infNFe; var ide = infNfe.ide; model.TipoEmissao = ide.tpEmis; if (ide.mod != 55) { throw new NotSupportedException("Somente o mod==55 está implementado."); } if (!FormasEmissaoSuportadas.Contains(model.TipoEmissao)) { throw new NotSupportedException($"O tpEmis {ide.tpEmis} não é suportado."); } model.Orientacao = ide.tpImp == 1 ? Orientacao.Retrato : Orientacao.Paisagem; var infProt = procNfe.protNFe.infProt; model.CodigoStatusReposta = infProt.cStat; model.DescricaoStatusReposta = infProt.xMotivo; model.TipoAmbiente = (int)ide.tpAmb; model.NfNumero = ide.nNF; model.NfSerie = ide.serie; model.NaturezaOperacao = ide.natOp; model.ChaveAcesso = procNfe.NFe.infNFe.Id.Substring(3); model.TipoNF = (int)ide.tpNF; model.Emitente = CreateEmpresaFrom(infNfe.emit); model.Destinatario = CreateEmpresaFrom(infNfe.dest); // Local retirada e entrega if (infNfe.retirada != null) { model.LocalRetirada = CreateLocalRetiradaEntrega(infNfe.retirada); } if (infNfe.entrega != null) { model.LocalEntrega = CreateLocalRetiradaEntrega(infNfe.entrega); } model.NotasFiscaisReferenciadas = ide.NFref.Select(x => x.ToString()).ToList(); // Informações adicionais de compra if (infNfe.compra != null) { model.Contrato = infNfe.compra.xCont; model.NotaEmpenho = infNfe.compra.xNEmp; model.Pedido = infNfe.compra.xPed; } foreach (var det in infNfe.det) { ProdutoViewModel produto = new ProdutoViewModel(); produto.Codigo = det.prod.cProd; produto.Descricao = det.prod.xProd; produto.Ncm = det.prod.NCM; produto.Cfop = det.prod.CFOP; produto.Unidade = det.prod.uCom; produto.Quantidade = det.prod.qCom; produto.ValorUnitario = det.prod.vUnCom; produto.ValorTotal = det.prod.vProd; produto.InformacoesAdicionais = det.infAdProd; var imposto = det.imposto; if (imposto != null) { if (imposto.ICMS != null) { var icms = imposto.ICMS.ICMS; if (icms != null) { produto.ValorIcms = icms.vICMS; produto.BaseIcms = icms.vBC; produto.AliquotaIcms = icms.pICMS; produto.OCst = icms.orig + icms.CST + icms.CSOSN; } } if (imposto.IPI != null) { var ipi = imposto.IPI.IPITrib; if (ipi != null) { produto.ValorIpi = ipi.vIPI; produto.AliquotaIpi = ipi.pIPI; } } } model.Produtos.Add(produto); } if (infNfe.cobr != null) { foreach (var item in infNfe.cobr.dup) { DuplicataViewModel duplicata = new DuplicataViewModel(); duplicata.Numero = item.nDup; duplicata.Valor = item.vDup; duplicata.Vecimento = item.dVenc; model.Duplicatas.Add(duplicata); } } model.CalculoImposto = CriarCalculoImpostoViewModel(infNfe.total.ICMSTot); var issqnTotal = infNfe.total.ISSQNtot; if (issqnTotal != null) { var c = model.CalculoIssqn; c.InscricaoMunicipal = infNfe.emit.IM; c.BaseIssqn = issqnTotal.vBC; c.ValorTotalServicos = issqnTotal.vServ; c.ValorIssqn = issqnTotal.vISS; c.Mostrar = true; } var transp = infNfe.transp; 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.esp; transportadoraModel.Marca = vol.marca; transportadoraModel.Numeracao = vol.nVol; transportadoraModel.PesoBruto = vol.pesoB; transportadoraModel.PesoLiquido = vol.pesoL; } var infAdic = infNfe.infAdic; if (infAdic != null) { model.InformacoesComplementares = procNfe.NFe.infNFe.infAdic.infCpl; model.InformacoesAdicionaisFisco = procNfe.NFe.infNFe.infAdic.infAdFisco; } var infoProto = procNfe.protNFe.infProt; model.ProtocoloAutorizacao = string.Format(Formatador.Cultura, "{0} - {1}", infoProto.nProt, infoProto.dhRecbto.DateTimeOffsetValue.DateTime); ExtrairDatas(model, infNfe); // Contingência SVC-AN e SVC-RS if (model.TipoEmissao == FormaEmissao.ContingenciaSVCAN || model.TipoEmissao == FormaEmissao.ContingenciaSVCRS) { model.ContingenciaDataHora = ide.dhCont?.DateTimeOffsetValue.DateTime; model.ContingenciaJustificativa = ide.xJust; } return(model); }
public static DanfeViewModel CreateFromXml(ProcNFe procNfe) { DanfeViewModel model = new DanfeViewModel(); var nfe = procNfe.NFe; var infNfe = nfe.infNFe; var ide = infNfe.ide; if (ide.mod != 55) { throw new Exception("Somente o mod==55 está implementado."); } if (ide.tpEmis != FormaEmissao.Normal) { throw new Exception("Somente o tpEmis==1 está implementado."); } model.TipoAmbiente = (int)ide.tpAmb; model.NumeroNF = ide.nNF; model.Serie = ide.serie; model.NaturezaOperacao = ide.natOp; model.ChaveAcesso = procNfe.NFe.infNFe.Id.Substring(3); model.TipoNF = (int)ide.tpNF; model.Emitente = CreateEmpresaFrom(infNfe.emit); model.Destinatario = CreateEmpresaFrom(infNfe.dest); foreach (var det in infNfe.det) { ProdutoViewModel produto = new ProdutoViewModel(); produto.Codigo = det.prod.cProd; produto.Descricao = det.prod.xProd; produto.Ncm = det.prod.NCM; produto.cEAN = det.prod.cEAN; produto.Cfop = det.prod.CFOP; produto.Unidade = det.prod.uCom; produto.Quantidade = det.prod.qCom; produto.ValorUnitario = det.prod.vUnCom; produto.ValorTotal = det.prod.vProd; produto.InformacoesAdicionais = det.infAdProd; var imposto = det.imposto; if (imposto != null) { if (imposto.ICMS != null) { var icms = imposto.ICMS.ICMS; if (icms != null) { produto.ValorIcms = icms.vICMS; produto.BaseIcms = icms.vBC; produto.AliquotaIcms = icms.pICMS; produto.OCst = icms.orig + icms.CST + icms.CSOSN; } } if (imposto.IPI != null) { var ipi = imposto.IPI.IPITrib; if (ipi != null) { produto.ValorIpi = ipi.vIPI; produto.AliquotaIpi = ipi.pIPI; } } } model.Produtos.Add(produto); } if (infNfe.cobr != null) { foreach (var item in infNfe.cobr.dup) { DuplicataViewModel duplicata = new DuplicataViewModel(); duplicata.Numero = item.nDup; duplicata.Valor = item.vDup; duplicata.Vecimento = item.dVenc; model.Duplicatas.Add(duplicata); } } var icmsTotal = infNfe.total.ICMSTot; model.ValorAproximadoTributos = icmsTotal.vTotTrib; model.BaseCalculoIcms = icmsTotal.vBC; model.ValorIcms = icmsTotal.vICMS; model.BaseCalculoIcmsSt = icmsTotal.vBCST; model.ValorIcmsSt = icmsTotal.vST; model.ValorTotalProdutos = icmsTotal.vProd; model.ValorFrete = icmsTotal.vFrete; model.ValorSeguro = icmsTotal.vSeg; model.Desconto = icmsTotal.vDesc; model.ValorIpi = icmsTotal.vIPI; model.OutrasDespesas = icmsTotal.vOutro; model.ValorTotalNota = icmsTotal.vNF; var issqnTotal = infNfe.total.ISSQNtot; if (issqnTotal != null) { model.BaseIssqn = issqnTotal.vBC; model.ValorTotalServicos = issqnTotal.vServ; model.ValorIssqn = issqnTotal.vISS; } var transp = infNfe.transp; 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.Nome = 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.esp; transportadoraModel.Marca = vol.marca; transportadoraModel.Numeracao = vol.nVol; transportadoraModel.PesoBruto = vol.pesoB; transportadoraModel.PesoLiquido = vol.pesoL; } var infAdic = infNfe.infAdic; if (infAdic != null) { model.InformacoesComplementares = procNfe.NFe.infNFe.infAdic.infCpl; model.InformacoesAdicionaisFisco = procNfe.NFe.infNFe.infAdic.infAdFisco; } var infoProto = procNfe.protNFe.infProt; model.ProtocoloAutorizacao = String.Format("{0} - {1}", infoProto.nProt, infoProto.dhRecbto); ExtrairDatas(model, infNfe); return(model); }
// Manual de Especificacoes Tecnicas do DANFE NFCeQRCode_Versao3.4_26_10_2015 public static DanfeViewModel CreateFromProcNFCe(ProcNFe procNfe) { DanfeViewModel model = new DanfeViewModel(); var nfe = procNfe.NFe; var infNfe = nfe.infNFe; var ide = infNfe.ide; if (ide.mod != 65) { throw new Exception("Modelo da nota difere de 65"); } if (ide.tpEmis != FormaEmissao.Normal && ide.tpEmis != FormaEmissao.ContingenciaDPEC && ide.tpEmis != FormaEmissao.ContingenciaFSDA && ide.tpEmis != FormaEmissao.ContingenciaSVCAN && ide.tpEmis != FormaEmissao.ContingenciaSVCRS) { throw new Exception("Somente o tpEmis==1 está implementado."); } // Divisão 1 - Informações do Cabeçalho model.Emitente.RazaoSocial = !string.IsNullOrWhiteSpace(infNfe.emit.xNome) ? infNfe.emit.xNome : null; model.Emitente.CnpjCpf = !string.IsNullOrWhiteSpace(infNfe.emit.CNPJ) ? infNfe.emit.CNPJ : infNfe.emit.CPF; if (infNfe.emit.Endereco != null) { model.Emitente.EnderecoLogadrouro = infNfe?.emit?.Endereco?.xLgr; model.Emitente.EnderecoNumero = infNfe?.emit?.Endereco?.nro; model.Emitente.EnderecoBairro = infNfe?.emit?.Endereco?.xBairro; model.Emitente.Municipio = infNfe?.emit?.Endereco?.xMun; model.Emitente.EnderecoUf = infNfe?.emit?.Endereco?.UF; } // Divisão 2 - Identificação do DANFE NFCe // Está no bloco TabelaProdutosServicosNFC // Divisão 3 - Informações de detalhes de produtos/serviços foreach (var det in infNfe.det) { var produto = new ProdutoViewModel(); produto.Codigo = det.prod.cProd; produto.Descricao = det.prod.xProd; produto.Unidade = det.prod.uCom; produto.Quantidade = det.prod.qCom; produto.ValorUnitario = det.prod.vUnCom; produto.ValorTotal = det.prod.vProd; model.Produtos.Add(produto); } // Divisão 4 - Informações de Totais do DANFE NFCe model.CalculoImposto = new CalculoImpostoViewModel() { QuantidadeTotal = model.Produtos.Count(), ValorTotalProdutos = infNfe.total.ICMSTot.vProd, ValorFrete = infNfe.total.ICMSTot.vFrete, ValorSeguro = infNfe.total.ICMSTot.vSeg, OutrasDespesas = infNfe.total.ICMSTot.vOutro, Desconto = infNfe.total.ICMSTot.vDesc, ValorTotalNota = infNfe.total.ICMSTot.vNF, }; foreach (var pag in infNfe.pag) { var pagamento = new PagamentoViewModel(); pagamento.DetalhePagamento = new System.Collections.Generic.List <DetalheViewModel>(); pagamento.Troco = pag.vTroco; foreach (var detPag in pag.detPag) { var detalhe = new DetalheViewModel(); detalhe.FormaPagamento = (FormaPagamento)detPag.tPag; detalhe.Valor = detPag.vPag; pagamento.DetalhePagamento.Add(detalhe); } model.Pagamento.Add(pagamento); } // Divisão 5 - Área de Mensagem Fiscal (BlocoInformacaoFiscal) model.TipoAmbiente = (int)ide.tpAmb; // Divisão 6 - Informações de Identificação da NFC-e e do Protocolo de Autorização model.NfNumero = ide.nNF; model.NfSerie = ide.serie; model.DataHoraEmissao = ide.dhEmi.GetValueOrDefault().DateTimeOffsetValue.DateTime; // consultar os sites para consultar nfce --> http://nfce.encat.org/consulte-sua-nota-qr-code-versao-2-0/ if (ide.tpAmb == TAmb.Producao) { model.EndConsulta = infNfe?.emit?.Endereco?.UF.UrlNFCeProduction(); } else if (ide.tpAmb == TAmb.Homologacao) { model.EndConsulta = infNfe?.emit?.Endereco?.UF.UrlNFCeTest(); } // dividir a chave de acesso em 11 blocos com espaço em cada bloco 999 999 999 999 999 999 999 999 999 999 999 model.ChaveAcesso = procNfe.NFe.infNFe.Id.Substring(3).SpaceOnAccessKey(); model.ProtocoloAutorizacao = String.Format(Formatador.Cultura, "{0} {1}", procNfe.protNFe.infProt.nProt, procNfe.protNFe.infProt.dhRecbto.DateTimeOffsetValue.DateTime); // Divisão 7 - Informações sobre o Consumidor model.Destinatario.RazaoSocial = !string.IsNullOrWhiteSpace(infNfe?.dest?.xNome) ? infNfe.dest.xNome : null; if (infNfe.dest != null) { if (!string.IsNullOrWhiteSpace(infNfe?.dest?.CPF)) { model.Destinatario.CnpjCpf = infNfe.dest.CPF; } if (!string.IsNullOrWhiteSpace(infNfe?.dest?.CNPJ)) { model.Destinatario.CnpjCpf = infNfe.dest.CNPJ; } if (infNfe.dest != null && infNfe.dest.Endereco != null) { model.Destinatario.EnderecoLogadrouro = infNfe.dest.Endereco.xLgr; model.Destinatario.EnderecoNumero = infNfe.dest.Endereco.nro; model.Destinatario.EnderecoBairro = infNfe.dest.Endereco.xBairro; model.Destinatario.Municipio = infNfe.dest.Endereco.xMun; model.Destinatario.EnderecoUf = infNfe.dest.Endereco.UF; } } // Divisão 8 - Informações da Consulta via QR CODE model.QrCode = nfe.infNFeSupl.qrCode; // Divisão 9 - Mensagem de Interesse do Contribuinte model.CalculoImposto.ValorAproximadoTributos = infNfe.total.ICMSTot.vICMS + infNfe.total.ICMSTot.vST + infNfe.total.ICMSTot.vII + infNfe.total.ICMSTot.vIPI + infNfe.total.ICMSTot.vPIS + infNfe.total.ICMSTot.vCOFINS; model.CalculoImposto.ValorAproximadoTributosEstaduais = infNfe.total.ICMSTot.vICMS + infNfe.total.ICMSTot.vST; model.CalculoImposto.ValorAproximadoTributosFederais = infNfe.total.ICMSTot.vII + infNfe.total.ICMSTot.vIPI + infNfe.total.ICMSTot.vPIS + infNfe.total.ICMSTot.vCOFINS; return(model); }
private static void TestarEsquemaNFCe() { NFe nf = new NFe(); nf.InfNFe = new infNFe() { Versao = "4.00", Id = "NFe35080599999090910270550010000000015180051273", Ide = new Ide() { CUF = "35", CNF = "51800512", NatOp = "Venda a vista", Mod = "65", Serie = "1", NNF = "1", DEmi = "2011-11-20", DSaiEnt = "2008-05-06", TpNF = "0", CMunFG = "3550308", TpImp = "1", TpEmis = "1", CDV = "3", TpAmb = "2", FinNFe = "1", ProcEmi = "0", VerProc = "1.0" }, Emit = new Emit() { CNPJ = "99999999000191", XNome = "NFe", XFant = "NFe", EnderEmit = new SchemaNF.NF.Endereco() { XLgr = "Nome da loja LTDA", Nro = "100", XCpl = "Fundos", XBairro = "Distrito Industrial", CMun = "3502200", XMun = "Angatuba", UF = "SP", CEP = "17100171", CPais = "1058", XPais = "Brasil", Fone = "1733021717", }, CRT = "3" }, Dest = new Dest() { CNPJ = "00000000000191", XNome = "DISTRIBUIDORA DE AGUAS MINERAIS", EnderDest = new SchemaNF.NF.Endereco() { XLgr = "V DAS FONTES", Nro = "1777", XCpl = "10 Andar", XBairro = "Pq Fontes", CMun = "5030801", XMun = "Sao Paulo", UF = "SP", CEP = "13950000", CPais = "1058", XPais = "Brasil", Fone = "1932011234" }, IE = "" }, Retirada = new EnderCom() { CNPJ = "99171171000194", XLgr = "AV PAULISTA", Nro = "12345", XCpl = "TERREO", XBairro = "CERQUEIRA CESAR", CMun = "3550308", XMun = "SAO PAULO", UF = "SP" }, Entrega = new EnderCom() { CNPJ = "99299299000194", XLgr = "AV FARIA LIMA", Nro = "1500", XCpl = "15 ANDAR", XBairro = "PINHEIROS", CMun = "3550308", XMun = "SAO PAULO", UF = "SP" }, Det = new List <Det>(), Total = new Total() { ICMSTot = new ICMSTot() { VBC = "20000000.00", VICMS = "18.00", VBCST = "0", VST = "0", VProd = "20000000.00", VFrete = "0", VSeg = "0", VDesc = "0", VII = "0", VIPI = "0", VPIS = "130000.00", VCOFINS = "400000.00", VOutro = "0", VNF = "20000000.00" } }, Transp = new Transp() { ModFrete = "0", Transporta = new Transporta() { CNPJ = "99171171000191", XNome = "Distribuidora de Bebidas Fazenda de SP Ltda.", IE = "171999999119", XEnder = "Rua Central 100 - Fundos - Distrito Industrial", XMun = "SAO PAULO", UF = "SP", }, VeicTransp = new VeicTransp() { Placa = "BXI1717", UF = "SP", RNTC = "123456789" }, Reboque = new Reboque() { Placa = "BXI1818", UF = "SP", RNTC = "123456789" }, Vol = new List <Vol>() }, InfAdic = new InfAdic() { InfAdFisco = "Nota Fiscal de exemplo NF-eletronica.com" } }; nf.InfNFe.Det.Add(new Det() { NItem = "1", Prod = new Prod() { CProd = "00001", CEAN = "", XProd = "Agua Mineral", NCM = "12002500", CFOP = "5101", UCom = "dz", QCom = "1000000.0000", VUnCom = "1", VProd = "10000000.00", CEANTrib = "", UTrib = "un", QTrib = "12000000.00", VUnTrib = "1", IndTot = "1" }, Imposto = new Imposto() { ICMS = new ICMS() { ICMS00 = new ICMS00() { orig = "0", CST = "00", ModBC = "0", VBC = "10000000.00", PICMS = "18.00", VICMS = "1800000.00" } }, PIS = new PIS() { PISAliq = new PISAliq() { CST = "01", VBC = "100000000.00", PPIS = "0.65", VPIS = "65000" } }, COFINS = new COFINS() { COFINSAliq = new COFINSAliq() { CST = "01", VBC = "100000000.00", PCOFINS = "2.00", VCOFINS = "200000.00" } } } }); nf.InfNFe.Det.Add(new Det() { NItem = "2", Prod = new Prod() { CProd = "00002", CEAN = "", XProd = "Agua Mineral", NCM = "12002500", CFOP = "5101", UCom = "pack", QCom = "5000000.0000", VUnCom = "2", VProd = "10000000.00", CEANTrib = "", UTrib = "un", QTrib = "3000000.00", VUnTrib = "0.3333", IndTot = "1" }, Imposto = new Imposto() { ICMS = new ICMS() { ICMS00 = new ICMS00() { orig = "0", CST = "00", ModBC = "0", VBC = "10000000.00", PICMS = "18.00", VICMS = "1800000.00" } }, PIS = new PIS() { PISAliq = new PISAliq() { CST = "01", VBC = "100000000.00", PPIS = "0.65", VPIS = "65000" } }, COFINS = new COFINS() { COFINSAliq = new COFINSAliq() { CST = "01", VBC = "100000000.00", PCOFINS = "2.00", VCOFINS = "200000.00" } } } }); nf.InfNFe.Transp.Vol.Add(new Vol() { QVol = "10000", Esp = "CAIXA", Marca = "LINDOYA", NVol = "500", PesoL = "1000000000.000", PesoB = "1200000000.000", Lacres = new List <Lacres>() }); nf.InfNFe.Transp.Vol.First().Lacres.Add(new Lacres() { NLacre = "XYZ10231486" }); nf.Salvar("35080599999090910270550010000000015180051273-NFe.xml", true); ProcNFe proc = new ProcNFe(); proc.Versao = "4.00"; proc.NFe = nf; proc.Salvar("ProcNFe35080599999090910270550010000000015180051273.xml", true); EnviNFe enviNFe = new EnviNFe() { IdLote = new Random(132546).Next().ToString(), Versao = "4.00" }; enviNFe.NFe = new List <NFe>(); enviNFe.NFe.Add(proc.NFe); enviNFe.Salvar(@"LoteNFe" + enviNFe.IdLote + ".xml", true); ValidarDocumentoFiscal validar = new ValidarDocumentoFiscal(); validar.SetarSquemaXSD(@""); if (validar.ValidarDocumentoXML(@"")) { Console.WriteLine("Validado com sucesso"); } else { Console.WriteLine(validar.Erros); } }