From 8ceae79bc3c293957e34dd2f9e30632a4bbbf7ae Mon Sep 17 00:00:00 2001 From: david_g Date: Mon, 1 Feb 2021 20:58:48 +0100 Subject: [PATCH] =?UTF-8?q?Book=20Keeping=20hinzgef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- book_keeping.py | 111 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 book_keeping.py diff --git a/book_keeping.py b/book_keeping.py new file mode 100644 index 0000000..31ef01e --- /dev/null +++ b/book_keeping.py @@ -0,0 +1,111 @@ +class Accounting(): + all_bills = [] + counter = 0 + def __init__(self, name:str, surname:str, room_num, key_num, period:str, bill_num:str, bill_status:bool): + self.name = name + self.surname = surname + self.room_num = room_num + self.key_num = key_num + self.period = period + Accounting.counter += 1 + self.bill_status = bill_status + + + def show_bill(self): + + stay_period = [] + num_string = "" + for i in self.period: + if i.isnumeric(): + num_string += i + if i == ",": + stay_period.append(num_string) + num_string = "" + + stay_period.append(num_string) + + stay_period = tuple(stay_period) + # Same month + + if stay_period[1] == stay_period[3]: + days = int(stay_period[0]) - int(stay_period[2]) + + # Across months + if stay_period[1] != stay_period[3]: + # Stay period more than 1 month + if int(stay_period[3]) - int(stay_period[1]) > 1: + days = 28 - int(stay_period[0]) + int(stay_period[2]) + \ + ((int(stay_period[3]) - int(stay_period[1])-1) * 28) + # Stay period + else: + days = 28 - int(stay_period[0]) + int(stay_period[2]) + + costs = int(days) * int(self.room_num) + + """_______________________________________________________________________""" + lines = [[] for i in range(13)] + lines[0].append( '┌─────────────────────────────┐') + lines[1].append( '│ Rechnung │') + lines[2].append( '│ │') + lines[3].append( '│Kunde: {} {} '.format(self.name, self.surname)) + lines[4].append( '│Zimmer: {} '.format(self.room_num)) + lines[5].append( '│Anz. Tage:{} '.format(days)) + lines[6].append( '│pro Nacht:{} '.format(self.room_num)) + lines[7].append( '│Kosten: {}€ '.format(costs)) + lines[8].append( '│ ') + lines[9].append( '│Rech. Nr.:{} '.format(self.bill_num,)) + lines[10].append('│Beglichen:{} '.format(self.bill_status)) + lines[11].append('│ │') + lines[12].append('└─────────────────────────────┘') + + for i in lines: + print(i[0]) + + + def pay_bill(self): + self.bill_status = True + + + def __del__(self): + print("Rechnung wurde storniert.") + + +r43 = Accounting("Karl", "Otto", 16, 21,"2,3,4,5", "", False) +bill_list = ["r43"] + + +def add_bill(): + name = input("Name : ") + surname = input("Nachname :") + client_num = input("Kundennummer :") + room_num = input("Zimmernummer :") + period = input("Aufenthaltszeitraum :") + key_num = input("Schlüsselnummer :") + bill_num = "r" + str(Accounting.counter) + + c = bill_num + " = Accounting(" + '"' + str(name) + '"' + "," + '"' + \ +str(surname) + '"' + "," + '"' + str(room_num) + '"' + "," + '"' + str(key_num) \ ++ '"' + "," + '"' + str(period) + '"' + "," + '"'+ str(bill_num) + '"' + ", False)" + try: + exec(c) + bill_list.append(bill_num) + except: + print("Konnte nicht ausgeführt werden") + print(c) + print(bill_list) + + +def show_single_bill(): + while True: + k = input("Rechnungsnummer? ") + if k in bill_list: + break + c = str(k) + ".show_bill()" + exec(c) + +""" +def delete_bill(): + input_ = input("Rechnungsnummer: ") + delete = "del " + input_ + exec(delete) +"""