Subroutine Print_WO_Master_Scheduler(Date, Preview) /******************************************************************************************************** This program is proprietary and is not to be used by or disclosed to others, nor is it to be copied without written permission from SRP Computer Solutions, Inc. Name : Print WO Master Scheduler Description : Tags : [SRP] Parameters : History (Date, Initials, Notes) 12/02/09 fjt Initial development 05/17/10 fjt Updated to select based on date span field ********************************************************************************************************/ $insert SRP_APP_INSERTS $insert OIPI_FONTS Declare subroutine Extract_SI_Keys, Update_Index Declare function Init_OIPI, Set_Printer_Object Process = 0 Loop Process += 1 Utility("CURSOR", 'H') On Process GoSub Init, Appts, OIPI, Pages, Term Utility("CURSOR", 'A') Until Term Repeat Return !----- INTERNAL ROUTINES -------------------------------------------------------------------------------- Init: If Assigned(Preview) else Preview = Yes$ If Assigned(Date) else Date = "" If Date EQ "" then Date = Date() Equ PageW$ to 08.00 Equ PageH$ to 10.50 Equ Sched_Win$ to "WO_MASTER_SCHEDULER" Equ Ctrl$ to Sched_Win$:".OLE_SCHEDULE" Table = "WO_MAST_SCHED" Term = No$ rv = "" rv2 = "" rv3 = "" Val = "" Dates = "" // Schedule data grid Dim Appts(70,3) Mat Appts = "" // Three days to display For i = 0 to 2 Dates<-1> = OConv(Date+i, "DWA") :" - ": OConv(Date+i, "DL") Next i return Appts: // Build list of keys that fall on the three days Keys = "" Field = "DATE_SPAN_XREF" Update_Index(Table, Field, No$, Yes$) For i = 0 to 2 Extract_SI_Keys(Table, Field, Date+i, rv) Keys<-1> = rv rv = "" Next i // Get the date for each appointment Ctrl = @Window:".OLE_SCHEDULE" For i = 1 to 3 Cnt = Count(Keys, @VM) + (Keys NE "") For c = 1 to Cnt rv = Get_Property(Ctrl$, "OLE.Appt[":Keys:"]") Desc = rv<7> Swap Char(13):Char(10) with @VM in Desc If Appts(rv<1>,i) EQ "" then Appts(rv<1>,i) = rv<6> :@VM: Desc end else Appts(rv<1>,i) = Appts(rv<1>,i) :@RM: rv<6> :@VM: Desc end Next c Next i return OIPI: Title = "WOMS" Param = "" Param<1> = Preview Param<02> = Title Param<04> = 0 ;// Portrait Param<05> = 0.25 Param<06> = 0.25 Param<07> = 0.25 Param<08> = 0.25 rv = Init_OIPI(Param) If (rv NE Yes$) then Term = Yes$ return Pages: For p = 1 to 2 x = 0 y = 0 GoSub Header.1 GoSub Header.2 GoSub Schedule_Grid GoSub Reactors GoSub Appointments If p EQ 1 then rv = Set_Printer("PAGEBREAK") Next p return Term: rv = Set_Printer("TERM") Term = Yes$ return !----- PAGE SECTIONS ------------------------------------------------------------------------------------ Header.1: Range = Oconv(Date, "D4/") :" to ": Oconv(Date+3, "D4/") rv = 0 :@VM: y :@VM: PageW$ :@VM: "^REACTOR MASTER SCHEDULE" rv = Set_Printer_Object("T", rv, Tahoma(12,2)) y += 12/64 Begin Case Case p EQ 1 ; Val = "Reactors 20-45" Case p EQ 2 ; Val = "Reactors 46-69" End Case rv = 0 :@VM: y :@VM: PageW$ :@VM: "^" : Range : Space(2):Char(149):Space(2) : Val rv = Set_Printer_Object("T", rv, Tahoma(9,1)) y += 12/64 return Header.2: ApptCol = (PageW$ - .50) / 3 Cols = "" Cols<1> = .00 :@VM: .50 :@VM: "REACT" Cols<2> = Cols<1,2> :@VM: Cols<1,2> + ApptCol :@VM: Dates<1> Cols<3> = Cols<2,2> :@VM: Cols<2,2> + ApptCol :@VM: Dates<2> Cols<4> = Cols<3,2> :@VM: Cols<3,2> + ApptCol :@VM: Dates<3> For i = 1 to 4 w = ApptCol If i EQ 1 then w = .50 rv := Cols :@VM: y :@VM: Cols :@VM: y + 12/64 :@FM rv2 := Cols :@VM: y + 1/64 :@VM: w :@VM: "^":Cols :@FM If i LT 4 then rv3 := Cols :@VM: y :@VM: Cols :@VM: y + 12/64 :@FM end Next i rv = Set_Printer_Object("R", rv, "", "", Black$) rv2 = Set_Printer_Object("T", rv2, Arial_Narrow(8,5)) rv3 = Set_Printer_Object("L", rv3, "", "", White$) y += 12/64 return Schedule_Grid: RH = (PageH$ - y) / 25 LH = RH / 4 Grid.Start = y For i = 1 to 25 For c = 2 to 4 rv := Cols :@VM: y :@VM: Cols :@VM: y + RH :@FM Next c y += RH Next i x = Set_Printer("LINESTYLE", 0:@FM:1/2:@FM:Grey$) rv = Set_Printer_Object("R", rv, "", "") x = Set_Printer("LINESTYLE", 0:@FM:1:@FM:Black$) return Reactors: y = Grid.Start For i = 1 to 25 React = 19 + i If p EQ 2 then React = 44 + i rv := Cols<1,1> :@VM: y :@VM: Cols<1,2> :@VM: y + RH :@FM rv2 := Cols<1,1> :@VM: y + 6/64 :@VM: Cols<1,2> :@VM: "^": React :@FM y += RH Next i rv = Set_Printer_Object("R", rv, "", "", GREY$) rv2 = Set_Printer_Object("T", rv2, Arial_Narrow(16,2)) return Appointments: y = Grid.Start z = y For i = 1 to 25 React = 19 + i If p EQ 2 then React = 44 + i For c = 1 to 3 z = y Text = Appts(React, c) MV = Count(Text, @RM) + (Text NE "") Begin Case Case MV EQ 1 ; GoSub Print_One Case MV EQ 2 ; GoSub Print_Two End Case Next c y += RH Next i return Print_One: If Text then rv = Cols :@VM: y :@VM: Cols :@VM: y + RH rv = Set_Printer_Object("R", rv) For r = 1 to 4 rv = Cols :@VM: z :@VM: w :@VM: "<":Text<0,r> rv = Set_Printer_Object("T", rv, Tahoma(6,1)) z += 6/64 Next r end return Print_Two: For x = 1 to 2 z = y Half = Cols + (ApptCol / 2) Begin Case Case x EQ 1 ; rv = Cols :@VM: y :@VM: Half :@VM: y + RH Case x EQ 2 ; rv = Half :@VM: y :@VM: Cols :@VM: y + RH End Case rv = Set_Printer_Object("R", rv) Val = Field(Text, @RM, x) For r = 1 to 4 Begin Case Case x = 1 ; rv = Cols :@VM: z :@VM: w / 2 :@VM: "<":Val<0,r> Case x = 2 ; rv = Half :@VM: z :@VM: w / 2 :@VM: "<":Val<0,r> End Case rv = Set_Printer_Object("T", rv, Tahoma(6,1)) z += 6/64 Next r Next x return