#include"JWI_Klassen_Liste.cpp"



class Produkt
{
	// Attribute
	int pnr;			//	interne Produktnummer
	char* bez;		//	Bezeichnung des Produktes
	int lnr;		//	Lieferantennummer
	int min_best;	//	minimaler geforderter Lagerbestand
	int max_best;	//	maximal möglicher Lagerbestand
	int akt_best;	//	aktueller Lagerbestand
	int vormerkung;	//	kummulierte Menge der Vormerkungen von Bestellposten,
					//	die nicht lieferbar waren
	
	//Operationen
	public:

	//	Konstruktor
		Produkt(int produktnr=0, char* bezeichnung="", int lieferantennr=0,
				int minbestand=0, int maxbestand=0, int aktuellerbestand=0, int vorm=0)
			: pnr(produktnr), bez(bezeichnung), lnr(lieferantennr), 
				min_best(minbestand), max_best(maxbestand), akt_best(aktuellerbestand), vormerkung(vorm) {}
	
	//	Destructor	
		~Produkt(void) {}

	//	Daten ändern	
		void DatenAendern(void);

	//	Daten abfragen
		int HoleProduktNr(void);
		char* HoleBezeichnung(void);
		int HoleLieferantenNr(void);
		int HoleMinBestand(void);
		int HoleMaxBestand(void);
		int HoleAktuellenBestand(void);
		int HoleVormerkungen(void);

	//	Produktdaten zu erzeugtem Objekt neu eingeben	
		void Neu(int produktnr);

	//	Verändern des aktuellen Bestandes um den Wert aenderung
	//	wenn aenderung > 0 wird der aktuelle Bestand erhöht; für aenderung < 0 verringert
		void AktuellenBestandKorregieren(int aenderung);

	//	wird eine bestimmte Menge dieses Produktes für eine Bestellung benötigt, die nicht 
	//	mehr auf dem Lager ist, d.h. aktueller Bestand - Bestellung < 0, so wird diese Menge
	//	für die nächste Bestllung Vorgemerkt
	//	aenderung>0 bezeichnet die Erhöhung der Vormerk-Menge; aenderung<0: nicht zugelassen
		void Vormerken(int aenderung);

	//	ermittelt die aktuell nachzubestellende Menge	
		int BestellmengeErmitteln(void);
};



//	von der Klasse Liste werden weitere Klasse abgeleitet, die als Karteien bezeichtnet werden
//	diese Beszeichnung soll andeuten, daß diese Klasse durch Operationen erweitert werden 
//	können, die diese Liste ggf. auf einem externen Datenträger anlegen:

class ProduktKartei: public Liste<Produkt>{};
