home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1995-11-25 | 5.3 KB | 169 lines |
- IMPLEMENTATION MODULE DruckeBierListe;
-
- FROM Strings IMPORT ClearStr,IsEmptyStr,EqualStr,LeftStr,SubStr,Length,
- Concat,Compare,CompareResult;
- FROM Bliste IMPORT List,AtFirst,AtLast,Empty,Next,Prev,AppendElement,Kunde,
- First,MakeList,KillList,GetValue,SetValue,RemoveElement,
- BubbleSort,VglProc,Last;
- FROM InOut IMPORT WriteString,WriteLn,WriteInt,Done,
- OpenOutput,CloseOutput;
- FROM LongInOut IMPORT WriteLongInt,ReadLongInt;
- FROM EdiereBierListe IMPORT ComputeCustomer,BierListe;
- FROM PreisErfassung IMPORT DD,MM,JJ, VerkaufsPreis;
- FROM AES IMPORT FormAlert;
-
- FROM BlRscInc IMPORT RECHNUNG, BIEREN, NAMEN;
-
-
- VAR Customer :Kunde;
-
- PROCEDURE SortiereRechnung(K1,K2:Kunde):BOOLEAN;
- BEGIN
- RETURN K1.Rechnung>K2.Rechnung
- END SortiereRechnung;
-
- PROCEDURE SortiereNamen(K1,K2:Kunde):BOOLEAN;
- VAR result:CompareResult;
- BEGIN
- result:=Compare(K1.Name,K2.Name);
- RETURN result=less
- END SortiereNamen;
-
- PROCEDURE SortiereBierKonsum(K1,K2:Kunde):BOOLEAN;
- BEGIN
- RETURN K1.Biere>K2.Biere
- END SortiereBierKonsum;
-
- PROCEDURE SortiereBierListe(Nach:INTEGER);
- VAR SortiereNach : VglProc;
- BEGIN
- IF Nach=RECHNUNG THEN
- SortiereNach:=SortiereRechnung;
- ELSIF Nach= BIEREN THEN
- SortiereNach:=SortiereBierKonsum;
- (*ELSIF Nach=NAMEN THEN*)
- ELSE
- SortiereNach:=SortiereNamen;
- END(*IF*);
- BubbleSort(BierListe,SortiereNach);
- END SortiereBierListe;
-
- PROCEDURE DruckOK():BOOLEAN;
- VAR s: ARRAY [0..127] OF CHAR;
- formret : INTEGER;
- BEGIN
- s :='[2][Druck in Ordnung?|Ja = Druck OK|Nein = Druck wiederholen][ Ja | Nein ]';
- formret:=FormAlert(1,s);
- RETURN formret=1
- END DruckOK;
-
-
-
-
- PROCEDURE PrintBierliste(Ordnen,LeerZeilen:INTEGER);
- VAR OK :BOOLEAN;
- Print2Screen :BOOLEAN;
- i,j :INTEGER;
- GesammtBetrag,Rechnung :LONGINT;
- Bierstriche,Limostriche:INTEGER;
- Alert : ARRAY [0..127] OF CHAR;
- Formret :INTEGER;
-
- PROCEDURE PrintCustomer;
- BEGIN
- WriteString('------------------|----------|--------------------------|--------------------|');
- WriteLn;
- WriteString(Customer.Name);
- FOR i:= Length(Customer.Name) TO 17 DO
- WriteString(' ');
- END(*FOR*);
- WriteString('|');
- WriteLongInt((Customer.Rechnung DIV 100D),3);
- WriteString('.');
- WriteLongInt((Customer.Rechnung MOD 100D),2);
- WriteString(' DM |');
- WriteString(' | |');
-
- WriteLn;
- END PrintCustomer;
-
- BEGIN
- Alert:= '[3][Drucker nicht bereit !|Ausdruck auf Bildschirm!][ OK |Cancel]';
- REPEAT
- Print2Screen:=FALSE;
- GesammtBetrag:=0; Bierstriche:=0;Limostriche:=0;
- Rechnung:=0D;
- First(BierListe);
- LOOP
- ComputeCustomer;
- IF AtLast(BierListe) THEN
- EXIT;
- END(*IF*);
- Next(BierListe);
- END(*LOOP*);
- SortiereBierListe(Ordnen);
- First(BierListe);
- OpenOutput('PRN:');
- IF ~Done THEN
- Formret:=FormAlert(1,Alert);
- Print2Screen:=Formret=1;
- END(*IF*);
- IF (~Done AND Print2Screen) OR Done THEN
- WriteString(' Abrechnung vom ');
- WriteString(DD);WriteString('.');
- WriteString(MM);WriteString('.');
- WriteString('19');WriteString(JJ);
- WriteString(' Gespeichert als :');WriteString(JJ);WriteString('_');WriteString(MM);
- WriteString('_');WriteString(DD);WriteString('.DAT');
- WriteLn;
- WriteString(' ');
- WriteString(' Bier'); WriteInt(VerkaufsPreis.BierPreis DIV 100,2);
- WriteString('.');WriteInt(VerkaufsPreis.BierPreis MOD 100,2);
- WriteString(' Limo ');WriteInt(VerkaufsPreis.LimoPreis DIV 100,2);
- WriteString('.');WriteInt(VerkaufsPreis.LimoPreis MOD 100,2);WriteLn;
- LOOP
- OK:=GetValue(BierListe,Customer);
- PrintCustomer;
- IF AtLast(BierListe) THEN
- EXIT;
- END(*IF*);
- Next(BierListe);
- END(*LOOP*);
- Customer.Name:='# ';
- Customer.Rechnung:=0;
- FOR j:=0 TO LeerZeilen DO
- PrintCustomer;
- END(*FOR*);
- First(BierListe);
- LOOP
- OK:=GetValue(BierListe,Customer);
- Rechnung:= Rechnung+ Customer.Rechnung;
- Bierstriche:= Bierstriche+Customer.Biere;
- Limostriche:= Limostriche+Customer.Limos;
- GesammtBetrag:= GesammtBetrag+Customer.Uebertrag;
- IF AtLast(BierListe) THEN EXIT END(*IF*);
- Next(BierListe);
- END(*LOOP*);
- Customer.Name:='Aussenstände: ';
- Customer.Uebertrag:=GesammtBetrag;
- Customer.Biere:=Bierstriche;
- Customer.Limos:=Limostriche;
- Customer.Rechnung:=Rechnung;
- PrintCustomer;
- WriteString('Übertrag : '); WriteLongInt(GesammtBetrag DIV 100D,5);
- WriteString('.'); WriteLongInt(GesammtBetrag MOD 100D,2);
- WriteString(', Limos : '); WriteInt(Limostriche,4);
- WriteString(', Biere : '); WriteInt(Bierstriche,4);WriteLn;
- WriteString(12C);
- IF Print2Screen THEN
- WriteLn;
- WriteString(' Bitte Esc drücken zur Wiederherstellung des Bildschirms ')
- END(*IF*);
- CloseOutput;
- END(*IF*);
- UNTIL DruckOK();
- END PrintBierliste;
-
-
- END DruckeBierListe.
-