
| Current Path : /home/ift/52_procpy/finance/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : //home/ift/52_procpy/finance/bank.py |
# coding: utf-8
import os
import sys
import re
import codecs
class Bank (object):
def __init__ (self,fibu):
self.fibu = fibu
#******************************************************
def raw_data (self,files,datidx,special=""):
texte = self.fibu.import_file(files)
zeilen = []
for text in texte:
if special == "flessa":
text = re.sub(r"(\n\"?\d\d\.\d\d\.\d\d\d\d\"?\S)","---CR---\\1",text,99999999,re.DOTALL)
text = re.sub(r"\n","",text,99999999,re.DOTALL)
text = re.sub(r"---CR---","\n",text,99999999,re.DOTALL)
for zeile in text.split("\n"):
zeile1 = re.sub(r"\"","",zeile,99999999).split(";")
try:
zeile1[datidx] = re.sub(r"^(\d\d)\.(\d\d)\.\d?\d?(\d\d)\.$","20\\3\\2\\1",zeile1[datidx]+".")
int(zeile1[datidx])
except:
continue
zeilen.append(zeile1)
return(zeilen)
#*********************************************************
def parse_commerzbank (self,files,ukto=""):
for zeile in self.raw_data(files,1):
self.fibu.add(zeile[1],re.sub(r",",".", re.sub(r"[\.\+]","",zeile[4],99) ),
ukto+"-10-1200",ukto+"-13-9999",zeile[3] + " IBAN " + zeile[8])
#*********************************************************
def parse_sparkasse (self,files,ukto=""):
for zeile in self.raw_data(files,2):
self.fibu.add(zeile[2],re.sub(r",",".", re.sub(r"[\.\+]","",zeile[8],99) ),
ukto+"-10-1202",ukto+"-13-9999",zeile[3] + " " + zeile[4] + " " + zeile[5] + " " + zeile[8] + " IBAN " + zeile[8])
#*********************************************************
def parse_flessabank (self,files,ukto=""):
for zeile in self.raw_data(files,1,"flessa"):
self.fibu.add(zeile[1],
"%3.2f" % float( {'S':'-','H':''}[zeile[12]] + re.sub(r",",".", re.sub(r"[\.\+]","",zeile[11],99) ) ),
ukto+"-10-1204",ukto+"-13-9999",
re.sub(r" +"," ",(zeile[3] + " " + zeile[4] +" " + zeile[6] +
" " + zeile[8]).strip(),99999999)) # + " IBAN " + zeile[5])
#*********************************************************
def parse_consors (self,files,ukto=""):
texte = self.fibu.import_file(files)
zeilen = []
for text in texte:
text = text + " \n \n"
text = re.sub(chr(12),"",text,99999999)
text = re.sub(r"BONIFIKATION","< x > BONIFIKATION",text,99999999)
m = re.search(r"Datum +\d\d\.(\d\d)\.(\d\d)",text)
monat = int(m.group(1))
jahr1 = "20" + m.group(2)
jahr0 = "%04u" % (int(jahr1)-1)
while (0 == 0):
m = re.search(r"^(.*?)\n(\S+ *\S*) +(\d\d)\.(\d\d)\. +(\d\d\d\d) +\d\d\.\d\d\. +([\d\.]+,\d\d)([\-\+]?)\n +([^\n]+?) +\< *([^\n]+?) *\> +([^\n]*) *([^\n]+)(.*$)",text,flags=re.DOTALL)
if not m:
break
jahr = jahr1
if int(m.group(4)) > monat:
jahr = jahr0
text = m.group(1) + m.group(12)
self.fibu.add(jahr + m.group(4) + m.group(3), re.sub(r",",".", re.sub(r"[\.\+]","",m.group(7)+m.group(6),99) ),
ukto+"-10-1203",ukto+"-13-9999", m.group(2) + " " + m.group(8) + " " + m.group(9) +
" IBAN " + m.group(10) + " " + m.group(11) )
while (0 == 0):
m = re.search(r"^(.*?)\n(ABSCHLUSS|GEBUEHREN) +(\d\d)\.(\d\d)\. +(\d\d\d\d) +\d\d\.\d\d\. +([\d\.]+,\d\d)([\-\+]?) *\n(.*$)",text,flags=re.DOTALL)
if not m:
break
jahr = jahr1
if int(m.group(4)) > monat:
jahr = jahr0
text = m.group(1) + m.group(8)
self.fibu.add(jahr + m.group(4) + m.group(3), re.sub(r",",".", re.sub(r"[\.\+]","",m.group(7)+m.group(6),99) ),
ukto+"-10-1203",ukto+"-13-9999", m.group(2) + " Kontogebuehren und Zinsen" )
#************************************************************************************