fixed some bugs, improved main
This commit is contained in:
@@ -26,25 +26,32 @@ class Forderung:
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"Name{self.name}, Haben {self.haben}, Soll {self.soll}, Amount {self.amount},Verwendung {self.text}"
|
return f"Name{self.name}, Haben {self.haben}, Soll {self.soll}, Amount {self.amount},Verwendung {self.text}"
|
||||||
|
|
||||||
|
def printC(forderungen:dict):
|
||||||
|
for key,values in forderungen.items():
|
||||||
|
print(f"//////////////{key}/////////////////////////////")
|
||||||
|
for nkey,nvalues in values.items():
|
||||||
|
print(f" {nkey}, {nvalues}")
|
||||||
|
|
||||||
def print_to_file_lexware(forderungen:dict):
|
def print_to_file_lexware(forderungen:dict):
|
||||||
"""
|
"""
|
||||||
print Forderungen to a file, that can be read by lexware according the following format:
|
print Forderungen to a file, that can be read by lexware according the following format:
|
||||||
"Belegdatum";"Buchungsdatum";"Buchungstext"; "Buchungsbetrag"; "Sollkonto";"Habenkonto";"Kostenstelle"
|
"Belegdatum";"Buchungstext"; "Buchungsbetrag"; "Sollkonto";"Habenkonto";"Kostenstelle"
|
||||||
01.03.2025; 19.02.2026;2; "Miete Familienzimmer"; 357,08; 12161; 4107; 200
|
01.03.2025; "Miete Familienzimmer"; 357,08; 12161; 4107; 200
|
||||||
"""
|
"""
|
||||||
print('Start Drucken der Forderugen')
|
print('Start Drucken der Forderugen')
|
||||||
names = read_account_names(config.filename_debitoren)
|
names = read_account_names(config.filename_debitoren)
|
||||||
|
#print(names)
|
||||||
|
#printC(forderungen)
|
||||||
for period, forderung in forderungen.items():
|
for period, forderung in forderungen.items():
|
||||||
if forderung !={}:
|
if forderung !={}:
|
||||||
filename = f"output/{period[0]}-{period[1]:02d}_Forderungen_Familienzimmer.csv"
|
filename = f"output/{period[0]}-{period[1]:02d}_Forderungen_Familienzimmer.csv"
|
||||||
print(f"\t ...{filename}")
|
print(f"\t ...{filename}")
|
||||||
with open(filename, "w",encoding="cp1252", newline="\r\c") as file:
|
with open(filename, "w",encoding="cp1252", newline="\r\n") as file:
|
||||||
file.write("\"Belegdatum\";\"Buchungstext\";\"Buchungsbetrag\";\"Sollkonto\";\"Habenkonto\";\"Kostenstelle\"\n")
|
file.write("\"Belegdatum\";\"Buchungstext\";\"Buchungsbetrag\";\"Sollkonto\";\"Habenkonto\";\"Kostenstelle\"\n")
|
||||||
for key in forderung:
|
for key in forderung:
|
||||||
f = forderung[key]
|
f = forderung[key]
|
||||||
name = names[key]
|
name = ' '.join(names[key[0]])
|
||||||
file.write(f"01.{period[1]:02d}.{period[0]};\"{name} {f.text}\";{f.amount};{key};{f.haben};{f.kostenstelle}\n")
|
file.write(f"01.{period[1]:02d}.{period[0]};\"{name} {f.text}\";{f.amount};{f.soll};{f.haben};{f.kostenstelle}\n")
|
||||||
print("Fertig mit Drucken der Forderungen.")
|
print("Fertig mit Drucken der Forderungen.")
|
||||||
|
|
||||||
def create_forderungen(forderungen:dict, period:tuple, id_subject:tuple, belegdatum:str, amount:float, soll:int|None, haben:str, kostenstelle:str)->dict:
|
def create_forderungen(forderungen:dict, period:tuple, id_subject:tuple, belegdatum:str, amount:float, soll:int|None, haben:str, kostenstelle:str)->dict:
|
||||||
@@ -119,14 +126,15 @@ def create_forderungen_familienzimmer(filename:str, accounts:dict, forderungen:d
|
|||||||
"""
|
"""
|
||||||
print(f"Start Einlesen der Buchungen des Familienźimmers von {filename}")
|
print(f"Start Einlesen der Buchungen des Familienźimmers von {filename}")
|
||||||
priceFamilyRooms = readPriceFamilyRooms(config.filname_price_familyroom)
|
priceFamilyRooms = readPriceFamilyRooms(config.filname_price_familyroom)
|
||||||
counter = 0
|
counter_recievables = 0
|
||||||
|
counter_errors = 0
|
||||||
try:
|
try:
|
||||||
with open(filename, "r") as file:
|
with open(filename, "r") as file:
|
||||||
reader = csv.DictReader(file)
|
reader = csv.DictReader(file)
|
||||||
for row in reader:
|
for row in reader:
|
||||||
name = row["Created by"]
|
name = row["Created by"]
|
||||||
name = getWords(name)
|
name = getWords(name)
|
||||||
id_subject = (getID(accounts, name[1:]), "Familienzimmer")
|
id_subject = (getID(accounts, name), "Familienzimmer")
|
||||||
|
|
||||||
month = getMonth(row["End time"].split(" ")[2])
|
month = getMonth(row["End time"].split(" ")[2])
|
||||||
year = row["End time"].split(" ")[3]
|
year = row["End time"].split(" ")[3]
|
||||||
@@ -136,15 +144,16 @@ def create_forderungen_familienzimmer(filename:str, accounts:dict, forderungen:d
|
|||||||
duration = getDuration(row["Duration"])
|
duration = getDuration(row["Duration"])
|
||||||
number_person = getNumberPerson(row["Number of guests"])
|
number_person = getNumberPerson(row["Number of guests"])
|
||||||
price = getPrice(room, priceFamilyRooms, duration, number_person)
|
price = getPrice(room, priceFamilyRooms, duration, number_person)
|
||||||
#print(f"{name[1]} {id_subject} {room} dauer {duration} Tage, personen {number_person} preis {price}")
|
#print(f"{counter_recievables} \n{name[1]} {id_subject} {room} dauer {duration} Tage, personen {number_person} preis {price}")
|
||||||
datum = f"01.{period[1]:02d}.{period[0]}"
|
datum = f"01.{period[1]:02d}.{period[0]}"
|
||||||
|
|
||||||
create_forderungen(forderungen,period,id_subject,datum,
|
create_forderungen(forderungen,period,id_subject,datum,
|
||||||
price,id_subject[0],KN_HABEN_MIETE_FZ,KOSTENSTELLE_FZ)
|
price,id_subject[0],KN_HABEN_MIETE_FZ,KOSTENSTELLE_FZ)
|
||||||
counter+=1
|
counter_recievables+=1
|
||||||
else:
|
else:
|
||||||
|
counter_errors+=1
|
||||||
print(f"Fehler, Name nicht gefunden\n\t{row}")
|
print(f"Fehler, Name nicht gefunden\n\t{row}")
|
||||||
print(f"Fertig mit Erstellen von {counter} Forderungen")
|
print(f"Fertig mit Erstellen von {counter_recievables} Forderungen, {counter_errors}")
|
||||||
except IOError:
|
except IOError:
|
||||||
print(f"Fehler, Datei {filename} nicht gefunden.")
|
print(f"Fehler, Datei {filename} nicht gefunden.")
|
||||||
return forderungen
|
return forderungen
|
||||||
@@ -170,9 +179,11 @@ def getWords(sentence:str)->list:
|
|||||||
for c in sentence:
|
for c in sentence:
|
||||||
if ord("a")<= ord(c) <= ord("z") or ord("A")<= ord(c) <= ord("Z") or ord("0")<= ord(c) <= ord("9"):
|
if ord("a")<= ord(c) <= ord("z") or ord("A")<= ord(c) <= ord("Z") or ord("0")<= ord(c) <= ord("9"):
|
||||||
word = word + c
|
word = word + c
|
||||||
elif len(word)>0:
|
elif len(word)>2:
|
||||||
result.append(word)
|
result.append(word)
|
||||||
word = ""
|
word = ""
|
||||||
|
else:
|
||||||
|
word = ""
|
||||||
if len(word)>0:
|
if len(word)>0:
|
||||||
result.append(word)
|
result.append(word)
|
||||||
return result
|
return result
|
||||||
@@ -267,7 +278,7 @@ def read_account_ids(filename:str)->dict:
|
|||||||
|
|
||||||
def read_account_names(filename:str)->dict:
|
def read_account_names(filename:str)->dict:
|
||||||
"""
|
"""
|
||||||
Create a dictionary from account id to name
|
Create a dictionary: account id -> name
|
||||||
"""
|
"""
|
||||||
print(f"Start Einlesen der Kontonummern und Namen \"{filename}\" ")
|
print(f"Start Einlesen der Kontonummern und Namen \"{filename}\" ")
|
||||||
try:
|
try:
|
||||||
|
|||||||
20
main.py
20
main.py
@@ -17,11 +17,11 @@ def parse_args() -> argparse.Namespace:
|
|||||||
|
|
||||||
def main(args: argparse.Namespace) -> None:
|
def main(args: argparse.Namespace) -> None:
|
||||||
print("Willkommen zum Mieten Tool der Buchhaltung. Es könne folgende Aufgaben erledigt werden:\n\n" \
|
print("Willkommen zum Mieten Tool der Buchhaltung. Es könne folgende Aufgaben erledigt werden:\n\n" \
|
||||||
"\t1\t aus der Mietendatai eine in lexware importierbare csv Datei erstellen\n" \
|
"\t1\t alle ausgelesen Accounts mit Mame und Kontonummer anzeigen\n"\
|
||||||
"\t2\t alle ausgelesen Accounts mit Mame und Kontonummer anzeigen\n"\
|
"\t2\t aus der Mietendatai eine in lexware importierbare csv Datei erstellen\n" \
|
||||||
"\t3\t aus der Buchungsdatei der Familienzimmer die Forderungen berechnen und in eine csv datei schreiben\n"\
|
"\t3\t aus der Buchungsdatei der Familienzimmer die Forderungen berechnen und in eine csv datei schreiben\n"\
|
||||||
"\t4\t Tool verlassen\n\n"
|
"\t4\t Tool verlassen\n\n"
|
||||||
"Gib die Nummer welche Aufgabe gemacht werden soll.\n")
|
"Gib die Nummer welche Aufgabe gemacht werden soll.")
|
||||||
while True:
|
while True:
|
||||||
forderung = {}
|
forderung = {}
|
||||||
line = input()
|
line = input()
|
||||||
@@ -30,7 +30,7 @@ def main(args: argparse.Namespace) -> None:
|
|||||||
else:
|
else:
|
||||||
#accounts
|
#accounts
|
||||||
filename_debitoren = config.filename_debitoren
|
filename_debitoren = config.filename_debitoren
|
||||||
newFilename = input(f"Aktuell werden die Debitoren aus der Datei {filename_debitoren} gelesen, wenn du eine andere Datei einlesen möchtest gib nun den neuen Pfad an:")
|
newFilename = input(f"Aktuelle Datei der Debitoren {filename_debitoren}\n\t neuer Pfad(optional):")
|
||||||
if len(newFilename)>=2:
|
if len(newFilename)>=2:
|
||||||
filename_debitoren = newFilename
|
filename_debitoren = newFilename
|
||||||
accounts = f.read_account_ids(filename_debitoren)
|
accounts = f.read_account_ids(filename_debitoren)
|
||||||
@@ -41,27 +41,27 @@ def main(args: argparse.Namespace) -> None:
|
|||||||
names = f.read_account_names(filename_debitoren)
|
names = f.read_account_names(filename_debitoren)
|
||||||
for id, name in names.items():
|
for id, name in names.items():
|
||||||
print(f"{id} {name}")
|
print(f"{id} {name}")
|
||||||
print("Bitte gib die Nummer einer weitern Aufgabe ein:\n")
|
print("\nBitte gib die Nummer einer weitern Aufgabe ein:")
|
||||||
elif line == "2":
|
elif line == "2":
|
||||||
#Miete
|
#Miete
|
||||||
filename_miete = config.filename_mieten
|
filename_miete = config.filename_mieten
|
||||||
newFilename = input(f"Aktuell werden die Mietforderungen aus der Datei {filename_miete} gelesen.\n Wenn du eine andere Datei einlesen möchtest gib nun den neuen Pfad an:")
|
newFilename = input(f"Aktuell Datei Mietforderungen {filename_miete}\n\t neuer Pfad(optional):")
|
||||||
if len(newFilename)>=2:
|
if len(newFilename)>=2:
|
||||||
filename_miete = newFilename
|
filename_miete = newFilename
|
||||||
forderung = f.create_forderungen_miete(filename_miete, accounts, forderung, 5, 2025)
|
forderung = f.create_forderungen_miete(filename_miete, accounts, forderung, 5, 2025)
|
||||||
f.print_to_file_lexware(forderung)
|
f.print_to_file_lexware(forderung)
|
||||||
print("Bitte gib die Nummer einer Weitern Aufgabe ein:\n")
|
print("\nBitte gib die Nummer einer Weitern Aufgabe ein:")
|
||||||
elif line == "3":
|
elif line == "3":
|
||||||
#familyrooms
|
#familyrooms
|
||||||
filename_fz = config.filename_fz
|
filename_fz = config.filename_fz
|
||||||
newFilename = input(f"Aktuell werden die Mietforderungen aus der Datei {filename_fz} gelesen.\n Wenn du eine andere Datei einlesen möchtest gib nun den neuen Pfad an:")
|
newFilename = input(f"Aktuell Datei Buchungen {filename_fz}\n\t neuer Pfad(optional):")
|
||||||
if len(newFilename)>=2:
|
if len(newFilename)>=2:
|
||||||
filename_fz = newFilename
|
filename_fz = newFilename
|
||||||
forderung = f.create_forderungen_familienzimmer(filename_fz, accounts, forderung)
|
forderung = f.create_forderungen_familienzimmer(filename_fz, accounts, forderung)
|
||||||
f.print_to_file_lexware(forderung)
|
f.print_to_file_lexware(forderung)
|
||||||
print("Bitte gib die Nummer einer Weitern Aufgabe ein:\n")
|
print("\nBitte gib die Nummer einer Weitern Aufgabe ein:")
|
||||||
else:
|
else:
|
||||||
print("Ungültige Eingabe, bitte versuch es erneut!\n")
|
print("\nUngültige Eingabe, bitte versuch es erneut!")
|
||||||
print("Auf Wiedersehen!")
|
print("Auf Wiedersehen!")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user