PMIGLOBA.MOD 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. IMPLEMENTATION MODULE PMIGlobals;
  2. (*
  3. * ModBase
  4. * Release 3.0
  5. * (c) Copyright 1986 - 1991 PMI
  6. * P.O. Box 8402
  7. * Green Bay Wi 53308
  8. * All Rights Reserved
  9. * by Ed Ross
  10. *)
  11. FROM EnvironUtils IMPORT GetDate;
  12. FROM DateFunctions IMPORT DatePlusDays,DateToStr,DayOfWeek,DaysSince1900;
  13. FROM PosUtils IMPORT Equal;
  14. FROM HandleIO IMPORT CreateFile,OpenFile,BlockRead,BlockWrite,FileExists;
  15. FROM ScrnTypes IMPORT DisplayFrame,InitDisplayFrame;
  16. FROM DspFiles IMPORT ReadDisplayFrame;
  17. FROM ScrnUtl2 IMPORT CloseDisplayFrame;
  18. FROM LowLevel IMPORT Fill;
  19. FROM StrEdit IMPORT CrunchBlanks,Center,AssignStr;
  20. FROM FramePainter IMPORT ShowDisplayFrame;
  21. FROM ControlUtils IMPORT ChangeField,ReadInput,Control;
  22. FROM DBUtils IMPORT ChangeCardField,ChangeRealField,
  23. ReadCardField,ReadRealField;
  24. FROM VWindows IMPORT CurrentWindow;
  25. FROM StringIO IMPORT ErrorMessage;
  26. FROM SYSTEM IMPORT ADR,SIZE;
  27. FROM HandleIO IMPORT BlockRead, BlockWrite, CloseHandle, CreateFile,
  28. FileExists, FileOffSet, OpenFile, SetFilePtr;
  29. FROM DBUtils IMPORT PrintTitle;
  30. PROCEDURE EditConfig();
  31. VAR
  32. DF : DisplayFrame;
  33. H : CARDINAL;
  34. NextInvNbr : CARDINAL; (* updated only for display and reset *)
  35. NextCustNbr : CARDINAL;
  36. NextPONbr : CARDINAL;
  37. EM : ErrorMessage;
  38. BEGIN
  39. InitDisplayFrame(DF,CurrentWindow);
  40. ReadDisplayFrame(PMIScreens,DF,'PMIConfig');
  41. EM := OpenFile(H,'Inseq');
  42. EM := BlockRead(H,ADR(NextInvNbr),SIZE(NextInvNbr));
  43. EM := CloseHandle(H);
  44. EM := OpenFile(H,'Cuseq');
  45. EM := BlockRead(H,ADR(NextCustNbr),SIZE(NextCustNbr));
  46. EM := CloseHandle(H);
  47. EM := OpenFile(H,'POseq');
  48. EM := BlockRead(H,ADR(NextPONbr),SIZE(NextPONbr));
  49. EM := CloseHandle(H);
  50. WITH Config DO
  51. ChangeField(DF,CompanyName,'CompanyName',TRUE);
  52. ChangeField(DF,CompanyAddr1,'Address1',TRUE);
  53. ChangeField(DF,CompanyAddr2,'Address2',TRUE);
  54. ChangeField(DF,Phone,'Phone',TRUE);
  55. ChangeField(DF,InvoicePrt,'invprn',TRUE);
  56. ChangeField(DF,PksSlipPrt,'pkgprn',TRUE);
  57. ChangeField(DF,ReportPrt,'rptprn',TRUE);
  58. ChangeField(DF,LabelPrt,'labprn',TRUE);
  59. ChangeField(DF,InvoicePre,'PreInvoice',TRUE);
  60. ChangeField(DF,PurchOrdPre,'PrePONbr',TRUE);
  61. ChangeField(DF,CustNbrPre,'PreCust',TRUE);
  62. ChangeRealField(DF,TaxRate,'TaxRate');
  63. ChangeCardField(DF,NextInvNbr,'NxtInvoice');
  64. ChangeCardField(DF,NextCustNbr,'NxtCust');
  65. ChangeCardField(DF,NextPONbr,'NxtPONbr');
  66. ChangeRealField(DF,OvertimeCharge,'GasChg');
  67. ChangeCardField(DF,KeepPaymentHist,'KeepDays');
  68. ShowDisplayFrame(DF,0,0,0,0);
  69. Control(DF);
  70. ReadInput(DF,CompanyName,'CompanyName');
  71. ReadInput(DF,CompanyAddr1,'Address1');
  72. ReadInput(DF,CompanyAddr2,'Address2');
  73. ReadInput(DF,Phone,'Phone');
  74. ReadInput(DF,InvoicePrt,'invprn');
  75. ReadInput(DF,PksSlipPrt,'pkgprn');
  76. ReadInput(DF,ReportPrt,'rptprn');
  77. ReadInput(DF,LabelPrt,'labprn');
  78. ReadInput(DF,InvoicePre,'PreInvoice');
  79. ReadInput(DF,CustNbrPre,'PreCust');
  80. ReadInput(DF,PurchOrdPre,'PrePONbr');
  81. ReadRealField(DF,TaxRate,'TaxRate');
  82. ReadCardField(DF,NextInvNbr,'NxtInvoice');
  83. ReadCardField(DF,NextPONbr,'NxtPONbr');
  84. ReadCardField(DF,NextCustNbr,'NxtCust');
  85. ReadCardField(DF,KeepPaymentHist,'KeepDays');
  86. ReadRealField(DF,OvertimeCharge,'GasChg');
  87. END; (* end with *)
  88. EM := OpenFile(H,'PMI.cfg');
  89. EM := BlockWrite(H,ADR(Config),SIZE(Config));
  90. EM := CloseHandle(H);
  91. EM := OpenFile(H,'Inseq');
  92. EM := BlockWrite(H,ADR(NextInvNbr),SIZE(NextInvNbr));
  93. EM := CloseHandle(H);
  94. EM := OpenFile(H,'POSeq');
  95. EM := BlockWrite(H,ADR(NextPONbr),SIZE(NextPONbr));
  96. EM := CloseHandle(H);
  97. EM := OpenFile(H,'Cuseq');
  98. EM := BlockWrite(H,ADR(NextCustNbr),SIZE(NextCustNbr));
  99. EM := CloseHandle(H);
  100. CloseDisplayFrame(DF);
  101. END EditConfig;
  102. PROCEDURE NormalTitle(VAR LastLine : ARRAY OF CHAR);
  103. VAR
  104. J : CARDINAL;
  105. BEGIN
  106. AssignStr(PrintTitle[0], Config.CompanyName);
  107. AssignStr(PrintTitle[1], Config.CompanyAddr1);
  108. AssignStr(PrintTitle[2], Config.CompanyAddr2);
  109. AssignStr(PrintTitle[3], Config.Phone);
  110. PrintTitle[4,0] := CHR(0);
  111. AssignStr(PrintTitle[5], TodayStr);
  112. AssignStr(PrintTitle[6], LastLine);
  113. FOR J := 0 TO 6 DO
  114. CrunchBlanks(PrintTitle[J]);
  115. Center(PrintTitle[J],79);
  116. END;
  117. END NormalTitle;
  118. PROCEDURE OpenReportDevice() : CARDINAL;
  119. VAR EM : CARDINAL;
  120. Handle : CARDINAL;
  121. BEGIN
  122. EM := OpenFile(Handle,Config.ReportPrt);
  123. IF EM = 0
  124. THEN RETURN Handle;
  125. ELSE RETURN 0;
  126. END;
  127. END OpenReportDevice;
  128. PROCEDURE CloseReportDevice(Device : CARDINAL);
  129. VAR
  130. EM : CARDINAL;
  131. BEGIN
  132. EM := CloseHandle(Device);
  133. END CloseReportDevice;
  134. PROCEDURE GlobalInit();
  135. VAR
  136. Str1,Str2 : ARRAY[0..15] OF CHAR;
  137. B : BOOLEAN;
  138. EM : CARDINAL;
  139. H : CARDINAL;
  140. BEGIN
  141. IF FileExists('PMI.CFG')
  142. THEN
  143. EM := OpenFile(H,'PMI.cfg');
  144. EM := BlockRead(H,ADR(Config),SIZE(Config));
  145. ELSE
  146. Fill(ADR(Config),SIZE(Config),0);
  147. EM := CreateFile(H,'PMI.CFG');
  148. EM := BlockWrite(H,ADR(Config),SIZE(Config));
  149. END;
  150. EM := CloseHandle(H);
  151. GetDate(Today.mo,Today.day,Today.yr,Str2,TodayStr);
  152. DateToStr(Today,TodayStr,B);
  153. TodayP30 := Today;
  154. TodayDays := DaysSince1900(Today);
  155. DatePlusDays(TodayP30,30,B); (* today plus 30 *)
  156. DayOfWeek(TodayP30,Str1);
  157. IF Equal(Str1,'SATURDAY')
  158. THEN DatePlusDays(TodayP30,2,B); (* make due date a weekday *)
  159. ELSIF Equal(Str2,'SUNDAY')
  160. THEN DatePlusDays(TodayP30,1,B);
  161. END;
  162. END GlobalInit;
  163. END PMIGlobals.