def setUp(self):
     self.dados = []
     for i in range(3):
         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 = str(1234567 + i)
         d.numero_documento = str(12345 + i)
         d.ios = '0'
         self.dados.append(d)
Exemple #2
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()
def get_data_santander():
    listaDados = []
    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",
            ""
            ]
        listaDados.append(d)
    return listaDados
def get_data_santander():
    listaDados = []
    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", ""
        ]
        listaDados.append(d)
    return listaDados
Exemple #5
0
 def setUp(self):
     self.dados = []
     for i in range(3):
         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 = str(1234567 + i)
         d.numero_documento = str(12345 + i)
         d.ios = '0'
         self.dados.append(d)
    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
            }
Exemple #7
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()
    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()
Exemple #9
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