fixed some bugs, improved main
This commit is contained in:
@@ -26,25 +26,32 @@ class Forderung:
|
||||
def __str__(self):
|
||||
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):
|
||||
"""
|
||||
print Forderungen to a file, that can be read by lexware according the following format:
|
||||
"Belegdatum";"Buchungsdatum";"Buchungstext"; "Buchungsbetrag"; "Sollkonto";"Habenkonto";"Kostenstelle"
|
||||
01.03.2025; 19.02.2026;2; "Miete Familienzimmer"; 357,08; 12161; 4107; 200
|
||||
"Belegdatum";"Buchungstext"; "Buchungsbetrag"; "Sollkonto";"Habenkonto";"Kostenstelle"
|
||||
01.03.2025; "Miete Familienzimmer"; 357,08; 12161; 4107; 200
|
||||
"""
|
||||
print('Start Drucken der Forderugen')
|
||||
names = read_account_names(config.filename_debitoren)
|
||||
#print(names)
|
||||
#printC(forderungen)
|
||||
for period, forderung in forderungen.items():
|
||||
if forderung !={}:
|
||||
filename = f"output/{period[0]}-{period[1]:02d}_Forderungen_Familienzimmer.csv"
|
||||
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")
|
||||
for key in forderung:
|
||||
f = forderung[key]
|
||||
name = names[key]
|
||||
file.write(f"01.{period[1]:02d}.{period[0]};\"{name} {f.text}\";{f.amount};{key};{f.haben};{f.kostenstelle}\n")
|
||||
name = ' '.join(names[key[0]])
|
||||
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.")
|
||||
|
||||
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}")
|
||||
priceFamilyRooms = readPriceFamilyRooms(config.filname_price_familyroom)
|
||||
counter = 0
|
||||
counter_recievables = 0
|
||||
counter_errors = 0
|
||||
try:
|
||||
with open(filename, "r") as file:
|
||||
reader = csv.DictReader(file)
|
||||
for row in reader:
|
||||
name = row["Created by"]
|
||||
name = getWords(name)
|
||||
id_subject = (getID(accounts, name[1:]), "Familienzimmer")
|
||||
id_subject = (getID(accounts, name), "Familienzimmer")
|
||||
|
||||
month = getMonth(row["End time"].split(" ")[2])
|
||||
year = row["End time"].split(" ")[3]
|
||||
@@ -136,15 +144,16 @@ def create_forderungen_familienzimmer(filename:str, accounts:dict, forderungen:d
|
||||
duration = getDuration(row["Duration"])
|
||||
number_person = getNumberPerson(row["Number of guests"])
|
||||
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]}"
|
||||
|
||||
create_forderungen(forderungen,period,id_subject,datum,
|
||||
price,id_subject[0],KN_HABEN_MIETE_FZ,KOSTENSTELLE_FZ)
|
||||
counter+=1
|
||||
counter_recievables+=1
|
||||
else:
|
||||
counter_errors+=1
|
||||
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:
|
||||
print(f"Fehler, Datei {filename} nicht gefunden.")
|
||||
return forderungen
|
||||
@@ -170,9 +179,11 @@ def getWords(sentence:str)->list:
|
||||
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"):
|
||||
word = word + c
|
||||
elif len(word)>0:
|
||||
elif len(word)>2:
|
||||
result.append(word)
|
||||
word = ""
|
||||
else:
|
||||
word = ""
|
||||
if len(word)>0:
|
||||
result.append(word)
|
||||
return result
|
||||
@@ -267,7 +278,7 @@ def read_account_ids(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}\" ")
|
||||
try:
|
||||
|
||||
20
main.py
20
main.py
@@ -17,11 +17,11 @@ def parse_args() -> argparse.Namespace:
|
||||
|
||||
def main(args: argparse.Namespace) -> None:
|
||||
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" \
|
||||
"\t2\t alle ausgelesen Accounts mit Mame und Kontonummer anzeigen\n"\
|
||||
"\t1\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"\
|
||||
"\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:
|
||||
forderung = {}
|
||||
line = input()
|
||||
@@ -30,7 +30,7 @@ def main(args: argparse.Namespace) -> None:
|
||||
else:
|
||||
#accounts
|
||||
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:
|
||||
filename_debitoren = newFilename
|
||||
accounts = f.read_account_ids(filename_debitoren)
|
||||
@@ -41,27 +41,27 @@ def main(args: argparse.Namespace) -> None:
|
||||
names = f.read_account_names(filename_debitoren)
|
||||
for id, name in names.items():
|
||||
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":
|
||||
#Miete
|
||||
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:
|
||||
filename_miete = newFilename
|
||||
forderung = f.create_forderungen_miete(filename_miete, accounts, forderung, 5, 2025)
|
||||
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":
|
||||
#familyrooms
|
||||
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:
|
||||
filename_fz = newFilename
|
||||
forderung = f.create_forderungen_familienzimmer(filename_fz, accounts, 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:
|
||||
print("Ungültige Eingabe, bitte versuch es erneut!\n")
|
||||
print("\nUngültige Eingabe, bitte versuch es erneut!")
|
||||
print("Auf Wiedersehen!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user