/***************************************************************************
                          vertrag.h  -  Interface Klasse CVertrag
                             -------------------                                         
    begin                : Wed Aug 4 1999                                           
    copyright            : (C) 1999 by Stephan Uhlmann                         
    email                : suhlmann@gmx.de                                     
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   * 
 *                                                                         *
 ***************************************************************************/


#ifndef __VERTRAG_H__
#define __VERTRAG_H__

#include "dokument.h"    /* Import Klasse CDokument */


/**
 * Die Klasse CVertrag stellt die Daten und Methoden zur Verfuegung
 * um einen Vertrag zu verwalten.
 * Diese Klasse erbt von der Klasse CDokument.
 */

/* jeder Vertrag ist auch ein Dokument */
class CVertrag : public CDokument
{
 private:
  /** Vertragsnummer */
  QString Vertragsnummer;
  /** Datum der letzten Aenderung */
  QDateTime Aenderungsdatum;
  /** Bank unterschrieben? */
  bool UnterschriftBankVorhanden;
  /** Kunde unterschrieben? */
  bool UnterschriftKundeVorhanden;
  /** Vertragstext */
  QString Vertragstext;

 public:
  /** Konstruktor */
  /* pre: this existiert nicht */
  /* post: this existiert und ist gueltig */
  CVertrag();

  /** Destruktor */
  /* pre: this existiert */
  /* post: this existiert nicht */
  virtual ~CVertrag();

  /** generiert ein Objekt des Typs CVertrag und gibt einen Zeiger darauf zurueck */
  /* pre: CVertrag existiert nicht */
  /* post: CVertrag existiert und ist gueltig */
  virtual CDokument* Generate() const;

  /** gibt ein Objekt des Typs CVertrag wieder frei */
  /* pre: this existiert */
  /* post: this ist ungueltig */
  virtual void Free();

  /** prueft die Klasseninvarianz des Objekts */
  /* pre: this existiert */
  /* post: TRUE wenn this gueltig, sonst FALSE */
  virtual bool ClassInvariant() const;

  /** kopiert den Vertrag src in den aktuellen Vertrag */
  /* pre: this existiert; src ist gueltig */
  /* post: this ist gueltig; this ist gleich src */
  virtual bool Copy(CDokument* src);

  /** vergleicht zwei Vertraege miteinander */
  /* pre: this und src existieren und sind gueltig */
  /* post: TRUE wenn Inhalt von this gleich Inhalt von src, sonst FALSE */
  virtual bool EqualValue(CDokument* src) const;

  /** initialisiert einen existierenden Vertrag mit den gegebenen Werten */
  /* pre: this existiert und ist gueltig */
  /* post: this enthaelt die gewuenschten Werte */
  bool InitVertrag(QString NVerfasser,
                   QString NTitel,
   		     	       QString NSchluessel,
		  				     QString NVertragsnummer,
						       bool NUnterschriftBankVorhanden,
						       bool NUnterschriftKundeVorhanden,
						       QString NVertragstext);

  /** liefert die Vertragsnummer */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  QString LiefereVertragsnummer() const;

  /** gibt zurueck ob die Unterschrift der Bank vorhanden ist */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  bool LiefereUnterschriftBankVorhanden() const;

  /** aendert die Tatsache ob die Bank unterschrieben hat */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  void AendereUnterschriftBankVorhanden(bool NUnterschriftBankVorhanden);

  /** gibt zurueck ob der Kunde unterschrieben hat */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  bool LiefereUnterschriftKundeVorhanden() const;

  /** aendert die Tatsache ob der Kunde unterschrieben hat */
  void AendereUnterschriftKundeVorhanden(bool NUnterschriftKundeVorhanden);

  /** gibt den Vertragstext zurueck */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  QString LiefereVertragstext() const;

  /** aendert den Vertragstext */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  void AendereVertragstext(QString NVertragstext);

  /** gibt das Datum der letzten Aenderung zurueck */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  QDateTime  LiefereAenderungsdatum() const;

  /** aendert das Datum der letzten Aenderung */
  /* pre: this existiert und ist gueltig */
  /* post:  */
  void AendereAenderungsdatum(QDateTime NDatum);

  /** prueft ob der Vertrag zulaessig ist */
  /* pre:  */
  /* post: TRUE wenn src gueltig ist, sonst FALSE */
  bool ZulaessigerVertrag(QString NVertragstext) const;

  /** schreibt den Inhalt des Vertrages in den angegebenen stream */
  /* pre: this existiert und ist gueltig */
  /* post: TRUE wenn der CVertrag geschrieben werden konnte, sonst FALSE */
  bool readData(QDataStream* stream);

  /** laedt den Inhalt des Vertrages aus dem angegebenen stream */
  /* pre: this existiert und ist gueltig */
  /* post: TRUE wenn der CVertrag geladen werden konnte, sonst FALSE */
  bool writeData(QDataStream* stream) const;

};



#endif /* __VERTRAG_H__ */




















Documentation generated by uhlmann@fara2 on Mon Aug 30 20:37:52 MEST 1999