compile SUBROUTINE Print_Order( OrderNo, Confirmation ) DECLARE FUNCTION SECURITY_CHECK, SET_PRINTER, GET_PRINTER, MSG, FIELDCOUNT, ENTID, REPOSITORY, PRINTER_SELECT DECLARE FUNCTION OBJ_INSTALL DECLARE SUBROUTINE SECURITY_ERR_MSG $INSERT SECURITY_RIGHTS_EQU $INSERT OIPRINT_EQUATES $INSERT MSG_EQUATES $INSERT QUOTE_EQU $INSERT ORDER_EQU $INSERT ORDER_DET_EQU $INSERT WO_LOG_EQU $INSERT WO_STEP_EQU $INSERT APPCOLORS $INSERT COC_EQU EQU PI$LEFT TO 1 EQU PI$TOP TO 2 EQU PI$RIGHT TO 3 EQU PI$BOTTOM TO 4 EQU PI$WIDTH TO 5 EQU PI$HEIGHT TO 6 EQU PI$SIZE TO 7 IF NOT(ASSIGNED(OrderNo)) THEN RETURN IF NOT(ASSIGNED(Confirmation)) THEN Confirmation = '' * * * PRINT SETUP * * * PageInfo = '' PageInfo = 0.25 ;* Margins PageInfo = 1.35 PageInfo = 0.25 PageInfo = 0.50 PageSetup = 1 ;* 1 = Landscape mode PrintSetup = '' PrintSetup<1,1> = '2' ;* Preview Normal PrintSetup<1,2> = '5' ;* Display all buttons except Printer Setup PrintSetup<1,3> = '0' ;* Display Printing Window PrintSetup<1,6> = '7' ;* Preview window - keyboard and mouse support stat = Set_Printer("INIT",'Printing','Order',PageInfo,PageSetup,PrintSetup) font = 'Arial' ;* Font basics font<2> = 10 font<4> = 0 stat = Set_Printer('FONTHEADFOOT', font) stat = Set_Printer('FOOTER',"Page 'P' ":@VM:@VM:"'T' 'D'") stat = Set_Printer('LINESTYLE', PS_SOLID:@FM:2) stat = Set_Printer('LINE', -0.1:@FM:-1.2:@FM:10.50:@FM:-1.2, 1) stat = Set_Printer('LINE', -0.1:@FM:-0.1:@FM:10.50:@FM:-0.1, 1) location = -.15:@fm:-1.150:@fm:1.57:@fm:1 stat = Set_Printer('BMP',obj_Install('Get_Prop','ColorBMP'),location, 0,1) * * * * Added 10/8/2015 JCH - Updated 'CONFIG','COMPANY' * * * * InstDat = obj_Install('Get_Prop','Company':@FM:'Division') Company = InstDat<1> Division = InstDat<2> font = 'Arial' font<2> = '12' ;* Big type font<4> = 1 ;* Bold on font<5> = 0 ;* Italics stat = Set_Printer('TEXTXY',Company,8.75:@FM:-1.15,font,1) stat = Set_Printer('TEXTXY',Division,8.75:@FM:-0.970,font,1) font<2> = 10 ;* 10 point font font<4> = 0 ;* Bold off font<5> = 0 ;* Italics Off stat = Set_Printer('TEXTXY',obj_Install('Get_Prop','Address'), 8.75:@fm:-0.775, font,1) stat = Set_Printer('TEXTXY',obj_Install('Get_Prop','CSZC'), 8.75:@fm:-0.625, font,1) stat = Set_Printer('TEXTXY','Tel: ':obj_Install('Get_Prop','Phone'), 8.75:@fm:-0.475, font, 1) stat = Set_Printer('TEXTXY','FAX: ':obj_Install('Get_Prop','FAX'), 8.75:@fm:-0.325, font, 1) * * * * End of changes 10/8/2015 JCH * * * * stat = Set_Printer('TEXTXY','Order No: ':OrderNo,4.25:@FM:-0.325,font,1) font<2> = '18' ;* Big type font<4> = 1 ;* Bold on font<5> = 1 ;* Italics IF Confirmation THEN stat = Set_Printer('TEXTXY','Confirmation of Order',3.5:@FM:-0.8,font,1) END ELSE stat = Set_Printer('TEXTXY','Customer Order',3.80:@FM:-0.8,font,1) END OrderRec = XLATE('ORDER',OrderNo,'','X') CustNo = OrderRec CustBillToInfo = XLATE('ORDER',OrderNo,'BILL_TO_INFO','X') CustShipToInfo = XLATE('ORDER',OrderNo,'SHIP_TO_INFO','X') VisionOrderNo = OrderRec PONo = OrderRec POLine = OrderRec PORel = OrderRec WOKeys = OrderRec IF POLine NE '' THEN PONo := CRLF$:'Line ':POLine END SWAP @TM WITH CRLF$ IN CustBillToInfo SWAP @TM WITH CRLF$ IN CustShipToInfo OrderDetail = '' OrderLotDetail = '' OrderTotalAmt = 0 OrderItemTotalAmt = 0 OrderTotalWafers = 0 OrderDetKeys = OrderRec FOR I = 1 TO COUNT(OrderDetKeys,@VM) + (OrderDetKeys NE '') OrderDetKey = OrderDetKeys<1,I> OrderLineItem = FIELD(OrderDetKey,'*',2) OrderDetRec = XLATE('ORDER_DET',OrderDetKey,'','X') CustPN = OrderDetRec SubPN = OrderDetRec ItemDesc = OrderDetRec Quote = OrderDetRec ItemQty = OrderDetRec UnitPrice = OrderDetRec ItemAmt = OCONV((ItemQty * UnitPrice),'MD2,') OrderItemTotalAmt += ItemQty OrderTotalAmt += (ItemQty * UnitPrice) UnitPrice = OCONV(UnitPrice,'MD2,') EpiPN = OrderDetRec WONo = OrderDetRec CustReqDt = OCONV(OrderDetRec,'D2/') PromiseDt = OCONV(OrderDetRec,'D2/') CustLotNos = OrderDetRec CustLotQtys = OrderDetRec FOR N = 1 TO COUNT(CustLotNos,@VM) + (CustLotNos NE '') OrderLotDetail = CustLotNos<1,N> OrderLotDetail = CustLotQtys<1,N> OrderTotalWafers += CustLotQtys<1,N> NEXT N SWAP @VM WITH CRLF$ IN CustLotNos SWAP @VM WITH CRLF$ IN CustLotQtys OrderLine = OrderLineItem:@VM OrderLine := ItemDesc:@VM OrderLine := Quote:@VM OrderLine := EpiPN:@VM OrderLine := CustPN:@VM OrderLine := SubPN:@VM OrderLine := ItemQty:@VM OrderLine := UnitPrice:@VM OrderLine := ItemAmt:@VM *OrderLine := CustReqDt:@VM OrderLine := PromiseDt:@VM OrderLine := WONo:@VM OrderLine := CustLotNos:@VM OrderLine := CustLotQtys OrderDetail = OrderLine NEXT I WODetail = '' FOR I = 1 TO COUNT(WOKeys,@VM) + (WOKeys NE '') WONo = WOKeys<1,I> WORec = XLATE('WO_LOG',WONo,'','X') RxDTM = WORec RelDTM = WORec OrderItems = WORec SWAP @VM WITH ', ' IN OrderItems WOStepKeys = WORec WODetail = WONo WODetail = OrderItems WODetail = OCONV(RxDTM,'DT2/^HS') WODetail = OCONV(RelDTM,'DT2/^HS') FOR N = 1 TO COUNT(WOStepKeys,@VM) + (WOStepKeys NE '') WOStepKey = WOStepKeys<1,N> WOStepRec = XLATE('WO_STEP',WOStepKey,'','X') StepNo = FIELD(WOStepKey,'*',2) StepPSN = WOStepRec StepDesc = WOStepRec WODetail = StepNo WODetail = StepPSN WODetail = StepDesc NEXT N NEXT I SWAP @SVM WITH CRLF$ IN WODetail colHeader = 'Order No' ; colFormat = '^1800' colHeader<1,2> = 'Vision Order No' ; colFormat<1,2> = '^1800' colHeader<1,3> = 'PO No' ; colFormat<1,3> = '^1800' colHeader<1,4> = 'PO Line No' ; colFormat<1,4> = '^1800' colHeader<1,5> = 'PO Rel No' ; colFormat<1,5> = '^1800' colData = OrderNo colData<1,2> = VisionOrderNo colData<1,3> = PONo colData<1,4> = POLine colData<1,5> = PORel font = 'Arial' ;* Font basics font<2> = 8 font<4> = 0 TableFormat = TB_ALL HeaderFormat = TB_ALL TablePos = 'L' HdrShade = LTGREY$ PrintHeads = 1 BoldHeader = 0 ULHeader = 0 ItalicHeader = 0 PrintHeads = 1 * Basic Order Information GOSUB PrintTable stat = Set_Printer('TEXT') * Bill to and Ship to Information * colHeader = 'Bill To' ; colFormat = '<5400' colHeader<1,2> = 'Ship To' ; colFormat<1,2> = '<5400' colData = CustBillToInfo colData<1,2> = CustShipToInfo PrintHeads = 1 GOSUB PrintTable stat = Set_Printer('TEXT') stat = Set_Printer('TEXT') * Order Detail Information * colHeader = 'Itm':CRLF$:'No' ; colFormat = '^450' colHeader<1,2> = 'Item Description' ; colFormat<1,2> = '<2700' colHeader<1,3> = 'Quote No' ; colFormat<1,3> = '^630' colHeader<1,4> = 'Epi Part No' ; colFormat<1,4> = '^1080' colHeader<1,5> = 'Cust Part No' ; colFormat<1,5> = '<1800' colHeader<1,6> = 'Substrate PN' ; colFormat<1,6> = '<1800' colHeader<1,7> = 'Item':CRLF$:'Qty' ; colFormat<1,7> = '>540' colHeader<1,8> = 'Unit':CRLF$:'Price' ; colFormat<1,8> = '>720' colHeader<1,9> = 'Item Amt' ; colFormat<1,9> = '>1080' colHeader<1,10> = 'Promise':CRLF$:'Date' ; colFormat<1,10> = '^900' colHeader<1,11> = 'WO No' ; colFormat<1,11> = '^900' colHeader<1,12> = 'Lot No' ; colFormat<1,12> = '<1800' colHeader<1,13> = 'Lot Qty' ; colFormat<1,13> = '>720' colData = OrderDetail fontSpacing = 120 PrintHeads = 1 GOSUB PrintTable stat = Set_Printer('TEXT') colHeader = '' ; colFormat = '>3330' colHeader<1,2> = '' ; colFormat<1,2> = '>5850' colHeader<1,3> = '' ; colFormat<1,3> = '>1800' colHeader<1,4> = '' ; colFormat<1,4> = '>4140' colData = 'Order Totals:' colData<1,2> = OCONV(OrderItemTotalAmt,'MD0,') colData<1,3> = OCONV(OrderTotalAmt,'MD2,$') colData<1,4> = OCONV(OrderTotalWafers,'MD0,') TableFormat = TB_COLUMNS_TOP_BOTTOM PrintHeads = 0 GOSUB PrintTable stat = Set_Printer('TEXT') stat = Set_Printer('TEXT') * * * * * * Print Work Order Detail * * * * * * colHeader = 'WO No' ; colFormat = '^1080' colHeader<1,2> = 'Order Item(s)' ; colFormat<1,2> = '<1440' colHeader<1,3> = 'Received' ; colFormat<1,3> = '<2160' colHeader<1,4> = 'Released' ; colFormat<1,4> = '<2160' colHeader<1,5> = 'WO Step' ; colFormat<1,5> = '^720' colHeader<1,6> = 'Step PSN' ; colFormat<1,6> = '^1080' colHeader<1,7> = 'Step Description' ; colFormat<1,7> = '<2440' colData = WODetail fontSpacing = 120 TableFormat = TB_ALL PrintHeads = 1 GOSUB PrintTable stat = Set_Printer('TEXT') Void = Set_Printer('TERM') RETURN * * * * * * PrintTable: * * * * * * FOR I = 1 TO COUNT(colData,@FM) + (colData NE '') stat = Set_Printer('CALCTABLE',colFormat:@FM:colData) TableSize = Get_Printer('CALCTABLE') TableHeight = TableSize<2> YPos = Get_Printer('POS')<2> IF YPos + TableHeight > 9.0 THEN FirstLine = 0 stat = Set_Printer('PAGEBREAK') font<2> = 8 IF BoldHeader THEN font<4> = 1 ELSE font<4> = 0 IF ULHeader THEN font<6> = 1 ELSE font<6> = 0 IF ItalicHeader THEN font<5> = 1 ELSE font<5> = 0 stat = Set_Printer('FONT',font,'100') IF HeaderFormat = '' THEN HeaderFormat = TableFormat stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',HdrShade,'',0,HeaderFormat:@FM:TablePos) font<4> = 0 font<5> = 0 font<6> = 0 stat = Set_Printer('FONT',font,fontSpacing) stat = Set_Printer('ADDTABLE',colFormat,'',colData,HdrShade,'',0,TableFormat:@FM:TablePos) END ELSE IF PrintHeads THEN IF BoldHeader THEN font<4> = 1 ELSE font<4> = 0 IF ULHeader THEN font<6> = 1 ELSE font<6> = 0 IF ItalicHeader THEN font<5> = 1 ELSE font<5> = 0 stat = Set_Printer('FONT',font,'100') IF HeaderFormat = '' THEN HeaderFormat = TableFormat stat = Set_Printer('ADDTABLE',colFormat,colHeader,'',HdrShade,'',0,HeaderFormat:@FM:TablePos) PrintHeads = 0 END font<2> = 8 font<4> = 0 font<5> = 0 font<6> = 0 stat = Set_Printer('FONT',font,fontSpacing) stat = Set_Printer('ADDTABLE',colFormat,'',colData,HdrShade,'',1,TableFormat:@FM:TablePos) END NEXT I RETURN