#include"JWI_Klassen_Verwaltung.h" #include"JWI_Klassen_Fenster.cpp" // ausgelagerte Operationen der Klasse Verwaltung void Verwaltung::RuecklaufBearbeiten() { class Lieferschein liefers; class BestellpostenListe postenliste; class Bestellposten bestp; class Bestellung best; class EingabeFenster E; int bestellungsnr; int allesbearbeitet; char* Text; Text="Bitte geben Sie die Bestellungsnr. der erfolgreich ausgelieferten Bestellung ein:"; bestellungsnr = E.HoleEingabe(Text); liefers = SucheLieferscheinBestellungsNr(bestellungsnr); postenliste = liefers.HoleBestellpostenListe(); postenliste.SetzeAufAnfang(); for (int i=1; i <= postenliste.Laenge(); i++) { bestp = postenliste.HoleInhalt(); // setzt den internen Zeiger der Lieferkartei auf den ausgelieferten Bestellposten SucheBestellposten(bestp.HoleLaufendeNr()); liefer_kartei.ElementLoeschen(); // löscht diesen ausgelieferten Bestllposten // setzt den Zeiger der Bestellpostenliste des Lieferscheines ein Element weiter postenliste.NachfolgendesElement(); }; // löscht den ausgelieferten und gerade bearbeiteten Lieferschein lieferscheine.ElementLoeschen(); // kontrollieren, ob durch diese Auslieferung eine Kundenbestellung // abschließend bearbeitet wurde: kundenbestellungen.SetzeAufAnfang(); for(i=1; i <= kundenbestellungen.Laenge(); i++) { // holt das aktuelle Element der Liste der Kundenbestellungen best = kundenbestellungen.HoleInhalt(); if(best.HoleBearbeitet() == 0) { postenliste = best.HoleBestellpostenListe(); allesbearbeitet = 1; // kontrollieren, ob für die gegebene Kundenbestellung // alle Bestellposten weder in der Warte-, noch in der Lieferkartei sind; // dann sind alle Posten ausgeliefert und die Bestellung bearbeitet postenliste.SetzeAufAnfang(); for(int j=1; j <= postenliste.Laenge(); j++) { bestp = postenliste.HoleInhalt(); if(SucheBestellposten(bestp.HoleLaufendeNr()).HoleLaufendeNr() != 0) // der aktuelle Bestllposten ist in einer der Karteien und somit unbearbeitet { allesbearbeitet = 0; }; postenliste.NachfolgendesElement(); }; // falls alle Bestellposten bearbeitet sind, // wird die Bestllung als bearbeitet deklariert if(allesbearbeitet == 1) { best.SetzeBearbeitet(); }; }; kundenbestellungen.NachfolgendesElement(); }; }