Esempio n. 1
0
        private void AdicionarTextoCentralizado(AdicionarTexto texto)
        {
            int textoConsulteChaveX = ((larguraLinha - texto.Medida.Largura) / 2);

            texto.Desenhar(textoConsulteChaveX, y);
            y += texto.Medida.Altura;
        }
        private static AdicionarTexto CriaHeaderColuna(string texto, Graphics graphics, int x, int y)
        {
            var coluna = new AdicionarTexto(graphics, texto, 7);
            coluna.Desenhar(x, y);

            return coluna;
        }
Esempio n. 3
0
        private void DesenharCabecalho(Graphics g)
        {
            int larguraLogo        = 64;
            int tamanhoFonteTitulo = 8;

            y = 3;

            if (_logo != null)
            {
                new RedimensionarImagem(new AdicionarImagem(g, _logo, x, y), 50, 24).Desenhar();
            }

            if (_logo == null)
            {
                larguraLogo = 0;
            }

            y = MontarLinhaTitulo(g, MontarMensagemRazaoSocial(), tamanhoFonteTitulo, larguraLogo, x, y, larguraLinha);
            y = MontarLinhaTitulo(g, MontarMensagemCpfCnpjIE(), tamanhoFonteTitulo, larguraLogo, x, y, larguraLinha);

            string enderecoEmitente = MontarMensagemEnderecoEmitente();

            AdicionarTexto textoEndereco = new AdicionarTexto(g, enderecoEmitente, 7);

            AdicionarTextoCentralizado(textoEndereco);
            y += 3;

            const string   mensagemDanfe  = "Documento Auxiliar da Nota Fiscal de Consumidor Eletrônica";
            AdicionarTexto textoDanfeNFCe = new AdicionarTexto(g, mensagemDanfe, 8);

            AdicionarTextoCentralizado(textoDanfeNFCe);
        }
Esempio n. 4
0
        private void DesenharMensagemDadosNFCe(Graphics g)
        {
            string         mensagemDadosNfCe = MontarMensagemDadosNfce();
            AdicionarTexto dadosNfce         = new AdicionarTexto(g, mensagemDadosNfCe, 7);

            AdicionarTextoCentralizado(dadosNfce);
        }
Esempio n. 5
0
        private void DesenharCreditos(Graphics g)
        {
            y += 2;
            var creditos = "Desenvolvido por www.laranjeiras.dev";

            AdicionarTexto textoConsulteChave = new AdicionarTexto(g, creditos, 7);

            AdicionarTextoCentralizado(textoConsulteChave);
        }
        private void AdicionaFormaPagamento(int x, int larguraLinhaMargemDireita, Graphics g, FormaPagamento? formaPagamento, decimal? vPag)
        {
            var textoFormaPagamento = new AdicionarTexto(g, ObtemDescricao(formaPagamento), 7);
            textoFormaPagamento.Desenhar(x, _y);

            var textoValorFormaPagamento = new AdicionarTexto(g, vPag.Value.ToString("N2"), 7);
            var textoValorFormaPagamentoX = (larguraLinhaMargemDireita - textoValorFormaPagamento.Medida.Largura);
            textoValorFormaPagamento.Desenhar(textoValorFormaPagamentoX, _y);

            _y += textoFormaPagamento.Medida.Altura;
        }
Esempio n. 7
0
        private void DesenharMensagemConsumidor(Graphics g)
        {
            string mensagemConsumidor = MontarMensagemConsumidor(_nfe.infNFe.dest);

            AdicionarTexto consumidor            = new AdicionarTexto(g, mensagemConsumidor, 9);
            QuebraDeLinha  quebraLinhaConsumidor = new QuebraDeLinha(consumidor,
                                                                     new ComprimentoMaximo(larguraLinhaMargemDireita), consumidor.Medida.Largura);

            consumidor = quebraLinhaConsumidor.DesenharComQuebras(g);
            AdicionarTextoCentralizado(consumidor);
        }
        private static int EscreverLinhaTitulo(Graphics g, string texto, int tamanhoFonteTitulo, int larguraLogo, int x, int y, int larguraLinha)
        {
            var adicionarTexto = new AdicionarTexto(g, texto, tamanhoFonteTitulo);
            var larguraMaximaTexto = new ComprimentoMaximo((larguraLinha - larguraLogo));
            var laguraDoTexto = adicionarTexto.Medida.Largura;
            var quebrarLinha = new DefineQuebraDeLinha(adicionarTexto, larguraMaximaTexto, laguraDoTexto);
            adicionarTexto = quebrarLinha.DesenharComQuebras(g);
            var posisaoXTexto = x + larguraLogo + (((larguraLinha - larguraLogo) - adicionarTexto.Medida.Largura) / 2);
            adicionarTexto.Desenhar(posisaoXTexto, y);
            y += adicionarTexto.Medida.Altura;

            return y;
        }
Esempio n. 9
0
        private void DesenharTotais(Graphics g)
        {
            y += 3;
            var dets = _nfe.infNFe.det;

            AdicionarTexto textoQuantidadeTotalItens = new AdicionarTexto(g, "Qtde. total de itens", 7);

            textoQuantidadeTotalItens.Desenhar(x, y);

            AdicionarTexto qtdTotalItens  = new AdicionarTexto(g, dets.Count.ToString(), 7);
            int            qtdTotalItensX = (larguraLinhaMargemDireita - qtdTotalItens.Medida.Largura);

            qtdTotalItens.Desenhar(qtdTotalItensX, y);
            y += textoQuantidadeTotalItens.Medida.Altura;

            AdicionarTexto textoValorTotal = new AdicionarTexto(g, "Valor total", 8);

            textoValorTotal.Desenhar(x, y);

            decimal        valorTotal      = dets.Sum(prod => prod.prod.vProd);
            AdicionarTexto valorTotalTexto = new AdicionarTexto(g, valorTotal.ToString("C"), 9);
            int            qtdValorTotalX  = (larguraLinhaMargemDireita - valorTotalTexto.Medida.Largura);

            valorTotalTexto.Desenhar(qtdValorTotalX, y);
            y += textoValorTotal.Medida.Altura;

            decimal totalDesconto    = dets.Sum(prod => prod.prod.vDesc) ?? 0.0m;
            decimal totalOutras      = dets.Sum(prod => prod.prod.vOutro) ?? 0.0m;
            decimal valorTotalAPagar = valorTotal + totalOutras - totalDesconto;

            if (totalDesconto > 0)
            {
                AdicionarTexto textoDesconto = new AdicionarTexto(g, "Desconto", 7);
                textoDesconto.Desenhar(x, y);

                AdicionarTexto valorDesconto  = new AdicionarTexto(g, totalDesconto.ToString("C"), 7);
                int            valorDescontoX = (larguraLinhaMargemDireita - valorDesconto.Medida.Largura);
                valorDesconto.Desenhar(valorDescontoX, y);
                y += textoDesconto.Medida.Altura;

                AdicionarTexto textoValorAPagar = new AdicionarTexto(g, "Valor a Pagar", 7);
                textoValorAPagar.Desenhar(x, y);

                AdicionarTexto valorAPagar  = new AdicionarTexto(g, valorTotalAPagar.ToString("C"), 8);
                int            valorAPagarX = (larguraLinhaMargemDireita - valorAPagar.Medida.Largura);
                valorAPagar.Desenhar(valorAPagarX, y);
                y += textoValorAPagar.Medida.Altura + 2;
            }

            GerarPagamento(g);
        }
Esempio n. 10
0
        private void DesenharFormaPagamento(int x, int larguraLinhaMargemDireita, Graphics g, FormaPagamento?formaPagamento, decimal?vPag)
        {
            var            _formaPagamento     = formaPagamento.Descricao();
            AdicionarTexto textoFormaPagamento = new AdicionarTexto(g, _formaPagamento, 7);

            textoFormaPagamento.Desenhar(x, y);

            AdicionarTexto textoValorFormaPagamento  = new AdicionarTexto(g, vPag.Value.ToString("C"), 7);
            int            textoValorFormaPagamentoX = (larguraLinhaMargemDireita - textoValorFormaPagamento.Medida.Largura);

            textoValorFormaPagamento.Desenhar(textoValorFormaPagamentoX, y);

            y += textoFormaPagamento.Medida.Altura;
        }
Esempio n. 11
0
        private void DesenharMensagemContingencia(Graphics g)
        {
            if (_nfe.infNFe.ide.tpEmis != DFeBR.EmissorNFe.Utilidade.Tipos.TipoEmissao.Normal)
            {
                y += 2;
                AdicionarTexto contingenciaTitulo = new AdicionarTexto(g, "EMITIDA EM CONTINGÊNCIA", 10);
                AdicionarTextoCentralizado(contingenciaTitulo);

                AdicionarTexto pendenteAutorizacaoTitulo = new AdicionarTexto(g, "Pendente de Autorização", 8);
                AdicionarTextoCentralizado(pendenteAutorizacaoTitulo);
                y += 2;
                LinhaHorizontal(g, x, y, larguraLinha);
            }
        }
        private static int MensagemContingencia(Graphics g, int larguraLinha, int y)
        {
            var contingenciaTitulo = new AdicionarTexto(g, "EMITIDA EM CONTINGÊNCIA", 10);
            var restoContingenciaTituloX = (larguraLinha - contingenciaTitulo.Medida.Largura) / 2;
            contingenciaTitulo.Desenhar(restoContingenciaTituloX, y);
            y += contingenciaTitulo.Medida.Altura;

            var pendenteAutorizacaoTitulo = new AdicionarTexto(g, "Pendente de Autorização", 8);
            var restoPendenteAutorizacaoTituloX = (larguraLinha - pendenteAutorizacaoTitulo.Medida.Largura) / 2;
            pendenteAutorizacaoTitulo.Desenhar(restoPendenteAutorizacaoTituloX, y);
            y += pendenteAutorizacaoTitulo.Medida.Altura + 2;

            return y;
        }
Esempio n. 13
0
        private void DesenharDadosAutorizacao(Graphics g)
        {
            if (_nfe.infNFe.ide.tpEmis == DFeBR.EmissorNFe.Utilidade.Tipos.TipoEmissao.Normal)
            {
                var protocolo = _proc.protNFe.infProt;
                var textoProtocoloAutorizacao = new StringBuilder("Protocolo de autorização: ");
                textoProtocoloAutorizacao.Append(protocolo.nProt);
                AdicionarTexto protocoloAutorizacao = new AdicionarTexto(g, textoProtocoloAutorizacao.ToString(), 7);
                AdicionarTextoCentralizado(protocoloAutorizacao);

                StringBuilder textoDataAutorizacao = new StringBuilder("Data de autorização ");
                textoDataAutorizacao.Append(_proc.protNFe.infProt.dhRecbto.ToString("G"));
                AdicionarTexto dataAutorizacao = new AdicionarTexto(g, textoDataAutorizacao.ToString(), 7);
                AdicionarTextoCentralizado(dataAutorizacao);
            }
        }
Esempio n. 14
0
        private void GerarPagamento(Graphics g)
        {
            y += 3;

            AdicionarTexto tituloFormaPagamento = new AdicionarTexto(g, "FORMA PAGAMENTO", 7);

            tituloFormaPagamento.Desenhar(x, y);

            AdicionarTexto tituloValorPago  = new AdicionarTexto(g, "VALOR PAGO", 7);
            int            tituloValorPagoX = (larguraLinhaMargemDireita - tituloValorPago.Medida.Largura);

            tituloValorPago.Desenhar(tituloValorPagoX, y);
            y += tituloFormaPagamento.Medida.Altura;

            foreach (var pag in _nfe.infNFe.pag)
            {
                if (pag.detPag != null)
                {
                    foreach (var detPag in pag.detPag)
                    {
                        DesenharFormaPagamento(x, larguraLinhaMargemDireita, g, detPag.tPag, detPag.vPag);
                    }
                }
            }

            y += 2;

            decimal troco     = 0;
            decimal totalPago = 0;

            _nfe.infNFe.pag.ForEach(pag =>
            {
                troco     += pag.vTroco ?? 0;
                totalPago += pag.detPag.Sum(x => x.vPag);
            });

            if (troco > 0)
            {
                AdicionarTexto textoTroco = new AdicionarTexto(g, "Troco R$ (TOTAL PAGO " + totalPago.ToString("C") + ")", 7);
                textoTroco.Desenhar(x, y);

                AdicionarTexto textoTrocoValor  = new AdicionarTexto(g, troco.ToString("C"), 7);
                int            textoTrocoValorX = (larguraLinhaMargemDireita - textoTrocoValor.Medida.Largura);
                textoTrocoValor.Desenhar(textoTrocoValorX, y);
                y += textoTroco.Medida.Altura;
            }
        }
Esempio n. 15
0
        private void DesenharTributosIncidentes(Graphics g)
        {
            decimal tributosIncidentes = _nfe.infNFe.total.ICMSTot.vTotTrib;

            if (tributosIncidentes != 0)
            {
                StringBuilder mensagemTributosTotais =
                    new StringBuilder("Tributos Totais Incidentes (Lei Federal 12.741/2012): R$");
                mensagemTributosTotais.Append(tributosIncidentes.ToString("N2"));

                AdicionarTexto tributosTotais = new AdicionarTexto(g, mensagemTributosTotais.ToString(), 7);
                AdicionarTextoCentralizado(tributosTotais);

                y += 5;

                LinhaHorizontal(g, x, y, larguraLinha);
            }
        }
Esempio n. 16
0
        private void DesenharInfoConsultaSefaz(Graphics g)
        {
            AdicionarTexto textoConsulteChave = new AdicionarTexto(g, "Consulte pela Chave de Acesso em", 7);

            AdicionarTextoCentralizado(textoConsulteChave);

            AdicionarTexto textoUrlSefaz = new AdicionarTexto(g, _configDanfe.NFCeUrlConsultaSefaz, 7);

            AdicionarTextoCentralizado(textoUrlSefaz);

            string novaChave = FormatarChaveAcesso(_nfe);

            AdicionarTexto chave = new AdicionarTexto(g, novaChave, 7);

            AdicionarTextoCentralizado(chave);

            y += 10;
        }
Esempio n. 17
0
        private void DesenharObservacoes(Graphics g)
        {
            string observacoes = string.Empty;

            if (_nfe?.infNFe?.infAdic != null)
            {
                observacoes = _nfe.infNFe.infAdic.infCpl;
            }

            if (!string.IsNullOrEmpty(observacoes))
            {
                y += 5;
                AdicionarTexto observacao       = new AdicionarTexto(g, observacoes, 7);
                QuebraDeLinha  quebraObservacao = new QuebraDeLinha(observacao,
                                                                    new ComprimentoMaximo(larguraLinhaMargemDireita), observacao.Medida.Largura);
                observacao = quebraObservacao.DesenharComQuebras(g);
                observacao.Desenhar(x, y);

                y += observacao.Medida.Altura;
            }
        }
Esempio n. 18
0
        private void GerarNfCe(Graphics graphics)
        {
            var g = graphics;

            var       larguraLogo  = 64;
            const int larguraLinha = 284;
            const int larguraLinhaMargemDireita = 277;

            var x = 3;

            _y = 3;

            if (_logo != null)
            {
                new RedimensionaImagemPara(new AdicionarImagem(g, _logo, x, _y), 50, 24).Desenhar();
            }

            if (_logo == null)
            {
                larguraLogo = 0;
            }

            #region cabeçalho
            int tamanhoFonteTitulo = 6;

            string cnpjERazaoSocial = CnpjERazaoSocial();

            _y = EscreverLinhaTitulo(g, cnpjERazaoSocial, tamanhoFonteTitulo, larguraLogo, x, _y, larguraLinha);

            string enderecoEmitente = EnderecoEmitente();

            _y = EscreverLinhaTitulo(g, enderecoEmitente, tamanhoFonteTitulo, larguraLogo, x, _y, larguraLinha);

            const string mensagemGoverno = "Documento Auxiliar Da Nota Fiscal de Consumidor Eletrônica";

            _y = EscreverLinhaTitulo(g, mensagemGoverno, tamanhoFonteTitulo, larguraLogo, x, _y, larguraLinha);

            _y += 5;
            #endregion

            #region contingência
            if (_nfe.infNFe.ide.tpEmis != TipoEmissao.teNormal)
            {
                LinhaHorizontal(g, x, _y, larguraLinha);
                _y += 2;

                _y = MensagemContingencia(g, larguraLinha, _y);
            }
            #endregion

            LinhaHorizontal(g, x, _y, larguraLinha);

            #region tabela de itens
            int iniX = x;

            CriaHeaderColuna("CÓDIGO", g, iniX, _y);
            iniX += 75;

            AdicionarTexto colunaDescricaoHeader = CriaHeaderColuna("DESCRIÇÃO", g, iniX, _y);
            iniX -= 25;
            _y   += colunaDescricaoHeader.Medida.Altura;

            CriaHeaderColuna("QTDE", g, iniX, _y);
            iniX += 25;

            CriaHeaderColuna("UN", g, iniX, _y);
            iniX += 25;

            CriaHeaderColuna("x", g, iniX, _y);
            iniX += 20;

            AdicionarTexto colunaValorUnitarioHeader = CriaHeaderColuna("VALOR UNITÁRIO", g, iniX, _y);
            iniX += 85;

            CriaHeaderColuna("=", g, iniX, _y);
            iniX += 41;

            AdicionarTexto colunaTotalHeader = CriaHeaderColuna("TOTAL", g, iniX, _y);
            _y += colunaTotalHeader.Medida.Altura + 10;

            List <det> det = _nfe.infNFe.det;

            #region preencher itens
            foreach (det detalhe in det)
            {
                AdicionarTexto codigo = new AdicionarTexto(g, detalhe.prod.cProd, 7);
                codigo.Desenhar(x, _y);

                AdicionarTexto      nome       = new AdicionarTexto(g, detalhe.prod.xProd, 7);
                DefineQuebraDeLinha quebraNome = new DefineQuebraDeLinha(nome, new ComprimentoMaximo(202), nome.Medida.Largura);
                nome = quebraNome.DesenharComQuebras(g);
                nome.Desenhar(x + 75, _y);
                _y += nome.Medida.Altura;

                AdicionarTexto quantidade    = new AdicionarTexto(g, detalhe.prod.qCom.ToString("N3"), 7);
                AdicionarTexto valorUnitario = new AdicionarTexto(g, detalhe.prod.vUnCom.ToString("N4"), 7);
                AdicionarTexto vezesX        = new AdicionarTexto(g, "x", 7);
                AdicionarTexto unidadeSigla  = new AdicionarTexto(g, detalhe.prod.uCom.Length <= 2 ? detalhe.prod.uCom : detalhe.prod.uCom.Substring(0, 2), 7);

                decimal        detalheTotal      = detalhe.prod.vProd;
                AdicionarTexto valorTotalProduto = new AdicionarTexto(g, detalheTotal.ToString("N2"), 7);

                iniX = x + 50;

                quantidade.Desenhar(iniX, _y);

                iniX += 25;

                unidadeSigla.Desenhar(iniX, _y);

                iniX += 25;

                vezesX.Desenhar(iniX, _y);

                iniX += 20;

                int tituloColunaUnidadeLargura = colunaValorUnitarioHeader.Medida.Largura;
                valorUnitario.Desenhar((iniX + tituloColunaUnidadeLargura) - valorUnitario.Medida.Largura, _y);


                iniX += 85;

                AdicionarTexto igualColuna = new AdicionarTexto(g, "=", 7);
                igualColuna.Desenhar(iniX, _y);

                iniX += 41;

                int tituloColunaTotal = colunaTotalHeader.Medida.Largura;
                valorTotalProduto.Desenhar((iniX + tituloColunaTotal) - valorTotalProduto.Medida.Largura, _y);

                _y += quantidade.Medida.Altura;

                decimal valorDescontoItem = detalhe.prod.vDesc ?? 0.0m;
                if (valorDescontoItem > 0.0m)
                {
                    AdicionarTexto descontoColuna = new AdicionarTexto(g, "Desconto", 7);
                    descontoColuna.Desenhar(x + 50, _y);

                    StringBuilder descontoItemTexto = new StringBuilder("-");
                    descontoItemTexto.Append(valorDescontoItem.ToString("N2"));
                    AdicionarTexto valorDescontoItemColuna  = new AdicionarTexto(g, descontoItemTexto.ToString(), 7);
                    int            valorDescontoItemColunaX = ((x + 246) + tituloColunaTotal) -
                                                              valorDescontoItemColuna.Medida.Largura;
                    valorDescontoItemColuna.Desenhar(valorDescontoItemColunaX, _y);

                    _y += descontoColuna.Medida.Altura;
                }

                decimal valorAcrescimoItem = detalhe.prod.vOutro ?? 0.0m;
                if (valorAcrescimoItem > 0.0m)
                {
                    AdicionarTexto acrescimoColuna = new AdicionarTexto(g, "Acréscimo", 7);
                    acrescimoColuna.Desenhar(x + 50, _y);

                    StringBuilder acrescimoItemTexto = new StringBuilder("+");
                    acrescimoItemTexto.Append(valorAcrescimoItem.ToString("N2"));
                    AdicionarTexto valorAcrescimoItemColuna  = new AdicionarTexto(g, acrescimoItemTexto.ToString(), 7);
                    int            valorAcrescimoItemColunaX = ((x + 246) + tituloColunaTotal) -
                                                               valorAcrescimoItemColuna.Medida.Largura;
                    valorAcrescimoItemColuna.Desenhar(valorAcrescimoItemColunaX, _y);

                    _y += acrescimoColuna.Medida.Altura;
                }

                if (valorDescontoItem > 0.0m || valorAcrescimoItem > 0.0m)
                {
                    AdicionarTexto valorLiquidoTexto = new AdicionarTexto(g, "Valor Líquido", 7);
                    valorLiquidoTexto.Desenhar(x + 50, _y);

                    AdicionarTexto valorLiquidoTotalTexto = new AdicionarTexto(g,
                                                                               ((detalheTotal + valorAcrescimoItem) - valorDescontoItem).ToString("N2"), 7);
                    int valorLiquidoTotalTextoX = ((x + 246) + tituloColunaTotal) -
                                                  valorLiquidoTotalTexto.Medida.Largura;
                    valorLiquidoTotalTexto.Desenhar(valorLiquidoTotalTextoX, _y);

                    _y += valorLiquidoTexto.Medida.Altura;
                }
            }
            #endregion

            #endregion

            _y += 3;

            LinhaHorizontal(g, x, _y, larguraLinha);

            #region totais
            AdicionarTexto textoQuantidadeTotalItens = new AdicionarTexto(g, "Qtde. total de itens", 7);
            textoQuantidadeTotalItens.Desenhar(x, _y);

            AdicionarTexto qtdTotalItens  = new AdicionarTexto(g, det.Count.ToString(), 7);
            int            qtdTotalItensX = (larguraLinhaMargemDireita - qtdTotalItens.Medida.Largura);
            qtdTotalItens.Desenhar(qtdTotalItensX, _y);
            _y += textoQuantidadeTotalItens.Medida.Altura;

            AdicionarTexto textoValorTotal = new AdicionarTexto(g, "Valor total R$", 7);
            textoValorTotal.Desenhar(x, _y);

            decimal        valorTotal      = det.Sum(prod => prod.prod.vProd);
            AdicionarTexto valorTotalTexto = new AdicionarTexto(g, valorTotal.ToString("N2"), 7);
            int            qtdValorTotalX  = (larguraLinhaMargemDireita - valorTotalTexto.Medida.Largura);
            valorTotalTexto.Desenhar(qtdValorTotalX, _y);
            _y += textoValorTotal.Medida.Altura;

            decimal totalDesconto    = _nfe.infNFe.total.ICMSTot.vDesc;
            decimal totalOutras      = _nfe.infNFe.total.ICMSTot.vOutro;
            decimal valorTotalAPagar = valorTotal + totalOutras - totalDesconto;

            if (totalDesconto > 0)
            {
                AdicionarTexto textoDesconto = new AdicionarTexto(g, "Desconto R$", 7);
                textoDesconto.Desenhar(x, _y);

                AdicionarTexto valorDesconto  = new AdicionarTexto(g, totalDesconto.ToString("N2"), 7);
                int            valorDescontoX = (larguraLinhaMargemDireita - valorDesconto.Medida.Largura);
                valorDesconto.Desenhar(valorDescontoX, _y);
                _y += textoDesconto.Medida.Altura;
            }
            if (totalOutras > 0)
            {
                AdicionarTexto textoOutras = new AdicionarTexto(g, "Acréscimo R$", 7);
                textoOutras.Desenhar(x, _y);

                AdicionarTexto valorAcrescimo  = new AdicionarTexto(g, totalOutras.ToString("N2"), 7);
                int            valorAcrescimoX = (larguraLinhaMargemDireita - valorAcrescimo.Medida.Largura);
                valorAcrescimo.Desenhar(valorAcrescimoX, _y);
                _y += textoOutras.Medida.Altura;
            }
            if (totalDesconto > 0 || totalOutras > 0)
            {
                AdicionarTexto textoValorAPagar = new AdicionarTexto(g, "Valor a Pagar R$", 7);
                textoValorAPagar.Desenhar(x, _y);

                AdicionarTexto valorAPagar  = new AdicionarTexto(g, valorTotalAPagar.ToString("N2"), 7);
                int            valorAPagarX = (larguraLinhaMargemDireita - valorAPagar.Medida.Largura);
                valorAPagar.Desenhar(valorAPagarX, _y);
                _y += textoValorAPagar.Medida.Altura + 2;
            }

            AdicionarTexto tituloFormaPagamento = new AdicionarTexto(g, "FORMA PAGAMENTO", 7);
            tituloFormaPagamento.Desenhar(x, _y);

            AdicionarTexto tituloValorPago  = new AdicionarTexto(g, "VALOR PAGO R$", 7);
            int            tituloValorPagoX = (larguraLinhaMargemDireita - tituloValorPago.Medida.Largura);
            tituloValorPago.Desenhar(tituloValorPagoX, _y);
            _y += tituloFormaPagamento.Medida.Altura;

            foreach (pag pag in _nfe.infNFe.pag)
            {
                // v3.1
                if (pag.tPag != null)
                {
                    AdicionaFormaPagamento(x, larguraLinhaMargemDireita, g, pag.tPag, pag.vPag);
                }

                // v4.0
                if (pag.detPag != null)
                {
                    foreach (var detPag in pag.detPag)
                    {
                        AdicionaFormaPagamento(x, larguraLinhaMargemDireita, g, detPag.tPag, detPag.vPag);
                    }
                }
            }

            _y += 2;

            if (_troco > 0)
            {
                AdicionarTexto textoTroco = new AdicionarTexto(g, "Troco R$ (TOTAL PAGO R$" + _totalPago.ToString("N2") + ")", 7);
                textoTroco.Desenhar(x, _y);

                AdicionarTexto textoTrocoValor  = new AdicionarTexto(g, _troco.ToString("N2"), 7);
                int            textoTrocoValorX = (larguraLinhaMargemDireita - textoTrocoValor.Medida.Largura);
                textoTrocoValor.Desenhar(textoTrocoValorX, _y);
                _y += textoTroco.Medida.Altura;
            }
            #endregion

            _y += 5;

            LinhaHorizontal(g, x, _y, larguraLinha);

            #region consulta QrCode
            AdicionarTexto textoConsulteChave  = new AdicionarTexto(g, "Consulte pela Chave de Acesso em", 7);
            int            textoConsulteChaveX = ((larguraLinha - textoConsulteChave.Medida.Largura) / 2);
            textoConsulteChave.Desenhar(textoConsulteChaveX, _y);

            _y += textoConsulteChave.Medida.Altura;

            AdicionarTexto urlConsulta = new AdicionarTexto(g,
                                                            string.IsNullOrEmpty(_nfe.infNFeSupl.urlChave) ? _nfe.infNFeSupl.ObterUrlConsulta(_nfe, _configuracaoDanfeNfce.VersaoQrCode) : _nfe.infNFeSupl.urlChave, 7);
            int urlConsultaX = ((larguraLinha - urlConsulta.Medida.Largura) / 2);
            urlConsulta.Desenhar(urlConsultaX, _y);

            _y += urlConsulta.Medida.Altura;

            string novaChave = GeraChaveAcesso(_nfe);

            AdicionarTexto chave     = new AdicionarTexto(g, novaChave, 7);
            int            urlChaveX = ((larguraLinha - chave.Medida.Largura) / 2);
            chave.Desenhar(urlChaveX, _y);

            _y += chave.Medida.Altura;
            _y += 10;
            #endregion


            var mensagemConsumidor = MontaMensagemConsumidor(_nfe.infNFe.dest);

            var consumidor            = new AdicionarTexto(g, mensagemConsumidor, 9);
            var quebraLinhaConsumidor = new DefineQuebraDeLinha(
                consumidor,
                new ComprimentoMaximo(larguraLinhaMargemDireita),
                consumidor.Medida.Largura);

            consumidor = quebraLinhaConsumidor.DesenharComQuebras(g);
            var consumidorX = (larguraLinha - consumidor.Medida.Largura) / 2;
            consumidor.Desenhar(consumidorX, _y);

            _y += consumidor.Medida.Altura + 10;

            var mensagemDadosNfCe = MontaMensagemDadosNfce(_nfe);

            var dadosNfce  = new AdicionarTexto(g, mensagemDadosNfCe, 7);
            var dadosNfceX = (larguraLinha - dadosNfce.Medida.Largura) / 2;
            dadosNfce.Desenhar(dadosNfceX, _y);

            _y += dadosNfce.Medida.Altura;

            if (_nfe.infNFe.ide.tpEmis == TipoEmissao.teNormal)
            {
                var textoProtocoloAutorizacao = new StringBuilder("Protocolo de autorização: ");
                textoProtocoloAutorizacao.Append(_proc.protNFe.infProt.nProt);
                var protocoloAutorizacao  = new AdicionarTexto(g, textoProtocoloAutorizacao.ToString(), 7);
                int protocoloAutorizacaoX = (larguraLinha - protocoloAutorizacao.Medida.Largura) / 2;
                protocoloAutorizacao.Desenhar(protocoloAutorizacaoX, _y);
                _y += protocoloAutorizacao.Medida.Altura;


                var textoDataAutorizacao = new StringBuilder("Data de autorização ");
                textoDataAutorizacao.Append(_proc.protNFe.infProt.dhRecbto.ToString("G"));
                var dataAutorizacao  = new AdicionarTexto(g, textoDataAutorizacao.ToString(), 7);
                int dataAutorizacaoX = (larguraLinha - dataAutorizacao.Medida.Largura) / 2;
                dataAutorizacao.Desenhar(dataAutorizacaoX, _y);
                _y += dataAutorizacao.Medida.Altura;
            }

            if (_nfe.infNFe.ide.tpEmis != TipoEmissao.teNormal)
            {
                _y += 10;
                _y  = MensagemContingencia(g, larguraLinha, _y);
            }

            _y += 8;

            var urlQrCode = ObtemUrlQrCode(_nfe, _cIdToken, _csc);

            var qrCodeImagem   = QrCode.Gerar(urlQrCode);
            var qrCodeImagemX  = (larguraLinha - qrCodeImagem.Size.Width) / 2;
            var desenharQrCode = new AdicionarImagem(g, qrCodeImagem, qrCodeImagemX, _y);
            desenharQrCode.Desenhar();

            _y += qrCodeImagem.Size.Height + 10;

            LinhaHorizontal(g, x, _y, larguraLinha);

            _y += 5;

            var tributosIncidentes = _nfe.infNFe.total.ICMSTot.vTotTrib;

            if (tributosIncidentes != 0)
            {
                StringBuilder mensagemTributosTotais =
                    new StringBuilder("Tributos Totais Incidentes (Lei Federal 12.741/2012): R$");
                mensagemTributosTotais.Append(tributosIncidentes.ToString("N2"));

                AdicionarTexto tributosTotais  = new AdicionarTexto(g, mensagemTributosTotais.ToString(), 7);
                int            tributosTotaisX = (larguraLinha - tributosTotais.Medida.Largura) / 2;
                tributosTotais.Desenhar(tributosTotaisX, _y);

                _y += tributosTotais.Medida.Altura;

                _y += 5;

                LinhaHorizontal(g, x, _y, larguraLinha);
            }


            string observacoes = string.Empty;

            if (_nfe != null)
            {
                if (_nfe.infNFe != null)
                {
                    if (_nfe.infNFe.infAdic != null)
                    {
                        observacoes = _nfe.infNFe.infAdic.infCpl;
                    }
                }
            }

            if (!string.IsNullOrEmpty(observacoes))
            {
                _y += 5;
                var observacao       = new AdicionarTexto(g, observacoes, 7);
                var quebraObservacao = new DefineQuebraDeLinha(observacao,
                                                               new ComprimentoMaximo(larguraLinhaMargemDireita), observacao.Medida.Largura);
                observacao = quebraObservacao.DesenharComQuebras(g);
                observacao.Desenhar(x, _y);

                _y += observacao.Medida.Altura;
            }
        }
Esempio n. 19
0
        private void DesenharTabelaItens(Graphics g)
        {
            y += 3;
            int iniX = x;

            CriaHeaderColuna("CÓDIGO", g, iniX, y);
            iniX += 50;

            AdicionarTexto colunaDescricaoHeader = CriaHeaderColuna("DESCRIÇÃO", g, iniX, y);

            y += colunaDescricaoHeader.Medida.Altura;

            CriaHeaderColuna("QTDE", g, iniX, y);
            iniX += 25;

            CriaHeaderColuna("UN", g, iniX, y);
            iniX += 25;

            CriaHeaderColuna("x", g, iniX, y);
            iniX += 20;

            AdicionarTexto colunaValorUnitarioHeader = CriaHeaderColuna("VALOR UNITÁRIO", g, iniX, y);

            iniX += 85;

            CriaHeaderColuna("=", g, iniX, y);
            iniX += 41;

            AdicionarTexto colunaTotalHeader = CriaHeaderColuna("TOTAL", g, iniX, y);

            y += colunaTotalHeader.Medida.Altura + 10;

            var dets = _nfe.infNFe.det;

            #region preencher itens
            foreach (var detalhe in dets)
            {
                AdicionarTexto codigo = new AdicionarTexto(g, detalhe.prod.cProd, 7);
                codigo.Desenhar(x, y);

                AdicionarTexto nome       = new AdicionarTexto(g, detalhe.prod.xProd, 7);
                QuebraDeLinha  quebraNome = new QuebraDeLinha(nome, new ComprimentoMaximo(227), nome.Medida.Largura);
                nome = quebraNome.DesenharComQuebras(g);
                nome.Desenhar(x + 50, y);
                y += nome.Medida.Altura;

                var            ucom          = detalhe.prod?.uCom.Length > 3 ? detalhe.prod.uCom.Substring(0, 3) : string.Empty;
                AdicionarTexto quantidade    = new AdicionarTexto(g, $"{detalhe.prod.qCom.ToString("N4")}   {ucom}", 7);
                AdicionarTexto valorUnitario = new AdicionarTexto(g, detalhe.prod.vUnCom.ToString("C"), 7);
                AdicionarTexto vezesX        = new AdicionarTexto(g, "x", 7);

                decimal        detalheTotal      = detalhe.prod.vProd;
                AdicionarTexto valorTotalProduto = new AdicionarTexto(g, detalheTotal.ToString("C"), 7);

                iniX = x + 50;
                quantidade.Desenhar(iniX, y);

                iniX += 70;
                vezesX.Desenhar(iniX, y);

                iniX += 10;
                int tituloColunaUnidadeLargura = colunaValorUnitarioHeader.Medida.Largura;
                valorUnitario.Desenhar((iniX + tituloColunaUnidadeLargura) - valorUnitario.Medida.Largura, y);

                iniX += 85;
                AdicionarTexto igualColuna = new AdicionarTexto(g, "=", 7);
                igualColuna.Desenhar(iniX, y);

                iniX += 41;
                int tituloColunaTotal = colunaTotalHeader.Medida.Largura;
                valorTotalProduto.Desenhar((iniX + tituloColunaTotal) - valorTotalProduto.Medida.Largura, y);

                y += quantidade.Medida.Altura;
                decimal valorDescontoItem = detalhe.prod.vDesc ?? 0.0m;

                if (valorDescontoItem > 0.0m)
                {
                    AdicionarTexto descontoColuna = new AdicionarTexto(g, "Desconto", 7);
                    descontoColuna.Desenhar(x + 50, y);

                    StringBuilder descontoItemTexto = new StringBuilder("-");
                    descontoItemTexto.Append(valorDescontoItem.ToString("N2"));
                    AdicionarTexto valorDescontoItemColuna  = new AdicionarTexto(g, descontoItemTexto.ToString(), 7);
                    int            valorDescontoItemColunaX = ((x + 246) + tituloColunaTotal) -
                                                              valorDescontoItemColuna.Medida.Largura;
                    valorDescontoItemColuna.Desenhar(valorDescontoItemColunaX, y);

                    y += descontoColuna.Medida.Altura;
                }

                decimal valorAcrescimoItem = detalhe.prod.vOutro ?? 0.0m;
                if (valorAcrescimoItem > 0.0m)
                {
                    AdicionarTexto acrescimoColuna = new AdicionarTexto(g, "Acréscimo", 7);
                    acrescimoColuna.Desenhar(x + 50, y);

                    StringBuilder acrescimoItemTexto = new StringBuilder("+");
                    acrescimoItemTexto.Append(valorAcrescimoItem.ToString("N2"));
                    AdicionarTexto valorAcrescimoItemColuna  = new AdicionarTexto(g, acrescimoItemTexto.ToString(), 7);
                    int            valorAcrescimoItemColunaX = ((x + 246) + tituloColunaTotal) -
                                                               valorAcrescimoItemColuna.Medida.Largura;
                    valorAcrescimoItemColuna.Desenhar(valorAcrescimoItemColunaX, y);

                    y += acrescimoColuna.Medida.Altura;
                }

                if (valorDescontoItem > 0.0m || valorAcrescimoItem > 0.0m)
                {
                    AdicionarTexto valorLiquidoTexto = new AdicionarTexto(g, "Valor Líquido", 7);
                    valorLiquidoTexto.Desenhar(x + 50, y);

                    AdicionarTexto valorLiquidoTotalTexto = new AdicionarTexto(g,
                                                                               ((detalheTotal + valorAcrescimoItem) - valorDescontoItem).ToString("N2"), 7);
                    int valorLiquidoTotalTextoX = ((x + 246) + tituloColunaTotal) -
                                                  valorLiquidoTotalTexto.Medida.Largura;
                    valorLiquidoTotalTexto.Desenhar(valorLiquidoTotalTextoX, y);

                    y += valorLiquidoTexto.Medida.Altura;
                }
            }
            #endregion
        }