/// <summary> /// Retorna o array de campos a serme renderizados nas posicições corretas /// </summary> /// <param name="blt">Instancia de todoas as váriáveis parametrizadas</param> public override void MakeFields(Boleto blt) { string cTextoAdd = ""; if (Fields == null) { Fields = new List <FieldDraw>(); } if (blt.ExibeReciboSacado) { // Logo do Cedente/Recebedor if (blt.CedenteLogo != null) { // Calcula a proporção para centralizar a imagem no local correto // fw? -> fh9 // w -> h // fw? = w*fh9/fh int h = blt.CedenteLogoHeight; // 9 int w = (int)((double)(h * blt.CedenteLogo.Width) / (double)blt.CedenteLogo.Height); int x = (35 - w) / 2; Fields.Add(new FieldDraw(x, 0, null, null, w, h) { Image = blt.CedenteLogo }); Height = h - 9; } else if (blt.ImageBanco != null) { // Logo padrão do Banco Fields.Add(new FieldDraw(0, 0, null, null, 35, 9) { Image = blt.ImageBanco }); Height = 0; } // Linha Superior Fields.Add(new FieldDraw(38, 3 + Height, null, blt.BancoCodigo, 15, 6, StringAlignment.Center, 0x05)); if (blt.ExibeReciboLinhaDigitavel) { Fields.Add(new FieldDraw(54, 3 + Height, null, blt.LinhaDigitavel, 115, 6, StringAlignment.Far, 0x00)); } else { Fields.Add(new FieldDraw(54, 3 + Height, null, BoletoTextos.Recibo, 115, 6, StringAlignment.Far, 0x00)); } // Linha 1: Centente, CNPJ, Vencimento Fields.Add(new FieldDraw(0, 9 + Height, BoletoTextos.Cedente, blt.Cedente, 94, 7, StringAlignment.Near, 0x0B)); Fields.Add(new FieldDraw(94, 9 + Height, blt.CedenteDocumentoTipo, blt.CedenteDocumento, 35) { Linhas = 0x0B }); Fields.Add(new FieldDraw(129, 9 + Height, "Vencimento", blt.DataVencimento.ToString("dd/MM/yyyy")) { Linhas = 0x0F, Destaque = true }); // Linha 2: Endereço, Sacado Fields.Add(new FieldDraw(0, 16 + Height, "Endereço", blt.CedenteEndereco, 94) { Align = StringAlignment.Near }); Fields.Add(new FieldDraw(94, 16 + Height, BoletoTextos.Sacado, blt.Sacado, 75) { Align = StringAlignment.Near, Linhas = 0x07 }); // TODO: Endereço do Savado ? blt.ExibeEnderecoReciboSacado ??? // Linha 3: Nosso Numero, Carteira, Espécie, Quantidade, Valor Fields.Add(new FieldDraw(0, 23 + Height, "Nosso Número", blt.NossoNumeroExibicao)); Fields.Add(new FieldDraw(40, 23 + Height, "Carteira", blt.CarteiraExibicao, 20) { Align = StringAlignment.Center }); Fields.Add(new FieldDraw(60, 23 + Height, BoletoTextos.EspecieDoc, blt.Especie.ToString(), 20) { Align = StringAlignment.Center }); Fields.Add(new FieldDraw(80, 23 + Height, "Quantidade", blt.Quantidade == 0 ? "" : blt.Quantidade.ToString(), 20) { Align = StringAlignment.Center }); Fields.Add(new FieldDraw(100, 23 + Height, "Valor", blt.ValorUnitario == 0 ? "" : blt.ValorUnitario.ToString("C"), 29)); Fields.Add(new FieldDraw(129, 23 + Height, BoletoTextos.CedenteConta, blt.AgenciaConta) { Linhas = 0x07 }); // Linha 4: Data, Numero, Aceite, Especie do documento, Aceite, Parcelamento, Valor Documento Fields.Add(new FieldDraw(0, 30 + Height, "Data do Documento", blt.DataDocumento.ToString("dd/MM/yyyy"))); Fields.Add(new FieldDraw(40, 30 + Height, "Número do Documento", blt.NumeroDocumento)); Fields.Add(new FieldDraw(80, 30 + Height, "Aceite", blt.Aceite, 20) { Align = StringAlignment.Center }); Fields.Add(new FieldDraw(100, 30 + Height, "Parcela", blt.ParcelaTotal > 0 ? (blt.ParcelaNumero + " de " + blt.ParcelaTotal) : "", 29) { Align = StringAlignment.Center }); Fields.Add(new FieldDraw(129, 30 + Height, "(=)Valor Documento", blt.ValorDocumento.ToString("C")) { Linhas = 0x07, Destaque = true }); // Linha 5: Demostrativo Fields.Add(new FieldDraw(0, 37 + Height, "Demonstrativo", cTextoAdd + CobUtil.ClearHTML(blt.Demonstrativo), 169, 11, StringAlignment.Near, 0x07)); Fields.Add(new FieldDraw(142, 48 + Height, "Autenticação Mecânica", null) { Linhas = 0x00 }); if (blt.ImageCorte != null) { Fields.Add(new FieldDraw(1, 53 + Height, null, null, 167, 3) { Image = blt.ImageCorte }); } Height += 60; } else { Height = 0; } // Segunda parte do boleto Width = 170; // Segunda parte Fields.Add(new FieldDraw(0, Height, null, null, 35, 9) { Image = blt.ImageBanco }); Fields.Add(new FieldDraw(38, 3 + Height, null, blt.BancoCodigo, 15, 6, StringAlignment.Center, 0x05)); Fields.Add(new FieldDraw(54, 3 + Height, null, blt.LinhaDigitavel, 115, 6, StringAlignment.Far, 0x00)); Fields.Add(new FieldDraw(0, 9 + Height, "Local de Pagamento", blt.LocalPagamento, 129, 7, StringAlignment.Near, 0x0B)); Fields.Add(new FieldDraw(129, 9 + Height, "Vencimento", blt.DataVencimento.ToString("dd/MM/yyyy")) { Linhas = 0x0F, Destaque = true }); string cCNPJ = blt.CedenteDocumento; if (cCNPJ != null && cCNPJ.Length == 14) { cCNPJ = cCNPJ.Substring(0, 2) + "." + cCNPJ.Substring(2, 3) + "." + cCNPJ.Substring(5, 3) + "/" + cCNPJ.Substring(8, 4) + "." + cCNPJ.Substring(12, 2); } Fields.Add(new FieldDraw(0, 16 + Height, BoletoTextos.Cedente, blt.Cedente, 96) { Align = StringAlignment.Near }); Fields.Add(new FieldDraw(96, 16 + Height, blt.CedenteDocumentoTipo, cCNPJ, 33)); Fields.Add(new FieldDraw(129, 16 + Height, BoletoTextos.CedenteConta, blt.AgenciaConta) { Linhas = 0x07 }); Fields.Add(new FieldDraw(0, 23 + Height, "Data Documento", blt.DataDocumento.ToString("dd/MM/yyyy"), 30)); Fields.Add(new FieldDraw(30, 23 + Height, "Número do Documento", blt.NumeroDocumento, 35)); Fields.Add(new FieldDraw(65, 23 + Height, BoletoTextos.EspecieDoc, blt.Especie.ToString(), 19) { Align = StringAlignment.Center }); Fields.Add(new FieldDraw(84, 23 + Height, "Aceite", blt.Aceite, 12) { Align = StringAlignment.Center }); Fields.Add(new FieldDraw(96, 23 + Height, "Data Processamento", blt.DataProcessamento.ToString("dd/MM/yyyy"), 33)); Fields.Add(new FieldDraw(129, 23 + Height, "Nosso Número", blt.NossoNumeroExibicao) { Linhas = 0x07 }); if (blt.CIP != "") { Fields.Add(new FieldDraw(0, 30 + Height, "Uso do Banco", "", 20)); // TODO: A ser descontinuado! Fields.Add(new FieldDraw(20, 30 + Height, "CIP", blt.CIP, 10) { Align = StringAlignment.Center }); Fields.Add(new FieldDraw(30, 30 + Height, "Carteira", blt.CarteiraExibicao, 21) { Align = StringAlignment.Center }); } else { Fields.Add(new FieldDraw(0, 30 + Height, "Carteira", blt.CarteiraExibicao, 51) { Align = StringAlignment.Center }); } Fields.Add(new FieldDraw(51, 30 + Height, "Espécie", "R$", 14) { Align = StringAlignment.Center, Destaque = true }); Fields.Add(new FieldDraw(65, 30 + Height, "Quantidade", blt.Quantidade == 0 ? "" : blt.Quantidade.ToString(), 31) { Align = StringAlignment.Center }); Fields.Add(new FieldDraw(96, 30 + Height, "(x)Valor", blt.ValorUnitario == 0 ? "" : blt.ValorUnitario.ToString("C"), 33)); Fields.Add(new FieldDraw(129, 30 + Height, "(=)Valor Documento", blt.ValorDocumento.ToString("C")) { Linhas = 0x07, Destaque = true }); Fields.Add(new FieldDraw(0, 37 + Height, BoletoTextos.Instrucoes, cTextoAdd + CobUtil.ClearHTML(blt.Instrucoes), 129, 35, StringAlignment.Near)); Fields.Add(new FieldDraw(129, 37 + Height, "(-)Descontos/Abatimentos", blt.ValorDesconto > 0 ? blt.ValorDesconto.ToString("C") : "") { Linhas = 0x07 }); Fields.Add(new FieldDraw(129, 44 + Height, "(-)Outras Deduções", blt.ValorOutras > 0 ? blt.ValorOutras.ToString("C") : "") { Linhas = 0x07 }); Fields.Add(new FieldDraw(129, 51 + Height, "(+)Mora/Multa", blt.ValorMoraMulta > 0 ? blt.ValorMoraMulta.ToString("C") : "") { Linhas = 0x07 }); Fields.Add(new FieldDraw(129, 58 + Height, "(+)Outros Acréscimos", blt.ValorAcrescimo > 0 ? blt.ValorAcrescimo.ToString("C") : "") { Linhas = 0x07 }); double nValor = blt.ValorDocumento - blt.ValorDesconto - blt.ValorOutras + blt.ValorMoraMulta + blt.ValorAcrescimo; Fields.Add(new FieldDraw(129, 65 + Height, "(=)Valor", nValor > 0 && nValor != blt.ValorDocumento ? nValor.ToString("C") : "") { Linhas = 0x07 }); Fields.Add(new FieldDraw(0, 72 + Height, BoletoTextos.Sacado, blt.Sacado + " - " + blt.SacadoDocumento + "\r\n" + blt.SacadoEndereco + "\r\n" + blt.Bairro + " - " + blt.Cidade + " - " + blt.Cep + " - " + blt.UF, 169, 14, StringAlignment.Near, 0x0F)); if (!string.IsNullOrEmpty(blt.Avalista)) { Fields.Add(new FieldDraw(100, 79 + Height, BoletoTextos.Avalista, blt.Avalista, 100, 7, StringAlignment.Near, 0)); } Fields.Add(new FieldDraw(114, 86 + Height, "Autenticação Mecânica / Ficha de compensação", null) { Linhas = 0x00 }); if (!string.IsNullOrEmpty(blt.CodigoBarras)) { Fields.Add(new FieldDraw(5, 88 + Height, null, null, 0, 9) { Image = CobUtil.BarCodeImage(blt.CodigoBarras, 3, blt.DPI) }); } Height += 85 + 15; }