COMPILE SUBROUTINE Print_Reactor_Maint_ToDo(Dummy)

/*
	Print Reactor PM To Do List report
	6/10/2013 -  John C. Henry, J.C. Henry & Co., Inc. - Initial coding
	
*/



DECLARE SUBROUTINE Utility, ErrMsg, Set_Status, Set_Printer, RList, Btree.Extract, Make.List
DECLARE FUNCTION Set_Printer, Get_Printer, Msg, Get_Status, Printer_Select, obj_Install, Dialog_Box, Key_Sort

$INSERT OIPRINT_EQUATES
$INSERT APPCOLORS
$INSERT MSG_EQUATES


EQU TAB$				TO \09\
EQU TARGET_ACTIVELIST$	TO 5


ErrorTitle = 'Error in stored procedure Print_Reactor_Maint_ToDo'

OPEN 'REACTOR_PM' TO ReactorPMTable ELSE
	ErrMsg('Unable to open "DICT.REACTOR_PM" for Query.')
	RETURN
END

OPEN 'DICT.REACTOR_PM' TO @DICT ELSE
	ErrMsg('Unable to open "DICT.REACTOR_PM" for Query.')
	RETURN
END

EndDt = OCONV((Date()+60),'D4/')

SearchString  = 'DUE_DT':@VM:'<=':EndDt:@FM
SearchString := 'COMPLETE_DATE':@VM:@FM

Set_Status(0)
Btree.Extract(SearchString,'REACTOR_PM',@DICT,ReactPMKeys,'',Flag)

IF Get_Status(errCode) THEN
	ErrMsg(errCode)
	RETURN
END

CONVERT @VM TO @FM IN ReactPMKeys

ReactPMKeys = Key_Sort(ReactPMKeys,'REACTOR_PM','REACTOR':@FM:'#DUE_DT':@FM:'SERV_DESC', 1 )

CONVERT @VM TO @FM IN ReactPMKeys

Make.List(0,ReactPMKeys,ReactorPMTable,@DICT)

* Start of printing process

FileName		= 'Reactor PM Report'
Title			= 'Printing Reactor PM Report'

TopMargin		= 1.0
BottomMargin	= 0.75
LeftMargin		= 0.5
RightMargin		= 0.5

Margins = LeftMargin:@FM:TopMargin:@FM:RightMargin:@FM:BottomMargin

PageSetup	= '0'	;* Landscape = 1
PrintSetup	= '2'	;* Preview Normal
PrintPath	= Printer_Select()

stat = Set_Printer('INIT',FileName,Title,Margins,PageSetup,PrintSetup,PrintPath)
IF stat < 0 THEN GOTO OIPrintErr

* Headings

DateRange = 'With Due Dates: Thru ':OCONV(Date()+60,'D4/')

Header = "'D'":@VM:obj_Install('Get_Prop','CompTitle'):' Reactor PM To Do Report':@VM:"Page  'P'"
Header<-1> = "'T'":@VM:DateRange
Header<-1> = ''																;* Blank line following heading

font	= 'Arial'
font<2>	= '10'
font<4>	= '1'		;* Bold

stat = Set_Printer('FONTHEADFOOT',font)	; IF stat < 0 THEN GOTO OIPrintErr
stat = Set_Printer('HEADER',Header)		; IF stat < 0 THEN GOTO OIPrintErr

Footer = " 'D' 'T'":@VM:@VM:"Page:  'P'"
stat = Set_Printer('FOOTER',Footer)		; IF stat < 0 THEN GOTO OIPrintErr

@RECCOUNT	= 0

FirstPass	= 1
LastRecord	= 0
FirstLine	= 1

* Make Column Heading

colHead = ''						; colFmt = ''
colHead<1,1>	= 'PM Key'			; colFmt<1,1> = '^1080'
colHead<1,2>	= 'Reactor'			; colFmt<1,2> = '^1080'
colHead<1,3>	= 'Due Dt'			; colFmt<1,3> = '^1800'
colHead<1,4> 	= 'React Serv ID'	; colFmt<1,4> = '^1440'
colHead<1,5>	= 'Service Desc'	; colFmt<1,5> = '~3660'

 
* Null Previous Break Buckets

PrevReactor=''
LastReactorBreak = 1

* * * * * * *
ReadRecord:
* * * * * * *

* Zero Break Flags to False

ReactorBreak=0
 
READNEXT @ID,WhichValue ELSE
	LastRecord		= 1
	ReactorBreak	= 1
	Reactor			= PrevReactor
END

SReactPMKey = @ID
 
IF FirstPass AND LastRecord THEN
	GOTO Bail
END

IF LastRecord THEN GOTO BREAKS

READ @RECORD From ReactorPMTable,@ID ELSE
	GOTO ReadRecord
END

@RECCOUNT += 1
 
* Calculate Value(s) for Column(s)
 
SReactPMKey		= {@ID}
IReactPMKey		= SReactPMKey
S.Reactor		= {REACTOR}
I.Reactor		= S.Reactor
SDueDt			= {DUE_DT}
IDueDt			= SDueDt
SReactServID	= {REACT_SERV_ID}
IReactServID	= SReactServID
SServDesc		= {SERV_DESC}
IServDesc		= SServDesc

* Test for Control Break(s)
 
IF (S.Reactor NE PrevReactor) OR ReactorBreak THEN
	Reactor			 = PrevReactor
	PrevReactor		 = S.Reactor
	ReactorBreak	+= 1
END
 
IF FirstPass THEN
	FirstPass = 0
	GOTO Detail
END

* * * * * * * 
Breaks:
* * * * * * *

* Print Break Total(s) and Accumulate Total(s)

IF ReactorBreak THEN

	NULL
	
END

* Perform Last Record Output If Done
* 
IF LastRecord THEN
	GOTO Bail
END

* * * * * * * 
DETAIL:
* * * * * * *

* DO CONVERSIONS IF ANY

IF S.Reactor NE "" THEN S.Reactor = OCONV(S.Reactor,"MD0")
IF SDueDt NE "" THEN SDueDt = OCONV(SDueDt,"D4/")
IF SReactServID NE "" THEN SReactServID = OCONV(SReactServID,"MD0")

* Print Detail Line
 
colData = ''
colData<1,1> = SReactPMKey
colData<1,2> = S.Reactor
colData<1,3> = SDueDt
colData<1,4> = SReactServID
colData<1,5> = SServDesc


GOSUB PrintTable
 
GOTO ReadRecord





* * * * * * *
Bail:
* * * * * * *

stat = Set_Printer('TERM',1)

RETURN


* * * * * * *
OIPrintErr:
* * * * * * *

ErrMsg(ErrorTitle:@SVM:ErrorMsg)
ErrMsg(ErrorTitle:@SVM:'Set_Printer returned errorcode ':stat)
stat = Set_Printer('TERM',1)

RETURN


* * * * * *
PrintTable:
* * * * * * 


stat = Set_Printer('CALCTABLE',colFmt:@FM:colData)
TableSize = Get_Printer('CALCTABLE')
TableHeight = TableSize<2>
Test = Get_Printer('POS')<2>

IF Get_Printer('POS')<2> + TableHeight > 9.00 OR FirstLine THEN
	IF NOT(FirstLine) THEN
		stat = Set_Printer('PAGEBREAK')
	END
	FirstLine = 0
	font<2> = 10
	font<4> = 1		;* Bold
	stat = Set_Printer('FONT',font,'100')

	stat = Set_Printer('ADDTABLE',colFmt,colHead,'',LTGREY$,'',0,TB_ALL)
	
	
	font<4> = 0
	stat = Set_Printer('FONT',font,fontSpacing)
	
	stat = Set_Printer('ADDTABLE',colFmt,'',colData,LTGREY$,'',0,7)
	
END ELSE
	font<2> = 10
	font<4> = 0
	stat = Set_Printer('FONT',font,fontSpacing)
	stat = Set_Printer('ADDTABLE',colFmt,'',colData,LTGREY$,'',1,TB_ALL)

END
	
RETURN
