123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- from random import randint
- import pandas as pd
- import re
- import sys
- info_df = pd.read_csv('export.csv', nrows=1, sep=';')
- # skiprows=16, na_values=''
- trans_df = pd.read_csv('export.csv', skiprows=2, sep=';',
- keep_default_na=False)
- iban = 'RO50BACX0000001138725000'
- st_nr = randint(100000000, 199999999)
- if sys.argv[1] is None:
- st_date = input('statement date==')
- else:
- st_date = sys.argv[1] # '190325'
- def dig_it(search_in, fl_point=100, pattern=r'\d+'):
- if re.search('-', search_in):
- return -int(''.join(re.findall(pattern, search_in))[:-2]) +\
- -int(''.join(re.findall(pattern, search_in))[-2:]) / fl_point
- else:
- return int(''.join(re.findall(pattern, search_in))[:-2]) +\
- int(''.join(re.findall(pattern, search_in))[-2:]) / fl_point
- def statm_header():
- o_bal = dig_it(info_df['Opening Balance'][0])
- if o_bal > 0:
- cd_mark = 'C'
- else:
- cd_mark = 'D'
- if re.search('.', info_df['Opening Balance'][0]):
- n = info_df['Opening Balance'][0].replace('.', '')
- else:
- n = info_df['Opening Balance'][0]
- tr_ref_nr = ':20:' + str(info_df['Account'][0]) + '\n'
- acc_id = ':25:' + iban + '\n'
- st_ref = ':28:' + str(st_nr) + '\n'
- in_op_balance = ':60F:' + cd_mark + st_date + info_df['Currency'][0] +\
- n + '\n'
- return tr_ref_nr + acc_id + st_ref + in_op_balance
- def statm_footer():
- c_bal = dig_it(info_df['Closing Balance'][0])
- if c_bal > 0:
- cd_mark = 'C'
- else:
- cd_mark = 'D'
- if re.search('.', info_df['Closing Balance'][0]):
- n = info_df['Closing Balance'][0].replace('.', '')
- else:
- n = info_df['Closing Balance'][0]
- fin_op_balance = ':62F:' + cd_mark + st_date + info_df['Currency'][0] + n
- return fin_op_balance
- def statm_transactions(elem):
- if dig_it(elem[1]) > 0:
- CD_mark = 'C'
- else:
- CD_mark = 'D'
- if re.search('-', elem[1]):
- elem[1] = elem[1].replace('-', '')
- if re.search('.', elem[1]):
- elem[1] = elem[1].replace('.', '')
- tr = ':61:' + elem[3][-2:] + elem[3][3:-5] + elem[3][:2] + elem[3][3:-5] +\
- elem[3][:2] + CD_mark + elem[1] + 'NTRF' + str(elem[-2]) +\
- elem[5] + '\n'
- inf = elem[14] + elem[16] + '\n'
- more_inf = ':86:' + '+31' + elem[9] + '\n' + '+32' + elem[10] + '+33/' +\
- str(elem[-7]) + '\n'
- return tr + inf + more_inf
- # -----------------------------------------------------
- # def statm_transactions(sequence):
- # for i in sequence: # trans_df.values:
- # if dig_it(i[1]) > 0:
- # CD_mark = 'C'
- # else:
- # CD_mark = 'D'
- # if re.search('-', i[1]):
- # i[1] = i[1].replace('-', '')
- # if re.search('.', i[1]):
- # i[1] = i[1].replace('.', '')
- # tr = ':61:' + i[3][-2:] + i[3][3:-5] + i[3][:2] + i[3][3:-5] + \
- # i[3][:2] + CD_mark + i[1] + 'NTRF' + str(i[-2]) + i[5] + '\n'
- # inf = i[14] + i[16] + '\n'
- # more_inf = ':86:' + i[9] + '\n' + i[10] + '\n' + str(i[-7])
- # return tr + inf + more_inf
- # -------------------------------------------------------
- transactions = map(statm_transactions, trans_df.values)
- with open('unicredit_mt940.txt', 'w') as export:
- export.write(statm_header())
- for elem in transactions:
- export.write(elem)
- export.write(statm_footer())
- # for elem in map(statm_transactions, trans_df.values):
- # print(elem)
- # print(statm_header())
- # print(statm_footer())
- # -------------------------------------------------------------------------------
- # print(info_df['Account Title'], info_df['Account'],
- # info_df['Currency'], info_df['Opening Balance'],
- # info_df['Closing Balance'])
- # -------------------------------------------------------------------------------
- # for i in df['Transaction details 1']:
- # print(i)
- # print(in_op_balance)
|