#include"JWI_Klassen_Verwaltung.h"


//	ausgelagerte Operationen der Klasse Verwaltung



void Verwaltung::FehlbestaendeNachbestellen(void)
{
	class Nachbestellung nachbest;
	class Produkt prod;

	//	es wird die Produkt-Liste durchgegangen, und die notwendigen Mengen nachzubestellt

	produkte.SetzeAufAnfang();	//	liefert das erste Element der Liste
	for (int i=1; i <= produkte.Laenge(); i++)
	{
		prod = produkte.HoleInhalt();

		//	überprüfen, ob schon eine Nachbestellung an den Lieferanten existiert

		if (prod.BestellmengeErmitteln() > 0)
		//	Nachbestellung notwendig
		{
			nachbest = SucheNachbestellungLieferantenNr(prod.HoleLieferantenNr());

			//	überprüfen, ob schon eine Nahcbestellung an diesen Lieferanten existiert

			if (nachbest.HoleBestellungsNr() != 0)
			//	Nachbestellung existiert
			{
				class Bestellposten neuerbestp((nachbest.HoleBestellpostenListe().Laenge()+1), nachbest.HoleBestellungsNr(),
							//	erzeugt einen neuen Bestellposten mit den notwendigen Daten
							//	die laufende Nummer des Bestellpostens wird über die Anzahl der schon bestehenden Bestellposten errechnet
					prod.HoleProduktNr(), prod.BestellmengeErmitteln());	
				
					//	hängt den Bestellposten an die Nachbestellung an
				nachbest.PostenAnhaengen(neuerbestp);	
			}
			else
			//	Nachbestellung existiert nicht
			{
				//	erzeugt eine neue Nachbestellung
				class Nachbestellung neuenachbest(zaeler_bnr, prod.HoleLieferantenNr());
				//	nimmt die neue Nachbestellung in die Liste der Nachbestellungen auf
				nachbestellungen.ElementHinzufuegen(neuenachbest);
				//	jede Nachbestllung ist durch ihre Erstellung bearbeitet
				neuenachbest.SetzeBearbeitet();

				zaeler_bnr++;
				class Bestellposten neuerbestp((neuenachbest.HoleBestellpostenListe().Laenge()+1), zaeler_bnr, 
					prod.HoleProduktNr(), prod.BestellmengeErmitteln());
							//	erzeugt einen neuen Bestellposten
							//	die laufende Nummer des Bestellpostens wird über die Anzahl der schon bestehenden Bestellposten errechnet
				neuenachbest.PostenAnhaengen(neuerbestp);	
			};
		};

		produkte.NachfolgendesElement();	//	setzt den Listenzeiger ein Element weiter
	};


	//	Die Liste der Nachbestellungen muß nun noch auf irgend einem Wege 
	//	an die Lieferanten übermittelt werden; Bsp:
	nachbestellungen.SetzeAufAnfang();
	for(i=1; i <= nachbestellungen.Laenge(); i++)
	{
		nachbest = nachbestellungen.HoleInhalt();
		nachbest.Drucken();
	};
}
