コード例 #1
0
def print_all():
    banks = {
        #"itau": "Itau",
        "bb": "Banco do Brasil",
        "caixa": "Caixa",
        "real": "Real",
        "santander": "Santander",
        "bradesco": "Bradesco",
    }
    for bank in banks:
        print("Gerando boleto para o banco " + banks[bank])
        data_func_name = "get_data_" + bank
        data_func = eval(data_func_name)
        boleto_datas = data_func()
        if sys.version_info < (3, ):
            boleto_PDF = BoletoPDF('boleto-' + bank + '-normal-teste.pdf')
        boleto_HTML = BoletoHTML('boleto-' + bank + '-normal-teste.html')
        for boleto_data in boleto_datas:
            if sys.version_info < (3, ):
                boleto_PDF.drawBoleto(boleto_data)
                boleto_PDF.nextPage()
                boleto_PDF.save()
            boleto_HTML.drawBoleto(boleto_data)
            boleto_HTML.nextPage()
            boleto_HTML.save()
コード例 #2
0
def print_all():
    banks = {
        # "itau": "Itau",
        "bb": "Banco do Brasil",
        "caixa": "Caixa",
        "real": "Real",
        "santander": "Santander",
        "bradesco": "Bradesco",
    }
    for bank in banks:
        print("Gerando boleto para o banco " + banks[bank])
        data_func_name = "get_data_" + bank
        data_func = eval(data_func_name)
        boleto_datas = data_func()
        if sys.version_info < (3,):
            boleto_PDF = BoletoPDF('boleto-' + bank + '-normal-teste.pdf')
        boleto_HTML = BoletoHTML('boleto-' + bank + '-normal-teste.html')
        for boleto_data in boleto_datas:
            if sys.version_info < (3,):
                boleto_PDF.drawBoleto(boleto_data)
                boleto_PDF.nextPage()
                boleto_PDF.save()
            boleto_HTML.drawBoleto(boleto_data)
            boleto_HTML.nextPage()
            boleto_HTML.save()
コード例 #3
0
    def test_html_rendering(self):
        dados = self.dados[0]
        bank = type(dados).__name__
        filename = tempfile.mktemp(prefix="pyboleto-", suffix=".html")
        boleto = BoletoHTML(filename)
        boleto.drawBoleto(dados)
        boleto.nextPage()
        boleto.save()

        expected = self._get_expected(bank, filename, 'HTML')
        diff = diff_pdf_htmls(expected, filename)
        if diff:
            self.fail("Error while checking html for %r:\n%s" % (bank, diff))
        os.unlink(filename)
コード例 #4
0
ファイル: testutils.py プロジェクト: ricoboni/pyboleto
    def test_html_rendering(self):
        dados = self.dados[0]
        bank = type(dados).__name__
        filename = tempfile.mktemp(prefix="pyboleto-", suffix=".html")
        boleto = BoletoHTML(filename)
        boleto.drawBoleto(dados)
        boleto.nextPage()
        boleto.save()

        expected = self._get_expected(bank, filename, "HTML")
        diff = diff_pdf_htmls(expected, filename)
        if diff:
            self.fail("Error while checking html for %r:\n%s" % (bank, diff))
        os.unlink(filename)
コード例 #5
0
    def test_html_rendering(self):
        if "dados" not in dir(self):
            return
        dados = self.dados[0]
        bank = type(dados).__name__
        filename = tempfile.mktemp(prefix="pyboleto-", suffix=".html")
        boleto = BoletoHTML(filename, False)
        boleto.drawBoleto(dados)
        boleto.nextPage()
        boleto.save()

        generated = filename
        expected = self._get_expected(bank, generated, f_type='html')
        diff = diff_files(expected, generated)
        os.unlink(generated)

        if diff:
            self.fail("Error while checking xml for %r:\n%s" % (bank, diff))
コード例 #6
0
def print_boleto_html(uuid):
    d = BoletoBradesco()
    d.carteira = '06'  # Contrato firmado com o Banco Bradesco
    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 = '0278-0'
    d.conta_cedente = '43905-3'

    d.data_vencimento = datetime.date(2011, 1, 25)
    d.data_documento = datetime.date(2010, 2, 12)
    d.data_processamento = datetime.date(2010, 2, 12)

    d.instrucoes = [
        "- Linha 1",
        "- Sr Caixa, cobrar multa de 2% após o vencimento",
        "- Receber até 10 dias após o vencimento",
    ]
    d.demonstrativo = [
        "- Serviço Teste R$ 5,00",
        "- Total R$ 5,00",
    ]
    d.valor_documento = 2158.41

    d.nosso_numero = "1112011668"
    d.numero_documento = "1112011668"
    d.sacado = [
        "Cliente Teste %s" % uuid,
        "Rua Desconhecida, 00/0000 - Não Sei - Cidade - \
            Cep. 00000-000", ""
    ]

    boleto_HTML = BoletoHTML('boleto/' + uuid + '.html')
    boleto_HTML.drawBoleto(d)
    boleto_HTML.save()
コード例 #7
0
    def processa_dados_pagamento(self):
        banco = self.malote.banco_nome
        convenio = self.malote.banco_convenio
        boleto = None
        if banco == u'Bradesco':
            boleto = BoletoBradesco()
        elif banco == u'Banco Itaú':
            boleto = BoletoItau()
        elif banco == u'Banco do Brasil':
            boleto = BoletoBB(len(convenio), 2)
        elif banco == u'Caixa Econômica':
            boleto = BoletoCaixaSIGCB()
        elif banco == u'Santander':
            boleto = BoletoSantander()
        elif banco == u'HSBC':
            boleto = BoletoHsbc()
        if not boleto:
            raise BoletoInvalido(u'Boleto para {} ainda não implementado.'.format(banco))

        carteira = self.malote.carteira_numero
        boleto.carteira = carteira.encode('utf-8')
        boleto.cedente = self.malote.empresa_beneficiario.encode('utf-8')

        tamanho_documento = len(self.malote.empresa_cnpj)
        tipo_documento = 'CNPJ' if tamanho_documento == 14 else 'CPF'
        documento = self.formatador.formata_cpf_cnpj(self.malote.empresa_cnpj.encode('utf-8'))
        boleto.cedente_documento = documento
        documento = ' / {}: {}'.format(tipo_documento, documento)
        limite = 80 - len(documento)
        cidade_estado = u', {}-{}'.format(self.malote.empresa_cidade, self.malote.empresa_estado).encode('utf-8')
        limite -= len(cidade_estado)
        rua = self.malote.empresa_endereco.encode('utf-8')[:limite]
        endereco = '{}{}{}'.format(rua, cidade_estado, documento)

        boleto.cedente_endereco = endereco

        boleto.agencia_cedente = self.malote.banco_agencia.encode('utf-8')
        boleto.conta_cedente = self.malote.banco_conta.encode('utf-8')
        if convenio:
            if banco in [u'Santander', u'HSBC', u'Bradesco', u'Caixa Econômica']:
                boleto.conta_cedente = convenio.encode('utf-8')
            else:
                boleto.convenio = convenio

        boleto.data_vencimento = self.malote.data_vencimento
        boleto.data_documento = self.malote.data_documento
        boleto.data_processamento = self.malote.data_processamento
        boleto.instrucoes = [self.malote.linha_1, self.malote.linha_2, self.malote.linha_3]
        boleto.instrucoes = [instrucao and instrucao.encode('utf-8') or instrucao for instrucao in boleto.instrucoes]
        boleto.valor_documento = self.malote.valor_documento
        sacado = self.malote.sacado
        if not isinstance(sacado, list):
            sacado = [sacado]
        boleto.sacado = sacado
        boleto.sacado = [self.formatador.string_para_ascii(texto) or texto for texto in boleto.sacado]
        boleto.sacado_documento = str(self.formatador.formata_cpf_cnpj(self.malote.sacado_documento))
        boleto.numero_documento = str(self.malote.numero_documento)
        if self.malote.nosso_numero:
            boleto.nosso_numero = str(self.malote.nosso_numero)
        else:
            boleto.nosso_numero = str(self.malote.numero_documento)

        linha_digitavel = boleto.linha_digitavel
        if self.malote.formato == entidades.TipoBoleto.linha_digitavel:
            self.resultado = {'dados': linha_digitavel}
        elif self.malote.formato == entidades.TipoBoleto.html:
            f_html = StringIO.StringIO()
            boleto_html = BoletoHTML(f_html)
            boleto_html.drawBoleto(boleto)
            boleto_html.save()
            f_html.seek(0)
            self.resultado = {'dados': f_html.read()}
        elif self.malote.formato == entidades.TipoBoleto.pdf:
            f_pdf = StringIO.StringIO()
            boleto_pdf = BoletoPDF(f_pdf)
            boleto_pdf.drawBoleto(boleto)
            boleto_pdf.save()
            f_pdf.seek(0)
            self.resultado = {'dados': unicode(f_pdf.read(), 'ISO-8859-1'), 'pago': True}
コード例 #8
0
    def processa_dados_pagamento(self):
        banco = self.malote.banco_nome
        convenio = self.malote.banco_convenio
        boleto = None
        if banco == u'Bradesco':
            boleto = BoletoBradesco()
        elif banco == u'Banco Itaú':
            boleto = BoletoItau()
        elif banco == u'Banco do Brasil':
            boleto = BoletoBB(len(convenio), 2)
        elif banco == u'Caixa Econômica':
            boleto = BoletoCaixaSIGCB()
        elif banco == u'Santander':
            boleto = BoletoSantander()
        elif banco == u'HSBC':
            boleto = BoletoHsbc()
        if not boleto:
            raise BoletoInvalido(
                u'Boleto para {} ainda não implementado.'.format(banco))

        carteira = self.malote.carteira_numero
        boleto.carteira = carteira.encode('utf-8')
        boleto.cedente = self.malote.empresa_beneficiario.encode('utf-8')

        tamanho_documento = len(self.malote.empresa_cnpj)
        tipo_documento = 'CNPJ' if tamanho_documento == 14 else 'CPF'
        documento = self.formatador.formata_cpf_cnpj(
            self.malote.empresa_cnpj.encode('utf-8'))
        boleto.cedente_documento = documento
        documento = ' / {}: {}'.format(tipo_documento, documento)
        limite = 80 - len(documento)
        cidade_estado = u', {}-{}'.format(
            self.malote.empresa_cidade,
            self.malote.empresa_estado).encode('utf-8')
        limite -= len(cidade_estado)
        rua = self.malote.empresa_endereco.encode('utf-8')[:limite]
        endereco = '{}{}{}'.format(rua, cidade_estado, documento)

        boleto.cedente_endereco = endereco

        boleto.agencia_cedente = self.malote.banco_agencia.encode('utf-8')
        boleto.conta_cedente = self.malote.banco_conta.encode('utf-8')
        if convenio:
            if banco in [
                    u'Santander', u'HSBC', u'Bradesco', u'Caixa Econômica'
            ]:
                boleto.conta_cedente = convenio.encode('utf-8')
            else:
                boleto.convenio = convenio

        boleto.data_vencimento = self.malote.data_vencimento
        boleto.data_documento = self.malote.data_documento
        boleto.data_processamento = self.malote.data_processamento
        boleto.instrucoes = [
            self.malote.linha_1, self.malote.linha_2, self.malote.linha_3
        ]
        boleto.instrucoes = [
            instrucao and instrucao.encode('utf-8') or instrucao
            for instrucao in boleto.instrucoes
        ]
        boleto.valor_documento = self.malote.valor_documento
        sacado = self.malote.sacado
        if not isinstance(sacado, list):
            sacado = [sacado]
        boleto.sacado = sacado
        boleto.sacado = [
            self.formatador.string_para_ascii(texto) or texto
            for texto in boleto.sacado
        ]
        boleto.sacado_documento = str(
            self.formatador.formata_cpf_cnpj(self.malote.sacado_documento))
        boleto.numero_documento = str(self.malote.numero_documento)
        if self.malote.nosso_numero:
            boleto.nosso_numero = str(self.malote.nosso_numero)
        else:
            boleto.nosso_numero = str(self.malote.numero_documento)

        linha_digitavel = boleto.linha_digitavel
        if self.malote.formato == entidades.TipoBoleto.linha_digitavel:
            self.resultado = {'dados': linha_digitavel}
        elif self.malote.formato == entidades.TipoBoleto.html:
            f_html = StringIO.StringIO()
            boleto_html = BoletoHTML(f_html)
            boleto_html.drawBoleto(boleto)
            boleto_html.save()
            f_html.seek(0)
            self.resultado = {'dados': f_html.read()}
        elif self.malote.formato == entidades.TipoBoleto.pdf:
            f_pdf = StringIO.StringIO()
            boleto_pdf = BoletoPDF(f_pdf)
            boleto_pdf.drawBoleto(boleto)
            boleto_pdf.save()
            f_pdf.seek(0)
            self.resultado = {
                'dados': unicode(f_pdf.read(), 'ISO-8859-1'),
                'pago': True
            }
コード例 #9
0
ファイル: views.py プロジェクト: rodrigosuhr/KarateManager
def home(request):
    invoice = get_invoice('', 255.00, '')
    invoice_HTML = BoletoHTML('boleto-bb-normal-teste.html')
    invoice_HTML.drawBoleto(invoice)
    invoice_HTML.save()
    return render_to_response('home.html', context_instance=RequestContext(request))