-
-
Save lucastex/949115 to your computer and use it in GitHub Desktop.
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 |
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
Não, o primeiro parâmetro tem que estar junto a chamada do metodo... Assim tem como:
instrucoes linha1,
linha2,
linha3
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.
é, tem que ser :)
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
Maneiro.
Só mais uma coisa, da pra omitir o .build do começo e ficar boleto { direto? :)
boleto {
....
}
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, :)
Ah ta. Foi mais uma super preocupação com aparência hehehe
Ta maneiro assim.
:) valeu pela ajuda!
Tou finalizando já. Tá aqui o src: https://github.com/blanq/grails-stella/blob/master/src/groovy/br/com/caelum/grails/stella/builder/BoletoBuilder.groovy
Isso me faz ter vontade de ter um Groovy for iOS :)
haha :)
Poxa estava procurando aqui uma coisa parecida com isso.
Uma pergunta funciona com as versoes atuais do GRAILS?
Aí voltamos a chamada de um método só, igual em cima, só que lá usava vargars e esse recebe um array :)
Esse aí é o mesmo que
Tenho medo do pessoal mais novo confundir, pq vem no datas, cedente, sacado, tudo com { e } e depois chega noas instrucoes com [ e ] né...
Mas não tou vendo mtas outras alternativas diferentes dessa aí tb... :(