Welcome To Our Shell

Mister Spy & Souheyl Bypass Shell

Current Path : /home/cgabriel/20_dev/12_procpy/park/

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/cgabriel/20_dev/12_procpy/park/abrechnung1.py

import os,sys,re,glob,time,datetime    
from konto.base.konto import Konto


class Abrechnung (object):

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


    def __init__ (self):
    
        self.mname = {}
        
        self.mname["01"] = "Januar"
        self.mname["02"] = "Februar"
        self.mname["03"] = "März"
        self.mname["04"] = "April"
        self.mname["05"] = "Mai"
        self.mname["06"] = "Juni"
        self.mname["07"] = "Juli"
        self.mname["08"] = "August"
        self.mname["09"] = "September"
        self.mname["10"] = "Oktober"
        self.mname["11"] = "November"
        self.mname["12"] = "Dezember"

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


    def abrechnung (self,*pars):

        umsst = 19

        Konto().kto()
 
        ktotext = open(glob.glob("*.kto.html")[0]).read()
        m       = re.search(r"^(\<PRE\>|)(.*?)\-([^\-]+?)[\.\: ]",ktotext)
        print("11111",m)
        if m:
            ukto    = m.group(2) + "-" + m.group(3)
            mandant = m.group(3)

        Konto().kto()

        existing_ticketreports = []
        for zeile in ktotext.split("\n"):
            if "ticketreport" in zeile:
                m = re.search("ticketreport.*?\_(\d\d\d\d\d\d\d\d)\_(\d\d\d\d\d\d)\_(\d+)(\_[abcdef0123456789]+|).txt",zeile)
                if m:
                    existing_ticketreports.append(int(m.group(1)+m.group(3)))
                    
        zeilen = []
        for zeile in os.popen("grep TOTAL ticketreport*.txt"):
            zeilen.append(zeile)
        for zeile in os.popen("grep TOTAL */ticketreport*.txt"):
            zeilen.append(zeile)

        for zeile in zeilen:
            print(zeile)
            m  = re.search("(ticketreport.*)\_(\d\d\d\d\d\d\d\d)\_(\d\d\d\d\d\d)\_(\d+)(\_[abcdef0123456789]+|).txt",zeile)
            nr = m.group(2)+m.group(4)
            if int(nr) in existing_ticketreports:
                continue
            else:
                existing_ticketreports.append(int(nr))
                datum    = m.group(2)
                filename = m.group(1) + "_" + m.group(2) + "_" + m.group(3) + "_" + m.group(4) + m.group(5) + ".txt"
                m     = re.search("TOTAL.*?(\d+),(\d+)",zeile)
                if m:
                    ktotext = ktotext + datum + "  -" + m.group(1) + "." + m.group(2) + "  " +ukto + "-TIC-BRT  10-B12-1340-xxx-ZAHL  0.00  Ticketreport " + filename + "\n"
        
        open(glob.glob("*.kto.html")[0],"w").write(ktotext)
        Konto().kto()

#        return()
            
#----------------------------------------------

        ktotext = os.popen("grep -v Contract *.kto.html").read()

        interval_short = pars[0]    #   <--  hier geht der Abrechnungsmonat ein
        
        Konto().kto("^"+ukto + "." + pars[0])

        ktotext  = os.popen("grep -v Contract *.kto.html").read()
        print(ktotext)
        ktotext0 = os.popen("grep -v Cxxxxontract *.kto.html").read()
        ktotext0 = re.sub(r"\<\/?PRE\>","",ktotext0,99)
        
        maxlen   = 80
        ktotext9 = re.sub(" " + ukto + "-"," ",ktotext0)     #  fuer Report-Eintrag
        ktotext9 = re.sub(r" (\-|)(\d+)\.(\d\d)(  |\n)"," -\\1\\2.\\3\\4",ktotext9,99999999)
        ktotext9 = re.sub(r" --(\d+)\.(\d\d)(  |\n)","   \\1.\\2\\3",ktotext9,99999999)



        for zeile in ktotext9.split("\n"):
            if "STR-BRT" in zeile or "TIC-BRT" in zeile:
                maxlen = max(maxlen,len(zeile))
                
        ktotext1 = ""
        for zeile in ktotext9.split("\n"):
            while len(zeile) > maxlen:
                ktotext1 = ktotext1 + zeile[0:maxlen-2] + "\n"
                zeile   = "        " + zeile[maxlen-2:]
            ktotext1 = ktotext1 + zeile + "\n"


        m  = re.search(r"\n(\d\d\d\d\d\d)(\d\d) +",ktotext)
        if m:
            monat = m.group(1)
        else:
            monat = "20" + interval_short[0:2] + "0" + interval_short[2]
            monat = re.sub(r"0A","10",monat)
            monat = re.sub(r"0B","11",monat)
            monat = re.sub(r"0C","12",monat)

        jahr  = monat[0:4]
        if monat[4:] in ("01","03","05","07","08","10","12"):
            monat = monat + "31"
        elif monat[4:] in ("04","06","09","11"):
            monat = monat + "30"
        elif int(monat[4:]) % 4 == 0 and not int(monat[4:]) % 100 == 0:
            monat = monat + "29"
        else:
            monat = monat + "28"
        
        yy = monat[0:4]
        mm = monat[4:6]

#        print("------",yy,mm,monat)

#        if len(glob.glob("*" + yy + "_" + mm + ".md")) > 0:   #   wenn die Abrechnung schon existiert
#            return(0)



        abrechnungen = glob.glob("*_????_??.md")
        abrechnungen.sort()
        
        abrechnung_neu = open(abrechnungen[-1]).read()   #  Neue Abrechnung aus der letzten Abrechnung generieren
        vorjahr = "%02u" % ( int(interval_short[0:2]) - 1)

        m = re.search(r"^(.*?)(\<PRE.*?\> *\n)(.*?)(\<\/PRE\>)(.*)$",abrechnung_neu,flags=re.DOTALL)
        abrechnung_neu_1 = m.group(1) + m.group(2)
        abrechnung_neu_2 = m.group(4) + m.group(5)
        abrechnung_neu_m = m.group(3)
        
        abrechnung_neu_m = re.sub(r"[ 0-9\-]{9}\d\.\d\d","---BETRAG---",abrechnung_neu_m,99)
        abrechnung_neu_m = re.sub(r"[ 0-9\-]{9}\d\.\d\d","---BETRAG---",abrechnung_neu_m,99)
        m = re.search(" (\d?\d\.?\d?)\%",abrechnung_neu_m)
        if m:
            umsst   = float(m.group(1))
#            print("------------------------------------------ hier")
        m = re.search(" (\d?\d\.\d\d)\%",abrechnung_neu_m)
        if m:
            anteil  = 0.01 * float(m.group(1))
            anteilp = m.group(1) + "%"
            


        for m in ( re.search(r"\n(TIC)-BRT +(\-?\d+\.\d\d)",ktotext), 
                   re.search(r"\n(STR)-BRT +(\-?\d+\.\d\d)",ktotext) ): 
            if m:
                art  = {"STR":"Penalties","TIC":"Parking tickets"}[m.group(1)]
                ust  = {"STR":"","TIC":"++"}[m.group(1)]
                ktob = {"STR":"12-D3a-4600","TIC":"12-D1a-4610"}[m.group(1)]
                ktotext = ktotext + ( monat + "  " + ("%3.2f" % ( abs(float(m.group(2))) * anteil ) ) + "  " + 
                                      ukto + "-" + m.group(1) + "-FEE  " + ktob + "-" + mandant + "  0.00  " + 
                                      ust + "Contract Fee " + art + " " + ("%3.2f" % (100*anteil) ) + " %" + "\n" )

        open(glob.glob("*.kto.html")[0],"w").write(ktotext)

        Konto().kto()

#        print(abrechnung_neu_m)
#        exit()


#        if (abs(float(Konto().read_saldo(ukto+"-TIC2:" + interval_short))) + abs(float(Konto().read_saldo(ukto+"-STR2:" + interval_short))) ) > 0.0001:
#            nr      = "2"
#            anteil  = 0.5
#            anteilp = "50%"
#            
#        if (abs(float(Konto().read_saldo(ukto+"-TIC3:" + interval_short))) + abs(float(Konto().read_saldo(ukto+"-STR3:" + interval_short))) ) > 0.0001:
#            nr      = "3"
#            anteil  = 0.333
#            anteilp = "66l.67%"

        nr   = ""
        text = "                                       Aktuell   Jahressummen   " + "\n\n"

        print(interval_short,vorjahr)
        betragm = - (Konto().read_saldo(ukto+"-TIC"+nr+"-BRT."+interval_short))
        betragy = - (Konto().read_saldo(ukto+"-TIC"+nr+"-BRT:"+interval_short) - Konto().read_saldo(ukto+"-TIC"+nr+"-BRT:"+vorjahr))
        text    = text + "Einnahmen Parktickets:           " + ("%13.2f" % betragm) + "  " + ("%13.2f" % betragy) + "\n"
        betragn = - (Konto().read_saldo(ukto+"-TIC"+nr+"-FEE."+interval_short))
        betragz = - (Konto().read_saldo(ukto+"-TIC"+nr+"-FEE:"+interval_short) - Konto().read_saldo(ukto+"-TIC"+nr+"-FEE:"+vorjahr))
        text    = text + "minus Betriebsgebuehr " + anteilp + "     " + ("%13.2f" % betragn) + "  " + ("%13.2f" % betragz) + "\n"
        text    = text + "                                      --------        -------\n"
        betragu = betragm + betragn
        betragv = betragy + betragz
        text    = text + "Parktickets netto                " + ("%13.2f" % betragu) + "  " + ("%13.2f" % betragv) + "\n"
        text    = text + "                                      --------        -------\n"
        betragi = - betragu * float(umsst) / (100 + float(umsst))
        betragj = - betragv * float(umsst) / (100 + float(umsst))
        umsst1  = re.sub(r"\.0$","",("%4.1f" % float(umsst)))
        text    = text + "abzufuehrende Umsatzsteuer " + umsst1 + "%:" + " "*(4-len(umsst1)) + ("%13.2f" % betragi) + "  " + ("%13.2f" % betragj) + "\n"
        text    = text + "\n\n"
        
        
        betragm = - (Konto().read_saldo(ukto+"-STR"+nr+"-BRT."+interval_short))
        betragy = - (Konto().read_saldo(ukto+"-STR"+nr+"-BRT:"+interval_short) - Konto().read_saldo(ukto+"-STR"+nr+"-BRT:"+vorjahr))
        text    = text + "Einnahmen Vertragsstrafen:       " + ("%13.2f" % betragm) + "  " + ("%13.2f" % betragy) + "\n"
        betragn = - (Konto().read_saldo(ukto+"-STR"+nr+"-FEE."+interval_short))
        betragz = - (Konto().read_saldo(ukto+"-STR"+nr+"-FEE:"+interval_short) - Konto().read_saldo(ukto+"-STR"+nr+"-FEE:"+vorjahr))
        text    = text + "minus Betriebsgebuehr " + anteilp + "     " + ("%13.2f" % betragn) + "  " + ("%13.2f" % betragz) + "\n"
        text    = text + "                                      --------        -------\n"
        betragx = betragm + betragn
        betragy = betragy + betragz
        text    = text + "Vertragsstrafen netto            " + ("%13.2f" % betragx) + "  " + ("%13.2f" % betragy) + "\n"
        text    = text + "(umsatzsteuerbefreit)\n"
        text    = text + "\n"        
        
        betragx = betragu + betragx
        betragy = betragv + betragy
        text    = text + "                                      --------        -------\n"
        text    = text + "GESAMTBETRAG                     " + ("%13.2f" % betragx) + "  " + ("%13.2f" % betragy) + "\n\n"
        text    = text + "\n"        
        betragx = - (Konto().read_saldo(ukto+"-ZAHL."+interval_short))
        betragy = - (Konto().read_saldo(ukto+"-ZAHL:"+interval_short) - Konto().read_saldo(ukto+"-ZAHL:"+vorjahr))
        text    = text + "ausgezahlt:                      " + ("%13.2f" % betragx) + "  " + ("%13.2f" % betragy) + "\n"
        text    = text + "                                      --------        -------\n"
        betragx = - (Konto().read_saldo(ukto+"."+interval_short))
        betragy = - (Konto().read_saldo(ukto+":"+interval_short) - Konto().read_saldo(ukto+":"+vorjahr))
        text    = text + "Unterzahlung:                    " + ("%13.2f" % betragx) + "  " + ("%13.2f" % betragy) + "\n\n\n"
        
        
        text    = text + "Die abzufuehrende Umsatzsteuer " + umsst1 + "% betraegt bei Umsatzsteuerpflicht im laufenden Monat:" + ("%13.2f" % abs(betragi)) + "\n"
        
        
        #  Versuch, in die Originalvorlage zu uebertragen:

        text1 = text
        while (0 == 0):
            m = re.search(r"^(.*?)([ 0-9\-]{9}\d\.\d\d)(.*)$",text1,re.DOTALL)
            if not m:
                if "---BETRAG---" in abrechnung_neu_m:   #   nicht alle Felder konnten gefuellt werden, das passt so nicht
                    print(abrechnung_neu_m)
                    break
                else:
                    text = abrechnung_neu_m
                    break
            else:
                text1 = m.group(3)
                if not "---BETRAG---" in abrechnung_neu_m:   #   nicht genuegend zu fuellende Felder, passt also auch nicht
                    break
                else:
                    abrechnung_neu_m = re.sub(r"\-\-\-BETRAG\-\-\-",m.group(2),abrechnung_neu_m,1)
                    


#        print(abrechnung_neu_m)
#        print(text)
        
        
        abrechnung_neu = re.sub(r"^(.*?)(\<PR)(E.*?\> *\n)(.*?)(\<\/PRE\>)(.*)$","\\1\\2xxxx\\3---ABR---\\5\\6",abrechnung_neu,flags=re.DOTALL)
        abrechnung_neu = re.sub(r"^(.*?)(\<PR)(E.*?\> *\n)(.*)(\<\/PRE\>)(.*)$","\\1\\2xxxx\\3---KTO---\\5\\6",abrechnung_neu,flags=re.DOTALL)
        abrechnung_neu = re.sub(r"PRxxxxE","PRE",abrechnung_neu,9999)

#        abrechnung_neu = re.sub(r"^(.*?)(\<PRE.*?\>)(.*?)(\<\/PRE\>)(.*)$","\\1\\2\\3---KTO---\\4\\5",abrechnung_neu,flags=re.DOTALL)


        abrechnung_neu = re.sub(r"(Januar|Jänner|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember) (\d\d\d\d)","---MNAME--- ---JAHR---",abrechnung_neu,99)
        abrechnung_neu = re.sub(r"(31.01|28.02|29.02.|31.03|30.04|31.05|30.06|31.07|31.08|30.09|31.10|30.11|31.12)\.(\d\d\d\d)","---ENDTAG---.---JAHR---",abrechnung_neu,99)
        abrechnung_neu = re.sub(r"(0\d|10|11|12)\.(\d\d\d\d)","---MONAT---.---JAHR---",abrechnung_neu,99)
        abrechnung_neu = re.sub(r"(\d\d\d\d)\/(0\d|10|11|12)","---JAHR---/---MONAT---",abrechnung_neu,99)

        abrechnung_neu = re.sub(r"---MONAT---", mm,            abrechnung_neu,99)
        abrechnung_neu = re.sub(r"---JAHR---",  yy,            abrechnung_neu,99)
        abrechnung_neu = re.sub(r"---MNAME---", self.mname[mm],abrechnung_neu,99)
        abrechnung_neu = re.sub(r"---ENDTAG---",monat[6:8]+"."+monat[4:6],abrechnung_neu,99)


        abrechnung_neu = re.sub("---ABR---",text,abrechnung_neu)
        
#        print(abrechnung_neu)
        
        ticketreports  = glob.glob("ticketreport_*_" + yy + mm + "*_*.txt") + glob.glob("*/ticketreport_*_" + yy + mm + "*_*.txt")   #   Ticketreports anhaegen an den Kontoausdruck
        ticketreports.sort()
        ticketreports.append("")
        
        ticketreports_double_sided = []    #   Zwei Ticketreports auf einer Seite

        text3  = ""
        text33 = []
        text34 = []
        zaehler = 0
        while (0 == 0):
        
            if zaehler == len(ticketreports):
                break
                
            ticketreport = ticketreports[zaehler]
            automaten_nr = ""
            report_text  = "\n"
            m            = re.search(r"\S+?\_(\d+)_",ticketreport)
            if m:
                automaten_nr = m.group(1)
            if not ticketreport == "":
                report_text = open(ticketreport).read()
                report_text = re.sub(r"(\n {0,10}\S[^\n]+\n)(www.12park.de)","\\1\n\\2",report_text,flags=re.DOTALL).split("\n")
                
            if len(text33) == 0:
                text33  = report_text[:]
                anr     = automaten_nr
                zaehler = zaehler + 1
            else:
                text34   = report_text[:]
                if automaten_nr == anr:
                    zaehler = zaehler + 1
                else:
                    text34 = []
                zaehler1 = 0
                while (0 == 0):
                    if zaehler1 >= len(text33):
                        zeile = " " * 45
                        if zaehler1 >= len(text34):
                            break
                        else:
                            zeile = zeile + ":             " + text34[zaehler1] + "\n"
                    else:
                        zeile = (text33[zaehler1] + " " * 45)[0:45]
                        if zaehler1 >= len(text34):
                            zeile = zeile + ":\n"
                        else:
                            zeile = zeile + ":             " + text34[zaehler1] + "\n"
                    text3    = text3 + "  " + zeile
                    zaehler1 = zaehler1 + 1
                text3 = re.sub(r"\n +\: +\n *$","\n\n",text3,99)
                ticketreports_double_sided.append(text3)
                text33 = []
                text34 = []
                text3  = ""


        for ticketreport_text in ticketreports_double_sided:
            ktotext1 = ktotext1 + "</PRE>\n\n<p class=\"break\"/>\n\n<PRE class=\"abr\">\n\n" + ticketreport_text        
        
        abrechnung_neu = re.sub("---KTO---",ktotext1,abrechnung_neu)

#        print(abrechnung_neu)
        
        filename = abrechnungen[-1]
        filename = re.sub(r"\d\d\d\d_","---JAHR---_",filename,99)
        filename = re.sub(r"_\d\d\.","_---MONAT---.",filename,99)
        filename = re.sub(r"^(\d\d)(\d\d)(\d\d\.)","---JJ------MONAT---\\3",filename,99)

        filename = re.sub(r"---JJ---",yy[2:4],filename,99)
        filename = re.sub(r"---JAHR---",yy,filename,99)
        filename = re.sub(r"---MONAT---",mm,filename,99)

        print(filename)
        open(filename,"w").write(abrechnung_neu)

        Konto().kto("^"+ukto)

#        m = re.search(r"^(.*?)\<PRE>.*?

        


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

if __name__ == "__main__":

    Abrechnung.__dict__[sys.argv[1]](Abrechnung(),*sys.argv[2:])



#  7769




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