private TotalNFe GetTotalNFe(Retorno.TNFe nfe) { var infNfeTotal = nfe.infNFe.total.ICMSTot; var totalNFe = new 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); var 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); if (nfe.infNFe.transp.Items.Length <= 0) { return(new Transporte(modelo, transportadora, null)); } var veiculoNFe = (Retorno.TVeiculo)nfe.infNFe.transp.Items[0]; var veiculo = new Veiculo(veiculoNFe.placa, TUfConversor.ToSiglaUf(veiculoNFe.UF)); return(new Transporte(modelo, transportadora, veiculo)); } return(nfe.infNFe.transp.modFrete == Retorno.TNFeInfNFeTranspModFrete.Item9 ? new Transporte(Modelo.Modelo65, null, null) : null); }
private IdentificacaoNFe GetIdentificacao(Retorno.TNFe nfe, Emissor emitente) { 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, int.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) { return(ide); } ide.DataHoraEntradaContigencia = DateTime.ParseExact(nfe.infNFe.ide.dhCont, "yyyy-MM-ddTHH:mm:sszzz", CultureInfo.InvariantCulture); ide.JustificativaContigencia = nfe.infNFe.ide.xJust; return(ide); }
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; default: throw new ArgumentOutOfRangeException(); } var 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>(); var ambiente = (Ambiente)(int)nfe.infNFe.ide.tpAmb; foreach (var det in nfe.infNFe.det) { var icmsDet = (Retorno.TNFeInfNFeDetImpostoICMS)det.imposto.Items[0]; var icms = new Imposto { TipoImposto = TipoImposto.Icms, Aliquota = 0 }; var icms60 = icmsDet.Item as Retorno.TNFeInfNFeDetImpostoICMSICMS60; if (icms60 != null) { icms.CST = TabelaIcmsCst.IcmsCobradoAnteriormentePorST; } else if (icmsDet.Item is Retorno.TNFeInfNFeDetImpostoICMSICMS40) { icms.CST = TabelaIcmsCst.Isenta; } var pisNt = (Retorno.TNFeInfNFeDetImpostoPISPISNT)det.imposto.PIS.Item; var pis = new Imposto { TipoImposto = TipoImposto.PIS, Aliquota = 0, CST = pisNt.CST.ToString().Replace("Item", string.Empty) }; var grupoImpostos = new GrupoImpostos { CFOP = det.prod.CFOP.Replace("Item", string.Empty), Impostos = new List <Imposto> { icms, pis } }; var newProduto = new Produto(grupoImpostos, 0, det.prod.CFOP.Replace("Item", string.Empty), det.prod.cProd, det.prod.xProd, det.prod.NCM, int.Parse(det.prod.qCom), det.prod.uCom, double.Parse(det.prod.vUnCom, CultureInfo.InvariantCulture), 0, ambiente == Ambiente.Producao) { Cest = det.prod.CEST }; produtos.Add(newProduto); } return(produtos); }
private Destinatario GetDestinatario(Retorno.TNFe nfe) { var nfeDest = nfe.infNFe.dest; if (nfeDest == null) { return(null); } TipoDestinatario 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; default: throw new ArgumentOutOfRangeException(); } if (nfeDest.enderDest != null) { var uf = TUfDestConversor.ToUfString((TUf)(int)nfeDest.enderDest.UF); var endereco = new Endereco(nfeDest.enderDest.xLgr, nfeDest.enderDest.nro, nfeDest.enderDest.xBairro, nfeDest.enderDest.xMun, nfeDest.enderDest.CEP, uf); var ambiente = (Ambiente)(int)nfe.infNFe.ide.tpAmb; var 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 { var ambiente = (Ambiente)(int)nfe.infNFe.ide.tpAmb; var 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)); } }
private List <Pagamento> GetPagamentos(Retorno.TNFe nfe) { var pagamentos = new List <Pagamento>(); var pagNFe = nfe.infNFe.pag; if (pagNFe == null) { return(null); } foreach (var pag in pagNFe.detPag) { var formaPagamento = (FormaPagamento)(int)pag.tPag; switch (formaPagamento) { case FormaPagamento.CartaoCredito: break; case FormaPagamento.CartaoDebito: break; case FormaPagamento.Cheque: break; case FormaPagamento.Dinheiro: break; case FormaPagamento.SemPagamento: break; default: throw new ArgumentOutOfRangeException(); } pagamentos.Add(new Pagamento(formaPagamento, double.Parse(pag.vPag, CultureInfo.InvariantCulture))); } return(pagamentos); }