Advertisement
paulogp

Referencia multibanco

Aug 7th, 2011
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.87 KB | None | 0 0
  1. # calculo da referencia multibanco
  2. # paulogp, 2008
  3.  
  4. def ref_mb(entidade, sub_ent, n_doc, valor):
  5.     '''
  6.    entidade: entidade (5 digitos) - nao e necessario para os calculos
  7.    sub_ent: codigo da sub-entidade (3 digitos)
  8.    n_doc: n documento a ser pago ou n cliente (4 digitos)
  9.    valor: valor em divida (sem separador decimal)
  10.    
  11.    exemplo: ref_mb('12345', '497', '0001', 23467)
  12.    resultado: 497000163
  13.    '''
  14.     entrada_x = sub_ent + n_doc
  15.  
  16.     # coloca valor com 8 digitos
  17.     valor_str = str(valor)
  18.     valor_ref = ''
  19.     for i in range(1, 9 - len(valor_str)):
  20.         valor_ref = valor_ref + '0'
  21.  
  22.     entrada = entrada_x + valor_ref + valor_str
  23.  
  24.     # calculo dos digitos de controlo
  25.     resultado = 923
  26.     resultado = resultado + 3 * int(entrada[14])
  27.     resultado = resultado + 30 * int(entrada[13])
  28.     resultado = resultado + 9 * int(entrada[12])
  29.     resultado = resultado + 90 * int(entrada[11])
  30.     resultado = resultado + 27 * int(entrada[10])
  31.     resultado = resultado + 76 * int(entrada[9])
  32.     resultado = resultado + 81 * int(entrada[8])
  33.     resultado = resultado + 34 * int(entrada[7])
  34.     resultado = resultado + 49 * int(entrada[6])
  35.     resultado = resultado + 5 * int(entrada[5])
  36.     resultado = resultado + 50 * int(entrada[4])
  37.     resultado = resultado + 15 * int(entrada[3])
  38.     resultado = resultado + 53 * int(entrada[2])
  39.     resultado = resultado + 45 * int(entrada[1])
  40.     resultado = resultado + 62 * int(entrada[0])
  41.  
  42.     resultado = 98 - (resultado % 97)
  43.  
  44.     digitos_controlo = str(resultado)
  45.     if len(digitos_controlo) == 1:
  46.         digitos_controlo = '0' + digitos_controlo
  47.  
  48.     # referencia mb
  49.     entrada_x = entrada_x + digitos_controlo
  50.  
  51.     print 'Entidade: ' + entidade
  52.     print 'Referencia: ' + entrada_x
  53.     print 'Valor: ' + str(valor / 100.0) + " euros"
  54.  
  55. # exemplo
  56. ref_mb('12345', '497', '0001', 23467)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement