Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # calculo da referencia multibanco
- # paulogp, 2008
- def ref_mb(entidade, sub_ent, n_doc, valor):
- '''
- entidade: entidade (5 digitos) - nao e necessario para os calculos
- sub_ent: codigo da sub-entidade (3 digitos)
- n_doc: n documento a ser pago ou n cliente (4 digitos)
- valor: valor em divida (sem separador decimal)
- exemplo: ref_mb('12345', '497', '0001', 23467)
- resultado: 497000163
- '''
- entrada_x = sub_ent + n_doc
- # coloca valor com 8 digitos
- valor_str = str(valor)
- valor_ref = ''
- for i in range(1, 9 - len(valor_str)):
- valor_ref = valor_ref + '0'
- entrada = entrada_x + valor_ref + valor_str
- # calculo dos digitos de controlo
- resultado = 923
- resultado = resultado + 3 * int(entrada[14])
- resultado = resultado + 30 * int(entrada[13])
- resultado = resultado + 9 * int(entrada[12])
- resultado = resultado + 90 * int(entrada[11])
- resultado = resultado + 27 * int(entrada[10])
- resultado = resultado + 76 * int(entrada[9])
- resultado = resultado + 81 * int(entrada[8])
- resultado = resultado + 34 * int(entrada[7])
- resultado = resultado + 49 * int(entrada[6])
- resultado = resultado + 5 * int(entrada[5])
- resultado = resultado + 50 * int(entrada[4])
- resultado = resultado + 15 * int(entrada[3])
- resultado = resultado + 53 * int(entrada[2])
- resultado = resultado + 45 * int(entrada[1])
- resultado = resultado + 62 * int(entrada[0])
- resultado = 98 - (resultado % 97)
- digitos_controlo = str(resultado)
- if len(digitos_controlo) == 1:
- digitos_controlo = '0' + digitos_controlo
- # referencia mb
- entrada_x = entrada_x + digitos_controlo
- print 'Entidade: ' + entidade
- print 'Referencia: ' + entrada_x
- print 'Valor: ' + str(valor / 100.0) + " euros"
- # exemplo
- ref_mb('12345', '497', '0001', 23467)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement