Welcome To Our Shell

Mister Spy & Souheyl Bypass Shell

Current Path : /home/ift/52_procpy/fibu/

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 : //home/ift/52_procpy/fibu/fibu_sozvers.py

#  coding:  utf-8

import os
import sys
import re
import codecs


class Sozvers (object):

    def __init__ (self,fibu):
    
        self.fibu = fibu
        self.betriebsnr_kk = {}

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

    def monatnr (self,text):
    
        text = re.sub(r"Januar",     "01",text,9999)
        text = re.sub(r"Februar",    "02",text,9999)
        text = re.sub(r"M..?rz",     "03",text,9999)
        text = re.sub(r"April",      "04",text,9999)
        text = re.sub(r"Mai",        "05",text,9999)
        text = re.sub(r"Juni",       "06",text,9999)
        text = re.sub(r"Juli",       "07",text,9999)
        text = re.sub(r"August",     "08",text,9999)
        text = re.sub(r"September",  "09",text,9999)
        text = re.sub(r"Oktober",    "10",text,9999)
        text = re.sub(r"November",   "11",text,9999)
        text = re.sub(r"Dezember",   "12",text,9999)
        text = re.sub(r"alenderjahr","13",text,9999)
        
        return(text)


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

    def parse_beitragsnachweise (self,files):

        kkdatum   = {}
        buchungen = []
        texte     = self.fibu.import_file(files)
        self.betriebsnr_kk = {}

        for text in texte:

            text = self.fibu.normalize_text(text)
            m    = re.search("TAN +(\d\d\d\d\d\d\d\d\d)\D",text)
            if not m:
                continue
            newname = m.group(1)

            m    = re.search("Betriebsnummer +(\d\d\d\d\d\d\d\d)\D",text)
            if not m:
                continue
            newname = newname + "_" + m.group(1)

            m    = re.search("Sendedatum\:? +(\d\d)\.(\d\d)\.(\d\d)(\d\d)\D",text)
            if not m:
                continue
            newname = newname + "_" + m.group(4) + m.group(2) + m.group(1)

            text      = re.sub(r"Techniker Krankenkasse","TKK",   text,9999)
            text      = re.sub(r"Minijob.*Zentrale","Knappschaft",text,9999)
            text      = re.sub(r"\-?Rechtskreis +(West|Ost)"," RK\\1",text,9999)
            text      = re.sub(r" BKK +"," BKK",                  text,9999)
            text      = re.sub(r" DAK-"," DAK ",                  text,9999)
            text      = re.sub(r"(.*) +ohne +Sozialausgleich(.*)","",     text,9999)  # wegen doppelt eingetragener Betraege
            m = re.search("Einzugs+telle.*?Name +([a-zA-Z0-9]+)",text,re.DOTALL)
            if m:
                (kknr,kk) = self.fibu.buchh.kknr(text)

            m = re.search(r"Zeitraum +von (\d+)\.(\d+)\.(\d+).*?Zeitraum +bis +(\d+)\.(\d+)\.(\d+)",text,re.DOTALL)
            if not m:
                continue

            if not m.group(2) == m.group(5) or not m.group(3) == m.group(6):
                continue

            jahr    = m.group(3)
            monat   = m.group(2)
            newname = newname + "_" + (kk+"______")[0:6] + "__" + jahr + "_" + monat;
            newname = re.sub(r"KNAPPS","MINIJO",newname)
            text    = re.sub(r"(\d)\.(\d+\,\d\d)","\\1\\2",text,9999)

            m = re.search(r"Einzugsstelle.*Betriebsnummer +(\d+)(.*?)Name +([^\n ]+)",text,re.DOTALL)
            if not m:
                continue
            self.betriebsnr_kk[kknr] = m.group(1)

            remark = m.group(3) + " " + m.group(1)
            remark = re.sub(r"[\n-]/"," ",remark,9999,re.DOTALL)
            remark = re.sub(r"^(.*?) +(.*?) .*? (\d+)$","\\1 \\2 \\3",remark)

            buchungen1 = []
            o          = kknr + "," + jahr + monat
            if o in kkdatum:
                kkdatum[o] = kkdatum[o] + 1
            else:
                kkdatum[o] = 20
            
            datum = jahr + monat + ("%02u" % kkdatum[o]) 
            while (0 == 0):
                m = re.search(r"^(.*)(BetrPr *| *)\nB?e?t?r?P?r? ?(einheitliche|Umlage|Beitra[e\"]?ge|Storno|Zusatzbeitr\S*) (.*?) *(\-?\d+)\,(\d\d)",
                               text,re.IGNORECASE+re.DOTALL)
                
                if not m:
                    break
                text    = m.group(1)
                remark1 = remark+", " + m.group(2) + m.group(3) + " " + m.group(4)
                remark1 = re.sub(r"\n"," ",remark1,9999,re.DOTALL)
                

                ktoa = None
                ktob = "10-1510-" + kknr + "-meldung-" + datum[6:8]
                if " zur Krankenversicherung" in remark:
                    ktoa = "11-"+kknr+"-KV-BE-meldung"
                elif " Zusatzbei" in remark1:
                    ktoa = "11-"+kknr+"-KV-ZU-meldung"
                elif " Arbeitsfoerderung" in remark1:
                    ktoa = "11-"+kknr+"-AV-meldung"
                elif " Rentenversicherung" in remark1:
                    ktoa = "11-"+kknr+"-RV-meldung"
                elif " Pflegeversicherung" in remark1:
                    ktoa = "11-"+kknr+"-PV-meldung"
                elif " Krankheitsaufwendungen" in remark1:
                    ktoa = "11-"+kknr+"-U1-meldung"
                elif " Mutterschaftsaufwendungen" in remark1:
                    ktoa = "11-"+kknr+"-U2-meldung"
                elif " Insolvenzgeldversicherung" in remark1:
                    ktoa = "11-"+kknr+"-U3-meldung"
                elif " einheitliche" in remark1:
                    ktoa = "11-"+kknr+"-ST-meldung"
                elif " Storno" in remark1:
                    ktoa = "11-"+kknr+"-ZZ-meldung"
                elif " UST" in remark1:
                    ktoa = "11-"+kknr+"-xxUSTxx-meldung"
                elif " einzubehaltene" in remark1:
                    ktoa = "11-"+kknr+"-LS-meldung"
                elif " pauschal" in remark1:
                    ktoa = "11-"+kknr+"-PL-meldung"
                elif " Solidarit" in remark1:
                    ktoa = "11-"+kknr+"-SZ-meldung"
                elif " Kirchensteuer roem" in remark1:
                    ktoa = "11-"+kknr+"-KR-meldung"
                elif " Kirchensteuer evan" in remark1:
                    ktoa = "11-"+kknr+"-KE-meldung"
                elif " Kirchensteuer altk" in remark1:
                    ktoa = "11-"+kknr+"-KA-meldung"
                elif " Kirchensteuer isra" in remark1:
                    ktoa = "11-"+kknr+"-KB-meldung"
                elif re.search(r" Sae?umn| Mahn|gebuehr",remark1):
                    ktoa = "11-"+kknr+"-saeumn"
                elif re.search(r" Beitrae?g| Betriebspr",remark1):
                    ktoa = "11-"+kknr+"-beitrag"
                elif re.search(r" Umbuchung +Leistung+ U1",remark1):
                    ktoa = "11-"+kknr+"-umbuchung"

                buchungen1.append([datum,("%3.2f"%float((m.group(5)+"."+m.group(6)))),ktoa,ktob,remark1])
    
            buchungen = buchungen + buchungen1

            m         = re.search(r"\[(.*)[\\\/](.*)\.(.*?)\]",text)  #  renaming the original files
            filename0 = m.group(1) + "/" + m.group(2)
            filename  = m.group(1) + "/" + newname
            if not filename0 == filename:
                print "rename file " + filename0 + " to + filename"
                os.rename(filename0 + "." + m.group(3),filename + "." + m.group(3))
                os.rename(filename0 + ".pdf"          ,filename + ".pdf")


        return(buchungen)

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

    def parse_ktoauszug (self,files):

        texte     = self.fibu.import_file(files)
        day       = {}
        buchungen = []
        entries   = {}
        
        
        for text in texte:
        
            text      = self.fibu.normalize_text(text)
            text      = re.sub("BKK Verkehrsbau","VBU",text)
            (kknr,kk) = self.fibu.buchh.kknr( re.sub("\n"," ",text,999999) )

            text  = re.sub(r"(\d)\.(\d\d\d)\,","\\1\\2,",text,999999); 
#            while (0 == 0):   #  Punkte und Leerzeichen entfernen in Zahlendarstellungen
#                m     = re.search(r"^(.*?)(\d+) ?(\d*) ?\, ?(\d) ?(\d)(.*)$",text,re.DOTALL)
#                if not m:
#                    break
#                text1 = m.group(1) + m.group(2) + m.group(3) + "," + m.group(4) + m.group(5) + m.group(6)
#                if text1 == text:
#                    break
#                text1 = text
           
            jahr  = ""
            monat = ""
            text1 = []

            if int(kknr) == 1517:  #  TKK
                for zeile in text.split("\n"):
                    m = re.search(r"(\d\d)/(\d\d\d\d) +Faelligkeit",zeile)
                    if m:
                        jahr  = m.group(2)
                        monat = m.group(1)
                        continue
                    m = re.search(r"(Saeumnis|Beitragsnach|Gebuehr)(.*?) +(\d+)\,(\d\d)",zeile)
                    if m:
                        text1.append([jahr+monat,m.group(1) + m.group(2),m.group(3)+"."+m.group(4)])

            elif int(kknr) == 1510:  #  DAK
                for zeile in text.split("\n"):
                    m = re.search(r"Bezugszeitraum +(\d\d)\.(\d\d)\.(\d\d)",zeile,re.IGNORECASE)
                    if m:
                        jahr  = "20" + m.group(3)
                        monat = m.group(2)
                        continue
                    m = re.search(r"(Forderung|Beitrag aus Betriebspruefung|Saeumniszuschlag)(.*?) +([\d ]+)\,([\d ]{2})",zeile)
                    if m:
                        text1.append([jahr+monat,m.group(1),re.sub(r" ","",m.group(3)+"."+m.group(4),99)])

            else:
                for zeile in text.split("\n"):
                    zeile = re.sub(r"\s+","  ",zeile,9999)
                    zeile = re.sub(r" (\d\d)\.(\d\d)\.(\d\d) "," \\1.\\2.20\\3 ",zeile)
                    zeile = re.sub(r"(SZ|SA) .?(B)(S?)"," Beitrag\\3 ",zeile,9999)       #  special MobilOil
                    zeile = re.sub(r"(SZ|SA) .?S"," Saeumniszuschlag ",zeile,9999)       #  special MobilOil
                    zeile = re.sub(r"(Beitragszahlung|im +Beitrag)","",zeile,9999)       #  special Minijob, TKK
                    m = re.search(r"bezugszeitraum +(.*?) *$",zeile.lower())             #  special DAK
                    
                    m = re.search(r"(Beitrag |Forderung )(.*?)( .*\d\d)\.(\d\d)\.(\d\d\d\d).* ([1-9]\d*),(\d\d)",zeile)
                    if m:
                        text1.append([m.group(5)+m.group(4),m.group(1)+m.group(2),m.group(6)+"."+m.group(7)])
                        continue
                        
#                text = re.sub(r"^(\d\d\.\d\d\.\d\d\d\d[ \-]+\d\d\.\d\d\.\d\d\d\d)(.*?)(\d\d\.\d\d\.\d\d\d\d)",
#                                          "\\1$\\2",text,9999);  #  special AOK
#                text = re.sub(r"^(\d\d\.\d\d\.\d\d\d\d) *\- *(\d\d\.\d\d\.\d\d\d\d)(.*?)","\\1-\\2",text,9999) # special Barmer
#                text = re.sub(r"^(\d\d)[\.,](\d\d)[\.,](\d\d\d\d) "," \\1.\\2.\\3 ",text,9999)
#
#        for zeile in text.split("\n"):
#            zeile = re.sub(r"\s+"," ",zeile,9999)
#            zeile = re.sub(r"(SZ|SA) .?(B)(S?)"," Beitrag\\3 ",zeile,9999)       #  special MobilOil
#            zeile = re.sub(r"(SZ|SA) .?S"," Saeumniszuschlag ",zeile,9999)       #  special MobilOil
#            zeile = re.sub(r"(Beitragszahlung|im +Beitrag)","",zeile,9999)       #  special Minijob, TKK
#            m = re.search(r"bezugszeitraum +(.*?) *$",zeile.lower())             #  special DAK
#            if m:
#                zeitraum = m.group(1)
#            else:
#                zeitraum = ""
#            zeile = re.sub(r"^\s*Forderung \d\d\.\d\d\.\d\d","Forderung Beitrag "+zeitraum,zeile) #  special DAK
#            m = re.search(r"(Betriebspr|Beitra.?g|Saeumnis|Mahn|[A-Z].*?gebuehr|Umbuchung +Leistung +U1)(.*?)(0\d|10|11|12)([\/\.])($jahr|$jahr1)[\_ ]+(.*?)(\-?\d+)\,(\d\d)(-?)",
#                             zeile)
#            print zeile
#            if not m:
#                continue
#            text1.append([jahr + m.group(3) + ("%02u" % day[o9]),
#                          re.sub(r"--","",m.group(9) + "-" + m.group(7) + "." + m.group(8)),
#                          "555",
#                          "899",
#                          kk + ", " + m.group(1) + m.group(2) + m.group(3) + m.group(4) + m.group(5)])
#'''


            for zeile in text1:
                jjjjmm = zeile[0]
                remark = zeile[1]
                betrag = zeile[2]
                o9     = kknr + jjjjmm + remark[0:10]
                if o9 in day:
                    day[o9] = day[o9] + 1
                else:
                    day[o9] = 26
            
                dd  = ("%02u" % day[o9])
                if "Saeumn" in remark:
                    ktoa = "13-6011"
                    ktob = "10-1500-"+kknr+"-saeumn"
                elif "Mahn" in remark:
                    ktoa = "13-6011"
                    ktob = "10-1500-"+kknr
                elif "Beitrag" in remark or "Forderung" in remark:
                    ktob = "10-1500-"+kknr+"-meldung-"+dd
                    ktoa = "10-1510-"+kknr+"-beitrag"
                buchung =     [jjjjmm + dd,
                              re.sub(r"--","",zeile[2]),
                              ktoa,ktob,
                              kk + ", " + remark + ", Beitragsmonat " + jjjjmm[4:6] + "/" + jjjjmm[0:4]]
                entry = jjjjmm + " " + buchung[1] + " " + ktoa + " " + buchung[4]
                if not entry in entries:
                    buchungen.append(buchung)
                    entries[entry] = 1


        return(buchungen)


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


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