示例#1
0
        /// <summary>
        ///     Montar dados do destinatário
        /// </summary>
        /// <param name="corpo"></param>
        /// <returns></returns>
        private string MontarDestinatario(DanfeNFCe entidade)
        {
            var list = new Dictionary <string, string>();

            if (entidade.Destinatario == null)
            {
                list.Add("#Recipient#", "CONSUMIDOR NÃO IDENTIFICADO");
                list.Add("#Data#", "");
                list.Add("#Address#", "");
                return(LerTemplateEsubstituirTags(Resources.Recipient_Mod65, list));
            }

            var destinatario = entidade.Destinatario;

            list.Add("#Recipient#", destinatario.Nome?.ToUpper());
            var doc = string.IsNullOrWhiteSpace(destinatario.CnpjCpf) ? "" : $"<span>CNPJ/CPF - {destinatario.CnpjCpf}</span>";

            list.Add("#Data#", doc);

            var endereco = "";

            if (destinatario.Endereco != null)
            {
                endereco = $"{destinatario.Endereco.NomeEnd} {destinatario.Endereco.Cidade}";
            }
            list.Add("#Address#", endereco);

            return(LerTemplateEsubstituirTags(Resources.Recipient_Mod65, list));
        }
示例#2
0
        /// <summary>
        ///     Montar pagamentos
        /// </summary>
        /// <param name="entidade"></param>
        /// <param name="corpo"></param>
        /// <returns></returns>
        private string MontarProdutos(DanfeNFCe entidade)
        {
            var stringBuilder = new StringBuilder();

            foreach (var item in entidade.Produtos)
            {
                var dic = new Dictionary <string, string>
                {
                    { "#Code#", item.Codigo },
                    {
                        "#Description#",
                        entidade.Producao
                                        ? item.Descricao?.Trim()
                                        : "NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"
                    },
                    { "#Unit#", item.Unidade?.ToUpper() },
                    { "#Quantity#", item.Quantidade.ToString("N3") },     // FormatarNumeroQuantidadeDanfe()},
                    { "#UnityValue#", item.ValorUnitario.ToString("C") }, //FormatarNumeroDanfe()},
                    { "#Amount#", item.ValorTotal.ToString("C") }         //.FormatarNumeroDanfe()}
                };
                stringBuilder.Append(LerTemplateEsubstituirTags(Resources.Products_Mod65, dic));
            }

            return(stringBuilder.ToString());
        }
示例#3
0
        /// <summary>
        ///     Montar impostos
        /// </summary>
        /// <param name="corpo"></param>
        /// <returns></returns>
        private string MontarImpostos(DanfeNFCe entidade)
        {
            var list2 = new Dictionary <string, string>();

            list2.Add("#Taxes#", entidade.DadosTributos);
            return(LerTemplateEsubstituirTags(Resources.Taxes_Mod65, list2));
        }
示例#4
0
        private string MontarCorpo(DanfeNFCe entidade)
        {
            var list = new Dictionary <string, string>();

            list.Add("#EmissionType#",
                     entidade.EmitidaEmContigencia ? "EMITIDA EM CONTINGÊNCIA<br/>Pendente de Autorização" : "EMISSÃO NORMAL");
            var produtos = MontarProdutos(entidade);

            list.Add("#Products#", produtos);
            var pagamento = MontarPagamentos(entidade);

            list.Add("#TotalsProducts#", pagamento);
            var impostos = MontarImpostos(entidade);

            list.Add("#Taxes#", impostos);
            var infAdd = MontarInfAdicionais(entidade);

            list.Add("#AdditionalInformations#", infAdd);
            var data = MontarDadosDocumento(entidade);

            list.Add("#Data#", data);
            var destinatario = MontarDestinatario(entidade);

            list.Add("#Recipient#", destinatario);
            return(LerTemplateEsubstituirTags(Resources.Body_Mod65, list));
        }
示例#5
0
        /// <summary>
        ///     Montar informações adicionais
        /// </summary>
        /// <param name="corpo"></param>
        /// <returns></returns>
        private string MontarInfAdicionais(DanfeNFCe entidade)
        {
            if (entidade.InfAdicionais == null)
            {
                return("");
            }

            var list = new Dictionary <string, string>();
            var str  = Regex
                       .Replace(Regex.Replace(entidade.InfAdicionais.Replace("\r\n", string.Empty), "Trib aprox: (.*?) IBPT", string.Empty),
                                "Val Aprox Tributos: (.*?) IBPT", string.Empty).Replace("|", "<br/>");

            list.Add("#Informations#", str);
            return(LerTemplateEsubstituirTags(Resources.AdditionalInformation_Mod65, list));
        }
示例#6
0
 /// <summary>
 ///     Montar QrCode
 /// </summary>
 /// <returns></returns>
 private string MontarQrCode(DanfeNFCe entidade, int pixelsPerModule = 25)
 {
     try
     {
         using (var qrCodeGenerator = new QRCodeGenerator())
         {
             return("data:image/png;base64, " +
                    new Base64QRCode(qrCodeGenerator.CreateQrCode(entidade.StrQrCode, QRCodeGenerator.ECCLevel.M)).GetGraphic(
                        pixelsPerModule));
         }
     }
     catch (Exception ex)
     {
         throw new InvalidOperationException($"Não foi possível gerar o QrCode\nRazão:{ex.Message}");
     }
 }
示例#7
0
        /// <summary>
        ///     Montar Rodape
        /// </summary>
        /// <param name="rodape"></param>
        /// <param name="corpo"></param>
        /// <returns></returns>
        private string MontarRodape(DanfeNFCe entidade)
        {
            var msg = "";

            switch (entidade.Status)
            {
            case Status.Contingencia:
                msg = "EMITIDA EM CONTINGÊNCIA<br/>Pendente de Autorização";
                break;

            case Status.Cancelada:
                msg = "CANCELADA";
                break;

            case Status.NaoAuotorizada:
                msg = "NÃO AUTORIZADA";
                break;

            case Status.EsperandoAutorizacao:
                msg = "PRÉ-VISUALIZAÇÃO";
                break;

            case Status.Negada:
                msg = "DENEGADA";
                break;

            case Status.Recusada:
                msg = "RECUSADA";
                break;
            }

            var dic    = new Dictionary <string, string>();
            var qrCode = MontarQrCode(entidade);

            dic.Add("#QrCode#", qrCode);

            var dadosProtocolo = "";

            if (!string.IsNullOrWhiteSpace(entidade.NumProt))
            {
                dadosProtocolo = $"Protocolo de Autorização: {entidade.NumProt} {entidade.DataEmissao:dd/MM/yyyy hh:mm:ss}";
            }
            dic.Add("#Protocolo#", dadosProtocolo);
            dic.Add("#ContingencyMessage#", msg);
            dic.Add("#Credit#", entidade.Creditos);
            return(LerTemplateEsubstituirTags(Resources.Footer_Mod65, dic));
        }
示例#8
0
        /// <summary>
        ///     Montar cabeçalho da DANFE
        /// </summary>
        /// <param name="cabecalho"></param>
        /// <returns></returns>
        private string MontarCabecalho(DanfeNFCe entidade)
        {
            var list     = new Dictionary <string, string>();
            var endereco = entidade.Emitente.Endereco;
            var emitente = entidade.Emitente;
            var ender    = $"{endereco.NomeEnd},{endereco.Num} - {endereco.Cidade}," + $" {endereco.Estado} CEP: {endereco.Cep}";

            list.Add("#cssDadosEmissor#",
                     _tipoPapel == TipoPapelNFCe.Mm80
                            ? "width: 100%; height:80px; float: left;"
                            : "width: 80%; height:80px; float: left; font-align: center;");
            list.Add("#CompanyName#", emitente.Nome ?? string.Empty);
            list.Add("#CNPJ#", Utils.FormatarCnpj(emitente.CnpjCpf));
            list.Add("#IE#", emitente.Ie);
            list.Add("#Address#", ender);
            return(LerTemplateEsubstituirTags(Resources.Header_Mod65, list));
        }
示例#9
0
        private string MontarPagamentos(DanfeNFCe entidade)
        {
            var list = new Dictionary <string, string>();

            list.Add("#Quantity#", entidade.Produtos.Count.ToString());
            list.Add("#TotalValue#", entidade.Pagamento.ValorTotal.FormatarNumeroDanfe());
            list.Add("#TotalDiscount#", entidade.Pagamento.ValorTotDesconto.FormatarNumeroDanfe());
            list.Add("#TotalDue#", entidade.Pagamento.ValorTotDevido.FormatarNumeroDanfe());
            list.Add("#ValorTroco#", entidade.Pagamento.Troco == null ? string.Empty : entidade.Pagamento.Troco.Value.FormatarNumeroDanfe());

            if (entidade.Pagamento.Troco == null)
            {
                list.Add("#StyleTroco#", "style=\"display: none;\"");
            }

            var formasPag = MontarFormasPagamento(entidade.Pagamento.FormasPagamentos);

            list.Add("#Payments#", formasPag);
            return(LerTemplateEsubstituirTags(Resources.Total_Mod65, list));
        }
示例#10
0
        /// <summary>
        ///     Montar dados do documento NFCe
        /// </summary>
        /// <param name="corpo"></param>
        /// <returns></returns>
        private string MontarDadosDocumento(DanfeNFCe entidade)
        {
            var str1 = "";

            if (!entidade.Producao)
            {
                str1 = "EMITIDA EM AMBIENTE DE HOMOLOGAÇÃO - SEM VALOR FISCAL";
            }


            var list = new Dictionary <string, string>();

            list.Add("#WithOutValue#", $"{str1}");
            list.Add("#DocumentNumber#", entidade.NumeroDocumento);
            list.Add("#Serie#", entidade.Serie);
            list.Add("#Emission#", entidade.DataEmissao.ToString("dd/MM/yyyy hh:mm:ss"));
            list.Add("#URL#", entidade.UrlConsulta);
            list.Add("#NFeID#", entidade.Chave);
            return(LerTemplateEsubstituirTags(Resources.Data_Mod65, list));
        }
示例#11
0
 public DanfeNFCeHtml(DanfeNFCe danfeNfCe, TipoPapelNFCe tipoPapel)
 {
     _danfeNfCe = danfeNfCe;
     _tipoPapel = tipoPapel;
 }
示例#12
0
        public void ObterDanfeNFCeModelo65()
        {
            var c1 = ObterConfiguracao();

            #region Pagamento

            var pagamento = new Pagamento(120, 120, 120, 0.5m,
                                          new List <FormPag> {
                new FormPag("Dinheiro", 120), new FormPag("Cartão Crédito", 23.56m)
            });

            #endregion

            #region Endereço

            var endereco = new Endereco("Travessa Itacemirim", "Hortolância", "São paulo", "3", "4855966", "SP", "", "São Paulo");

            #endregion

            #region Destinatario

            var dest = new Destinatario("Valnei Filho", "963523685", endereco);

            #endregion

            #region Impostos

            var impostos = "Trib aprox R$: 13,41 Federal, 0,00 Estadual e Municipal: 0,00 Fonte: IBPT 801EC4";

            #endregion

            #region Produtos

            var produtos = new List <ProdutoNFCe>();
            for (var i = 0; i < 11; i++)
            {
                produtos.Add(new ProdutoNFCe(i.ToString(), $"Produto {i}", "UND", i, i * 2, i * 3));
            }

            #endregion

            #region Emitente

            var emitente = new Emitente("Luiz Queizos Damasceno", "8854511", "88544412241", "", endereco);

            #endregion

            #region QRCode

            var urlQrcode =
                "http://hnfe.sefaz.ba.gov.br/servicos/nfce/modulos/geral/NFCEC_consulta_chave_acesso.aspx?p=29190517784038000103650980000000011000000026|2|2|1|b72d0c7a8a2d5bd267287215216be079669162a7";

            #endregion

            var urlConsulta = c1.ConfigServ.UrlsNFce.Homologacao.QrcodeConsulta;
            var danfeNFce   = new DanfeNFCe(emitente, false, "5521212112", Status.Autorizada, produtos, true, pagamento, impostos,
                                            "Informações adicionais", "5", DateTime.Now, urlConsulta, "29190417784038000103650980000000011000000014", null,
                                            "55233213", urlQrcode, "Emissor Fiscal DSBR Brasil - www.dsbrbrasil.com.br");
            IDanfeHtml d1  = new DanfeNFCeHtml(danfeNFce, TipoPapelNFCe.Mm80);
            var        doc = d1.ObterDocHtml();
            Utils.EscreverArquivo("D:\\", "NFce.htm", doc.Html);
        }