Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }