# CIP_inleveren.py – toestel terug inleveren (en eventueel herstelling registreren) from database import execute_query from datetime import date from services import toestellen as tst foutmelding = "" def Inleveren(internnummer, toestelnummer, action_type, tab2_schade_text): global foutmelding # 1. Zoek leerling op (zet om naar officieel Internnummer) leerling = tst.zoek_leerling(internnummer) if not leerling: foutmelding = "Error: Internnummer niet gevonden." return # 2. Zoek het toestel en de huidige toekenning aan deze leerling toestel = tst.zoek_toestel(toestelnummer) if not toestel: foutmelding = "Error: Toestelnummer niet gevonden in de toestellenlijst." return eigendom = execute_query( "SELECT Eigendom_ID FROM Eigendom WHERE Toestel_ID = %s AND Internnummer = %s AND Datum_inlevering IS NULL", (toestel['Toestel_ID'], leerling['Internnummer'])) if not eigendom: foutmelding = "Error: Dit toestel staat niet als 'uitgeleend' aan deze leerling in de database." return # 3. Verwerk de inlevering try: _verwerk_inlevering(eigendom[0]['Eigendom_ID'], leerling, toestel['Toestel_ID'], action_type, tab2_schade_text) foutmelding = "Toestel succesvol ingeleverd." except Exception as e: foutmelding = f"Systeemfout: {str(e)}" def _verwerk_inlevering(eigendom_id, leerling, toestel_id, action_type, schade_text): vandaag = date.today() # A. Toekenning afsluiten (blijft bewaard als geschiedenis) execute_query("UPDATE Eigendom SET Datum_inlevering = %s WHERE Eigendom_ID = %s", (vandaag, eigendom_id), commit=True) # B. Status en eventueel herstelling if action_type == "Schade": execute_query( "INSERT INTO Signpost_herstellingen_DB (Toestel_ID, Omschrijving, Status_herstelling, Datum, Leerling_ID) " "VALUES (%s, %s, 'geregistreerd', %s, %s)", (toestel_id, schade_text, vandaag, leerling['Leerling_ID']), commit=True) execute_query("UPDATE Toestellen SET Status = 'Defect' WHERE Toestel_ID = %s", (toestel_id,), commit=True) else: execute_query("UPDATE Toestellen SET Status = 'Beschikbaar' WHERE Toestel_ID = %s", (toestel_id,), commit=True) def Ingeven_herstelling(toestelnummer, soort_herstelling): """Herstelling registreren zonder inlevering door een leerling.""" global foutmelding toestel = tst.zoek_toestel(toestelnummer) if not toestel: foutmelding = f"Toestel {toestelnummer} niet gevonden." return execute_query( "INSERT INTO Signpost_herstellingen_DB (Toestel_ID, Omschrijving, Status_herstelling, Datum) " "VALUES (%s, %s, 'In afwachting', %s)", (toestel['Toestel_ID'], soort_herstelling, date.today()), commit=True) foutmelding = "Herstelling ingegeven"