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()
Example #2
0
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_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()
Example #4
0
    def write_brazilian_deposit_system(self, deposit):
        deposit_data = deposit.get('Data')
        if 'data_documento' in deposit_data and deposit_data['data_documento']:
            deposit_data['data_documento'] = datetime.datetime.strptime(
                deposit_data['data_documento'], "%Y-%m-%d").date()

        if 'data_vencimento' in deposit_data and deposit_data[
                'data_vencimento']:
            deposit_data['data_vencimento'] = datetime.datetime.strptime(
                deposit_data['data_vencimento'], "%Y-%m-%d").date()

        if 'data_processamento' in deposit_data and deposit_data[
                'data_processamento']:
            deposit_data['data_processamento'] = datetime.datetime.strptime(
                deposit_data['data_processamento'], "%Y-%m-%d").date()

        buffer = StringIO()
        from pyboleto.pdf import BoletoPDF
        boleto_pdf = BoletoPDF(buffer)

        from pyboleto import bank
        ClasseBanco = bank.get_class_for_codigo(deposit_data['codigo_banco'])
        deposit_dados = ClasseBanco()
        for field_name, field_value in deposit_data.iteritems():
            if field_value:
                setattr(deposit_dados, field_name, field_value)
        boleto_pdf.drawBoleto(deposit_dados)

        self.set_header("Content-Type", "application/pdf")

        boleto_pdf.save()
        pdf_file = buffer.getvalue()

        self.write(pdf_file)
Example #5
0
def generate_invoice_pdf(due_date, value, user, profile):
    pdf_buffer = StringIO()

    boleto_pdf = BoletoPDF(pdf_buffer)
    d = BoletoItau()

    d.carteira = settings.CLUB_BANK_PORTFOLIO
    d.cedente = settings.CLUB_NAME
    d.cedente_documento = settings.CLUB_CNPJ
    d.cedente_endereco = settings.CLUB_ADDRESS
    d.agencia_cedente = settings.CLUB_BANK_AGENCY
    d.conta_cedente = settings.CLUB_BANK_ACCOUNT
    d.data_vencimento = due_date
    d.data_documento = datetime.date.today()
    d.data_processamento = datetime.date.today()
    d.valor = value
    d.valor_documento = d.valor
    d.nosso_numero = settings.CLUB_BANK_OUR_NUMBER
    d.numero_documento = d.nosso_numero
    d.instrucoes = settings.CLUB_CASHIER_INSTRUCTIONS
    d.demonstrativo = [
        _('MONTHLY FEE FOR MONTH %(month)s/%(year)s') % {
            'month': due_date.month,
            'year': due_date.year},
    ]
    d.sacado = [
        "%s %s" % (user.first_name, user.last_name),
        "%s %s" % (profile.street, profile.postal_code),
        "%s %s %s" % (profile.street2, profile.city, profile.state_province)
    ]

    boleto_pdf.drawBoleto(d)
    boleto_pdf.save()

    return pdf_buffer.getvalue()
Example #6
0
def print_santander():
    listaDadosSantander = []
    for i in range(2):
        d = BoletoSantander()
        d.agencia_cedente = "1333"
        d.conta_cedente = "0707077"
        d.data_vencimento = datetime.date(2012, 7, 22)
        d.data_documento = datetime.date(2012, 7, 17)
        d.data_processamento = datetime.date(2012, 7, 17)
        d.valor_documento = 2952.95
        d.nosso_numero = "1234567"
        d.numero_documento = "12345"
        d.ios = "0"

        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.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 = 255.00

        d.sacado = ["Cliente Teste %d" % (i + 1), "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000", ""]
        listaDadosSantander.append(d)

    # Caixa Formato normal - uma pagina por folha A4
    boleto = BoletoPDF("boleto-santander-formato-normal-teste.pdf")
    for i in range(len(listaDadosSantander)):
        boleto.drawBoleto(listaDadosSantander[i])
        boleto.nextPage()
    boleto.save()
Example #7
0
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()
Example #8
0
  def write_brazilian_deposit_system(self,deposit):
    deposit_data = deposit.get('Data')
    if 'data_documento' in deposit_data and  deposit_data['data_documento']:
      deposit_data['data_documento'] = datetime.datetime.strptime( deposit_data['data_documento'] , "%Y-%m-%d").date()

    if 'data_vencimento' in deposit_data and deposit_data['data_vencimento']:
      deposit_data['data_vencimento'] = datetime.datetime.strptime( deposit_data['data_vencimento'] , "%Y-%m-%d").date()

    if 'data_processamento' in deposit_data and deposit_data['data_processamento']:
      deposit_data['data_processamento'] = datetime.datetime.strptime( deposit_data['data_processamento'] , "%Y-%m-%d").date()

    buffer = StringIO()
    from pyboleto.pdf import BoletoPDF
    boleto_pdf = BoletoPDF(buffer)

    from pyboleto import bank
    ClasseBanco = bank.get_class_for_codigo(deposit_data['codigo_banco'])
    deposit_dados = ClasseBanco()
    for field_name, field_value in deposit_data.iteritems():
      if field_value:
        setattr(deposit_dados, field_name, field_value)
    boleto_pdf.drawBoleto(deposit_dados)


    self.set_header("Content-Type", "application/pdf")


    boleto_pdf.save()
    pdf_file = buffer.getvalue()

    self.write( pdf_file )
Example #9
0
  def get(self, *args, **kwargs):
    from pyboleto.pdf import BoletoPDF
    from models import Boleto

    buffer = StringIO()
    boleto_pdf = BoletoPDF(buffer)


    boleto_id = self.get_argument("boleto_id", default="-1", strip=False)
    download = int(self.get_argument("download", default="0", strip=False))
    if boleto_id:
      boleto_id = int(boleto_id)


    boleto = self.application.session.query(Boleto).filter_by(id=boleto_id).first()
    if boleto:
      boleto.print_pdf_pagina(boleto_pdf)
      self.set_header("Content-Type", "application/pdf")

      if download == 1:
        self.set_header("Content-Disposition", "attachment; filename=boleto_%s.pdf"% boleto.id )

      boleto_pdf.save()
      pdf_file = buffer.getvalue()


      self.write( pdf_file )
    else:
      self.write('Erro imprimindo Boleto')
Example #10
0
def print_real():
    listaDadosReal = []
    for i in range(2):
        d = BoletoReal()
        d.carteira = "57"  # Contrato firmado com o Banco Real
        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 = "0531"
        d.conta_cedente = "5705853"

        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.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 = 5.00

        d.nosso_numero = "%d" % (i + 2)
        d.numero_documento = "%d" % (i + 2)
        d.sacado = ["Cliente Teste %d" % (i + 1), "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000", ""]
        listaDadosReal.append(d)

    # Real Formato normal - uma pagina por folha A4
    boleto = BoletoPDF("boleto-real-formato-noral-teste.pdf")
    for i in range(len(listaDadosReal)):
        boleto.drawBoleto(listaDadosReal[i])
        boleto.nextPage()

    boleto.save()
Example #11
0
    def as_pdf(self, boleto_data, document_hash, dest_dir):
        filename = "boleto-{}.pdf".format(document_hash)
        path = os.path.join(dest_dir, filename)

        pdf = BoletoPDF(path)
        pdf.drawBoleto(boleto_data)
        pdf.save()
        return filename
Example #12
0
def print_santander(request):
    listaDadosSantander = []
    for i in range(12):
        d = BoletoSantander()
        d.agencia_cedente = '1333'
        d.conta_cedente = '0707077'
        d.data_vencimento = datetime.date(2013, (i+1), 22)
        d.data_documento = datetime.date(2013, 7, 17)
        d.data_processamento = datetime.date(2012, 7, 17)
        d.valor_documento = 2952.95
        d.nosso_numero = '1234569'
        d.numero_documento = '12347'
        d.ios = '0'

        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.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 = 255.00

        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDadosSantander.append(d)

    # Caixa Formato normal - uma pagina por folha A4
    buffer = StringIO()
    boleto = BoletoPDF(buffer)
    #boleto = canvas.Canvas(response)
    for i in range(len(listaDadosSantander)):
        boleto.drawBoleto(listaDadosSantander[i])
        boleto.nextPage()
    #boleto.showPage()
    boleto.save()

    pdf_file = buffer.getvalue()

    response = HttpResponse(mimetype='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=%s' % (
        u'boletos_%s.pdf' % (
            date.today().strftime('%Y%m%d'),
        ),
    )
    response.write(pdf_file)

    return response
Example #13
0
def gera_boleto():
    import datetime
    import pyboleto
    from pyboleto.bank.caixa import BoletoCaixa
    from pyboleto.pdf import BoletoPDF
    import os
  
    listaDadosCaixa = []
    for i in range(2):
        d = BoletoCaixa()
        d.carteira = 'SR'  
        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 = '414-3'

        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.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 = 255.00

        d.nosso_numero = "8019525086"
        d.numero_documento = "8019525086"
        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDadosCaixa.append(d)


    boleto_arq = 'Boleto.pdf'

    boleto = BoletoPDF(boleto_arq)
    for i in range(len(listaDadosCaixa)):
        boleto.drawBoleto(listaDadosCaixa[i])
        boleto.nextPage()
    boleto.save()

    abre_boleto = open(boleto_arq,"rb").read()
    os.unlink(boleto_arq)
    response.headers['Content-Type']='application/pdf'
    
    return abre_boleto
Example #14
0
def print_sicoob():
    listaDadosBancoob = []
    for i in range(2):
        d = BoletoBancoob()
        d.carteira = '1'       
        d.cedente = 'CLIENTE TESTE'
        d.cedente_documento = "102.323.777-01"
        d.cedente_endereco = "Rua Acme, 123 - Centro - Sao Paulo/SP - CEP: 12345-678"
        d.agencia_cedente = '4293'
        d.conta_cedente = '44563'
        d.convenio = '44563'
        d.modalidade_cobranca='02'
        d.numero_parcela='001'
        d.data_vencimento = datetime.date(2014, 9, 16)
        d.data_documento = datetime.date(2014, 6, 16)
        d.data_processamento = datetime.date(2014, 6, 16)

        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 = 9.00

        d.nosso_numero = "50149"
        d.numero_documento = "48958"
        
        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDadosBancoob.append(d)

    # Bancoob Formato carne - duas paginas por folha A4
    boleto = BoletoPDF('boleto-Bancoob-formato-carne-teste.pdf', True)
    for i in range(0, len(listaDadosBancoob), 2):
        boleto.drawBoletoCarneDuplo(
            listaDadosBancoob[i],
            listaDadosBancoob[i + 1]
        )
        boleto.nextPage()
    boleto.save()

    # Bancoob Formato normal - uma pagina por folha A4
    boleto = BoletoPDF('boleto-Bancoob-formato-normal-teste.pdf')
    for i in range(len(listaDadosBancoob)):
        boleto.drawBoleto(listaDadosBancoob[i])
        boleto.nextPage()
    boleto.save()
    def gen_boleto(self, cr, uid, ids, boleto_ids, context=None):
        boleto_obj = self.pool.get('boleto.boleto')
        fbuffer = StringIO()
        boleto_pdf = BoletoPDF(fbuffer)
        for bol in boleto_obj.browse(cr, uid, boleto_ids, context=context):

            if bol.banco == 'bb':
                boleto = BoletoBB(7, 2)
            elif bol.banco == 'bradesco':
                boleto = BoletoBradesco()
            elif bol.banco == 'caixa':
                boleto = BoletoCaixa()
            elif bol.banco == 'real':
                boleto = BoletoReal()
            elif bol.banco == 'sicredi':
                boleto = BoletoSicredi(5,1)
            elif bol.banco == 'itau':
                boleto = BoletoItau()
            boleto.cedente = bol.cedente.partner_id.legal_name
            boleto.cedente_documento = bol.cedente.partner_id.cnpj_cpf
            boleto.cedente_uf = bol.cedente.partner_id.state_id.code
            boleto.cedente_logradouro = bol.cedente.partner_id.street
            boleto.cedente_cidade = bol.cedente.partner_id.l10n_br_city_id.name
            boleto.cedente_bairro = bol.cedente.partner_id.district
            boleto.cedente_cep = bol.cedente.partner_id.zip
            boleto.carteira = bol.carteira
            boleto.agencia_cedente = bol.agencia_cedente
            boleto.conta_cedente = bol.conta_cedente
            boleto.data_vencimento = datetime.date(datetime.strptime(bol.data_vencimento, '%Y-%m-%d'))
            boleto.data_documento = datetime.date(datetime.strptime(bol.data_documento, '%Y-%m-%d'))
            boleto.data_processamento = date.today()
            boleto.valor_documento = bol.valor
            boleto.nosso_numero = bol.numero_documento
            boleto.numero_documento = bol.numero_documento
            boleto.convenio = bol.convenio
            # se documento de origem contrato buscar datas
            #data_ini = bol.data_vencimento[8:11] + '/' + bol.data_vencimento[5:7] + '/' + bol.data_vencimento[0:4]
            #data_fim = datetime.strftime(boleto.data_vencimento+relativedelta(months=+1),'%Y-%m-%d')
            #data_final = data_fim[8:11] + '/' + data_fim[5:7] + '/' + data_fim[0:4]
            #instrucao = bol.instrucoes %(str(bol.valor*0.02), str(bol.valor*0.1), str(data_ini), str(data_final))
            #boleto.instrucoes = instrucao.split('\n') if instrucao else ""
            boleto.instrucoes = bol.instrucao.split('\n') if bol.instrucao else ""
            boleto.sacado = [
                "%s" % (bol.sacado.legal_name or bol.sacado.name),
                "CNPJ/CPF: %s" % (bol.sacado.cnpj_cpf),
                "%s, %s - %s - %s - Cep. %s" % (bol.sacado.street, bol.sacado.number, bol.sacado.district, bol.sacado.l10n_br_city_id.name + '-' + bol.sacado.state_id.code, bol.sacado.zip),
                ]
            boleto_pdf.drawBoleto(boleto)
            boleto_pdf.nextPage()

        boleto_pdf.save()
        boleto_file = fbuffer.getvalue().encode("base64")
        fbuffer.close()
        return boleto_file
Example #16
0
def print_caixa():
    listaDadosCaixa = []
    for i in range(2):
        d = BoletoCaixa()
        d.carteira = 'SR'  # 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 = '1565'
        d.conta_cedente = '414-3'

        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.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 = 255.00

        d.nosso_numero = "8019525086"
        d.numero_documento = "8019525086"
        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDadosCaixa.append(d)

    # Caixa Formato normal - uma pagina por folha A4
    boleto = BoletoPDF('boleto-caixa-formato-carne-teste.pdf', True)
    for i in range(0, len(listaDadosCaixa), 2):
        boleto.drawBoletoCarneDuplo(
            listaDadosCaixa[i],
            listaDadosCaixa[i + 1]
        )
        boleto.nextPage()
    boleto.save()

    # Caixa Formato normal - uma pagina por folha A4
    boleto = BoletoPDF('boleto-caixa-formato-normal-teste.pdf')
    for i in range(len(listaDadosCaixa)):
        boleto.drawBoleto(listaDadosCaixa[i])
        boleto.nextPage()
    boleto.save()
Example #17
0
def print_banconordeste():
    listaDadosBancoNordeste = []
    for i in range(2):
        d = BoletoBancoNordeste()
        d.carteira = '51'  # Contrato firmado com o Banco BancoNordeste
        d.cedente = 'CONNECT'
        d.cedente_documento = "102.323.777-01"
        d.cedente_endereco = "Rua Acme, 123 - Centro - Sao Paulo/SP - CEP: 12345-678"
        d.agencia_cedente = '0226'
        d.conta_cedente = '0000085'
        d.conta_cednte_dv = '0'

        d.data_vencimento = datetime.date(2014, 6, 10)
        d.data_documento = datetime.date(2014, 4, 8)
        d.data_processamento = datetime.date(2015, 4, 8)

        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 = 65.00

        d.nosso_numero = "0055298"
        d.numero_documento = "55298"
        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDadosBancoNordeste.append(d)

    # BancoNordeste Formato carne - duas paginas por folha A4
    boleto = BoletoPDF('boleto-BancoNordeste-formato-carne-teste.pdf', True)
    for i in range(0, len(listaDadosBancoNordeste), 2):
        boleto.drawBoletoCarneDuplo(
            listaDadosBancoNordeste[i],
            listaDadosBancoNordeste[i + 1]
        )
        boleto.nextPage()
    boleto.save()

    # BancoNordeste Formato normal - uma pagina por folha A4
    boleto = BoletoPDF('boleto-BancoNordeste-formato-normal-teste.pdf')
    for i in range(len(listaDadosBancoNordeste)):
        boleto.drawBoleto(listaDadosBancoNordeste[i])
        boleto.nextPage()
    boleto.save()
Example #18
0
def print_sicoob():
    listaDadosBancoob = []
    for i in range(2):
        d = BoletoBancoob()
        d.carteira = '1'
        d.cedente = 'CLIENTE TESTE'
        d.cedente_documento = "102.323.777-01"
        d.cedente_endereco = "Rua Acme, 123 - Centro - Sao Paulo/SP - CEP: 12345-678"
        d.agencia_cedente = '4293'
        d.conta_cedente = '44563'
        d.convenio = '44563'
        d.modalidade_cobranca = '02'
        d.numero_parcela = '001'
        d.data_vencimento = datetime.date(2014, 9, 16)
        d.data_documento = datetime.date(2014, 6, 16)
        d.data_processamento = datetime.date(2014, 6, 16)

        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 = 9.00

        d.nosso_numero = "50149"
        d.numero_documento = "48958"

        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000", ""
        ]
        listaDadosBancoob.append(d)

    # Bancoob Formato carne - duas paginas por folha A4
    boleto = BoletoPDF('boleto-Bancoob-formato-carne-teste.pdf', True)
    for i in range(0, len(listaDadosBancoob), 2):
        boleto.drawBoletoCarneDuplo(listaDadosBancoob[i],
                                    listaDadosBancoob[i + 1])
        boleto.nextPage()
    boleto.save()

    # Bancoob Formato normal - uma pagina por folha A4
    boleto = BoletoPDF('boleto-Bancoob-formato-normal-teste.pdf')
    for i in range(len(listaDadosBancoob)):
        boleto.drawBoleto(listaDadosBancoob[i])
        boleto.nextPage()
    boleto.save()
Example #19
0
def print_caixa():
    listaDadosCaixa = []
    for i in range(2):
        d = BoletoCaixa()
        d.carteira = 'SIG14'  # 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 = '1565'
        d.conta_cedente = '414-3'

        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.instrucoes = [
            "- Linha 1",
            "- Sr Caixa, cobrar multa de 2% apos o vencimento",
            "- Receber ate 10 dias apos o vencimento",
            ]
        d.demonstrativo = [
            "- Servico Teste R$ 5,00",
            "- Total R$ 5,00",
            ]
        d.valor_documento = 255.00

        d.nosso_numero = "8019525086"
        d.numero_documento = "8019525086"
        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - N?o Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDadosCaixa.append(d)

    # Caixa Formato normal - uma pagina por folha A4
    boleto = BoletoPDF('boleto-caixa-formato-carne-teste.pdf', True)
    for i in range(0, len(listaDadosCaixa), 2):
        boleto.drawBoletoCarneDuplo(
            listaDadosCaixa[i],
            listaDadosCaixa[i + 1]
        )
        boleto.nextPage()
    boleto.save()

    # Caixa Formato normal - uma pagina por folha A4
    boleto = BoletoPDF('boleto-caixa-formato-normal-teste.pdf')
    for i in range(len(listaDadosCaixa)):
        boleto.drawBoleto(listaDadosCaixa[i])
        boleto.nextPage()
    boleto.save()
Example #20
0
def print_bradesco():
    listaDadosBradesco = []
    for i in range(2):
        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 %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDadosBradesco.append(d)

    # Bradesco Formato carne - duas paginas por folha A4
    boleto = BoletoPDF('boleto-bradesco-formato-carne-teste.pdf', True)
    for i in range(0, len(listaDadosBradesco), 2):
        boleto.drawBoletoCarneDuplo(
            listaDadosBradesco[i],
            listaDadosBradesco[i + 1]
        )
        boleto.nextPage()
    boleto.save()

    # Bradesco Formato normal - uma pagina por folha A4
    boleto = BoletoPDF('boleto-bradesco-formato-normal-teste.pdf')
    for i in range(len(listaDadosBradesco)):
        boleto.drawBoleto(listaDadosBradesco[i])
        boleto.nextPage()
    boleto.save()
Example #21
0
def print_bb(Aluno):
    """
    Recebe uma instância de Aluno e gera boletos com as insformações passadas
    """
    listaDados = []
    for i in range(1):
        d = BoletoBB(7, 2)

        d.nosso_numero = "%d" % (i + 1)
        d.numero_documento = "123456789"
        d.convenio = "7777777"
        d.especie_documento = "DM"

        d.carteira = "18"
        d.cedente = "Curso Opção Triunfo"
        d.cedente_documento = "05261501490"
        d.cedente_endereco = "Rua Alameda das Mansões"
        d.agencia_cedente = "2739"
        d.conta_cedente = "12097"

        d.data_vencimento = datetime.date(2015, 12, 21)
        d.data_documento = datetime.date(2015, 12, 20)
        d.data_processamento = datetime.date(2015, 12, 20)

        d.instrucoes = ["- Sr Caixa, cobrar multa de 2% após vencimento", "- Receber até 10 dias após vencimento"]
        d.demonstrativo = ["- Testando pagamento", "- Total R$ 5,00"]
        d.valor_documento = Decimal(600)

        d.sacado_nome = Aluno.first_name
        d.sacado_documento = Aluno.cpf
        d.sacado_cidade = Aluno.endereco
        d.sacado_uf = "RN"
        d.sacado_endereco = "Rua rua"
        d.sacado_bairro = "Sao Pedro"
        d.sacado_cep = "3333333"

        d.valor = Decimal(600)
        d.valor_documento = Decimal(600)

        d.quantidade = "1"

        d.barcode

        listaDados.append(d)

        boleto = BoletoPDF("curso/boletos/boleto-teste-%s.pdf" % d.sacado_nome)

        for i in listaDados:
            boleto.drawBoleto(i)
            boleto.nextPage()
            boleto.save()
Example #22
0
def print_bradesco():
    listaDadosBradesco = []
    for i in range(2):
        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 %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - N?o Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDadosBradesco.append(d)

    # Bradesco Formato carne - duas paginas por folha A4
    boleto = BoletoPDF('boleto-bradesco-formato-carne-teste.pdf', True)
    for i in range(0, len(listaDadosBradesco), 2):
        boleto.drawBoletoCarneDuplo(
            listaDadosBradesco[i],
            listaDadosBradesco[i + 1]
        )
        boleto.nextPage()
    boleto.save()

    # Bradesco Formato normal - uma pagina por folha A4
    boleto = BoletoPDF('boleto-bradesco-formato-normal-teste.pdf')
    for i in range(len(listaDadosBradesco)):
        boleto.drawBoleto(listaDadosBradesco[i])
        boleto.nextPage()
    boleto.save()
Example #23
0
def print_banconordeste():
    listaDadosBancoNordeste = []
    for i in range(2):
        d = BoletoBancoNordeste()
        d.carteira = '51'  # Contrato firmado com o Banco BancoNordeste
        d.cedente = 'CONNECT'
        d.cedente_documento = "102.323.777-01"
        d.cedente_endereco = "Rua Acme, 123 - Centro - Sao Paulo/SP - CEP: 12345-678"
        d.agencia_cedente = '0226'
        d.conta_cedente = '0000085'
        d.conta_cednte_dv = '0'

        d.data_vencimento = datetime.date(2014, 6, 10)
        d.data_documento = datetime.date(2014, 4, 8)
        d.data_processamento = datetime.date(2015, 4, 8)

        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 = 65.00

        d.nosso_numero = "0055298"
        d.numero_documento = "55298"
        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000", ""
        ]
        listaDadosBancoNordeste.append(d)

    # BancoNordeste Formato carne - duas paginas por folha A4
    boleto = BoletoPDF('boleto-BancoNordeste-formato-carne-teste.pdf', True)
    for i in range(0, len(listaDadosBancoNordeste), 2):
        boleto.drawBoletoCarneDuplo(listaDadosBancoNordeste[i],
                                    listaDadosBancoNordeste[i + 1])
        boleto.nextPage()
    boleto.save()

    # BancoNordeste Formato normal - uma pagina por folha A4
    boleto = BoletoPDF('boleto-BancoNordeste-formato-normal-teste.pdf')
    for i in range(len(listaDadosBancoNordeste)):
        boleto.drawBoleto(listaDadosBancoNordeste[i])
        boleto.nextPage()
    boleto.save()
Example #24
0
    def test_pdf_rendering(self):
        dados = self.dados[0]
        bank = type(dados).__name__
        filename = tempfile.mktemp(prefix="pyboleto-", suffix=".pdf")
        boleto = BoletoPDF(filename, True)
        boleto.drawBoleto(dados)
        boleto.nextPage()
        boleto.save()

        generated = filename + '.xml'
        pdftoxml(filename, generated)
        expected = self._get_expected(bank, generated)
        diff = diff_pdf_htmls(expected, generated)
        if diff:
            self.fail("Error while checking xml for %r:\n%s" % (bank, diff))
        os.unlink(generated)
Example #25
0
    def test_pdf_rendering(self):
        dados = self.dados[0]
        bank = type(dados).__name__
        filename = tempfile.mktemp(prefix="pyboleto-", suffix=".pdf")
        boleto = BoletoPDF(filename, True)
        boleto.drawBoleto(dados)
        boleto.nextPage()
        boleto.save()

        generated = filename + ".xml"
        pdftoxml(filename, generated)
        expected = self._get_expected(bank, generated)
        diff = diff_pdf_htmls(expected, generated)
        if diff:
            self.fail("Error while checking xml for %r:\n%s" % (bank, diff))
        os.unlink(generated)
Example #26
0
def print_bankofamerica():
    listaDadosBankOfAmerica = []
    for i in range(2):
        d = BoletoBankOfAmerica()
        d.carteira = '02'
        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 %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000", ""
        ]
        listaDadosBankOfAmerica.append(d)

    boleto = BoletoPDF('boleto-bankofamerica-formato-carne-teste.pdf', True)
    for i in range(0, len(listaDadosBankOfAmerica), 2):
        boleto.drawBoletoCarneDuplo(listaDadosBankOfAmerica[i],
                                    listaDadosBankOfAmerica[i + 1])
        boleto.nextPage()
    boleto.save()

    boleto = BoletoPDF('boleto-bankofamerica-formato-normal-teste.pdf')
    for i in range(len(listaDadosBankOfAmerica)):
        boleto.drawBoleto(listaDadosBankOfAmerica[i])
        boleto.nextPage()
    boleto.save()
Example #27
0
    def test_pdf_triplo_rendering(self):
        # bank = type(self.dados[0]).__name__
        filename = tempfile.mktemp(prefix="pyboleto-triplo-", suffix=".pdf")
        boleto = BoletoPDF(filename, True)
        for d in self.dados:
            boleto.drawBoleto(d)
            boleto.nextPage()
        boleto.save()

        generated = filename + '.xml'
        pdftoxml(filename, generated)
        # expected = self._get_expected('Triplo-' + bank, generated)
        # diff = diff_pdf_htmls(expected, generated)
        # if diff:
        #     self.fail("Error while checking xml for %r:\n%s" % (
        #         bank, diff))
        os.unlink(generated)
Example #28
0
def print_boletos(modeladmin, request, queryset):

    buffer = io.BytesIO()
    boleto_pdf = BoletoPDF(buffer)

    for b in queryset:
        b.print_pdf_pagina(boleto_pdf)
        boleto_pdf.nextPage()
    boleto_pdf.save()

    pdf_file = buffer.getvalue()

    response = HttpResponse(mimetype="application/pdf")
    response["Content-Disposition"] = "attachment; filename=%s" % (
        u"boletos_%s.pdf" % (date.today().strftime("%Y%m%d"), ), )
    response.write(pdf_file)
    return response
Example #29
0
    def gen_boleto(self, cr, uid, ids, boleto_ids, context=None):
        boleto_obj = self.pool.get('boleto.boleto')
        fbuffer = StringIO()
        boleto_pdf = BoletoPDF(fbuffer)

        for bol in boleto_obj.browse(cr, uid, boleto_ids, context=context):

            if bol.banco == 'bb':
                boleto = BoletoBB(7, 2)
            elif bol.banco == 'bradesco':
                boleto = BoletoBradesco()
            elif bol.banco == 'caixa':
                boleto = BoletoCaixa()
            elif bol.banco == 'real':
                boleto = BoletoReal()
            elif bol.banco == 'sicredi':
                boleto = BoletoSicredi(5,1)

            boleto.cedente = bol.cedente.name
            boleto.cedente_documento = bol.cedente.cnpj_cpf
            boleto.cedente_uf = bol.cedente.state_id.name
            boleto.cedente_logradouro = bol.sacado.street
            boleto.carteira = bol.carteira
            boleto.agencia_cedente = bol.agencia_cedente
            boleto.conta_cedente = bol.conta_cedente
            boleto.data_vencimento = datetime.date(datetime.strptime(bol.data_vencimento, '%Y-%m-%d'))
            boleto.data_documento = datetime.date(datetime.strptime(bol.data_documento, '%Y-%m-%d'))
            boleto.data_processamento = date.today()
            boleto.valor_documento = bol.valor
            boleto.nosso_numero = bol.numero_documento
            boleto.numero_documento = bol.numero_documento
            boleto.convenio = bol.convenio
            boleto.instrucoes = bol.instrucoes.split('\n') if bol.instrucoes else ""
            boleto.sacado = [
                "%s" % (bol.sacado.legal_name or bol.sacado.name),
                "CNPJ/CPF: %s" % (bol.sacado.cnpj_cpf),
                "%s, %s - %s - %s - Cep. %s" % (bol.sacado.street, bol.sacado.number, bol.sacado.district, bol.sacado.city, bol.sacado.zip),
                ]
            boleto_pdf.drawBoleto(boleto)
            boleto_pdf.nextPage()

        boleto_pdf.save()
        boleto_file = fbuffer.getvalue().encode("base64")
        fbuffer.close()
        return boleto_file
Example #30
0
def print_sicredi():
    listaDados = []
    for i in range(2):
        d = BoletoSicredi('06','5','1')
        d.nosso_numero = '13871'
        d.numero_documento = '2700'
        d.especie_documento = 'DS'
        d.carteira = '1'
        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 = '1234'
        d.conta_cedente = '12345'
        d.conta_cedente_dv = '6'
        
        d.inicio_nosso_numero='08'


        d.data_vencimento = datetime.date(2008, 6, 27)
        d.data_documento = datetime.date(2008, 6, 5)
        d.data_processamento = datetime.date(2008, 6,5)

        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 = 2950.00

        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDados.append(d)

    boleto = BoletoPDF('boleto-sicredi-formato-normal-teste.pdf')
    for i in range(len(listaDados)):
        boleto.drawBoleto(listaDados[i])
        boleto.nextPage()
    boleto.save()
Example #31
0
def print_bb():
    listaDados = []
    for i in range(2):
        d = BoletoBB(7, 2)
        d.nosso_numero = '87654'
        d.numero_documento = '27.030195.10'
        d.convenio = '7777777'
        d.especie_documento = 'DM'

        d.carteira = '18'
        d.cedente = 'Educarinova'
        d.cedente_documento = "102.323.777-01"
        d.cedente_endereco = ("Rua Acme, 123 - " +
                              "Centro - Sao Paulo/SP - " +
                              "CEP: 12345-678")
        d.agencia_cedente = '9999111'
        d.conta_cedente = '999991111'

        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.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 = 255.00

        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecidaasdasd, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDados.append(d)

    boleto = BoletoPDF('boleto-bb-formato-normal-teste.pdf')
    for i in range(len(listaDados)):
        boleto.drawBoleto(listaDados[i])
        boleto.nextPage()
    boleto.save()
Example #32
0
    def gen_boleto(self, cr, uid, ids, boleto_ids, context=None):
        boleto_obj = self.pool.get('boleto.boleto')
        fbuffer = StringIO()
        boleto_pdf = BoletoPDF(fbuffer)

        for bol in boleto_obj.browse(cr, uid, boleto_ids, context=context):
            partner = bol.sacado

            if bol.banco == 'bb':
                boleto = BoletoBB(7, 2)
            elif bol.banco == 'bradesco':
                boleto = BoletoBradesco()
            elif bol.banco == 'caixa':
                boleto = BoletoCaixa()
            elif bol.banco == 'real':
                boleto = BoletoReal()
            elif bol.banco == 'itau':
                boleto = BoletoItau()


            boleto.cedente = bol.cedente.name
            boleto.carteira = bol.carteira
            boleto.agencia_cedente = bol.agencia_cedente
            boleto.conta_cedente = bol.conta_cedente
            boleto.data_vencimento = datetime.date(datetime.strptime(bol.data_vencimento, '%Y-%m-%d'))
            boleto.data_documento = datetime.date(datetime.strptime(bol.data_documento, '%Y-%m-%d'))
            boleto.data_processamento = date.today()
            boleto.valor_documento = bol.valor
            boleto.nosso_numero = bol.numero_documento
            boleto.numero_documento = bol.numero_documento
            boleto.convenio = bol.convenio
            boleto.instrucoes = bol.instrucoes.split('\n')
            boleto.sacado = [
                "%s" % bol.sacado.legal_name or bol.sacado.name,
                "%s, %s - %s - %s - Cep. %s" % (partner.street, partner.number, partner.district, partner.city, partner.zip),
                ""
            ]

            boleto_pdf.drawBoleto(boleto)
            boleto_pdf.nextPage()

        boleto_pdf.save()
        boleto_file = fbuffer.getvalue().encode("base64")
        fbuffer.close()
        return boleto_file
    def gen_boleto(self, cr, uid, ids, boleto_ids, company_id, partner_id, context=None):
        boleto_obj = self.pool.get("boleto.boleto")
        fbuffer = StringIO()
        boleto_pdf = BoletoPDF(fbuffer)

        company = self.pool.get("res.company").browse(cr, uid, [company_id])[0]
        partner = self.pool.get("res.partner").browse(cr, uid, [partner_id])[0]
        partner_ad = partner.address[0]

        for bol in boleto_obj.browse(cr, uid, boleto_ids, context=context):
            if bol.banco == "bb":
                boleto = BoletoBB(7, 2)
            elif bol.banco == "bradesco":
                boleto = BoletoBradesco()
            elif bol.banco == "caixa":
                boleto = BoletoCaixa()
            elif bol.banco == "real":
                boleto = BoletoReal()

            boleto.cedente = company.name
            boleto.carteira = bol.carteira
            boleto.agencia_cedente = bol.agencia_cedente
            boleto.conta_cedente = bol.conta_cedente
            boleto.data_vencimento = datetime.date(datetime.strptime(bol.data_vencimento, "%Y-%m-%d"))
            boleto.data_documento = datetime.date(datetime.strptime(bol.data_documento, "%Y-%m-%d"))
            boleto.data_processamento = date.today()
            boleto.valor_documento = bol.valor
            boleto.nosso_numero = bol.numero_documento
            boleto.numero_documento = bol.numero_documento
            boleto.convenio = bol.convenio
            boleto.instrucoes = bol.instrucoes.split()
            boleto.sacado = [
                "%s" % partner.legal_name or partner.name,
                "%s, %s - %s - %s - Cep. %s"
                % (partner_ad.street, partner_ad.number, partner_ad.district, partner_ad.city, partner_ad.zip),
                "",
            ]

            boleto_pdf.drawBoleto(boleto)
            boleto_pdf.nextPage()

        boleto_pdf.save()
        boleto_file = fbuffer.getvalue().encode("base64")
        fbuffer.close()
        return boleto_file
Example #34
0
def print_boletos(modeladmin, request, queryset):
    buffer = io.BytesIO()  # io.StringIO()
    boleto_pdf = BoletoPDF(buffer)

    for b in queryset:
        b.print_pdf_pagina(boleto_pdf)
        boleto_pdf.nextPage()

    boleto_pdf.save()

    pdf_file = buffer.getvalue()

    # response = HttpResponse(mimetype='application/pdf')
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename=%s' % (
        u'boletos_%s.pdf' % (date.today().strftime('%Y%m%d'), ), )
    response.write(pdf_file)
    return response
Example #35
0
def print_bb(prazo, valor, nomeCliente):
    listaDados = []
    for i in range(1):
        d = BoletoBB(7, 2)
        d.nosso_numero = '87654'
        d.numero_documento = '27.030195.10'
        d.convenio = '7777777'
        d.especie_documento = 'DM'

        d.carteira = '18'
        d.cedente = 'AS PARTNERS LTDA'
        d.cedente_documento = "102.323.777-01"
        d.cedente_endereco = ("Avenida Cassiano Ricardo, 319," +
                              "Sala 508-5ºAndar-" + "Jd.Aquarius-SJC/SP")
        d.agencia_cedente = '9999'
        d.conta_cedente = '99999'

        #today = date.today() + timedelta(prazo)
        d.data_vencimento = datetime.date(2018, 8, 29)
        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 = valor

        d.sacado = [
            nomeCliente,
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000", ""
        ]
        listaDados.append(d)

    boleto = BoletoPDF('boleto-bb-formato-normal-teste.pdf')
    for i in range(len(listaDados)):
        boleto.drawBoleto(listaDados[i])
        boleto.nextPage()
    boleto.save()
Example #36
0
    def test_pdf_triplo_rendering(self):
        bank = type(self.dados[0]).__name__
        filename = tempfile.mktemp(prefix="pyboleto-triplo-",
                                   suffix=".pdf")
        boleto = BoletoPDF(filename, True)
        for d in self.dados:
            boleto.drawBoleto(d)
            boleto.nextPage()
        boleto.save()

        generated = filename + '.xml'
        pdftoxml(filename, generated)
        expected = self._get_expected('Triplo-' + bank,
                                      generated, "xml", "xml")
        diff = diff_pdf_htmls(expected, generated)
        if diff:
            self.fail("Error while checking xml for %r:\n%s" % (
                bank, diff))
        os.unlink(generated)
Example #37
0
def print_banrisul():
    listaDados = []
    x = 0
	#impressão de 10 boletos para homologação no banrisul
    for i in range(10):
        d = BoletoBanrisul()
        x += 1
        d.nosso_numero = str(x)
        d.numero_documento = '2029.0201.0000.072013'
        d.carteira = '2'
        d.cedente = 'Empresa ACME LTDA'
        d.cedente_documento = "99.999.999/9999-99"
        d.cedente_endereco = "Rua de Teste, 99/9999 - Bairro de Teste - Teste - Cep. 99999-999"
        d.agencia_cedente = '9999'
        d.conta_cedente = '9999999'
        d.aceite = 'A'

        d.data_vencimento = datetime.date(2013, 7, 10)
        d.data_documento = datetime.date(2013, 7, 4)
        d.data_processamento = datetime.date(2013, 7, 4)

        d.instrucoes = [
            "- Linha 1",
            "- Sr Caixa, cobrar multa de 2% após o vencimento",
            "- Receber até 10 dias após o vencimento",
            ]
        d.demonstrativo = [
            "",
            ]
        d.valor_documento = 200.00 + i

        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua de Teste %d, 99/9999 - Bairro de Teste - Teste - Cep. 99999-999" % (i + 1),
            ""
            ]
        listaDados.append(d)

    boleto = BoletoPDF('boleto-banrisul-homologa.pdf')
    for i in range(len(listaDados)):
        boleto.drawBoleto(listaDados[i])
        boleto.nextPage()
    boleto.save()
def print_bb():
    listaDados = []
    for i in range(2):
        d = BoletoBB(7,2)
        d.nosso_numero = '87654'
        d.numero_documento = '27.030195.10'
        d.convenio = '7777777'
        d.especie_documento = 'DM'

        d.carteira = '18'
        d.cedente = 'Empresa Empresa Empresa Empresa Empresa LTDA'
        d.agencia_cedente = '9999'
        d.conta_cedente = '99999'

        d.data_vencimento = datetime.date(2010, 3, 27)
        d.data_documento = datetime.date(2010, 02, 12)
        d.data_processamento = datetime.date(2010, 02, 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 = 255.00

        d.sacado = [
            "Cliente Teste %d" % (i+1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDados.append( d )

    print "Normal"
    boleto = BoletoPDF( 'boleto-bb-formato-normal-teste.pdf' )
    for i in range(len(listaDados)):
        print i
        boleto.drawBoleto(listaDados[i])
        boleto.nextPage()
    boleto.save()
Example #39
0
    def get_pdfs(cls, boleto_list):
        """

        :param boletoList:
        :return:
        """
        fbuffer = io.BytesIO()

        # fbuffer.reset()
        from pyboleto.pdf import BoletoPDF
        boleto = BoletoPDF(fbuffer)
        for i in range(len(boleto_list)):
            boleto.drawBoleto(boleto_list[i])
            boleto.nextPage()
        boleto.save()
        boleto_file = fbuffer.getvalue()

        fbuffer.close()
        return boleto_file
Example #40
0
def print_bradesco():
    listaDadosBradesco = []
    for i in range(2):
        d = BoletoBradesco()
        d.carteira = '06'  # Contrato firmado com o Banco Bradesco
        d.cedente = 'DECORO ESCRITORIO DE CONTABILIDADE, AUDITORIA'
        d.cedente_documento = "015.682.241/0001-35"
        d.cedente_endereco = "Estrada São Francisco, 2008 - CJ 204, Taboão da Serra"
        d.agencia_cedente = '0348-1'
        d.conta_cedente = '24217-9'

        d.data_vencimento = datetime.date(2016, 3, 15)
        d.data_documento = datetime.date(2016, 3, 15)
        d.data_processamento = datetime.date(2016, 3, 15)

        d.instrucoes = [            
            "- Sr Caixa, cobrar multa de 2% após o vencimento",
            "- Sr Caixa, cobrar juros de 1% ao dia",
            ]
        d.demonstrativo = [
            "- Serviços Contais R$ 1,00",
            "- Reembolso de Imposto R$ 1.00",
            ]
        d.valor_documento = 3.00

        d.nosso_numero = "1112011668"
        d.numero_documento = "1112011668"
        d.sacado = [
            "Clodonil Honorio Trigo",
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDadosBradesco.append(d)

    # Bradesco Formato carne - duas paginas por folha A4
    boleto = BoletoPDF('boleto-novo.pdf', True)
    for i in range(0, len(listaDadosBradesco), 2):
        boleto.drawBoletoCarneDuplo(
            listaDadosBradesco[i],
            listaDadosBradesco[i + 1]
        )
        boleto.nextPage()
    boleto.save()
Example #41
0
def print_bb():
    listaDados = []
    for i in range(2):
        d = BoletoBB(7, 2)
        d.nosso_numero = '87654'
        d.numero_documento = '27.030195.10'
        d.convenio = '7777777'
        d.especie_documento = 'DM'

        d.carteira = '18'
        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 = '9999'
        d.conta_cedente = '99999'

        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.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 = 255.00

        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000", ""
        ]
        listaDados.append(d)

    boleto = BoletoPDF('boleto-bb-formato-normal-teste.pdf')
    for i in range(len(listaDados)):
        boleto.drawBoleto(listaDados[i])
        boleto.nextPage()
    boleto.save()
Example #42
0
def print_sicredi():
    listaDados = []
    for i in range(2):
        d = BoletoSicredi('06', '5', '1')
        d.nosso_numero = '13871'
        d.numero_documento = '2700'
        d.especie_documento = 'DS'
        d.carteira = '1'
        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 = '1234'
        d.conta_cedente = '12345'
        d.conta_cedente_dv = '6'

        d.inicio_nosso_numero = '08'

        d.data_vencimento = datetime.date(2008, 6, 27)
        d.data_documento = datetime.date(2008, 6, 5)
        d.data_processamento = datetime.date(2008, 6, 5)

        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 = 2950.00

        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000", ""
        ]
        listaDados.append(d)

    boleto = BoletoPDF('boleto-sicredi-formato-normal-teste.pdf')
    for i in range(len(listaDados)):
        boleto.drawBoleto(listaDados[i])
        boleto.nextPage()
    boleto.save()
Example #43
0
def generate_invoice_booklet_pdf(invoices, user, profile):
    boletos = []
    for invoice in invoices:
        d = BoletoItau()
        d.carteira = settings.CLUB_BANK_PORTFOLIO
        d.cedente = settings.CLUB_NAME
        d.cedente_documento = settings.CLUB_CNPJ
        d.cedente_endereco = settings.CLUB_ADDRESS
        d.agencia_cedente = settings.CLUB_BANK_AGENCY
        d.conta_cedente = settings.CLUB_BANK_ACCOUNT
        d.data_vencimento = invoice.due_date
        d.data_documento = datetime.date.today()
        d.data_processamento = datetime.date.today()
        d.valor = invoice.value
        d.valor_documento = d.valor
        d.nosso_numero = settings.CLUB_BANK_OUR_NUMBER
        d.numero_documento = d.nosso_numero
        d.instrucoes = settings.CLUB_CASHIER_INSTRUCTIONS
        d.demonstrativo = [
            _('MONTHLY FEE FOR MONTH %(month)s/%(year)s') % {
                'month': invoice.due_date.month,
                'year': invoice.due_date.year},
        ]
        d.sacado = [
            "%s %s" % (user.first_name, user.last_name),
            "%s %s" % (profile.street, profile.postal_code),
            "%s %s %s" % (profile.street2, profile.city, profile.state_province)
        ]
        bisect.insort(boletos, d)
        ##boletos.append(d)

    pdf_buffer = StringIO()
    boleto_pdf = BoletoPDF(pdf_buffer, True)
    for i in range(0, len(boletos), 2):
        boleto_pdf.drawBoletoCarneDuplo(
            boletos[i],
            boletos[i + 1]
        )
        boleto_pdf.nextPage()
    boleto_pdf.save()

    return pdf_buffer.getvalue()
Example #44
0
def print_santander():
    listaDadosSantander = []
    for i in range(2):
        d = BoletoSantander()
        d.agencia_cedente = '1333'
        d.conta_cedente = '0707077'
        d.data_vencimento = datetime.date(2012, 7, 22)
        d.data_documento = datetime.date(2012, 7, 17)
        d.data_processamento = datetime.date(2012, 7, 17)
        d.valor_documento = 2952.95
        d.nosso_numero = '1234567'
        d.numero_documento = '12345'
        d.ios = '0'

        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.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 = 255.00

        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000", ""
        ]
        listaDadosSantander.append(d)

    # Caixa Formato normal - uma pagina por folha A4
    boleto = BoletoPDF('boleto-santander-formato-normal-teste.pdf')
    for i in range(len(listaDadosSantander)):
        boleto.drawBoleto(listaDadosSantander[i])
        boleto.nextPage()
    boleto.save()
Example #45
0
def print_boletos(modeladmin, request, queryset):

    buffer = StringIO()
    boleto_pdf = BoletoPDF(buffer)

    for b in queryset:
        b.print_pdf_pagina(boleto_pdf)
        boleto_pdf.nextPage()
    boleto_pdf.save()

    pdf_file = buffer.getvalue()

    response = HttpResponse()
    response['Content-Disposition'] = 'attachment; filename=%s' % (
        u'boletos_%s.pdf' % (
            date.today().strftime('%Y%m%d'),
        ),
    )
    response.write(pdf_file)
    return response
Example #46
0
def print_real():
    listaDadosReal = []
    for i in range(2):
        d = BoletoReal()
        d.carteira = '57'  # Contrato firmado com o Banco Real
        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 = '0531'
        d.conta_cedente = '5705853'

        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.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 = 5.00

        d.nosso_numero = "%d" % (i + 2)
        d.numero_documento = "%d" % (i + 2)
        d.sacado = [
            "Cliente Teste %d" % (i + 1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000", ""
        ]
        listaDadosReal.append(d)

    # Real Formato normal - uma pagina por folha A4
    boleto = BoletoPDF('boleto-real-formato-normal-teste.pdf')
    for i in range(len(listaDadosReal)):
        boleto.drawBoleto(listaDadosReal[i])
        boleto.nextPage()
    boleto.save()
Example #47
0
    def get_pdfs(cls, boletoList):
        """

        :param boletoList:
        :return:
        """

        fbuffer = StringIO()

        fbuffer.reset()
        from pyboleto.pdf import BoletoPDF

        boleto = BoletoPDF(fbuffer)
        for i in range(len(boletoList)):
            boleto.drawBoleto(boletoList[i])
            boleto.nextPage()
        boleto.save()
        boleto_file = fbuffer.getvalue()

        fbuffer.close()
        return boleto_file
Example #48
0
def enviar_email(modeladmin, request, queryset):
    from django.core.mail import EmailMessage

    titulo = 'Circulo psicanalítico - Boleto de cobrança %s'
    texto = u"""
             Segue em anexo boleto n. %s.
             Associado: %s
             Valor: %s
             data de vencimento: %s
             Pague a mensalidade em dia evitando multas
             """

    for b in queryset:
        buffer = io.BytesIO()  # io.StringIO()
        boleto_pdf = BoletoPDF(buffer)

        b.print_pdf_pagina(boleto_pdf)
        boleto_pdf.nextPage()
        boleto_pdf.save()
        pdf_file = buffer.getvalue()
        buffer.close

        content = texto % (b.numero_documento, b.sacado_nome,
                           b.valor_documento, b.data_vencimento)

        consolidado = ContasaReceberConsolidado.objects.filter(
            boleto=b.numero_documento)[0]

        if consolidado:

            email = consolidado.associado.email

            if email:
                msg = EmailMessage(titulo % (b.numero_documento),
                                   content,
                                   to=[email])
                msg.attach('boleto.pdf', pdf_file, 'application/pdf')
                msg.content_subtype = "html"
                msg.send()
Example #49
0
def print_boleto_pdf(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_PDF = BoletoPDF('boleto/' + uuid + '.pdf')
    boleto_PDF.drawBoleto(d)
    boleto_PDF.save()
Example #50
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}
Example #51
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
            }
Example #52
0
def print_brb():
    listaDados = []
    for i in range(2):
        d = BoletoBrb()

        d.cedente = "Yzx COLOR"
        d.cedente_documento = "01.689.998/0001-02"
        d.cedente_endereco = "RUA XXXXXX BAIRRO YYYY BRASILIA YYYYYYY"
        d.agencia_cedente = "106"
        d.conta_cedente = "6000970"

        d.instrucoes = [
            "- Instruções de Responsabilidade do Cedente",
            "- Protestar após 5 dias de vencido,",
            "- Juros de Mora de 2,00 % ao Mês,",
            "- Cobrar multa de 2,00% após o vencimento.",
        ]

        ########## Boleto    #########
        d.convenio = "1"
        d.especie_documento = "NP"

        d.numero_documento = "8466"
        d.nosso_numero = "082983"

        d.data_vencimento = datetime.date(2012, 8, 21)
        d.data_documento = datetime.date(2012, 7, 28)
        d.data_processamento = datetime.date(2012, 8, 1)

        d.demonstrativo = ["- Venda Nro. 38310 FASEP ", "- Sol Formaturas 3233-9898"]
        d.valor_documento = 203.70

        #### Geração de Numeração sequencial para homologação dos boletos ###
        d.numero_documento = str(int(d.numero_documento) + i)
        d.nosso_numero = str(int(d.nosso_numero) + i)
        ####

        d.sacado = [
            "Cliente Teste xx %02d x ( %s )x-- (%s ) ---" % (i, d.numero_documento, d.nosso_numero),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            "",
        ]

        listaDados.append(d)

    boleto = BoletoPDF("boleto-brb-formato-carne-teste.pdf", True)
    for i in range(0, len(listaDados), 2):
        boleto.drawBoletoCarneDuplo(listaDados[i + 1], listaDados[i])
        boleto.nextPage()
    boleto.save()

    boleto = BoletoPDF("boleto-brb-formato-normal-teste.pdf")
    for i in range(len(listaDados)):
        boleto.drawBoleto(listaDados[i])
        boleto.nextPage()

    boleto.save()

    boleto = BoletoHTML("boleto-brb-formato-normal-teste.html")
    for i in range(len(listaDados)):
        boleto.drawBoleto(listaDados[i])
        boleto.nextPage()

    boleto.save()
Example #53
0
    def gen_boleto(self, cr, uid, ids, boleto_id, context=None):
        uid = 1
        boleto_boleto = self.pool.get('boleto.boleto')
        account_analytic_account = self.pool.get('account.analytic.account')
        account_analytic_charges_line = self.pool.get(
            'account.analytic.charges.line')
        res_company = self.pool.get('res.company').browse(cr, uid, 1)
        #  res_currency                  = self.pool.get('res.currency').browse(cr, uid, res_company.currency_id.id)

        partner_obj = self.pool.get('')
        fbuffer = StringIO()
        boleto_pdf = BoletoPDF(fbuffer)
        lista_produtos = context['lista']
        multa = 0
        mora = 0
        bol = boleto_boleto.browse(cr, uid, boleto_id, context=context)

        if bol.banco == 'bb':
            boleto = BoletoBB(7, 2)
        elif bol.banco == 'bradesco':
            boleto = BoletoBradesco()
        elif bol.banco == 'caixa':
            boleto = BoletoCaixa()
        elif bol.banco == 'real':
            boleto = BoletoReal()
        elif bol.banco == 'itau':
            boleto = BoletoItau()

        boleto.demonstrativo = []

        end_company = "%s, %s  %s  %s" % (
            bol.cedente.partner_id.street or '', bol.cedente.partner_id.number
            or '', bol.cedente.partner_id.district
            or '', bol.cedente.partner_id.city or '')
        boleto.cedente_documento = bol.cedente.partner_id.cnpj_cpf
        boleto.cedente = "%s   CNPJ: %s" % (bol.cedente.name,
                                            bol.cedente.partner_id.cnpj_cpf)
        boleto.carteira = bol.carteira
        if bol.banco == 'caixa':
            boleto.carteira = 'SR'
        else:
            boleto.carteira = bol.carteira
        boleto.agencia_cedente = bol.agencia_cedente
        boleto.conta_cedente = bol.conta_cedente
        boleto.data_vencimento = datetime.date(
            datetime.strptime(bol.data_vencimento, '%Y-%m-%d'))
        boleto.data_documento = date.today(
        )  #datetime.date(datetime.strptime(bol.data_documento, '%Y-%m-%d'))
        boleto.data_processamento = date.today()
        boleto.nosso_numero = bol.nosso_numero
        if bol.banco == 'caixa':
            n = list(boleto.nosso_numero)
            n[0] = '2'
            n[1] = '4'
            n[2] = '2'
            boleto.nosso_numero = "".join(n)
            boleto.especie_documento = 'DS'
        boleto.numero_documento = bol.numero_documento
        boleto.convenio = bol.convenio
        pp = self.pool.get('boleto.partner_config').search(
            cr, uid, [('default_boleto', '=', True)])
        if bol.instrucoes:
            instrucoes = bol.instrucoes
        elif pp:
            ppb = self.pool.get('boleto.partner_config').browse(cr, uid, pp[0])
            instrucoes = ppb.instrucoes
        else:
            raise osv.except_osv((u'Atencao !'), (
                "Para gerar boletos primeiro cadastre a configuracao de boleto deste cliente."
            ))
        boleto.instrucoes = []

        contrato_id = account_analytic_account.search(
            cr, uid, [('code', '=', str(context['contrato']))])

        #         lista_encargos = account_analytic_charges_line.search(cr, uid, [('analytic_account_id', '=', contrato_id)])
        #
        #         for charge in account_analytic_charges_line.browse(cr, uid, lista_encargos):
        #             if charge.type_charge == 'mora':
        #                 mora = charge.perc_charge
        #             elif charge.type_charge == 'multa':
        #                 multa = charge.perc_charge
        #
        boleto.valor_documento = bol.valor
        multa_ok = 0
        mora_ok = 0
        #         for k in bol.instrucoes.split('\n'):
        h = normalize('NFKD', unicode(instrucoes)).encode('ASCII', 'ignore')
        #         if multa and multa_ok == 0:
        #             #multa = "%s%s" % (multa, '%')
        #             multa = multa / 100
        #             multa = str("%.2f" % (float(multa) * float(boleto.valor_documento))).replace('.',',')
        #             multa = "%s%s" % ("R$", multa)
        #             h = h.replace('@multa', multa)
        #             multa_ok = 1
        #         if mora and mora_ok == 0:
        #             #mora = "%s%s" % (mora, '%')
        #             mora = mora / 100
        #             mora = str("%.2f" % (float(mora) * float(boleto.valor_documento))).replace('.',',')
        #             mora = "%s%s" % ("R$", mora)
        #             h = h.replace('@mora', mora)
        #             mora_ok = 1
        for k in h.split('\n'):
            boleto.instrucoes.append(k)

        boleto.cedente_endereco = normalize('NFKD',
                                            unicode(end_company or '')).encode(
                                                'ASCII', 'ignore')
        sac = normalize(
            'NFKD',
            unicode("%s           CNPJ/CPF:%s" %
                    (bol.sacado.legal_name or bol.sacado.name,
                     bol.sacado.cnpj_cpf))).encode('ASCII', 'ignore')
        end = normalize(
            'NFKD',
            unicode(
                "%s, %s  %s  %s" %
                (bol.sacado.street or '', bol.sacado.number or '',
                 bol.sacado.street2 or '', bol.sacado.district or ''))).encode(
                     'ASCII', 'ignore')
        boleto.sacado = [
            (normalize(
                'NFKD',
                unicode('%s  CNPJ/CPF: %s' %
                        (bol.sacado.name or bol.sacado.legal_name or '',
                         str(bol.sacado.cnpj_cpf)))).encode('ASCII',
                                                            'ignore')), end,
            ("%s            CEP: %s" % (bol.sacado.city, bol.sacado.zip))
        ]
        boleto.demonstrativo = [
            str(sac[:90]),
            "%s" % (bol.name),
            str(end[:90]),
            "%s            CEP: %s" % (bol.sacado.city, bol.sacado.zip),
            "__________________________________________________________________________________________",
            "REFERENTE A SERVIÇOS",
            "Produto".ljust(35) + "Valor".rjust(15),
            "",
        ]
        for i in lista_produtos:
            i = normalize('NFKD', unicode(i[:90])).encode('ASCII', 'ignore'),
            boleto.demonstrativo.append(str(unicode(i[0])))

        print boleto
        boleto_pdf.drawBoleto(boleto)
        print boleto.linha_digitavel
        boleto_pdf.save()

        boleto_file = fbuffer.getvalue().encode("base64")
        fbuffer.close()
        return boleto_file
    "- Linha 1",
    "- Sr Caixa, cobrar multa de 2% apos o vencimento",
    "- Receber ate 10 dias apos o vencimento",
    ]

d.demonstrativo = [
    "- Servico Teste R$ 5,00",
    "- Total R$ 5,00",
    ]

d.valor_documento = 255.00

d.sacado = [
    "Cliente Teste",
    "Rua Desconhecida, 00/0000 - Nao Sei - Cidade - Cep. 00000-000",
    ""
    ]

import io
buf = io.BytesIO()

boleto = BoletoPDF(buf)
boleto.drawBoleto(d)
boleto.nextPage()
boleto.save()

pdf_buffer = buf.getbuffer()
file = open("boleto_buffer.pdf", "wb")
file.write(pdf_buffer)

Example #55
0
    def gen_boleto(self, cr, uid, ids, boleto_id, context=None):
        uid = 1
        boleto_boleto                 = self.pool.get('boleto.boleto')
        fbuffer     = StringIO()
        boleto_pdf  = BoletoPDF(fbuffer)
        lista_produtos = context['lista']
        bol = boleto_boleto.browse(cr, uid, boleto_id, context=context)

        if bol.banco == 'bb':
            boleto = BoletoBB(7, 2)
        elif bol.banco == 'bradesco':
            boleto = BoletoBradesco()
        elif bol.banco == 'caixa':
            boleto = BoletoCaixa()
        elif bol.banco == 'real':
            boleto = BoletoReal()
        elif bol.banco == 'itau':
            boleto = BoletoItau()
            
        boleto.demonstrativo = []
        
        end_company = "%s, %s  %s  %s" % (bol.cedente.partner_id.street or '', 
                                          bol.cedente.partner_id.number or '', 
                                          bol.cedente.partner_id.district or '', 
                                          bol.cedente.partner_id.city or '')
        boleto.cedente_documento = bol.cedente.partner_id.cnpj_cpf
        boleto.cedente  = "%s   CNPJ: %s" % (bol.cedente.name,bol.cedente.partner_id.cnpj_cpf)
        boleto.carteira = bol.carteira
        if bol.banco == 'caixa':
            boleto.carteira = 'SR'
        else:
            boleto.carteira = bol.carteira
        boleto.agencia_cedente  = bol.agencia_cedente
        boleto.conta_cedente    = bol.conta_cedente    
        boleto.data_vencimento  = datetime.date(datetime.strptime(bol.data_vencimento, '%Y-%m-%d'))
        boleto.data_documento   = date.today()#datetime.date(datetime.strptime(bol.data_documento, '%Y-%m-%d'))
        boleto.data_processamento = date.today()
        boleto.nosso_numero     = bol.nosso_numero
        if bol.banco == 'caixa':
            n = list(boleto.nosso_numero)
            n[0] = '2'
            n[1] = '4'
            n[2] = '2'
            boleto.nosso_numero = "".join(n)
            boleto.especie_documento = 'DS'
        boleto.numero_documento = bol.numero_documento
        boleto.convenio         = bol.convenio
        pp = self.pool.get('boleto.partner_config').search(cr, uid, [('default_boleto','=',True)])
        if bol.instrucoes:
            instrucoes = bol.instrucoes
        elif pp:
            ppb = self.pool.get('boleto.partner_config').browse(cr, uid, pp[0])
            instrucoes = ppb.instrucoes
        else:
            raise osv.except_osv((u'Atencao !'),("Para gerar boletos primeiro cadastre a configuracao de boleto deste cliente."))
        boleto.instrucoes = []
        
        boleto.valor_documento  = bol.valor
        h = normalize('NFKD',unicode(instrucoes)).encode('ASCII','ignore')
        for k in h.split('\n'):
            boleto.instrucoes.append(k)
            
        boleto.cedente_endereco = normalize('NFKD',unicode(end_company or '')).encode('ASCII','ignore')
        sac = normalize('NFKD',unicode("%s           CNPJ/CPF:%s" 
            % (bol.sacado.legal_name or bol.sacado.name,bol.sacado.cnpj_cpf))).encode('ASCII','ignore')
        end = normalize('NFKD',unicode("%s, %s  %s  %s" 
            % (bol.sacado.street or '', bol.sacado.number or '', bol.sacado.street2 or '', bol.sacado.district or ''))).encode('ASCII','ignore')
        boleto.sacado = [(normalize('NFKD',unicode('%s  CNPJ/CPF: %s' 
                        % (bol.sacado.name or bol.sacado.legal_name or '',
                           str(bol.sacado.cnpj_cpf)))).encode('ASCII','ignore')), end,
                         ("%s            CEP: %s" % (bol.sacado.city,bol.sacado.zip))]
        boleto.demonstrativo =[
            str(sac[:90]),
            "%s" % (bol.name),
            str(end[:90]),
            "%s            CEP: %s" % (bol.sacado.city,bol.sacado.zip),
            "__________________________________________________________________________________________",              
            "REFERENTE A SERVIÇOS",
            "Produto".ljust(35)  + "Valor".rjust(15),
            "",
            ]
        for i in lista_produtos:
            i = normalize('NFKD',unicode(i[:90])).encode('ASCII','ignore'),
            boleto.demonstrativo.append(str(unicode(i[0]))) 
            
        print boleto
        boleto_pdf.drawBoleto(boleto)
        print boleto.linha_digitavel
        boleto_pdf.save()
            
        boleto_file = fbuffer.getvalue().encode("base64")
        fbuffer.close()
        return boleto_file
Example #56
0
def print_test():
    listaDadosReal = []
    for i in range(2):
        d = BoletoReal()
        d.carteira = '57'  # Contrato firmado com o Banco Real
        d.cedente = 'Empresa Empresa Empresa Empresa Empresa LTDA'
        d.agencia_cedente = '0531'
        d.conta_cedente = '5705853'

        d.data_vencimento = datetime.date(2010, 3, 27)
        d.data_documento = datetime.date(2010, 02, 12)
        d.data_processamento = datetime.date(2010, 02, 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 = 5.00

        d.nosso_numero = "%d" % (i+2)
        d.numero_documento = "%d" % (i+2)
        d.sacado = [
            "Cliente Teste %d" % (i+1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDadosReal.append( d )

    listaDadosBradesco = []
    for i in range(2):
        d = BoletoBradesco()
        d.carteira = '06'  # Contrato firmado com o Banco Bradesco
        d.cedente = 'Empresa Empresa Empresa Empresa Empresa LTDA'
        d.agencia_cedente = '0278-0'
        d.conta_cedente = '43905-3'

        d.data_vencimento = datetime.date(2011, 1, 25)
        d.data_documento = datetime.date(2010, 02, 12)
        d.data_processamento = datetime.date(2010, 02, 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 %d" % (i+1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDadosBradesco.append( d )

    listaDadosCaixa = []
    for i in range(2):
        d = BoletoCaixa()
        d.carteira = 'SR'  # Contrato firmado com o Banco Bradesco
        d.cedente = 'Empresa Empresa Empresa Empresa Empresa LTDA'
        d.agencia_cedente = '1565'
        d.conta_cedente = '414-3'

        d.data_vencimento = datetime.date(2010, 3, 27)
        d.data_documento = datetime.date(2010, 02, 12)
        d.data_processamento = datetime.date(2010, 02, 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 = 255.00

        d.nosso_numero = "%d" % (i+2)
        d.numero_documento = "%d" % (i+2)
        d.sacado = [
            "Cliente Teste %d" % (i+1),
            "Rua Desconhecida, 00/0000 - Não Sei - Cidade - Cep. 00000-000",
            ""
            ]
        listaDadosCaixa.append( d )


    # Bradesco Formato carne - duas paginas por folha A4
    print "Carne"
    boleto = BoletoPDF( 'boleto-bradesco-formato-carne-teste.pdf', True )
    for i in range(0,len(listaDadosBradesco),2):
        print i, i+1
        boleto.drawBoletoCarneDuplo(
            listaDadosBradesco[i], 
            listaDadosBradesco[i+1]
        )
        boleto.nextPage()
    boleto.save()

    # Bradesco Formato normal - uma pagina por folha A4
    print "Normal"
    boleto = BoletoPDF( 'boleto-bradesco-formato-normal-teste.pdf' )
    for i in range(len(listaDadosBradesco)):
        print i
        boleto.drawBoleto(listaDadosBradesco[i])
        boleto.nextPage()
    boleto.save()

    # Real Formato normal - uma pagina por folha A4
    print "Normal"
    boleto = BoletoPDF( 'boleto-real-formato-normal-teste.pdf' )
    for i in range(len(listaDadosReal)):
        print i
        boleto.drawBoleto(listaDadosReal[i])
        boleto.nextPage()
    boleto.save()

    # Caixa Formato normal - uma pagina por folha A4
    print "Carne"
    boleto = BoletoPDF( 'boleto-caixa-formato-carne-teste.pdf', True )
    for i in range(0,len(listaDadosCaixa),2):
        print i, i+1
        boleto.drawBoletoCarneDuplo(
            listaDadosCaixa[i],
            listaDadosCaixa[i+1]
        )
        boleto.nextPage()
    boleto.save()

    # Caixa Formato normal - uma pagina por folha A4
    print "Normal"
    boleto = BoletoPDF( 'boleto-caixa-formato-normal-teste.pdf' )
    for i in range(len(listaDadosCaixa)):
        print i
        boleto.drawBoleto(listaDadosCaixa[i])
        boleto.nextPage()
    boleto.save()

    print "Ok"
Example #57
0
    def gerar_boleto_santander(self,
                               cr,
                               uid,
                               rec_account_move_line,
                               context=None):
        obj_ir_attachment = self.pool.get('ir.attachment')
        obj_account_move_line = self.pool.get('account.move.line')
        if rec_account_move_line.payment_type.type_banking_billing == 'REG' or rec_account_move_line.payment_type.type_banking_billing == 'SRG':
            our_number = self.pool.get('ir.sequence').get(
                cr, uid, 'payment_slip_our_number_itau')
            obj_account_move_line.write(cr,
                                        uid,
                                        rec_account_move_line.id,
                                        {'our_number': our_number},
                                        context=context)
        if not rec_account_move_line.our_number:
            raise osv.except_osv(
                _('Error'),
                _('Error! Payment slip does not yet confirmed by the bank.'))
        instruct = rec_account_move_line.payment_type.bank_account.instructions
        if instruct:
            fine = rec_account_move_line.payment_type.bank_account.monthly_fine
            interest = rec_account_move_line.payment_type.bank_account.monthly_interest
            value_fine = rec_account_move_line.debit / 100
            value_fine = value_fine * fine
            value_fine = round(value_fine, 2)
            value_fine = str(value_fine)
            value_interest = rec_account_move_line.debit / 100
            value_interest = value_interest * interest
            value_interest = round(value_interest, 2)
            value_interest = str(value_interest)
            instruct = instruct.replace('%(monthly_fine)s', value_fine)
            instruct = instruct.replace('%(monthly_interest)s', value_interest)
        if rec_account_move_line.partner_id.street2:
            sacado_endereco_1 = '%s, %s - %s - %s' % (
                rec_account_move_line.partner_id.street,
                rec_account_move_line.partner_id.number,
                rec_account_move_line.partner_id.street2,
                rec_account_move_line.partner_id.district)
        else:
            sacado_endereco_1 = '%s, %s - %s' % (
                rec_account_move_line.partner_id.street,
                rec_account_move_line.partner_id.number,
                rec_account_move_line.partner_id.district)
        sacado_endereco_2 = '%s - %s/%s' % (
            rec_account_move_line.partner_id.zip,
            rec_account_move_line.partner_id.city,
            rec_account_move_line.partner_id.state_id.code)
        cedente_endereco = '%s, %s - %s - %s/%s' % (
            rec_account_move_line.company_id.street,
            rec_account_move_line.company_id.number,
            rec_account_move_line.company_id.zip,
            rec_account_move_line.company_id.city,
            rec_account_move_line.company_id.state_id.code)
        sacado_nome = rec_account_move_line.partner_id.legal_name
        error = []
        if not rec_account_move_line.company_id.partner_id.cnpj_cpf:
            error.append('CPF/CNPJ (cedente)')
        if not rec_account_move_line.payment_type.bank_col_service and not rec_account_move_line.payment_type.bank_account.bank_col_service:
            error.append('Carteira Bancaria')
        if error:
            raise orm.except_orm(
                _('Error'),
                _('Missing data for generating the payment slip:\n%s') % error)
        lista_dados_santander = []
        obj_boleto = BoletoSantander()
        obj_boleto.cedente = rec_account_move_line.company_id.legal_name
        obj_boleto.cedente_documento = rec_account_move_line.company_id.partner_id.cnpj_cpf
        obj_boleto.cedente_endereco = cedente_endereco
        obj_boleto.agencia_cedente = rec_account_move_line.payment_type.bank_account.bra_number
        obj_boleto.conta_cedente = rec_account_move_line.payment_type.bank_account.acc_number
        obj_boleto.data_vencimento = datetime.date(
            datetime.strptime(rec_account_move_line.date_maturity, '%Y-%m-%d'))
        obj_boleto.data_processamento = date.today()
        obj_boleto.data_documento = datetime.date(
            datetime.strptime(rec_account_move_line.date, '%Y-%m-%d'))
        obj_boleto.instrucoes = instruct or ''
        obj_boleto.valor_documento = rec_account_move_line.debit
        obj_boleto.nosso_numero = rec_account_move_line.our_number
        obj_boleto.numero_documento = rec_account_move_line.name
        obj_boleto.tipo_boleto = '1'
        obj_boleto.carteira = rec_account_move_line.payment_type.bank_col_service or rec_account_move_line.payment_type.bank_account.bank_col_service
        obj_boleto.demonstrativo = ''
        obj_boleto.sacado = [
            '%s' % sacado_nome,
            '%s' % sacado_endereco_1,
            '%s' % sacado_endereco_2
        ]
        lista_dados_santander.append(obj_boleto)
        if obj_boleto.tipo_boleto == '1':
            w_file = tempfile.NamedTemporaryFile(prefix='Slip',
                                                 suffix='.pdf',
                                                 delete=False)
            w_slip = BoletoPDF(w_file)
            for i in range(len(lista_dados_santander)):
                w_slip.drawBoleto(lista_dados_santander[i])
                w_slip.nextPage()

            w_slip.save()
            due_date = datetime.date(
                datetime.strptime(rec_account_move_line.date_maturity,
                                  '%Y-%m-%d'))
            filename = 'BOL_%s_%04d%02d%02d.pdf' % (
                rec_account_move_line.partner_id.name, due_date.year,
                due_date.month, due_date.day)
            w_file.seek(0)
            fl = w_file.read()
            src_ir_attachment = obj_ir_attachment.search(
                cr, uid, [('res_id', '=', rec_account_move_line.id)])
            if src_ir_attachment:
                attach_val = {
                    'name': filename,
                    'datas_fname': filename,
                    'datas': base64.b64encode(fl)
                }
                obj_ir_attachment.write(cr,
                                        uid,
                                        src_ir_attachment,
                                        attach_val,
                                        context=context)
            else:
                attach_vals = {
                    'name': filename,
                    'datas_fname': filename,
                    'datas': base64.b64encode(fl),
                    'file_type': format,
                    'res_model': 'account.move.line',
                    'res_id': rec_account_move_line.id
                }
                obj_ir_attachment.create(cr, uid, attach_vals, context=context)
                pay_slip_vals = {
                    'filename': filename,
                    'slip_create_date': date.today()
                }
                obj_account_move_line.write(cr,
                                            uid,
                                            rec_account_move_line.id,
                                            pay_slip_vals,
                                            context=context)
                w_file.close()
Example #58
0
    def gen_boleto(self, cr, uid, ids, boleto_ids, context=None):
        boleto_obj = self.pool.get('boleto.boleto')
        fbuffer = StringIO()
        boleto_pdf = BoletoPDF(fbuffer)
        #inv_obj = self.pool.get('account.invoice')
        #active_ids = context.get('active_ids', [])
        #for invoice in inv_obj.browse(cr, uid, active_ids, context=context):
        #inv_obj = self.pool.get('account.invoice')
        #for invoice in inv_obj.browse(cr, uid, ids, context=context):
            #contrato_obj = self.pool.get('account.analytic.account')
            #contrato_line = contrato_obj.search(cr, uid, [('code','=',invoice.origin)], context=context)
            #for contrato in contrato_line:
            #    data_contrato = contrato.date
            #    data_vencimento = contrato
        for bol in boleto_obj.browse(cr, uid, boleto_ids, context=context):

            if bol.banco == 'bb':
                boleto = BoletoBB(7, 2)
            elif bol.banco == 'bradesco':
                boleto = BoletoBradesco()
            elif bol.banco == 'caixa':
                boleto = BoletoCaixa()
            elif bol.banco == 'real':
                boleto = BoletoReal()
            elif bol.banco == 'sicredi':
                boleto = BoletoSicredi(5,1)
            elif bol.banco == 'itau':
                boleto = BoletoItau()
            boleto.cedente = bol.cedente.partner_id.legal_name
            boleto.cedente_documento = bol.cedente.partner_id.cnpj_cpf
            boleto.cedente_uf = bol.cedente.partner_id.state_id.code
            boleto.cedente_logradouro = bol.cedente.partner_id.street
            boleto.cedente_cidade = bol.cedente.partner_id.l10n_br_city_id.name
            boleto.cedente_bairro = bol.cedente.partner_id.district
            boleto.cedente_cep = bol.cedente.partner_id.zip
            boleto.carteira = bol.carteira
            boleto.agencia_cedente = bol.agencia_cedente
            boleto.conta_cedente = bol.conta_cedente
            boleto.data_vencimento = datetime.date(datetime.strptime(bol.data_vencimento, '%Y-%m-%d'))
            boleto.data_documento = datetime.date(datetime.strptime(bol.data_documento, '%Y-%m-%d'))
            boleto.data_processamento = date.today()
            boleto.valor_documento = bol.valor
            boleto.nosso_numero = bol.numero_documento
            boleto.numero_documento = bol.numero_documento
            boleto.convenio = bol.convenio
            # se documento de origem contrato buscar datas
            data_ini = bol.data_vencimento[8:11] + '/' + bol.data_vencimento[5:7] + '/' + bol.data_vencimento[0:4]
            data_fim = datetime.strftime(boleto.data_vencimento+relativedelta(months=+1),'%Y-%m-%d')
            data_final = data_fim[8:11] + '/' + data_fim[5:7] + '/' + data_fim[0:4]
            instrucao = bol.instrucoes %(str(bol.valor*0.02), str(bol.valor*0.1), str(data_ini), str(data_final))
            boleto.instrucoes = instrucao.split('\n') if instrucao else ""
            boleto.sacado = [
                "%s" % (bol.sacado.legal_name or bol.sacado.name),
                "CNPJ/CPF: %s" % (bol.sacado.cnpj_cpf),
                "%s, %s - %s - %s - Cep. %s" % (bol.sacado.street, bol.sacado.number, bol.sacado.district, bol.sacado.l10n_br_city_id.name + '-' + bol.sacado.state_id.code, bol.sacado.zip),
                ]
            boleto_pdf.drawBoleto(boleto)
            boleto_pdf.nextPage()

        boleto_pdf.save()
        boleto_file = fbuffer.getvalue().encode("base64")
        fbuffer.close()
        return boleto_file