Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Um fix para o BoletoItau, teste para ele no pyboleto_sample e algum rearranjo de comments #21

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 66 additions & 5 deletions bin/pyboleto_sample.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,47 @@
#!/Users/dudus/Work/pyboleto/venv/bin/python
# -*- coding: utf-8 -*-

import datetime

import pyboleto
from pyboleto.bank.real import BoletoReal
from pyboleto.bank.bradesco import BoletoBradesco
from pyboleto.bank.caixa import BoletoCaixa
from pyboleto.bank.bancodobrasil import BoletoBB
from pyboleto.bank.santander import BoletoSantander
from pyboleto.bank.itau import BoletoItau
from pyboleto.pdf import BoletoPDF
import datetime


def print_teste_boleto(boleto, banco_nome):
"""
Gera dois arquivos PDF para teste do 'boleto', um com "normal",
outro no formato "carnê duplo", cada um composo de duas páginas
iguais.

boleto: instância de classe descendente de BoletoData (ex.: BoletoItau)
banco_nome: string para geração do nome do PDF (ex.: 'itau')

FIXME: com esta generalização, perde-se apenas o diferente nome de cliente
em cada boleto (teste 1, teste 2, etc.). Opcionalmente, esta função poderia
aceitar uma lista de boletos, em vez de apenas um.

TODO: refatorar testes abaixo (print_bb, print_caixa, etc.) para
usar esta função genérica.
"""
# Caixa Formato normal - uma pagina por folha A4
pdf = BoletoPDF('boleto-%s-formato-normal-teste.pdf' % banco_nome)
for i in range(2):
pdf.drawBoleto(boleto)
pdf.nextPage()
pdf.save()

# Formato carnê - uma pagina por folha A4
pdf = BoletoPDF('boleto-%s-formato-carne-teste.pdf' % banco_nome, True)
for i in range(2):
pdf.drawBoletoCarneDuplo(boleto, boleto)
pdf.nextPage()
pdf.save()


def print_bb():
Expand Down Expand Up @@ -249,7 +283,34 @@ def print_caixa():


def print_itau():
pass
d = BoletoItau()
d.carteira = '175'
d.cedente = 'Empresa ACME LTDA'
d.cedente_documento = "102.323.777-01"
d.cedente_endereco = "Rua Acme, 123 - Centro - Sao Paulo/SP - CEP: 12345-678"
d.agencia_cedente = '1565'
d.conta_cedente = '32414'
d.data_vencimento = datetime.date(2010, 3, 27)
d.data_documento = datetime.date(2010, 2, 12)
d.data_processamento = datetime.date(2010, 2, 12)
d.valor = 255.00
d.valor_documento = d.valor
d.nosso_numero = "80195250"
d.numero_documento = d.nosso_numero
d.instrucoes = [
"1 - Sr. Caixa, cobrar multa de 2% após o vencimento",
"2 - Receber até 10 dias após o vencimento",
]
d.demonstrativo = [
"1 - Serviço Teste R$ 255,00",
"2 - Total R$ 255,00",
]
d.sacado = [
"John Doe",
"Sesame Street, w/o number",
"Nowhere Land, NL - 00000-000"
]
print_teste_boleto(d, 'itau')


def print_all():
Expand All @@ -264,9 +325,6 @@ def print_all():
print "Bradesco"
print_bradesco()

#print "Itau"
#print_itau()

print "Caixa"
print_caixa()

Expand All @@ -276,6 +334,9 @@ def print_all():
print "Santander"
print_santander()

print "Itau"
print_itau()

print "----------------------------------"
print "Ok"

Expand Down
34 changes: 17 additions & 17 deletions pyboleto/bank/itau.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
# -*- coding: utf-8
from ..data import BoletoData, custom_property

### CAUTION - NÃO TESTADO ###


class BoletoItau(BoletoData):
'''Implementa Boleto Itaú

Gera Dados necessários para criação de boleto para o banco Itau
Todas as carteiras com excessão das que utilizam 15 dígitos: (106,107,
195,196,198)
'''
"""
Gera Dados necessários para criação de boleto para o banco Itau
Todas as carteiras com excessão das que utilizam 15 dígitos: (106,107,
195,196,198)
"""

# Nosso numero (sem dv) com 8 digitos
nosso_numero = custom_property('nosso_numero', 8)

# Conta (sem dv) com 5 digitos
conta_cedente = custom_property('conta_cedente', 5)

# Agência (sem dv) com 4 digitos
agencia_cedente = custom_property('agencia_cedente', 4)

carteira = custom_property('carteira', 3)

def __init__(self):
Expand Down Expand Up @@ -49,12 +49,12 @@ def format_nosso_numero(self):

@property
def campo_livre(self):
content = "%3s%8s%1s%4s%5s%1s%3s" % (self.carteira,
self.nosso_numero,
self.dv_nosso_numero,
self.agencia_cedente,
self.conta_cedente,
self.dv_agencia_conta_cedente,
'000'
)
return content
return str("%3s%8s%1s%4s%5s%1s%3s" % (
self.carteira,
self.nosso_numero,
self.dv_nosso_numero,
self.agencia_cedente,
self.conta_cedente,
self.dv_agencia_conta_cedente,
'000'
))
Loading