From ba678fe369ac9bd6fd97343ba4db7770d01d1e20 Mon Sep 17 00:00:00 2001 From: pfrozi Date: Fri, 24 Jul 2020 01:08:51 -0300 Subject: [PATCH 1/2] Permite ao consumidor informar a linha digitavel e o codigo de barras --- pyboleto/data.py | 12 +++++ pyboleto/pdf.py | 2 +- tests/test_banco_itau_com_linha_e_barcode.py | 57 ++++++++++++++++++++ 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 tests/test_banco_itau_com_linha_e_barcode.py diff --git a/pyboleto/data.py b/pyboleto/data.py index 1b1b0bd..bdc0e11 100644 --- a/pyboleto/data.py +++ b/pyboleto/data.py @@ -41,6 +41,7 @@ class CustomProperty(object): :type length: integer """ + def __init__(self, name, length): self.name = name self.length = length @@ -117,6 +118,8 @@ class BoletoData(object): **Parâmetros não obrigatórios**: + :param codigo_barras: Se o codigo de barras for informado, não calcula + :param linha_digitavel_ext: Se a linha digitável for informada (com espaços), não calcula :param quantidade: :param especie: Nunca precisa mudar essa opção *(default: 'R$')* :param especie_documento: @@ -161,6 +164,8 @@ def __init__(self, **kwargs): self.sacado_endereco = kwargs.pop('sacado_endereco', "") self.sacado_bairro = kwargs.pop('sacado_bairro', "") self.sacado_cep = kwargs.pop('sacado_cep', "") + self.codigo_barras = kwargs.pop('codigo_barras', None) + self.linha_digitavel_ext = kwargs.pop('linha_digitavel_ext', None) if kwargs: raise TypeError("Paramêtro(s) desconhecido: %r" % (kwargs, )) self._cedente_endereco = None @@ -187,6 +192,9 @@ def barcode(self): Total 44 """ + if not self.codigo_barras: + return self.codigo_barras + for attr, length, data_type in [ ('codigo_banco', 3, str), ('moeda', 1, str), @@ -435,6 +443,10 @@ def linha_digitavel(self): Esta é a linha que o cliente pode utilizar para digitar se o código de barras não estiver legível. """ + + if not self.linha_digitavel_ext: + return self.linha_digitavel_ext + linha = self.barcode if not linha: raise BoletoException("Boleto doesn't have a barcode") diff --git a/pyboleto/pdf.py b/pyboleto/pdf.py index c6fdc37..d05d8a9 100644 --- a/pyboleto/pdf.py +++ b/pyboleto/pdf.py @@ -780,7 +780,7 @@ def drawBoletoCarneDuplo(self, boletoDados1, boletoDados2=None): d = self.drawBoletoCarne(boletoDados1, y) y += d[1] + 6 * mm # self._drawHorizontalCorteLine(0, y, d[0]) - y += 7 * mm + # y += 7 * mm if boletoDados2: self.drawBoletoCarne(boletoDados2, y) diff --git a/tests/test_banco_itau_com_linha_e_barcode.py b/tests/test_banco_itau_com_linha_e_barcode.py new file mode 100644 index 0000000..f8d5f34 --- /dev/null +++ b/tests/test_banco_itau_com_linha_e_barcode.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +import unittest +import datetime + +from pyboleto.bank.itau import BoletoItau + +from .testutils import BoletoTestCase + + +class TestBancoItau(BoletoTestCase): + def setUp(self): + self.dados = [] + for i in range(3): + d = BoletoItau() + d.carteira = '109' + d.agencia_cedente = '0293' + d.conta_cedente = '01328' + d.conta_cedente_dv = '1' + d.data_vencimento = datetime.date(2009, 10, 19) + d.data_documento = datetime.date(2009, 10, 19) + d.data_processamento = datetime.date(2009, 10, 19) + d.valor_documento = 29.80 + d.nosso_numero = str(157 + i) + d.numero_documento = str(456 + i) + d.linha_digitavel_ext = "34191.09008 00015.710296 30132.810000 4 43950000002888" + d.codigo_barras = "34194439500000029801090000015710293013281999" + self.dados.append(d) + + def test_linha_digitavel(self): + self.assertEqual( + self.dados[0].linha_digitavel, + '34191.09008 00015.710296 30132.810000 4 43950000002888' + ) + + def test_codigo_de_barras(self): + self.assertEqual( + self.dados[0].barcode, + '34194439500000029801090000015710293013281999' + ) + + def test_agencia(self): + self.assertEqual(self.dados[0].agencia_cedente, '0293') + + def test_conta(self): + self.assertEqual(self.dados[0].conta_cedente, '01328') + + def test_dv_nosso_numero(self): + self.assertEqual(self.dados[0].dv_nosso_numero, 1) + + def test_dv_agencia_conta_cedente(self): + self.assertEqual(self.dados[0].dv_agencia_conta_cedente, 0) + + +suite = unittest.TestLoader().loadTestsFromTestCase(TestBancoItau) + +if __name__ == '__main__': + unittest.main() From 44fb5de554e958c9c104a09690a756f3ae6b0760 Mon Sep 17 00:00:00 2001 From: pfrozi Date: Fri, 24 Jul 2020 01:24:19 -0300 Subject: [PATCH 2/2] =?UTF-8?q?Inclus=C3=A3o=20dos=20testes=20unit=C3=A1ri?= =?UTF-8?q?os=20para=20quando=20as=20informa=C3=A7=C3=B5es=20calculadas=20?= =?UTF-8?q?de=20LD=20e=20bacode=20s=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyboleto/data.py | 8 ++++---- ...barcode.py => test_banco_itau_com_dados_calculados.py} | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) rename tests/{test_banco_itau_com_linha_e_barcode.py => test_banco_itau_com_dados_calculados.py} (91%) diff --git a/pyboleto/data.py b/pyboleto/data.py index bdc0e11..b0f022a 100644 --- a/pyboleto/data.py +++ b/pyboleto/data.py @@ -164,8 +164,8 @@ def __init__(self, **kwargs): self.sacado_endereco = kwargs.pop('sacado_endereco', "") self.sacado_bairro = kwargs.pop('sacado_bairro', "") self.sacado_cep = kwargs.pop('sacado_cep', "") - self.codigo_barras = kwargs.pop('codigo_barras', None) - self.linha_digitavel_ext = kwargs.pop('linha_digitavel_ext', None) + self.codigo_barras = kwargs.pop('codigo_barras', "") + self.linha_digitavel_ext = kwargs.pop('linha_digitavel_ext', "") if kwargs: raise TypeError("Paramêtro(s) desconhecido: %r" % (kwargs, )) self._cedente_endereco = None @@ -192,7 +192,7 @@ def barcode(self): Total 44 """ - if not self.codigo_barras: + if self.codigo_barras != "": return self.codigo_barras for attr, length, data_type in [ @@ -444,7 +444,7 @@ def linha_digitavel(self): de barras não estiver legível. """ - if not self.linha_digitavel_ext: + if self.linha_digitavel_ext != "": return self.linha_digitavel_ext linha = self.barcode diff --git a/tests/test_banco_itau_com_linha_e_barcode.py b/tests/test_banco_itau_com_dados_calculados.py similarity index 91% rename from tests/test_banco_itau_com_linha_e_barcode.py rename to tests/test_banco_itau_com_dados_calculados.py index f8d5f34..3322502 100644 --- a/tests/test_banco_itau_com_linha_e_barcode.py +++ b/tests/test_banco_itau_com_dados_calculados.py @@ -7,7 +7,7 @@ from .testutils import BoletoTestCase -class TestBancoItau(BoletoTestCase): +class TestBancoItauComDadosCalculados(unittest.TestCase): def setUp(self): self.dados = [] for i in range(3): @@ -51,7 +51,8 @@ def test_dv_agencia_conta_cedente(self): self.assertEqual(self.dados[0].dv_agencia_conta_cedente, 0) -suite = unittest.TestLoader().loadTestsFromTestCase(TestBancoItau) +suite = unittest.TestLoader().loadTestsFromTestCase( + TestBancoItauComDadosCalculados) if __name__ == '__main__': unittest.main()