private TotalNFe GetTotalNFe(Retorno.TNFe nfe) { var infNfeTotal = nfe.infNFe.total.ICMSTot; var totalNFe = new TotalNFe(); totalNFe.IcmsTotal = new IcmsTotal(); var icmsTotal = totalNFe.IcmsTotal; icmsTotal.BaseCalculo = Double.Parse(infNfeTotal.vBC, CultureInfo.InvariantCulture); icmsTotal.ValorTotalIcms = Double.Parse(infNfeTotal.vICMS, CultureInfo.InvariantCulture); icmsTotal.ValorTotalDesonerado = Double.Parse(infNfeTotal.vICMSDeson, CultureInfo.InvariantCulture); icmsTotal.BaseCalculoST = Double.Parse(infNfeTotal.vBCST, CultureInfo.InvariantCulture); icmsTotal.ValorTotalST = Double.Parse(infNfeTotal.vST, CultureInfo.InvariantCulture); icmsTotal.ValorTotalProdutos = Double.Parse(infNfeTotal.vProd, CultureInfo.InvariantCulture); icmsTotal.ValorTotalFrete = Double.Parse(infNfeTotal.vFrete, CultureInfo.InvariantCulture); icmsTotal.ValorTotalSeguro = Double.Parse(infNfeTotal.vSeg, CultureInfo.InvariantCulture); icmsTotal.ValorTotalDesconto = Double.Parse(infNfeTotal.vDesc, CultureInfo.InvariantCulture); icmsTotal.ValorTotalII = Double.Parse(infNfeTotal.vII, CultureInfo.InvariantCulture); icmsTotal.ValorTotalIpi = Double.Parse(infNfeTotal.vIPI, CultureInfo.InvariantCulture); icmsTotal.ValorTotalPis = Double.Parse(infNfeTotal.vPIS, CultureInfo.InvariantCulture); icmsTotal.ValorTotalCofins = Double.Parse(infNfeTotal.vCOFINS, CultureInfo.InvariantCulture); icmsTotal.ValorDespesasAcessorias = Double.Parse(infNfeTotal.vOutro, CultureInfo.InvariantCulture); icmsTotal.ValorTotalNFe = Double.Parse(infNfeTotal.vNF, CultureInfo.InvariantCulture); return(totalNFe); }
private Transporte GetTransporte(Retorno.TNFe nfe) { var transportadoraNFe = nfe.infNFe.transp.transporta; if (transportadoraNFe != null) { var uf = TUfConversor.ToSiglaUf((TUf)(int)transportadoraNFe.UF); Modelo modelo = nfe.infNFe.ide.mod == Retorno.TMod.Item55 ? Modelo.Modelo55 : Modelo.Modelo65; var transportadora = new Transportadora(transportadoraNFe.Item, transportadoraNFe.xEnder, transportadoraNFe.IE, transportadoraNFe.xMun, uf, transportadoraNFe.xNome); Veiculo veiculo = null; if (nfe.infNFe.transp.Items.Length > 0) { var veiculoNFe = (Retorno.TVeiculo)nfe.infNFe.transp.Items[0]; veiculo = new Veiculo(veiculoNFe.placa, TUfConversor.ToSiglaUf(veiculoNFe.UF)); } return(new Transporte(modelo, transportadora, veiculo)); } else if (nfe.infNFe.transp.modFrete == Retorno.TNFeInfNFeTranspModFrete.Item9) { return(new Transporte(Modelo.Modelo65, null, null)); } return(null); }
private Emissor GetEmitente(Retorno.TNFe nfe) { var nfeEmit = nfe.infNFe.emit; string regimeTributario = ""; switch (nfeEmit.CRT) { case Retorno.TNFeInfNFeEmitCRT.Item1: regimeTributario = "Simples Nacional"; break; case Retorno.TNFeInfNFeEmitCRT.Item2: regimeTributario = "Simples Nacional Excesso Receita Bruta"; break; case Retorno.TNFeInfNFeEmitCRT.Item3: regimeTributario = "Regime Normal"; break; } string uf = TUfEmiConversor.ToUfString((TUfEmi)(int)nfeEmit.enderEmit.UF); var endereco = new Endereco(nfeEmit.enderEmit.xLgr, nfeEmit.enderEmit.nro, nfeEmit.enderEmit.xBairro, nfeEmit.enderEmit.xMun, nfeEmit.enderEmit.CEP, uf); return(new Emissor(nfeEmit.xNome, nfeEmit.xFant, nfeEmit.Item, nfeEmit.IE, nfeEmit.IE, nfeEmit.CNAE, regimeTributario, endereco, nfeEmit.enderEmit.fone)); }
private List <Produto> GetProdutos(Retorno.TNFe nfe) { var produtos = new List <Produto>(); Ambiente ambiente = (Ambiente)(int)nfe.infNFe.ide.tpAmb; foreach (var det in nfe.infNFe.det) { var icmsDet = (Retorno.TNFeInfNFeDetImpostoICMS)det.imposto.Items[0]; Imposto icms = new Imposto() { TipoImposto = TipoImposto.Icms, Aliquota = 0 }; if (icmsDet.Item is Retorno.TNFeInfNFeDetImpostoICMSICMS60) { var icms60 = (Retorno.TNFeInfNFeDetImpostoICMSICMS60)icmsDet.Item; icms.CST = TabelaIcmsCst.IcmsCobradoAnteriormentePorST; } else if (icmsDet.Item is Retorno.TNFeInfNFeDetImpostoICMSICMS40) { var icms40 = (Retorno.TNFeInfNFeDetImpostoICMSICMS40)icmsDet.Item; icms.CST = TabelaIcmsCst.Isenta; } var pisNT = (Retorno.TNFeInfNFeDetImpostoPISPISNT)det.imposto.PIS.Item; Imposto pis = new Imposto() { TipoImposto = TipoImposto.PIS, Aliquota = 0, CST = pisNT.CST.ToString().Replace("Item", string.Empty) }; GrupoImpostos grupoImpostos = new GrupoImpostos() { CFOP = det.prod.CFOP.ToString().Replace("Item", string.Empty), Impostos = new List <Imposto> { icms, pis } }; var newProduto = new Produto(grupoImpostos, 0, det.prod.CFOP.ToString().Replace("Item", string.Empty), det.prod.cProd, det.prod.xProd, det.prod.NCM, Int32.Parse(det.prod.qCom), det.prod.uCom, Double.Parse(det.prod.vUnCom, CultureInfo.InvariantCulture), 0, ambiente == Ambiente.Producao); newProduto.Cest = det.prod.CEST; produtos.Add(newProduto); } return(produtos); }
private Destinatario GetDestinatario(Retorno.TNFe nfe) { var nfeDest = nfe.infNFe.dest; if (nfeDest != null) { TipoDestinatario tipoDestinatario = new TipoDestinatario(); switch (nfeDest.ItemElementName) { case Retorno.ItemChoiceType3.CPF: tipoDestinatario = TipoDestinatario.PessoaFisica; break; case Retorno.ItemChoiceType3.CNPJ: tipoDestinatario = TipoDestinatario.PessoaJuridica; break; case Retorno.ItemChoiceType3.idEstrangeiro: tipoDestinatario = TipoDestinatario.Estrangeiro; break; } if (nfeDest.enderDest != null) { string uf = TUfDestConversor.ToUfString((TUf)(int)nfeDest.enderDest.UF); var endereco = new Model.Dest.Endereco(nfeDest.enderDest.xLgr, nfeDest.enderDest.nro, nfeDest.enderDest.xBairro, nfeDest.enderDest.xMun, nfeDest.enderDest.CEP, uf); Ambiente ambiente = (Ambiente)(int)nfe.infNFe.ide.tpAmb; Modelo modelo = nfe.infNFe.ide.mod == Retorno.TMod.Item55 ? Modelo.Modelo55 : Modelo.Modelo65; return(new Destinatario(ambiente, modelo, nfeDest.enderDest.fone, nfeDest.email, endereco, tipoDestinatario, nfeDest.IE, nomeRazao: nfeDest.xNome, documento: nfeDest.Item)); } else { Ambiente ambiente = (Ambiente)(int)nfe.infNFe.ide.tpAmb; Modelo modelo = nfe.infNFe.ide.mod == Retorno.TMod.Item55 ? Modelo.Modelo55 : Modelo.Modelo65; return(new Destinatario(ambiente, modelo, null, nfeDest.email, null, tipoDestinatario, nfeDest.IE, nomeRazao: nfeDest.xNome, documento: nfeDest.Item)); } } return(null); }
private List <Pagamento> GetPagamentos(Retorno.TNFe nfe) { var pagamentos = new List <Pagamento>(); var pagNFe = nfe.infNFe.pag; if (pagNFe != null) { foreach (var pag in pagNFe.detPag) { var formaPagamento = (FormaPagamento)(int)pag.tPag; var pagamentoTexto = string.Empty; switch (formaPagamento) { case FormaPagamento.CartaoCredito: pagamentoTexto = "Cartão de Crédito"; break; case FormaPagamento.CartaoDebito: pagamentoTexto = "Cartão de Débito"; break; case FormaPagamento.Cheque: pagamentoTexto = "Cheque"; break; case FormaPagamento.Dinheiro: pagamentoTexto = "Dinheiro"; break; case FormaPagamento.SemPagamento: pagamentoTexto = "Sem Pagamento"; break; } pagamentos.Add(new Pagamento(formaPagamento, Double.Parse(pag.vPag, CultureInfo.InvariantCulture))); } return(pagamentos); } return(null); }
public NotaFiscal GetNotaFiscalFromNfeProcXML(string xml) { Retorno.TNfeProc nfeProc = ((Retorno.TNfeProc)XmlUtil.Deserialize <Retorno.TNfeProc>(xml)); Retorno.TNFe nfe = nfeProc.NFe; var emitente = GetEmitente(nfe); var destinatario = GetDestinatario(nfe); var pagamentos = GetPagamentos(nfe); var identificacao = GetIdentificacao(nfe, emitente, pagamentos); var transporte = GetTransporte(nfe); var totalNFe = GetTotalNFe(nfe); var produtos = GetProdutos(nfe); var infoAdicional = GetInfoAdicional(produtos); NotaFiscal notaFiscal = new NotaFiscal(emitente, destinatario, identificacao, transporte, totalNFe, infoAdicional, produtos, pagamentos, xml); notaFiscal.DhAutorizacao = nfeProc.protNFe.infProt.dhRecbto; notaFiscal.DataHoraAutorização = DateTime.ParseExact(nfeProc.protNFe.infProt.dhRecbto, "yyyy-MM-ddTHH:mm:sszzz", CultureInfo.InvariantCulture); notaFiscal.ProtocoloAutorizacao = nfeProc.protNFe.infProt.nProt; return(notaFiscal); }
private IdentificacaoNFe GetIdentificacao(Retorno.TNFe nfe, Emissor emitente, List <Pagamento> pagamentos) { var uf = (CodigoUfIbge)Enum.Parse(typeof(CodigoUfIbge), emitente.Endereco.UF); var dataEmissao = DateTime.ParseExact(nfe.infNFe.ide.dhEmi, "yyyy-MM-ddTHH:mm:sszzz", CultureInfo.InvariantCulture); var ambiente = (Ambiente)(int)nfe.infNFe.ide.tpAmb; var modelo = nfe.infNFe.ide.mod == Retorno.TMod.Item55 ? Modelo.Modelo55 : Modelo.Modelo65; var tipoEmissao = nfe.infNFe.ide.tpEmis == Retorno.TNFeInfNFeIdeTpEmis.Item9 ? TipoEmissao.ContigenciaNfce : TipoEmissao.Normal; //Isso aqui vai me dar problema var formatoImpressao = (FormatoImpressao)(int)nfe.infNFe.ide.tpImp; var isImpressaoBobina = formatoImpressao == FormatoImpressao.Nfce; var finalidadeConsumidor = (FinalidadeConsumidor)(int)nfe.infNFe.ide.indFinal; var documentoDanfe = finalidadeConsumidor == FinalidadeConsumidor.ConsumidorFinal ? "CPF" : "CNPJ"; var finalidadeNFe = (FinalidadeEmissao)(int)nfe.infNFe.ide.finNFe; var ide = new IdentificacaoNFe(uf, dataEmissao, emitente.CNPJ, modelo, Int32.Parse(nfe.infNFe.ide.serie), nfe.infNFe.ide.nNF, tipoEmissao, ambiente, emitente, nfe.infNFe.ide.natOp, finalidadeNFe, isImpressaoBobina, PresencaComprador.Presencial, documentoDanfe); if (nfe.infNFe.ide.tpEmis == Retorno.TNFeInfNFeIdeTpEmis.Item9) { ide.DataHoraEntradaContigencia = DateTime.ParseExact(nfe.infNFe.ide.dhCont, "yyyy-MM-ddTHH:mm:sszzz", CultureInfo.InvariantCulture); ide.JustificativaContigencia = nfe.infNFe.ide.xJust; } return(ide); }