示例#1
0
 /// <summary>
 /// </summary>
 /// <param name="emitente">emitente</param>
 /// <param name="emitidaEmContigencia">True, emitida em contingência</param>
 /// <param name="numeroDocumento">numero do documento</param>
 /// <param name="status">Status</param>
 /// <param name="produtos">Produtos</param>
 /// <param name="ambiente">True, ambiente de produção</param>
 /// <param name="pagamento">Pagamentos</param>
 /// <param name="infAdicionais">Informações adicinoais</param>
 /// <param name="serie">Número de série</param>
 /// <param name="dataEmissao">Data da emissão</param>
 /// <param name="urlConsulta">Url de consulta</param>
 /// <param name="chave">Chave da NFCe</param>
 /// <param name="destinatario">Destinatario</param>
 /// <param name="numProt">Numero do protocolo</param>
 /// <param name="strQrCode">string QrCode</param>
 /// <param name="creditos">Créditos</param>
 public DanfeNFCe(Emitente emitente, bool emitidaEmContigencia, string numeroDocumento, Status status,
                  ICollection <ProdutoNFCe> produtos, bool ambiente, Pagamento pagamento, string dadosTributos, string infAdicionais,
                  string serie, DateTime dataEmissao, string urlConsulta, string chave, Destinatario destinatario, string numProt,
                  string strQrCode, string creditos)
 {
     Emitente             = emitente;
     EmitidaEmContigencia = emitidaEmContigencia;
     NumeroDocumento      = numeroDocumento;
     Status        = status;
     Produtos      = produtos;
     Producao      = ambiente;
     Pagamento     = pagamento;
     DadosTributos = dadosTributos;
     InfAdicionais = infAdicionais;
     Serie         = serie;
     DataEmissao   = dataEmissao;
     UrlConsulta   = urlConsulta;
     Chave         = chave.RetirarLetras();
     Destinatario  = destinatario;
     NumProt       = numProt;
     StrQrCode     = strQrCode;
     Creditos      = creditos;
 }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="nfe"></param>
        /// <param name="ambiente">True, ambiente de produção</param>
        /// <param name="emitidaEmContigencia">True, emitida em contingência</param>
        /// <param name="status">Status</param>
        /// <param name="numProt">Numero do protocolo</param>
        /// <param name="creditos">Créditos</param>
        /// <param name="logo">Logo marcar em string Base64</param>
        public DanfeNFCe(NFe nfe, bool ambiente, bool emitidaEmContigencia, Status status, string numProt = "",
                         string creditos = "", string logo = "")
        {
            //TODO:Criar teste unitario usando o novo construtor [DanfeNFe]

            if (nfe == null)
            {
                throw new ArgumentNullException(nameof(nfe));
            }
            var doc = string.IsNullOrWhiteSpace(nfe.infNFe.emit.CPF) ? nfe.infNFe.emit.CNPJ : nfe.infNFe.emit.CPF;

            Emitente = new Emitente(nfe.infNFe.emit.xNome, nfe.infNFe.emit.IE, doc, logo,
                                    new Endereco(nfe.infNFe.emit.enderEmit.xLgr, nfe.infNFe.emit.enderEmit.xBairro, nfe.infNFe.emit.enderEmit.xMun,
                                                 nfe.infNFe.emit.enderEmit.nro, nfe.infNFe.emit.enderEmit.CEP, nfe.infNFe.emit.enderEmit.UF,
                                                 nfe.infNFe.emit.enderEmit.fone.ToString(), nfe.infNFe.emit.enderEmit.UF));
            EmitidaEmContigencia = emitidaEmContigencia;
            NumeroDocumento      = nfe.infNFe.ide.nNF.ToString();
            Status = status;

            #region Produtos

            var produtos = new List <ProdutoNFCe>();
            nfe.infNFe.det.ForEach(item =>
            {
                produtos.Add(new ProdutoNFCe(item.prod.cProd, item.prod.xProd, item.prod.uTrib, item.prod.qTrib, item.prod.vUnCom,
                                             item.prod.vProd));
            });

            #endregion

            Produtos = produtos;
            Producao = ambiente;

            #region Pagamento

            var listPag = new List <FormPag>();
            nfe.infNFe.pag[0].detPag.ForEach(item => { listPag.Add(new FormPag(item.tPag.Descricao(), item.vPag)); });
            var pagamento = new Pagamento(nfe.infNFe.total.ICMSTot.vProd, nfe.infNFe.total.ICMSTot.vDesc, nfe.infNFe.total.ICMSTot.vNF,
                                          nfe.infNFe.pag[0].vTroco, listPag);
            Pagamento = pagamento;

            #endregion ,

            var infAdicionais = nfe.infNFe.infAdic?.infCpl ?? string.Empty;

            #region Impostos

            var dadosTributos = nfe.infNFe.infAdic?.infCpl ?? string.Empty;
            DadosTributos = dadosTributos;

            #endregion

            InfAdicionais = infAdicionais;
            Serie         = nfe.infNFe.ide.serie.ToString();
            DataEmissao   = nfe.infNFe.ide.dhEmi.Date;
            UrlConsulta   = nfe.infNFeSupl.urlChave;
            Chave         = nfe.infNFe.Id.RetirarLetras();

            #region Destinatario

            Destinatario destinatario = null;
            Endereco     endereco     = null;
            var          dest         = nfe.infNFe.dest;
            if (dest != null)
            {
                var cpfcnpj = dest.CPF + dest.CNPJ;
                if (dest.enderDest != null)
                {
                    endereco = new Endereco(dest.enderDest.xLgr, dest.enderDest.xBairro, dest.enderDest.xMun, dest.enderDest.nro,
                                            dest.enderDest.CEP, dest.enderDest.UF, dest.enderDest.fone.ToString(), dest.enderDest.UF);
                }
                destinatario = new Destinatario(dest.xNome, cpfcnpj, endereco);
            }

            Destinatario = destinatario;

            #endregion

            NumProt   = numProt;
            StrQrCode = nfe.infNFeSupl.qrCode;
            Creditos  = creditos;
        }