|
|
@ -19,7 +19,7 @@
|
|
|
|
#* *
|
|
|
|
#* *
|
|
|
|
#***************************************************************************/
|
|
|
|
#***************************************************************************/
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# *** NOTE ***
|
|
|
|
# *** NOTE ***
|
|
|
|
# It may be necessary to remove the second line, before running.
|
|
|
|
# It may be necessary to remove the second line, before running.
|
|
|
|
# It may be necessary also, to change the currency symbol if your file
|
|
|
|
# It may be necessary also, to change the currency symbol if your file
|
|
|
|
# includes one.
|
|
|
|
# includes one.
|
|
|
@ -55,97 +55,97 @@
|
|
|
|
mnths=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
|
|
|
|
mnths=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
|
|
|
|
currency = '£'
|
|
|
|
currency = '£'
|
|
|
|
setup = True
|
|
|
|
setup = True
|
|
|
|
debsfirst = False # credit column is before debit
|
|
|
|
debsfirst = False # credit column is before debit
|
|
|
|
both = False # only one amount column
|
|
|
|
both = False # only one amount column
|
|
|
|
print("!Type:Bank")
|
|
|
|
print("!Type:Bank")
|
|
|
|
while 1:
|
|
|
|
while 1:
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
line=raw_input()
|
|
|
|
line=input()
|
|
|
|
except:break
|
|
|
|
except:break
|
|
|
|
if line == "" : continue # empty line
|
|
|
|
if line == "" : continue # empty line
|
|
|
|
line = line.replace('"','',) # Strip out ' "' quotes
|
|
|
|
line = line.replace('"','',) # Strip out ' "' quotes
|
|
|
|
line = line.replace(currency,'',) # Strip out '£', etc. symbol
|
|
|
|
line = line.replace(currency,'',) # Strip out '£', etc. symbol
|
|
|
|
cols = line.split(',') # Seperator between columns
|
|
|
|
cols = line.split(',') # Seperator between columns
|
|
|
|
if setup:
|
|
|
|
if setup:
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# *** SETUP ***
|
|
|
|
# *** SETUP ***
|
|
|
|
#
|
|
|
|
#
|
|
|
|
dt = cols[0][0:2] # Might be a date (day)
|
|
|
|
dt = cols[0][0:2] # Might be a date (day)
|
|
|
|
datefound = ((dt > '0') and (dt < '32')) #this looks like a date
|
|
|
|
datefound = ((dt > '0') and (dt < '32')) #this looks like a date
|
|
|
|
hdrfound = (cols[0] == 'Date')
|
|
|
|
hdrfound = (cols[0] == 'Date')
|
|
|
|
if not datefound and not hdrfound: continue# still in hdrs
|
|
|
|
if not datefound and not hdrfound: continue# still in hdrs
|
|
|
|
if hdrfound:
|
|
|
|
if hdrfound:
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# *** 'Date', so now in header ***
|
|
|
|
# *** 'Date', so now in header ***
|
|
|
|
#
|
|
|
|
#
|
|
|
|
hdrfound = False
|
|
|
|
hdrfound = False
|
|
|
|
#line = line.replace(' ','',) # Strip out spaces in hdr
|
|
|
|
#line = line.replace(' ','',) # Strip out spaces in hdr
|
|
|
|
cols[2] = cols[2].replace(' ','',) # Strip out spaces in hdr
|
|
|
|
cols[2] = cols[2].replace(' ','',) # Strip out spaces in hdr
|
|
|
|
if cols[2] == 'Debits':
|
|
|
|
if cols[2] == 'Debits':
|
|
|
|
debsfirst = True
|
|
|
|
debsfirst = True
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
elif cols[2] == 'Credits':
|
|
|
|
elif cols[2] == 'Credits':
|
|
|
|
debsfirst = False
|
|
|
|
debsfirst = False
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
elif cols[2] == 'Amount':
|
|
|
|
elif cols[2] == 'Amount':
|
|
|
|
both = True
|
|
|
|
both = True
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
print 'Error in col[2]'
|
|
|
|
print('Error in col[2]')
|
|
|
|
print '*** Error in header - col 2 s/b Debit, Credit, or Amount'
|
|
|
|
print('*** Error in header - col 2 s/b Debit, Credit, or Amount')
|
|
|
|
#continue
|
|
|
|
#continue
|
|
|
|
exit
|
|
|
|
exit
|
|
|
|
setup ==False
|
|
|
|
setup ==False
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# *** Transactions ***
|
|
|
|
# *** Transactions ***
|
|
|
|
#
|
|
|
|
#
|
|
|
|
cnum = 0 # First column
|
|
|
|
cnum = 0 # First column
|
|
|
|
for col in cols:
|
|
|
|
for col in cols:
|
|
|
|
if cnum > 3: break
|
|
|
|
if cnum > 3: break
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# # Process Date
|
|
|
|
# # Process Date
|
|
|
|
#
|
|
|
|
#
|
|
|
|
elif cnum == 0:
|
|
|
|
elif cnum == 0:
|
|
|
|
col =col.replace(' ','/',2) # Change date seperator to '/'
|
|
|
|
col =col.replace(' ','/',2) # Change date seperator to '/'
|
|
|
|
m = col.split('/')
|
|
|
|
m = col.split('/')
|
|
|
|
# *** Check if month not numeric
|
|
|
|
# *** Check if month not numeric
|
|
|
|
mn = m[1][0:3] # Extract month string from field 2
|
|
|
|
mn = m[1][0:3] # Extract month string from field 2
|
|
|
|
fld = 2
|
|
|
|
fld = 2
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
mnth = mnths.index(mn) # Get month number
|
|
|
|
mnth = mnths.index(mn) # Get month number
|
|
|
|
except ValueError: # Field 2 not a valid month name
|
|
|
|
except ValueError: # Field 2 not a valid month name
|
|
|
|
mn = m[0][0:3] # .. so try field 1
|
|
|
|
mn = m[0][0:3] # .. so try field 1
|
|
|
|
fld = 1
|
|
|
|
fld = 1
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
mnth = mnths.index(mn)
|
|
|
|
mnth = mnths.index(mn)
|
|
|
|
except ValueError: # Nor is field 1
|
|
|
|
except ValueError: # Nor is field 1
|
|
|
|
dat = ''.join(col) # ..so use as is (numeric)
|
|
|
|
dat = ''.join(col) # ..so use as is (numeric)
|
|
|
|
else: # Field 1 is month name
|
|
|
|
else: # Field 1 is month name
|
|
|
|
dat = col[1:3] + str(mnth + 1) + '/' +m[2]
|
|
|
|
dat = col[1:3] + str(mnth + 1) + '/' +m[2]
|
|
|
|
else: # Field 2 is month name
|
|
|
|
else: # Field 2 is month name
|
|
|
|
dat = col[0:3] + str(mnth + 1) + '/' +m[2]
|
|
|
|
dat = col[0:3] + str(mnth + 1) + '/' +m[2]
|
|
|
|
line = 'D' + dat+'\n'
|
|
|
|
line = 'D' + dat+'\n'
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# # Detail column
|
|
|
|
# # Detail column
|
|
|
|
#
|
|
|
|
#
|
|
|
|
elif cnum == 1:
|
|
|
|
elif cnum == 1:
|
|
|
|
#col = col.replace('"','')
|
|
|
|
#col = col.replace('"','')
|
|
|
|
line = line + 'P' + col +'\n'
|
|
|
|
line = line + 'P' + col +'\n'
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# # Debit or credit column
|
|
|
|
# # Debit or credit column
|
|
|
|
#
|
|
|
|
#
|
|
|
|
elif cnum == 2:
|
|
|
|
elif cnum == 2:
|
|
|
|
if col != "":
|
|
|
|
if col != "":
|
|
|
|
if debsfirst == True: # This is Debit column
|
|
|
|
if debsfirst == True: # This is Debit column
|
|
|
|
col = '-' + col # Mark as -ve
|
|
|
|
col = '-' + col # Mark as -ve
|
|
|
|
line = line + 'T' + col +'\n'
|
|
|
|
line = line + 'T' + col +'\n'
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# # Credit or debit?
|
|
|
|
# # Credit or debit?
|
|
|
|
#
|
|
|
|
#
|
|
|
|
elif ((cnum == 3) and (both == False)):
|
|
|
|
elif ((cnum == 3) and (both == False)):
|
|
|
|
if col != "":
|
|
|
|
if col != "":
|
|
|
|
if ((debsfirst == False) ):
|
|
|
|
if ((debsfirst == False) ):
|
|
|
|
col = '-' + col # Mark as -ve
|
|
|
|
col = '-' + col # Mark as -ve
|
|
|
|
line = line + 'T' + col + '\n'
|
|
|
|
line = line + 'T' + col + '\n'
|
|
|
|
cnum+=1
|
|
|
|
cnum+=1
|
|
|
|
print line + '^' # output this entry
|
|
|
|
print(line + '^') # output this entry
|
|
|
|