Welcome To Our Shell

Mister Spy & Souheyl Bypass Shell

Current Path : /var/www/web-klick.de/dsh/21_finance/23/

Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
Upload File :
Current File : /var/www/web-klick.de/dsh/21_finance/23/rules.py

#  coding: utf8

import os,re,sys,glob


class Rules (object):

    def __init__ (self):
    
        pass


#+++++++++++++++++++++++++++++++++++++++++


class XRules (object):

    def __init__ (self,fibu):

        self.fibu           = fibu
        self.addtext_locale = open( re.sub(r"^(.*)[\\\/](.*)$","\\1",__file__) + "/.gitignore" ).read()
        self.header         = "IfT Informatik GmbH"
        self.ust_kto        = "11-1502"
        
        self.sortpatterns   = "LOHN,SOND,LS,KS,KE,KR,KA,KB,SZ,RV,AV,KV,PV,U1,U2,U3,AN,AR,PL,Ebit,Abschr".split(",")

        self.ktoname = '''
         
10__Aktiva

10-0201__Anlagen
10-1202__Sparkasse
10-1204__Flessabank
10-1500__Finanzamt_Krankenkassen
10-1510__Beitragsnachweise
10-1511__Krankmeldungen
10-1512__SozMeldungen

10-7000-awender
10-7000-cgabriel
10-7000-cgabriel-10-1200__Commerzbank
10-7000-cgabriel-10-1203__Consors
10-7000__Debitoren
10-7000-emagine
10-7000-gfk
10-7000-gulp
10-7000-hays
10-7000-KK
10-7000-progressive
10-7000-sivantos
10-7000-solcom
10-7000-sterling
10-7000-zaunz
10-7000-zim
10-7001__Lohnsteuerbescheinigungen

11-1500-AN-agosmann
11-1500__Lohnkonten
11-1505__Koerperschaftsteuer
11-1506__Gewerbesteuer
11-1805__Anfangsbestand

11__Passiva

12__Ertrag

13__Aufwand
13-6010__Sozialversicherung
13-6015__Pauschalsteuer
13-6121__Beitrag_VBG
13-6122__Beitrag_IHK
13-6123__Beitrag_GEZ
13-6150__Kfz_Versicherung
13-6300__Buecher_und_Medien
13-6310__Miete_Buero_Fuerth
13-6311__Miete_Buero_Frankfurt
13-6312__Miete_Buero_Frankfurt
13-6320__Heizkosten_Buero
13-6325__Strom_Buero
13-6350__Netz_und_Telefon
13-6430__Gebuehren
13-6530__KFZ_Kosten_Auto
13-6531__KFZ_Gebuehren
13-6540__Abschreibungen
13-6600__Buerokosten
13-6602__Werbekosten
13-6605__Akquisekosten
13-6640__Bewirtungskosten
13-6641__Privatanteil_Bewirt
13-6670__Reisekosten
13-6680__Uebernachtung
13-6700__Computer_ua
13-6800__Porto
13-6815__Buerobedarf
13-6816__Kleingeraete
13-6825__Rechtskosten
13-6855__KtoGeb
13-6890__Verbaende
13-7100__Zinsen
13-7685__KFZ_Steuer
13-7690__Gebuehren_Sonstige
13-7691__Gebuehren_Finanzamt
13-8201__Divers_DEV1304
13-9210__CulturalMarketing
13-9220__Zuwendungen
13-9910__Rundungsausgleich

14__Steuern
14-7603__Koerperschaftssteuer
14-7604__Soli_KSteuer
14-7610__Gewerbesteuer
14-7630__Ausschuettung
14-7632__Quellensteuer
14-7633__Soli_QSteuer
14-7634__KS_QSteuer

15__Ueberschuss
15-1100__Anfangsbestand
15-1200__Jahresueberschuss
15-1300__Endbestand

20__Projektstunden

57__Kennzahlen

'''

#*************************************************

    def sortidx (self,kto2):
    
        kto2 = re.sub(r"^\-([A-Z][A-Z]|U\d)\-(AN|AR|PL)\-([a-z]+)","-\\3-\\2-\\1",kto2)
        kto2 = re.sub(r"^\-(AN|AR|PL)\-([a-z]+)","-\\2-\\1",kto2)
        zaehler = 0
        for o in self.sortpatterns:
            zaehler = zaehler + 1
            kto2    = re.sub("-"+o,"-"+("%03u" % zaehler)+o,kto2)

        return(kto2)

#*************************************************

    def empty_line_in_ktolist (self,kto2):
    
        if len(kto2) == 2:
            return(True)
            
        if re.search(r"^[A-Z][A-Z]\-[a-z]+$",kto2):
            return(True)
            
        return(False)

#*************************************************

    def rule__raw (self,ktodata):
    
        if " -aktuell" in ktodata['CONTENT']:
            ktodata['CONTENT'] = re.sub(r"\-(aktuell|archiv)\-20\d\d","",ktodata['CONTENT'],99999999)
            ktodata['CONTENT'] = re.sub(r"\d\d\d\d\d\d\d\d .*?Saldovortrag","",ktodata['CONTENT'],99999999)

#*************************************************

    def rule__10_1202 (self,ktodata):
    
        files = glob.glob(ktodata['KTODIR']+"/sync*.csv")
        files.sort()
        if len(files) == 0:
            return()
        for file in files:
            text   = self._raw_data( open(file).read() ,2)
            zeilen = []
            for zeile in text:
                if "Umsatz vorgemerkt" in "".join(zeile):
                    continue
                zeilen.append( zeile[2] + "  " + re.sub(r",",".", re.sub(r"[\.\+]","",zeile[8],99) ) +
                    "  -       13-9999  0.00  " + zeile[3] + " " + zeile[4] + " " + zeile[5] + " IBAN " + zeile[6] )
            if zeilen:
                ktodata['CONTENT'] = ktodata['CONTENT'] + "\n" + "\n".join(zeilen) + "\n"
        
        ktodata['CONTENT'] = self.fibu.normalize_text(ktodata['CONTENT'])
        self.fibu.assign_ausgaben(ktodata,"13-9999",'''
Gehalt.*Dienlin,Gehalt.*Volker.*Gabriel,Gehalt.*Friedrichs,Lohn.*Engewald,Gehalt.*Wonneberger,Gehalt.*Parfuss,
Gehalt.*Friemann,Gehalt.*Jain,Gehalt.*Friemann,Praktikum.*Meier,

Die Bahn sagt danke,sipgate,Bundesanzeiger,
Aral | Esso | Shell|TANKSTELLE,
Finanzkasse Schwabach,Awender,Nemecek,
Solcom,Osram,STHREE,Hays,

Hobbyland,REWE,Tengelmann,BIO-Welt,Fristo,
ADAC,Conrad ,
GUT.*TK-Beleg.*Guthaben,GUT.*TK-Beleg,Techniker K, TK ,
GUT.*A ?AG.*Knappschaft,Knappschaft, AOK ,Gutschrift.*DEBEKA ,
Rundfunk,infra +fuerth,
Strato , 1u1 ,
410978,3103207,200031185, 44302 ,

Golubovic,GELDAUTOMAT , POST ,

''')



#********************************************************************************

    def rule__10_1204 (self,ktodata):
    
        files = glob.glob(ktodata['KTODIR']+"/sync*.csv")
        files.sort()
        if len(files) == 0:
            return()

        for file in files:
            text   = self._raw_data( open(file).read() ,1,"flessa")
            zeilen = []
            for zeile in text:
                if "Umsatz vorgemerkt" in "".join(zeile):
                    continue
                
                zeilen.append( zeile[1] + "  " +
                    ("%3.2f" % float( {'S':'-','H':''}[zeile[12]] + re.sub(r",",".", re.sub(r"[\.\+]","",zeile[11],99) ) )
                    +  "  -    13-9999  0.00  " +
                     re.sub(r" +"," ",(zeile[3] + " " + zeile[4] + " " + zeile[6] +
                          " " + zeile[8]).strip(),99999999) ) )
            if zeilen:
                ktodata['CONTENT'] = ktodata['CONTENT'] + "\n" + "\n".join(zeilen) + "\n"
        
        ktodata['CONTENT'] = self.fibu.normalize_text(ktodata['CONTENT'])
        self.fibu.assign_ausgaben(ktodata,"13-9999",'''
Dienlin.*Gehalt,Volker.*Gabriel.*Lohn,Friedrichs.*Lohn,Engewald.*Lohn,Wonneberger.*Gehalt,Parfuss.*Gehalt,
Friemann.*Gehalt,Jain.*Gehalt,Gehalt.*Friemann,Meier.*Praktikum,

Die Bahn sagt danke,sipgate,Bundesanzeiger,
Aral,Esso,Shell,TANKSTELLE,
Finanzkasse Schwabach.*2.?18.*129.*10296,Awender,nemecek,
Solcom,STHREE,Hays ,
ABSCHLUSS PER,SB-Auszahlung,Rueckgabe.Wider,

REWE|Tengelmann|BIO-Welt|Fristo| EBL.*NA|NETTO +MA,SPD ,Wien +Energie,
ADAC, BVMW, Conrad ,BANKOMAT,
Ueberweisung.*TK-Beleg,Techniker K, TK ,Knappschaft, AOK R, DEBEKA ,
Rundfunk,0052383044,1105722230,infra +fuerth,VBG ,AOK Nordwest,
Strato | 1u1 | 1und1 ,
3103207,200031185, 44302 ,Auslagen.*Pfaendung,Wonneberger.*Auslagen,

Golubovic,GELDAUTOMAT | Sparda, POST,

''')


#*********************************************************

    def rule__10_7000_cgabriel_10_1200 (self,ktodata):
    
        files = glob.glob(ktodata['KTODIR']+"/sync*.csv")
        files.sort()
        if len(files) == 0:
            return()

        for file in files:
            text   = self._raw_data( open(file).read() ,1)
            zeilen = []
            for zeile in text:
                zeilen.append( zeile[1] + "  " +
                    re.sub(r",",".", re.sub(r"[\.\+]","",zeile[4],99) )
                    +  "  -    13-9999  0.00  " +
                     re.sub(r" +"," ",(zeile[3] + " IBAN " + zeile[8]).strip(),99999999) )
            if zeilen:
                ktodata['CONTENT'] = ktodata['CONTENT'] + "\n" + "\n".join(zeilen) + "\n"
        
        ktodata['CONTENT'] = self.fibu.normalize_text(ktodata['CONTENT'])
        self.fibu.assign_ausgaben(ktodata,"13-9999",'''
        
Vodafone,Abschluss Zinsen,Kontofuehrung,Infra Fuerth|INFRA FUERTH,
HARTMANN GOETTELMANN PLEWA,NEMECEK,Leonard George,ZGASt|Landeskirchenstelle,Vodafone,
200031185,410498, 44302 ,GUTSCHRIFT +UNITED +DOMAINS,Kontofuehrung, DAK |DAK-Gesundhei,UNITED.*DOMAINS.*RECHN,

''')


#*********************************************************************************

    def rule__10_7000_cgabriel_10_1203 (self,ktodata):
        
        files = glob.glob(ktodata['KTODIR']+"/KONTOAUS*.ocr")
        files.sort()
        if len(files) == 0:
            return()
#        print (files)
        for file in files:

#            print (file)
            buchungen = []
            text      = open(file).read()  + "   \n   \n"
            text      = re.sub(chr(12),"",text,99999999)
            text      = re.sub(r"BONIFIKATION","< x > BONIFIKATION",text,99999999)
            text      = re.sub(r"\n +VISA","    < x > VISA",text,99999999,re.DOTALL)

            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]*?)\s+\< *([^\n]+?) *\> +(.*?)(\n *\S.*$)",text,flags=re.DOTALL)
                if not m:
                    break
                    
                jahr  = jahr1
                if int(m.group(4)) > monat:
                    jahr = jahr0
                text = m.group(1) + m.group(11)
                buchungen.append( [jahr + m.group(4) + m.group(3), re.sub(r",",".",
                                      re.sub(r"[\.\+]","",m.group(7)+m.group(6),99) ),
                                      "-","13-9999", "0.00", re.sub(r" +"," ",m.group(2) + " " + m.group(8),99)
                                      + " " + m.group(9) + " IBAN " + re.sub("\s+"," ",m.group(10),9999) ] )

            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)
                buchungen.append( [jahr + m.group(4) + m.group(3), re.sub(r",",".",
                                   re.sub(r"[\.\+]","",m.group(7)+m.group(6),99) ),
                                   "-","13-9999", "0.00" , m.group(2) + " Kontogebuehren und Zinsen"] )

            zeilen = []
            for buchung in buchungen:
                zeilen.append("  ".join(buchung))
#                print (zeilen[-1] )

            if buchungen:
                ktodata['CONTENT'] = ktodata['CONTENT'] + "\n" + "\n".join(zeilen) + "\n"

        self.fibu.assign_ausgaben(ktodata,"13-9999",'''
ERSTE.?BANK|BANKOMAT|SPARDA|SPK |POSTBANK|SPARKASSE|SANTANDER|VR.?BANK|RAIFFEISEN|DEUTSCHE.?BANK|VR +BANK| HVB|DRESDNER|REISEBANK|VOLKSBANK|INTERCARD|INGDIBA|DEUBA|COMMERZBANK|KREISSPAR,
CULTURALL,NETFORGE|GLEICHKLANG|VCINTERNET,3103207,IFT +INSTITUT,Kontogebuehren,Jazz Studio,BEHZANET,
GUTSCHRIFT.?UNITED.?DOMAINS,9549114,Daniela Jungblut,ASKNET,GOOGLE,
''')

            

#*************************************************************************

    def rule__10_1500_xxx (self,ktodata):
    
        self.fibu.sozvers.parse_ktoauszug(ktodata)
        self.fibu.sozvers.parse_krankmeldung(ktodata)

#*************************************************************************

    def rule__10_1500_1502 (self,ktodata): pass
    def rule__10_1500_1503 (self,ktodata): pass
    def rule__10_1500_1505 (self,ktodata): pass
    def rule__10_1500_1506 (self,ktodata): pass
    def rule__10_1500_1507 (self,ktodata): pass
    def rule__10_1500_1509 (self,ktodata): pass
        
#*************************************************************************

    def rule__10_1510_xxx          (self,ktodata):  return( self.fibu.sozvers.parse_beitragsnachweise(ktodata)   )
    def rule__10_1511_xxx          (self,ktodata):  return( self.fibu.sozvers.parse_krankmeldung(ktodata)        )
    def rule__11_1500              (self,ktodata):  return( self.fibu.lohn.sozvers(ktodata)                      )
    def rule__12                   (self,ktodata):  return( self.fibu.usteuer.qualify(ktodata)                   )
    def rule__13                   (self,ktodata):  return( self.fibu.usteuer.qualify(ktodata)                   )

    def rule__10_0201              (self,ktodata):
        self.fibu.abschreibung.qualify(ktodata)
        self.fibu.usteuer.qualify(ktodata)

    def rule__                     (self,ktodata):  return( self.fibu.bilanz.finish_year(ktodata)                )

#*************************************************************************

    def rule__10_7000_xxx (self,ktodata):

        name = re.sub(r"^10-7000-","",ktodata['UKTO'])

        print(name)

        if (","+name+",") in (",swonneberger,tjungblut,sjain,arjasanow,cgabriel,ccsengery,jfriedrichs,ddienlin,afriemann,"):
            self.fibu.belege.einlesen(ktodata,"13-9999")
            self.fibu.assign_ausgaben(ktodata,"13-9999",
              "Fruehstueck|Restaur,Hotel,DB_|Deutsche.*Bahn|Fahrkarte,Taxi_,AirBnB,Conrad|Saturn|USB")

        elif (","+name+",") in (",hays,solcom,progressive,emagine,gulp,gfk,sivantos,sterling,usu,"):
            self.fibu.belege.rechnungen(ktodata,name)
        
#*************************************************************************

    def rule__13_xxx (self,ktodata):

        name = re.sub(r"^10-7000-","",ktodata['UKTO'])

        self.fibu.belege.einlesen(ktodata,"33-9999")
        self.fibu.assign_ausgaben(ktodata,"13-9999")
        
#*************************************************************************

    def rule__20 (self,ktodata):
    
#        self.fibu.sozvers.parse_sozmeldungen(ktodata)
        self.fibu.sozvers.parse_stundenkk(ktodata)
        self.fibu.sozvers.parse_projektstunden(ktodata)

#*************************************************************************

    def merge (self,ktodata,cursor):
        return("Merge not implemented.")
        
#*************************************************************************


    def _raw_data (self,text,datidx,special=""):

        zeilen = []
        text   = re.sub(r"(\d\d)\.(\d\d)\.(\d\d\d\d)\/","\\1-\\2-\\3-",text,99999999)
        
        if special == "flessa":

            jahr = "2016"
            while (0 == 0):
                m = re.search(r"^(.*?\n)(\d\d\.\d\d\.) +(\d\d\.\d\d)\. (.*?)([\d\.]+,\d\d) +([SH])(.*?)(\d\d\.\d\d\. +\d\d\.\d\d\..*)$",text,re.DOTALL)
                if not m:
                    break
                text  = m.group(1) + "\n" + m.group(8)
                zeile = '"' + '";"'.join([
                           m.group(2) + jahr,
                           m.group(2) + jahr,
                           "",
                           re.sub(r"\s+"," ",m.group(4) + m.group(7),9999,re.DOTALL),
                           "",
                           "",
                           "",
                           "",
                           "",
                           "",
                           "",
                           m.group(5),
                           m.group(6),
                        ]) + '"'
                text = text + "\n" + zeile + "\n"
                    

            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 kknr (self,kk):
    
        kk = kk.upper()
        kk = re.sub(r"\n"," ",kk,99999999)
        
#        print (kk)
        
        if " DAK" in kk:
            return("1510","DAK")
        elif "AOK HESSEN" in kk:
            return("1511","AOKHES")
        elif " AOK RHEINL" in kk:
            return("1520","AOKRPS")
        elif " AOK NORD" in kk:
            return("1521","AOKNWE")
        elif " MINIJOB" in kk or " KNAPPSCHAFT" in kk:
            return("1512","MINIJO")
        elif re.search("( BKK_?VER|[- ]VBU)",kk):
            return("1513","VBU")
        elif " AOK BAYERN" in kk:
            return("1514","AOKBAY")
        elif re.search("( BKK_?MOBIL| MOBILOI?L?| BKKMOIL|LFD.\s*NR.\s*ERFASSUNG)",kk):
            return("1515","MOBILO")
        elif re.search("( BKK_?SIEMENS | SBK )",kk):
            return("1516","SBK")
        elif " TECHNIKER" in kk or " TKK" in kk or " TECHNKK" in kk:
            return("1517","TKK")
        elif " BARMER" in kk:
            return("1518","BARMER")
        elif " DEBEKA" in kk:
            return("1519","DEBEKA")
        return("1528","UNKNOWN")

#*************************************************************************


                

bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped)
Email: contact@elmoujehidin.net bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped) Email: contact@elmoujehidin.net