Skip to content

Instantly share code, notes, and snippets.

@lucastex
Created April 29, 2011 22:01
Show Gist options
  • Save lucastex/949115 to your computer and use it in GitHub Desktop.
Save lucastex/949115 to your computer and use it in GitHub Desktop.
Possível maneira de se criar boletos com o plugin do Grails-Stella
def boleto = new BoletoBuilder()
boleto.build(100.00, "itau") {
datas {
vencimento xxx
documento xxx
processamento xxx
}
cedente {
nome xxx
agencia xxx, x
conta xxx, x
convenio xxx
carteira xxx
nossoNumero xxx, x
operacao xxx
}
sacado {
nome xxx
cpf xxx
cnpj xxx
endereco xxx
bairo xxx
cep xxx
cidade xxx, xx
}
documento xxx
pagamento local1, local2
instrucoes linha1, linha2, linha3
informacoes info1, info2, info3, info4, info5
}
boleto.render "PNG", response
//boleto.render "PDF", response
@fcy
Copy link

fcy commented May 2, 2011

Humm a preocupação com a consistência é importante mesmo, ficaria confuso a primeira vista e a pessoa iria errar sem querer pra depois lembrar que nesse caso é colchetes no lugar de chaves.

No caso original poderia escrever assim?

instrucoes
   linha1,
   linha2,
   linha3

@lucastex
Copy link
Author

lucastex commented May 2, 2011

Não, o primeiro parâmetro tem que estar junto a chamada do metodo... Assim tem como:

instrucoes linha1,
           linha2,
           linha3

@fcy
Copy link

fcy commented May 2, 2011

Então acho que resolve. Não tinha pensando nisso. Vai ficar bom tanto pra colocar tudo numa linha só quanto pra quem precisar colocar textos maiores.

Só colocar exemplos na documentação com essa identação.

@lucastex
Copy link
Author

lucastex commented May 2, 2011

é, tem que ser :)

@lucastex
Copy link
Author

lucastex commented May 2, 2011

Felipe, ficou assim:


        def boleto = new BoletoBuilder(1500, "itau")
        boleto.build {
            datas {
                vencimento (new Date() + 5)
                documento new Date()
                processamento new Date()
            }
            cedente {
                cedente       "Loja de ferramentas"
                agencia       1001, 'x'
                conta         1002,  3
                convenio      10
                carteira      20
                operacao      30
                nossoNumero   15000, 1
            }
            sacado {
                nome          "Nome do cliente"
                cpf           "000.000.000-00"
                endereco      "Rua sem nome, 1200 - apto 1001"
                bairro         "Centro"
                cep           "00000-000"
                cidade        "São Paulo", "SP"
            }
            aceite false
            documento numero: "12345", especie: "XXX"
            moeda valor: 1, quantidade: 1500

            pagamento  "Pagar até o vencimento", 
                       "Não receber após a data de vencimento"

            instrucoes "Não cobrar juros antes do vencimento", 
                       "Pagamento referente ao uso do sistema",
                       "Mensalidade de julho",
                       "Código do cliente: 12345"

            informacoes "Caro cliente, não se esqueca de pagar esta conta",
                        "Lembre-se que após 20 dias, seu acesso ao sistema irá ser restringido",
                        "e após 60 dias, seu sistema será totalmente desligado"           
        }

        def bytes = boleto.pdf()

        response.setContentType("application/pdf")
        response.outputStream << bytes

@fcy
Copy link

fcy commented May 2, 2011

Maneiro.

Só mais uma coisa, da pra omitir o .build do começo e ficar boleto { direto? :)

boleto {
....
}

@lucastex
Copy link
Author

lucastex commented May 2, 2011

Tem que chamar o método build do objeto builder, o metodo pode ter outro nome, mas mesmo assim fica obj.methodo.
Não queria injetar esse metodo automaticamente nos controllers por achar que pra esse caso acaba ficando demais... diferente de um e-mail

mail { 
   ...
}

Acho que o boleto é muito negócio pra estuprar os controllers e injetar isso a força via MOP :)

Tem outra coisa tb, o BoletoBuilder guarda estado (o boleto), pra poder chamar o .pdf() dps e o .png() sem ter que reconstruir o boleto denovo, :)

@fcy
Copy link

fcy commented May 2, 2011

Ah ta. Foi mais uma super preocupação com aparência hehehe

Ta maneiro assim.

@lucastex
Copy link
Author

lucastex commented May 2, 2011

:) valeu pela ajuda!

@lucastex
Copy link
Author

lucastex commented May 2, 2011

@fcy
Copy link

fcy commented May 2, 2011

Isso me faz ter vontade de ter um Groovy for iOS :)

@lucastex
Copy link
Author

lucastex commented May 2, 2011

haha :)

@marcotulioaraujo
Copy link

Poxa estava procurando aqui uma coisa parecida com isso.
Uma pergunta funciona com as versoes atuais do GRAILS?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment