open-insight/LSL2/STPROC/PRINT_MANIFEST.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

259 lines
6.5 KiB
Plaintext

COMPILE SUBROUTINE Print_Manifest(WONo, CassNo)
#pragma precomp SRP_PreCompiler
/*
Print Manifest Report
08/27/2021 - Daniel Stieber - Adapted from PRINT_DEMAND subroutine.
*/
DECLARE SUBROUTINE Utility, ErrMsg, Set_Status, Set_Printer, RList, SRP_Stopwatch
DECLARE FUNCTION Set_Printer, Get_Printer, Msg, Get_Status, Printer_Select, obj_Install, Dialog_Box, obj_Location
$INSERT OIPRINT_EQUATES
$INSERT WO_LOG_EQUATES
$INSERT APPCOLORS
$INSERT MSG_EQUATES
$INSERT LOGICAL
$INSERT SCHEDULE_EQU
$INSERT WO_WFR_EQUATES
EQU TAB$ TO \09\
EQU TARGET_ACTIVELIST$ TO 5
Main:
ErrorTitle = 'Error in stored procedure Print_Manifest'
ErrCode = ''
ErrorMsg = ''
OPEN 'WO_WFR' TO WOWfrTable ELSE
ErrorMsg = 'Unable to open "SCHED_DET" table.'
ErrMsg(ErrorTitle:@SVM:ErrorMsg)
RETURN
END
OPEN 'DICT.WO_WFR' TO @DICT ELSE
ErrorMsg = 'Unable to open "DICT.WO_WFR" table.'
ErrMsg(ErrorTitle:@SVM:ErrorMsg)
RETURN
END
TotalWafers = Xlate('WO_MAT_WFR', WONo:'*':CassNo, 'OUT_WFR_QTY', 'X')
WOWfrKeys = Xlate('WO_MAT_WFR', WONo:'*':CassNo, 'OUT_WFR_ID', 'X')
Swap @VM with @FM in WOWfrKeys
CALL Make.List(0, WOWfrKeys, WOWfrTable, @DICT)
CustNo = Xlate('WO_LOG', WONo, 'CUST_NO', 'X')
CustName = Xlate('COMPANY', CustNo, 'CO_NAME', 'X')
PartNo = Xlate('WO_LOG', WONo, 'EPI_PART_NO', 'X')
PONo = Xlate('WO_LOG', WONo, 'PROD_ORD_NO', 'X')
Header = ''
Header<1> = 'Work Order # ':WONo:@VM:'Shipping Destination: ':CustName:' - Box ':CassNo:@VM
Header<2> = @VM:'Part # ':PartNo:@VM
Header<3> = 'Total Wafers = ':TotalWafers:@VM:'PO # ':PONo:@VM
Set_Status(0)
* Start of printing process
FileName = 'Print Manifest'
Title = 'Printing Manifest'
TopMargin = 1.5
BottomMargin = 1.0
LeftMargin = 1.0
RightMargin = 1.0
Margins = LeftMargin:@FM:TopMargin:@FM:RightMargin:@FM:BottomMargin
PageSetup = '1' ;* LandScape
PrintSetup = '2' ;* Preview Normal
PrintSetup<1,2> = '0' ;* All buttons
PrintSetup<1,5> = '1' ;* Page Range
PrintSetup<1,6> = 7 ;* full mouse and keyboard support
PrintPath = ''
stat = Set_Printer('INIT',FileName,Title,Margins,PageSetup,PrintSetup,PrintPath)
IF stat < 0 THEN
ErrorMsg = 'Stat = ' : Stat : ', PrintPath = ' : PrintPath
GOTO OIPrintErr
end
DateRange = 'Effective ':OCONV(Date(),'D4')
Header<-1> = ''
font = 'Arial'
font<2> = '14'
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
@RECCOUNT = 0
FirstPass = 1
LastRecord = 0
FirstLine = 1
fontSpacing = 100
* Make Column Heading
ColHead = '' ; ColFmt = ''
ColHead<1,1> = 'Wafer ID' ; ColFmt<1,1> = '+^2500'
ColHead<1,2> = 'Scribe' ; ColFmt<1,2> = '+^2500'
ColHead<1,3> = 'Epi Structure' ; ColFmt<1,3> = '+^2500'
ColHead<1,4> = 'Grade' ; ColFmt<1,4> = '+^2500'
ColHead<1,5> = 'WaferThickness (um)' ; ColFmt<1,5> = '+^2500'
ColHead<1,6> = 'Slot' ; ColFmt<1,6> = '+^700'
* Zero Accumulators For Each Break
Last.Break = 1
* * * * * * *
ReadRecord:
* * * * * * *
* Zero Break Flags To False
Break = 0
READNEXT @ID, Which.Value ELSE LastRecord = 1
IF FirstPass AND LastRecord THEN
GOTO Bail
END
IF LastRecord THEN GOTO BREAKS
READO @RECORD FROM WOWfrTable,@ID ELSE
GOTO ReadRecord
END
@RECCOUNT += 1
* Calculate Value(s) For Column(s)
WaferID = {GAN_WFR_ID}
Scribe = {SCRIBE}
EpiStruct = {EPI_STRUCTURE}
Grade = {GRADE}
WfrThick = {SUB_THICK}
Slot = {SHIP_SLOT}
IF FirstPass THEN
FirstPass = 0
GOTO DETAIL
END
* * * * * * *
BREAKS:
* * * * * * *
* Perform Last Record Output If Done
IF LastRecord THEN
colData = ''
GOTO Bail
END
* * * * * * *
DETAIL:
* * * * * * *
* PRINT DETAIL LINE
COLDATA = ''
RowNumber = 1
COLDATA<RowNumber,1> = WaferID
COLDATA<RowNumber,2> = Scribe
COLDATA<RowNumber,3> = EpiStruct
COLDATA<RowNumber,4> = Grade
COLDATA<RowNumber,5> = WfrThick
COLDATA<RowNumber,6> = Slot
If COLDATA NE '' then 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:
* * * * * *
PageHeight = Get_Printer('PAGESIZE')<2>
PrintableHeight = PageHeight - TopMargin - BottomMargin
PrinterHeight = Get_Printer('POS')<2>
stat = Set_Printer('CALCTABLE',ColFmt:@FM:ColData)
TableSize = Get_Printer('CALCTABLE')
TableHeight = TableSize<2>
fontSpacing = 120
IF ( TableHeight + PrinterHeight >= PrintableHeight ) 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
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ClearCursors:
For counter = 0 to 8
ClearSelect counter
Next counter
return