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/auswertung.py

#  coding:  utf8

import os,sys,re,glob,time,sqlite3,hashlib,time,base64,datetime,fibu

class Auswertung ():

    def __init__(self,xxkonto,timea,timeb,buchhaltung):

        self.timea = (timea + "0000")[0:8]
        self.timeb = (timeb + "9999")[0:8]
        self.buchhaltung = buchhaltung
        
        self.gesamtdauer = "20000000_"      + self.timeb
        self.zeitraum    = self.timea + "_" + self.timeb

#        print(self.gesamtdauer,self.zeitraum)

        try:
            self.ap = open( glob.glob(self.gesamtdauer+"/*.kto")[0] ).read()
            self.ea = open( glob.glob(self.zeitraum+"/*.kto")[0] ).read()
        except:
            print("could not read " + self.gesamtdauer)
            exit()

        self.xxkonten = []
        while (0 == 0):
            self.xxkonten.append(xxkonto)
            m = re.search(r"^(.*)\-(.*)$",xxkonto)
            if m:
                xxkonto = m.group(1)
            else:
                break

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

    def evaluate_kontenrahmen (self):

        self.bezeichner = {}
        self.ktogrp     = {}  #  Kontogruppen
        
        self.datev      = {}  #  Transformationsmatrix
        
        aktgrp  = ""
        aktlist = []

        for zeile0 in fibu.kontenrahmen.split("\n"):
            
            m = re.search(r"^(.*?) +\<\-\- *$",zeile0)
            if m:
                zeile          = m.group(1)
                self.externgrp = zeile
            else:
               zeile = zeile0
 
            if len(zeile) == 0 or zeile[0] in ("-","="," ","#"):
                continue

            zeile = re.sub(r"^(.*)\#(.*)$","\\1",zeile)
            
            m = re.search(r"^(\S+?)\:? *$",zeile)
            if m:
                if len(aktgrp) > 0:
                    self.ktogrp[aktgrp] = aktlist
                aktgrp  = m.group(1)
                aktlist = []
                continue
                
            m = re.search(r"^(.*?) +(.*?) +(.*?) *$",zeile)
            if m:
                kto             = m.group(1)
                self.datev[kto] = m.group(2)
                bez             = m.group(3)

                if kto in self.bezeichner:
                    print(kto,"Fehler")
                    exit()
                    
                self.bezeichner[kto] = bez
                for kto1 in aktlist:
                    if kto[0:len(kto1)] == kto1:
                        kto = ""

                if not kto == "":
                    aktlist.append(kto)
                    
#*****************************************************************************

    def make_journal (self):
    
        csv         = []
        self.extern = 0.00
        
        for zeile in self.ap.split("\n"):
        
            m = re.search(r"^(\d\d\d\d\d\d\d\d) +(\-?\d+\.\d\d) +\-(\S+?) +\-(\S+?) +(\-?\d+\.\d\d) +(.*)$",zeile)
            if not m:
                continue
                
            datum  = m.group(1)
            betrag = float(m.group(2))
            ktoa   = m.group(3)
            ktob   = m.group(4)
            remark = m.group(6)
            try:
                if ktoa[1] == "2" or ktob[1] == "2":
                    remark = re.sub(r"^(\+\+|\+\-)","",remark)
            except:
                print(zeile)
            
            if   ktoa[0] == self.buchhaltung and ktob[0] == self.buchhaltung:
                pass
            elif ktoa[0] != self.buchhaltung and ktob[0] == self.buchhaltung:
                ktoa = "XX"
                self.extern = self.extern + betrag
            elif ktoa[0] == self.buchhaltung and ktob[0] != self.buchhaltung:
                ktob = "XX"
                self.extern = self.extern - betrag
            elif ktoa[0] != self.buchhaltung and ktob[0] != self.buchhaltung:
                continue
        
            jahr  = datum[0:4]
            monat = datum[4:6]
            tag   = datum[6:8]
            
            if int(tag) > 31:
                tag = "31"
            if int(tag) > 30 and monat in ("04","06","08","10","12"):
                tag = "30"
            if int(tag) > 28 and monat == "02":
                tag = "28"

            ktoa = self.transform_kto(ktoa)
            ktob = self.transform_kto(ktob)
            
            if "0000" in (ktoa,ktob):
                continue
            
            if ktoa[0] == ".":
                ktoa   = ktoa[1:]
            if ktob[0] == ".":
                ktox   = ktoa
                ktoa   = ktob[1:]
                ktob   = ktox
                betrag = -betrag
                
            buchungsschluessel = "0"
            if remark[0:2] == "++":
                buchungsschluessel = "9"
            if remark[0:2] == "+-":
                buchungsschluessel = "8"

            ktoa = [ktoa]
            ktob = [ktob]

#            ktoa = (ktoa+"----").split("-")
#            ktoa = ktoa[0:5]+[ re.sub(r"\-+$","","-".join(ktoa[5:99])) ]
#            ktob = (ktob+"----").split("-")
#            ktob = ktob[0:5]+[ re.sub(r"\-+$","","-".join(ktob[5:99])) ]

            zeile1 = (  [ tag + "." + monat + "." + jahr,
                         re.sub(r"\.",",",("%3.2f" % betrag)) 
#                         , "Konto B:" 
                                         ] +
                         ktob +
#                        [ "Konto A:"] +
                         ktoa + [ buchungsschluessel ] + [ re.sub(r"\+[\+\-]","",remark) ]  )

            if not "v.H. " in remark:
                csv.append(";".join(zeile1))
            
        return(csv)
       
#*****************************************************************************

    def transform_kto (self,kto0):
    
        kto = kto0
        
        if kto0 == "XX":
            kto0 = self.xxkonten[0]

        kto = kto0
        
        while (0 == 0):
            if kto in self.datev:
                return(self.datev[kto])
            m = re.search(r"^(.*)\-(.*)$",kto)
            if m:
                kto = m.group(1)
            else:
                return("unchanged-" + kto0)    


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

    def xxsalden (self):
    
        self.ktosaldo     = {}
        self.grpsaldo     = {}
        self.saldovortrag = {}

        for zeile in self.ap.split("\n"):   #  Bestandskonten
        
            m = re.search(r"^(\S+) +(\-?\d+\.\d\d) *(.*)$",zeile)
            if not m:
                continue

            kto    = m.group(1)
            betrag = m.group(2)
            
            if not kto[0] == self.buchhaltung:
                continue

            if kto[1] in ("0","1"):
                self.ktosaldo[kto] = float(betrag)
            if kto in self.xxkonten:
                self.ktosaldo[kto] = self.ktosaldo[kto] + self.extern
                
        for zeile in self.ea.split("\n"):    #  Bewegungskonten
        
            m = re.search(r"^(\S+) +(\-?\d+\.\d\d) *(.*)$",zeile)
            if not m:
                continue

            kto    = m.group(1)
            betrag = m.group(2)
            
            if not kto[0] == self.buchhaltung:
                continue

            if not kto[1] in ("0","1"):
                self.ktosaldo[kto] = float(betrag)
    
        self.aktiva  = ["AKTIVA,",","]
        self.passiva = ["PASSIVA,",","]
        self.ertrag  = ["ERTRAG,",","]
        self.aufwand = ["AUFWAND,",","]
        self.gewinn  = ["GEWINN,",","]
        
        self.aktiva_gesamt  = 0.00
        self.passiva_gesamt = 0.00
        self.ertrag_gesamt  = 0.00
        self.aufwand_gesamt = 0.00
        self.gewinn_gesamt  = 0.00
        self.einzelkonten   = ["Einzelkonten:"]
        

        ktogrpkeys = list(self.ktogrp)
        ktogrpkeys.sort()
        groupsaldo = {}

        for grp in ktogrpkeys:
        
            if not grp[0] == self.buchhaltung:
                continue

            if not grp[1] in ("0","1","2","3","4","5","6","7","8","9"):
                continue

            self.einzelkonten.append(",,")
            self.einzelkonten.append(",,")
            self.einzelkonten.append(grp+":")
            self.einzelkonten.append(",,")


            if not grp[0] == self.buchhaltung:
                continue

            groupsaldo[grp] = 0.00
            for kto in self.ktogrp[grp]:
                try:
                    bez = self.bezeichner[kto]
                except:
                    bez = ""
                try:
                    betrag = self.ktosaldo[kto]
                except:
                    betrag = 0.00
                self.einzelkonten.append(self.datev[ kto ]+","+bez+","+("%3.2f"%betrag))
                if kto[1] in ["0","1"]:
                    self.saldovortrag[self.datev[ kto ]] = ("%3.2f"%betrag)
                if kto in self.ktosaldo:
                    groupsaldo[grp] = groupsaldo[grp] + self.ktosaldo[kto]

            self.einzelkonten.append("Gesamt:,,"+("%3.2f"%groupsaldo[grp]))
            
            if int(grp[1]) == 0:
                self.aktiva.append(grp[1:]+","+("%3.2f"%groupsaldo[grp]))
                self.aktiva_gesamt = self.aktiva_gesamt + groupsaldo[grp]
            if int(grp[1]) == 1:
                if grp == self.externgrp:
                    self.passiva.append(grp[1:]+",---XXX---")
                else:
                    self.passiva.append(grp[1:]+","+("%3.2f"%-groupsaldo[grp]))
                    self.passiva_gesamt = self.passiva_gesamt - groupsaldo[grp]
            if int(grp[1]) == 2:
                self.ertrag.append(grp[1:]+","+("%3.2f"%-groupsaldo[grp]))
                self.ertrag_gesamt = self.ertrag_gesamt - groupsaldo[grp]
            if int(grp[1]) in (3,4,5):
                self.aufwand.append(grp[1:]+","+("%3.2f"%groupsaldo[grp]))
                self.aufwand_gesamt = self.aufwand_gesamt + groupsaldo[grp]
            if int(grp[1]) == 9:
                self.gewinn.append(grp[1:]+","+("%3.2f"%groupsaldo[grp]))
                self.gewinn_gesamt = self.gewinn_gesamt + groupsaldo[grp]



        groupsaldo[self.externgrp] = - self.aktiva_gesamt + self.passiva_gesamt
        passiva = []
        for zeile in self.passiva:
            passiva.append(re.sub(r"---XXX---",("%3.2f"%-groupsaldo[self.externgrp]),zeile))
        self.passiva = passiva
#        print("----------",self.aktiva_gesamt,self.passiva_gesamt,groupsaldo[self.externgrp])

        self.aktiva.append(",")
        self.passiva.append(",")
        self.ertrag.append(",")
        self.aufwand.append(",")
        self.gewinn.append(",")
        
        self.gewinn.append("GESAMT," + ("%3.2f" % self.gewinn_gesamt))
        
        self.bilanz = []
        zaehler     = 0
        while (0 == 0):
            zeile    = ""
            is_empty = 0
            try:
                zeile = zeile + self.aktiva[zaehler] + ","
            except:
                zeile = zeile + ",,"
                is_empty = is_empty + 1
            try:
                zeile = zeile + self.passiva[zaehler]
            except:
                zeile = zeile + ","
                is_empty = is_empty + 1
            self.bilanz.append(zeile)
            zaehler = zaehler + 1
            if is_empty == 2:
                break
        self.bilanz.append("GESAMT,"+("%3.2f" % self.aktiva_gesamt)+",GESAMT,"+("%3.2f" % self.aktiva_gesamt))

        
        self.guv = []
        zaehler  = 0
        while (0 == 0):
            zeile    = ""
            is_empty = 0
            try:
                zeile = zeile + self.ertrag[zaehler] + ","
            except:
                zeile = zeile + ",,"
                is_empty = is_empty + 1
            try:
                zeile = zeile + self.aufwand[zaehler]
            except:
                zeile = zeile + ","
                is_empty = is_empty + 1
            self.guv.append(zeile)
            zaehler = zaehler + 1
            if is_empty == 2:
                break
        self.guv.append("GESAMT,"+("%3.2f" % self.ertrag_gesamt)+",GESAMT,"+("%3.2f" % self.aufwand_gesamt))

        self.gewinn.append("GESAMT," + ("%3.2f" % self.gewinn_gesamt))


#        if (self.buchhaltung + "0-7000") not in self.ktosaldo:
#            return()
#
#        ktosaldo_ord = []
#        for kto in self.ktosaldo:
#            m = re.search(r"^(\d)0-7000-[^\-]+$",kto)
#            if m:
#                if m.group(1) == self.buchhaltung:
#                    if abs(float(self.ktosaldo[kto])) > 0.99:
#                        ktosaldo_ord.append([kto,float(self.ktosaldo[kto])])
#            
#        ktosaldo_ord.sort(key=lambda x: -x[1])
#        
#        for debitor in ktosaldo_ord:
#            self.debitoren.append(debitor[0]+",,"+("%3.2f" % debitor[1]))
#        self.debitoren.append(",,")
#        self.debitoren.append("GESAMT:,"+("%3.2f" % self.ktosaldo[self.buchhaltung+"0-7000"]))
            
            
#*****************************************************************************

    def salden (self):
    
        self.grpsaldo        = {}
        self.saldovortrag    = {}
        self.korrektur_konto = "10-7000-intern"
        self.ktosaldo        = { self.korrektur_konto : 0.00 }
        
        ktotype     = "bestand"
        self.gewinn = 0.00
        for zeile in self.ap.split("\n") + ["aufwand"] + self.ea.split("\n"):   #  Bestands- und Bewegungskonten

            if zeile == "aufwand":
                ktotype = "aufwand"
                continue
        
            m = re.search('^(\d\d\d\d\d\d\d\d) +(\-?\d+\.\d\d) +(\S+?) +(\S+) +(\-?\d+\.\d\d) +(.*)', zeile)
            if m:   #   keine Buchungszeilen auswerten
                continue
                
            m = re.search(r"^(\S+) +(\-?\d+\.\d\d) *(.*)$",zeile)
            if not m:
                continue
            kto    = m.group(1)
            betrag = m.group(2)
            
            if kto[0] == self.buchhaltung:
                if kto[1] in "01" and ktotype == "bestand":
                    self.ktosaldo[kto] = float(betrag)
                if kto[1] in "234" and ktotype == "aufwand":
                    self.ktosaldo[kto] = float(betrag)
            if not "-" in kto:     #  nur die oberste Stufe der Kontenhierachie beruecksichtigen
                if kto[0] == self.buchhaltung and ktotype == "aufwand":
                    if kto[1] in "23":
                        self.gewinn = self.gewinn - float(betrag)
                if not kto[0] == self.buchhaltung and ktotype == "bestand":
                    if not kto[0] == self.buchhaltung:
#                    print(kto,betrag)
                        self.ktosaldo[self.korrektur_konto] = self.ktosaldo[self.korrektur_konto] + float(betrag)
        
        self.aktiva  = ["AKTIVA,",","]
        self.passiva = ["PASSIVA,",","]
        self.ertrag  = ["ERTRAG,",","]
        self.aufwand = ["AUFWAND,",","]
        
        self.aktiva_gesamt  = 0.00
        self.passiva_gesamt = 0.00
        self.ertrag_gesamt  = 0.00
        self.aufwand_gesamt = 0.00
        
        self.einzelkonten   = ["Einzelkonten:"]
        self.gesamtkonten   = []

        ktogrpkeys = list(self.ktogrp)
        ktogrpkeys.sort()
        groupsaldo = {}

        for grp in ktogrpkeys:
        
            if not grp[0] == self.buchhaltung:
                continue

            if not grp[1] in ("0","1","2","3","4","5","6","7","8","9"):
                continue

            self.einzelkonten.append(",,")
            self.einzelkonten.append(",,")
            self.einzelkonten.append(grp+":")
            self.einzelkonten.append(",,")

            if not grp[0] == self.buchhaltung:
                continue

            groupsaldo[grp] = 0.00
            for kto in self.ktogrp[grp]:
                try:
                    bez = self.bezeichner[kto]
                except:
                    bez = ""
                try:
                    betrag = self.ktosaldo[kto]
                except:
                    betrag = 0.00
                self.einzelkonten.append(self.datev[ kto ]+","+bez+","+("%3.2f"%betrag))
                if kto[1] in ["0","1"]:
                    self.saldovortrag[self.datev[ kto ]] = ("%3.2f"%betrag)
                if kto in self.ktosaldo:
                    groupsaldo[grp] = groupsaldo[grp] + self.ktosaldo[kto]

            self.einzelkonten.append(",,-------")
            self.einzelkonten.append("Gesamt:,,"+("%3.2f"%groupsaldo[grp]))
            
            if int(grp[1]) == 0:
                self.aktiva.append(grp[1:]+","+("%3.2f"%groupsaldo[grp]))
                self.aktiva_gesamt = self.aktiva_gesamt + groupsaldo[grp]
            if int(grp[1]) == 1:
                self.passiva.append(grp[1:]+","+("%3.2f"%-groupsaldo[grp]))
                self.passiva_gesamt = self.passiva_gesamt - groupsaldo[grp]
            if int(grp[1]) == 2:
                self.ertrag.append(grp[1:]+","+("%3.2f"%-groupsaldo[grp]))
                self.ertrag_gesamt = self.ertrag_gesamt - groupsaldo[grp]
            if int(grp[1]) in (3,4,5):
                self.aufwand.append(grp[1:]+","+("%3.2f"%groupsaldo[grp]))
                self.aufwand_gesamt = self.aufwand_gesamt + groupsaldo[grp]
                
        print(self.ktosaldo[self.korrektur_konto],self.aktiva_gesamt,self.passiva_gesamt,self.ertrag_gesamt,self.aufwand_gesamt)

        self.aktiva.append(",")
        self.passiva.append(",")
        self.ertrag.append(",")
        self.aufwand.append(",")

        self.gesamtkonten = []
        for zeile in (self.aktiva [:-1]+[",,-------","GESAMT,,"+("%3.2f"%self.aktiva_gesamt),"",""]+
                      self.passiva[:-1]+[",,-------","GESAMT,,"+("%3.2f"%self.passiva_gesamt),"",""]+
                      self.ertrag [:-1]+[",,-------","GESAMT,,"+("%3.2f"%self.ertrag_gesamt),"",""]+
                      self.aufwand[:-1]+[",,-------","GESAMT,,"+("%3.2f"%self.aufwand_gesamt),"",""]
                     ):
            zeile = re.sub(r"^,$","=======",zeile)
            zeile = re.sub(r"^([\d\_A-Z]+)\_(.*)$","\\1,\\2",zeile)
            zeile = re.sub(r"([^,]),\\1 *$",":",zeile)
            self.gesamtkonten.append( zeile )

        self.bilanz = []
        zaehler     = 0
        while (0 == 0):
            zeile    = ""
            is_empty = 0
            try:
                zeile = zeile + self.aktiva[zaehler] + ","
            except:
                zeile = zeile + ",,"
                is_empty = is_empty + 1
            try:
                zeile = zeile + self.passiva[zaehler]
            except:
                zeile = zeile + ","
                is_empty = is_empty + 1
            self.bilanz.append(zeile)
            zaehler = zaehler + 1
            if is_empty == 2:
                break
        self.bilanz.append("GESAMT,"+("%3.2f" % self.aktiva_gesamt)+",GESAMT,"+("%3.2f" % self.passiva_gesamt))

        
        self.guv = []
        zaehler  = 0
        while (0 == 0):
            zeile    = ""
            is_empty = 0
            try:
                zeile = zeile + self.ertrag[zaehler] + ","
            except:
                zeile = zeile + ",,"
                is_empty = is_empty + 1
            try:
                zeile = zeile + self.aufwand[zaehler]
            except:
                zeile = zeile + ","
                is_empty = is_empty + 1
            self.guv.append(zeile)
            zaehler = zaehler + 1
            if is_empty == 2:
                break
        self.guv.append("GESAMT,"+("%3.2f" % self.ertrag_gesamt)+",GESAMT,"+("%3.2f" % self.aufwand_gesamt))


        
        

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