IMPLEMENTATION MODULE PMIGlobals; (* * ModBase * Release 3.0 * (c) Copyright 1986 - 1991 PMI * P.O. Box 8402 * Green Bay Wi 53308 * All Rights Reserved * by Ed Ross *) FROM EnvironUtils IMPORT GetDate; FROM DateFunctions IMPORT DatePlusDays,DateToStr,DayOfWeek,DaysSince1900; FROM PosUtils IMPORT Equal; FROM HandleIO IMPORT CreateFile,OpenFile,BlockRead,BlockWrite,FileExists; FROM ScrnTypes IMPORT DisplayFrame,InitDisplayFrame; FROM DspFiles IMPORT ReadDisplayFrame; FROM ScrnUtl2 IMPORT CloseDisplayFrame; FROM LowLevel IMPORT Fill; FROM StrEdit IMPORT CrunchBlanks,Center,AssignStr; FROM FramePainter IMPORT ShowDisplayFrame; FROM ControlUtils IMPORT ChangeField,ReadInput,Control; FROM DBUtils IMPORT ChangeCardField,ChangeRealField, ReadCardField,ReadRealField; FROM VWindows IMPORT CurrentWindow; FROM StringIO IMPORT ErrorMessage; FROM SYSTEM IMPORT ADR,SIZE; FROM HandleIO IMPORT BlockRead, BlockWrite, CloseHandle, CreateFile, FileExists, FileOffSet, OpenFile, SetFilePtr; FROM DBUtils IMPORT PrintTitle; PROCEDURE EditConfig(); VAR DF : DisplayFrame; H : CARDINAL; NextInvNbr : CARDINAL; (* updated only for display and reset *) NextCustNbr : CARDINAL; NextPONbr : CARDINAL; EM : ErrorMessage; BEGIN InitDisplayFrame(DF,CurrentWindow); ReadDisplayFrame(PMIScreens,DF,'PMIConfig'); EM := OpenFile(H,'Inseq'); EM := BlockRead(H,ADR(NextInvNbr),SIZE(NextInvNbr)); EM := CloseHandle(H); EM := OpenFile(H,'Cuseq'); EM := BlockRead(H,ADR(NextCustNbr),SIZE(NextCustNbr)); EM := CloseHandle(H); EM := OpenFile(H,'POseq'); EM := BlockRead(H,ADR(NextPONbr),SIZE(NextPONbr)); EM := CloseHandle(H); WITH Config DO ChangeField(DF,CompanyName,'CompanyName',TRUE); ChangeField(DF,CompanyAddr1,'Address1',TRUE); ChangeField(DF,CompanyAddr2,'Address2',TRUE); ChangeField(DF,Phone,'Phone',TRUE); ChangeField(DF,InvoicePrt,'invprn',TRUE); ChangeField(DF,PksSlipPrt,'pkgprn',TRUE); ChangeField(DF,ReportPrt,'rptprn',TRUE); ChangeField(DF,LabelPrt,'labprn',TRUE); ChangeField(DF,InvoicePre,'PreInvoice',TRUE); ChangeField(DF,PurchOrdPre,'PrePONbr',TRUE); ChangeField(DF,CustNbrPre,'PreCust',TRUE); ChangeRealField(DF,TaxRate,'TaxRate'); ChangeCardField(DF,NextInvNbr,'NxtInvoice'); ChangeCardField(DF,NextCustNbr,'NxtCust'); ChangeCardField(DF,NextPONbr,'NxtPONbr'); ChangeRealField(DF,OvertimeCharge,'GasChg'); ChangeCardField(DF,KeepPaymentHist,'KeepDays'); ShowDisplayFrame(DF,0,0,0,0); Control(DF); ReadInput(DF,CompanyName,'CompanyName'); ReadInput(DF,CompanyAddr1,'Address1'); ReadInput(DF,CompanyAddr2,'Address2'); ReadInput(DF,Phone,'Phone'); ReadInput(DF,InvoicePrt,'invprn'); ReadInput(DF,PksSlipPrt,'pkgprn'); ReadInput(DF,ReportPrt,'rptprn'); ReadInput(DF,LabelPrt,'labprn'); ReadInput(DF,InvoicePre,'PreInvoice'); ReadInput(DF,CustNbrPre,'PreCust'); ReadInput(DF,PurchOrdPre,'PrePONbr'); ReadRealField(DF,TaxRate,'TaxRate'); ReadCardField(DF,NextInvNbr,'NxtInvoice'); ReadCardField(DF,NextPONbr,'NxtPONbr'); ReadCardField(DF,NextCustNbr,'NxtCust'); ReadCardField(DF,KeepPaymentHist,'KeepDays'); ReadRealField(DF,OvertimeCharge,'GasChg'); END; (* end with *) EM := OpenFile(H,'PMI.cfg'); EM := BlockWrite(H,ADR(Config),SIZE(Config)); EM := CloseHandle(H); EM := OpenFile(H,'Inseq'); EM := BlockWrite(H,ADR(NextInvNbr),SIZE(NextInvNbr)); EM := CloseHandle(H); EM := OpenFile(H,'POSeq'); EM := BlockWrite(H,ADR(NextPONbr),SIZE(NextPONbr)); EM := CloseHandle(H); EM := OpenFile(H,'Cuseq'); EM := BlockWrite(H,ADR(NextCustNbr),SIZE(NextCustNbr)); EM := CloseHandle(H); CloseDisplayFrame(DF); END EditConfig; PROCEDURE NormalTitle(VAR LastLine : ARRAY OF CHAR); VAR J : CARDINAL; BEGIN AssignStr(PrintTitle[0], Config.CompanyName); AssignStr(PrintTitle[1], Config.CompanyAddr1); AssignStr(PrintTitle[2], Config.CompanyAddr2); AssignStr(PrintTitle[3], Config.Phone); PrintTitle[4,0] := CHR(0); AssignStr(PrintTitle[5], TodayStr); AssignStr(PrintTitle[6], LastLine); FOR J := 0 TO 6 DO CrunchBlanks(PrintTitle[J]); Center(PrintTitle[J],79); END; END NormalTitle; PROCEDURE OpenReportDevice() : CARDINAL; VAR EM : CARDINAL; Handle : CARDINAL; BEGIN EM := OpenFile(Handle,Config.ReportPrt); IF EM = 0 THEN RETURN Handle; ELSE RETURN 0; END; END OpenReportDevice; PROCEDURE CloseReportDevice(Device : CARDINAL); VAR EM : CARDINAL; BEGIN EM := CloseHandle(Device); END CloseReportDevice; PROCEDURE GlobalInit(); VAR Str1,Str2 : ARRAY[0..15] OF CHAR; B : BOOLEAN; EM : CARDINAL; H : CARDINAL; BEGIN IF FileExists('PMI.CFG') THEN EM := OpenFile(H,'PMI.cfg'); EM := BlockRead(H,ADR(Config),SIZE(Config)); ELSE Fill(ADR(Config),SIZE(Config),0); EM := CreateFile(H,'PMI.CFG'); EM := BlockWrite(H,ADR(Config),SIZE(Config)); END; EM := CloseHandle(H); GetDate(Today.mo,Today.day,Today.yr,Str2,TodayStr); DateToStr(Today,TodayStr,B); TodayP30 := Today; TodayDays := DaysSince1900(Today); DatePlusDays(TodayP30,30,B); (* today plus 30 *) DayOfWeek(TodayP30,Str1); IF Equal(Str1,'SATURDAY') THEN DatePlusDays(TodayP30,2,B); (* make due date a weekday *) ELSIF Equal(Str2,'SUNDAY') THEN DatePlusDays(TodayP30,1,B); END; END GlobalInit; END PMIGlobals.