def print_itau(): d = BoletoItau() d.carteira = '175' d.cedente = 'Empresa ACME LTDA' d.cedente_documento = "102.323.777-01" d.cedente_endereco = "Rua Acme, 123 - Centro - Sao Paulo/SP - CEP: 12345-678" d.agencia_cedente = '1565' d.conta_cedente = '32414' d.data_vencimento = datetime.date(2010, 3, 27) d.data_documento = datetime.date(2010, 2, 12) d.data_processamento = datetime.date(2010, 2, 12) d.valor = 255.00 d.valor_documento = d.valor d.nosso_numero = "80195250" d.numero_documento = d.nosso_numero d.instrucoes = [ "1 - Sr. Caixa, cobrar multa de 2% após o vencimento", "2 - Receber até 10 dias após o vencimento", ] d.demonstrativo = [ "1 - Serviço Teste R$ 255,00", "2 - Total R$ 255,00", ] d.sacado = [ "John Doe", "Sesame Street, w/o number", "Nowhere Land, NL - 00000-000" ] print_teste_boleto(d, 'itau')
def 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
def setUp(self): self.dados = [] for i in range(3): d = BoletoItau() d.carteira = '109' d.agencia_cedente = '0293' d.conta_cedente = '01328' d.data_vencimento = datetime.date(2009, 10, 19) d.data_documento = datetime.date(2009, 10, 19) d.data_processamento = datetime.date(2009, 10, 19) d.valor_documento = 29.80 d.nosso_numero = str(157 + i) d.numero_documento = str(456 + i) self.dados.append(d)
def print_itau(): listaDadosCaixa = [] for i in range(2): d = BoletoItau() d.carteira = '18' # 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 = "801978" 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) # Itau Formato normal - uma pagina por folha A4 boleto = BoletoPDF('boleto-itau-formato-carne-teste.pdf', True) for i in range(0, len(listaDadosCaixa), 2): boleto.drawBoletoCarneDuplo(listaDadosCaixa[i], listaDadosCaixa[i + 1]) boleto.nextPage() boleto.save() # Itau Formato normal - uma pagina por folha A4 boleto = BoletoPDF('boleto-itau-formato-normal-teste.pdf') for i in range(len(listaDadosCaixa)): boleto.drawBoleto(listaDadosCaixa[i]) boleto.nextPage() boleto.save()
def get_data_itau(): listaDados = [] for i in range(2): d = BoletoItau() d.nosso_numero = '87654' d.numero_documento = '27.030195.10' 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) return listaDados
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 }
def gerar_boleto_itau(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': if not rec_account_move_line.payment_type.sequence_our_number: raise osv.except_osv( _('Atenção!'), _('Configure a sequencia do nosso número no tipo de pagamento' )) our_number = self.pool.get('ir.sequence').next_by_id( cr, uid, rec_account_move_line.payment_type.sequence_our_number.id) 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! Confirmation file has not validated 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) cedente = rec_account_move_line.company_id.legal_name if len(cedente) > 40: difference = len(cedente) - 40 cedente = cedente[:len(cedente) - difference] sacado_nome = rec_account_move_line.partner_id.legal_name if len(sacado_nome) > 40: difference = len(sacado_nome) - 40 sacado_nome = sacado_nome[:len(sacado_nome) - difference] 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_itau = [] obj_boleto = BoletoItau() obj_boleto.cedente = cedente 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_itau.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_itau)): w_slip.drawBoleto(lista_dados_itau[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()
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
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