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);
            }
        }
Esempio n. 2
0
        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)
            });
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
        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;
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        // 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);
        }
Esempio n. 11
0
        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);
            }
        }