Welcome To Our Shell

Mister Spy & Souheyl Bypass Shell

Current Path : /home/ift/52_procpy/konto/parser/

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/konto/parser/finanzamt.py

#  coding:  utf8

import os,sys,re,glob,time

try:
    from konto_custom import config
except:
    from konto.base import config


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

class Finanzamt (object):

    def __init__ (self,dir="."):
        self.dir             = dir
        self.KTO_STEUERARTEN = config.KTO_STEUERARTEN     
        self.BILANZ_DIREKT   = config.BILANZ_DIREKT
        self.KTO_SAEUMNIS    = config.KTO_SAEUMNIS 
        self.KTO_ZINSEN      = config.KTO_ZINSEN
        self.KTO_VERSPAETUNG = config.KTO_VERSPAETUNG
        self.NAB_SAEUMNIS    = config.NAB_SAEUMNIS 
        self.NAB_ZINSEN      = config.NAB_ZINSEN
        self.NAB_VERSPAETUNG = config.NAB_VERSPAETUNG
        self.KTO_ZWISCHEN    = config.KTO_ZWISCHEN  

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

    def parse_finanzamt (self):

        ktofile = glob.glob("*.kto") + glob.glob("*.kto.html")
        if not len(ktofile) == 1:
            print("There is no unique ktofile. Stop.")
            return(0)
            
        ktotext = open(ktofile[0]).read()
            
        gegenkonto0  = self.KTO_STEUERARTEN
        gegenkonto1  = self.KTO_SAEUMNIS
        gegenkonto2  = self.KTO_ZINSEN
        gegenkonto3  = self.KTO_VERSPAETUNG
        gegenkonto4  = self.BILANZ_DIREKT
        gegenkonto11 = self.NAB_SAEUMNIS
        gegenkonto12 = self.NAB_ZINSEN
        gegenkonto13 = self.NAB_VERSPAETUNG


        files = glob.glob("*.manuell")
        if len(files) == 0:
            return(ktotext)
            
        steuerarten = {
                "US"   :   "Umsatzsteuer",
                "LS"   :   "Lohnsteuer",
                "LD"   :   "Lohn-Solidaritaetszuschlag",
                "LR"   :   "Lohn-rk. Kirchensteuer",
                "LE"   :   "Lohn-ev. Kirchensteuer",
                "LF"   :   "Saeumniszuschlag ev. Kirchensteuer",
                "KS"   :   "Koerperschaftsteuer",
                "KD"   :   "Koerperschaft-Solidaritaetszuschlag",
                "QS"   :   "Quellensteuer",
                "QD"   :   "Quellen-Solidaritaetszuschlag",
                "GB"   :   "Gebuehren",
                "GW"   :   "Gewerbesteuer",
            }
            
        gebuehrenarten = {
                "ST"   :   "",
                "SZ"   :   ", Saeumniszuschlag",
                "MS"   :   ", Saeumniszuschlag",
                "VZ"   :   ", Verspaetungszuschlag",
                "MA"   :   ", Mahngebuehr",
                "PZ"   :   ", Mahngebuehr",
                "PF"   :   ", Mahngebuehr",
                "ZI"   :   ", Zinsen",
                "GS"   :   ", Gutschrift",
                "NZ"   :   ", Nachzahlungs-Zinsen",
                "EZ"   :   ", Erstattungszinsen",
                "VS"   :   " Vollstreckung",
                "MG"   :   ", Mahngebuehr",
                "GR"   :   ", Grundsteuerauskunft",
                "ZW"   :   " Zwangsgeld",
                "UN"   :   " unbekannt"
            }
                
        text = []
        for zeile in ktotext.split("\n"):

#            if "-erklaerung-" in zeile or gegenkonto0 in zeile or " 10-1510-15" in zeile:
            if "-auszahlung" in zeile or "-XX-" in zeile:
                text.append(zeile)
            elif re.search(r"\-[A-Z][A-Z]\-[A-Z][A-Z]\-\d\d",zeile):
                continue
            elif re.search(r" 10-B.*? 10-B",zeile):
                text.append(zeile)
            else:
                text.append(zeile)
                  
#        exit()

        files.sort()
        print(files[-1])
        for zeile in open(files[-1]).read().split("\n"):
        
            m = re.search(r"^(\d\d\d\d\d*) +([A-Z\-]+) +(\-?\d+\.\d\d)(.*)$",zeile)
            if not m:
                continue
            datum     = m.group(1)
#            print(zeile)
            
            if len(datum) == 4:
                datum = datum + "1230"
            if len(datum) == 6:
                datum = datum + "29"
            zeitraum  = datum[2:4]
            steuerart = m.group(2)
            betrag    = float(m.group(3))
            rest      = m.group(4)
            addrem    = ""
            m = re.search(r"(\d\d\d\d\d\d\d\d)(.*?) *$",rest)
            if m:
                datum  = m.group(1)
                addrem = m.group(2)
#            print(datum)

                
            zeile1 = datum + "  " + ("%3.2f" % -betrag) + "  -" + steuerart + "-" + zeitraum + "  " + "GEGENKONTO"
            zeile1 = zeile1 + "  0.00  " + steuerarten[ steuerart[0:2] ] + " 20" + zeitraum + gebuehrenarten[ steuerart[3:5] ]
            zeile1 = zeile1 + addrem


            gegenkonto = gegenkonto0
            if (steuerart[0:2] in ("GW","KS","KD") or "ewerbe" in zeile1 or "oerpersch" in zeile1 or "Zwangsgeld" in zeile1):
                gegenkonto = gegenkonto11
                if steuerart[3:] in ("ZI","NZ","EZ"):
                    gegenkonto = gegenkonto12
                if steuerart[3:] == "VZ":
                    gegenkonto = gegenkonto13
            else:
                gegenkonto = gegenkonto1
                if steuerart[3:] in ("ZI","NZ","EZ"):
                    gegenkonto = gegenkonto2
                if steuerart[3:] == "VZ":
                    gegenkonto = gegenkonto3

            if steuerart in ("LS-ST","LD-ST","LR-ST","LE-ST","LI-ST","LA-ST",
                             "LxS-ZI","LxD-ZI","LxR-ZI","LxE-ZI","LxI-ZI","LxA-ZI",
                             "LxS-VZ","LxD-VZ","LxR-VZ","LxE-VZ","LxI-VZ","LxA-VZ"):
                gegenkonto = gegenkonto0 + "-3065-bescheid" #+ zeitraum
            if steuerart in ("US-ST","UxS-ZI","UxS-VZ"):
                gegenkonto = gegenkonto0 + "-3060-bescheid" #+ zeitraum
            if steuerart in ("KS-ST","KxD-ST","KxS-ZI","KxD-ZI","KxS-VZ","KxD-VZ"):
#                gegenkonto = gegenkonto0 + "-3040-bescheid" #+ zeitraum
                gegenkonto = gegenkonto4 + "-Daa-7603" #+ zeitraum
            if steuerart in ("KxS-ST","KD-ST","KxS-ZI","KxD-ZI","KxS-VZ","KxD-VZ"):
#                gegenkonto = gegenkonto0 + "-3040-bescheid" #+ zeitraum
                gegenkonto = gegenkonto4 + "-Daa-7603" #+ zeitraum
                gegenkonto = gegenkonto4 + "-Daa-7608" #+ zeitraum
            if steuerart in ("GW-ST","GxW-ZI","GxW-VZ","GxW-NZ","GxW-EZ"):
#                gegenkonto = gegenkonto0 + "-3035-bescheid" #+ zeitraum
                gegenkonto = gegenkonto4 + "-Daa-7610" #+ zeitraum
            if steuerart in ("QS-ST","QxD-ST","QxS-ZI","QxD-ZI","QxS-VZ","QxD-VZ"):
#                gegenkonto = gegenkonto0 + "-3050-bescheid" #+ zeitraum
                gegenkonto = gegenkonto4 + "-Dba-3700" #+ zeitraum
            if steuerart in ("QxS-ST","QD-ST","QxS-ZI","QxD-ZI","QxS-VZ","QxD-VZ"):
#                gegenkonto = gegenkonto0 + "-3050-bescheid" #+ zeitraum
                gegenkonto = gegenkonto4 + "-Dba-3708" #+ zeitraum

            zeile1 = re.sub(r"GEGENKONTO",gegenkonto,zeile1)
                
            text.append(zeile1)

        ktotext = "\n".join(text) + "\n"

        open(ktofile[0],"w").write(ktotext)
            
#*************************************************************************

    def finanzamt_zahlungen (self):  #  not ktosafe

        ktofile = glob.glob("*.kto")
        if not len(ktofile) == 1:
            print("There is no unique ktofile. Stop.")
            return(0)
            
        ktotext = open(ktofile[0]).read()
            
        zkto = self.KTO_ZWISCHEN
        fkto = self.KTO_ZAHLUNG 

        text1 = []
        for zeile in ktotext.split("\n"):
            if not "lt. Kontoauszug" in zeile:
                text1.append(zeile)
        ktotext = "\n".join(text1) + "\n"
                  
        files = glob.glob("*.csv")
        if len(files) == 0:
            return(ktotext)
            
        zaehler = 0
        text = open(files[0]).read()
        text = re.sub("Mai ","Mai.",text,99999999)
        kontext = "001"

        for zeile in text.split("\n"):
                
            if "MARK" in zeile:
                kontext = "%03u" % (int(kontext) + 1)
            zeile = zeile[15:]
            m = re.search("(.)(.) +(\d\d)(\d\d)(\d\d)(\S?) +(CR|) +(\d+) *[,.] *(\d\d) *(zusammeng|Zahlung|Erlass|Umbuch)",zeile)
            if not m:
                m = re.search("(\d\d\d) +(\d\d\d\d\d\d)\S? +(\d\d)(\d\d)(\d\d)\S? +(\d\d\d\d\d\d) +(CR|) +(\d+) *[,.] *(\d\d)",zeile)
            if not m:
                m = re.search("(\d\d\d) +(\d\d\d\d\d\d)\S? +(\d\d)(\d\d)(\d\d)\S? +(\S*) +(CR|) +(\d+) *[,.] *(\d\d)",zeile)
            if m:
                betrag = "-" + re.sub("CR","-",m.group(7) + m.group(8) + "." + m.group(9))
                betrag = re.sub("--","",betrag)
                zeile1 = "20" + m.group(5) + m.group(4) + m.group(3)
#                zeile1 = "20060101"
                zeile1 = zeile1 +  "  " + betrag
                remark = ""
                if "Erlass" in zeile:
                    remark = " per Erlass"
                elif "Umbuch" in zeile:
                    remark = " per Umbuchung"
                elif "Zahlung" in zeile:
                    remark = " per Zahlung"
                zeile1 = zeile1 + "  " + zkto + "-" + kontext + "  " + fkto + "  0.00  Steuerzahlung" + remark + " lt. Kontoauszug " 
                zaehler = "%04u" % (int(zaehler) + 1)
                zeile1 = zeile1 + zaehler
                ktotext = ktotext + zeile1 + "\n"
 
        open(ktofile[0],"w").write(ktotext)

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


if __name__ == "__main__":

    if len(sys.argv) > 1:
        if sys.argv[1] == "zahlung":
            Finanzamt().finanzamt_zahlungen()
        elif sys.argv[1] == "steuern":
            Finanzamt().parse_finanzamt()
            




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