added LSL2 stored procedures
This commit is contained in:
737
LSL2/STPROC/PRINT_SAP_CASS_SHIP_LABEL.txt
Normal file
737
LSL2/STPROC/PRINT_SAP_CASS_SHIP_LABEL.txt
Normal file
@ -0,0 +1,737 @@
|
||||
COMPILE SUBROUTINE Print_SAP_Cass_Ship_Label( WONo,WOSteps,CassNos,RDSNos,RDSType )
|
||||
#pragma precomp SRP_PreCompiler
|
||||
|
||||
/*
|
||||
Complete Rewrite SAP changes 7/26/2011 by John C. Henry, J.C. Henry & Co., Inc.
|
||||
DPC 12/5/19 - removed thickness and resistivity from SAP shipping label per Matt T.
|
||||
DPC 3/11/21 - changed RevLvl to pull from CUST_EPI_PART instead of PROD_SPEC
|
||||
DPC 1/12/22 - with help of Daniel at SRP, changed some print functions to allow defaulting printer
|
||||
*/
|
||||
|
||||
$INSERT LOGICAL
|
||||
$INSERT MSG_EQUATES
|
||||
$INSERT RDS_EQU
|
||||
|
||||
$INSERT PROD_VER_EQUATES
|
||||
$INSERT OIPRINT_EQUATES
|
||||
$INSERT PROD_SPEC_EQU
|
||||
$INSERT PRS_LAYER_EQU
|
||||
$INSERT WO_LOG_EQUATES
|
||||
$INSERT WO_STEP_EQU
|
||||
$INSERT WO_MAT_EQUATES
|
||||
$INSERT WM_OUT_EQUATES
|
||||
$INSERT ORDER_EQU
|
||||
$INSERT ORDER_DET_EQU
|
||||
$INSERT REACTOR_EQUATES
|
||||
$INSERT REACT_RUN_EQUATES
|
||||
$INSERT COMPANY_EQUATES
|
||||
$INSERT CUST_EPI_PART_EQUATES
|
||||
$Insert EPI_PART_EQUATES
|
||||
|
||||
DECLARE FUNCTION Msg, Get_Printer, Set_Printer, obj_Prod_Spec, obj_Vendor_Code, Logging_Services, Unassigned, Obj_Wo_Mat
|
||||
DECLARE FUNCTION Get_Status, Utility, Printer_Select, obj_Install, Environment_Services, Direct_Print
|
||||
Declare function GaN_Services, Error_Services
|
||||
DECLARE SUBROUTINE Set_Status, Msg, errMsg, obj_Zebra105SL, Logging_Services, Direct_Print, Sap_Services
|
||||
|
||||
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
|
||||
|
||||
ErrorMsg = ''
|
||||
|
||||
IF NOT(ASSIGNED(WONo)) THEN ErrorMsg = 'Unassigned parameter "WONo" passed to PRINT_CASS_SHIP_LABEL routine.'
|
||||
IF NOT(ASSIGNED(WOSteps)) THEN ErrorMsg = 'Unassigned parameter "WOSteps" passed to PRINT_CASS_SHIP_LABEL routine.'
|
||||
IF NOT(ASSIGNED(CassNos)) THEN ErrorMsg = 'Unassigned parameter "CassNos" passed to PRINT_CASS_SHIP_LABEL routine.'
|
||||
IF NOT(ASSIGNED(RDSNos)) THEN ErrorMsg = 'Unassigned parameter "RDSNos" passed to PRINT_CASS_SHIP_LABEL routine.'
|
||||
|
||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Zebra'
|
||||
LogDate = Oconv(Date(), 'D4/')
|
||||
LogTime = Oconv(Time(), 'MTS')
|
||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : '.csv'
|
||||
Headers = 'Logging DTM' : @FM : 'Description'
|
||||
ColumnWidths = 20 : @FM : 300
|
||||
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$)
|
||||
|
||||
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Spectrum'
|
||||
LogDate = Oconv(Date(), 'D4/')
|
||||
LogTime = Oconv(Time(), 'MTS')
|
||||
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : '.csv'
|
||||
Headers = 'Logging DTM' : @FM : 'Description'
|
||||
ColumnWidths = 20 : @FM : 300
|
||||
objSpectrumLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, ' ', Headers, ColumnWidths, False$, False$)
|
||||
|
||||
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
||||
|
||||
IF ErrorMsg NE '' THEN
|
||||
ErrMsg(ErrorMsg)
|
||||
RETURN
|
||||
END
|
||||
|
||||
PrinterID = ''
|
||||
* PrinterID = 'MESZBRPRT004' ;*default to the shipping printer, which is the only printer with 4x4 label stock
|
||||
|
||||
* Initialize the printer
|
||||
FileName = "Printing Label"
|
||||
Title = "Printing Label" ;* Initialize Printing
|
||||
|
||||
PageInfo = ''
|
||||
PageInfo<PI$LEFT> = 0.1
|
||||
PageInfo<PI$TOP> = 0.1
|
||||
PageInfo<PI$RIGHT> = 0.1
|
||||
PageInfo<PI$BOTTOM> = 0.1
|
||||
|
||||
PageSetup = '1' ;* Landscape
|
||||
PrintSetup = '0' ;* Print to specific location
|
||||
PrintPath = Printer_Select(PrinterID);* Select printer - Displays popup if PrinterPort not found
|
||||
PrintPathLog = PrintPath
|
||||
|
||||
Swap @FM with '@FM' in PrintPathLog
|
||||
Swap @VM with '@VM' in PrintPathLog
|
||||
Swap @SVM with '@SVM' in PrintPathLog
|
||||
Swap @TM with '@TM' in PrintPathLog
|
||||
Swap @STM with '@STM' in PrintPathLog
|
||||
Logging_Services('AppendLog', objLog, LoggingDTM : @FM : @User4 : ' - PrintPath = ' : PrintPathLog, @RM, @FM)
|
||||
|
||||
IF PrintPath = '' THEN
|
||||
Def = ""
|
||||
Def<MTYPE$> = "TA3"
|
||||
Def<MTEXT$> = 'Destination Printer not Selected..'
|
||||
Def<MCAPTION$> = ''
|
||||
Def<MICON$> = '*'
|
||||
Msg(@WINDOW, Def, '')
|
||||
RETURN
|
||||
END
|
||||
|
||||
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
|
||||
stat = Set_Printer("INIT",FileName,Title,PageInfo,PageSetup,PrintSetup,PrintPath)
|
||||
end else
|
||||
stat = Direct_Print('START', PrintPath<1>, '', '')
|
||||
end
|
||||
IF stat < 0 THEN GOSUB OIPrint_Err ;* Bail = couldn't initialize the printer
|
||||
|
||||
If Unassigned(RDSType) then RDSType = ''
|
||||
|
||||
IF RDSType EQ '' then
|
||||
ReactNos = XLATE('REACT_RUN',RDSNos,REACT_RUN_REACTOR$,'X') ;* Added 12/16/2008 - JCH - Adding Reactor Type codes to cassette labels
|
||||
ReactTypes = OCONV(XLATE('REACTOR',ReactNos,REACTOR_REACT_TYPE$,'X'),'[REACT_TYPE_CONV,OPSREF]') ;* Added 12/16/2008 - JCH - Adding Reactor Type codes to cassette labels
|
||||
end else
|
||||
ReactTypes = RDSType
|
||||
end
|
||||
|
||||
WORec = XLATE('WO_LOG',WONo,'','X')
|
||||
|
||||
WoLogReqShipDt = OCONV( WORec<WO_LOG_PROMISE_SHIP_DT$>, 'D2/' )
|
||||
WoLogDMShipDt = OCONV( WORec<WO_LOG_PROMISE_SHIP_DT$>, 'DE' )
|
||||
WoLogCustPONo = WORec<WO_LOG_CUST_PO_NO$>
|
||||
WoLogEpiPartNo = WORec<WO_LOG_EPI_PART_NO$>
|
||||
WoLogCustNo = WORec<WO_LOG_CUST_NO$>
|
||||
|
||||
ProdOrdNo = WORec<WO_LOG_PROD_ORD_NO$>
|
||||
ProdVerNo = WORec<WO_LOG_PROD_VER_NO$>
|
||||
ProdVerRec = XLATE('PROD_VER',ProdVerNo,'','X')
|
||||
|
||||
CompRec = XLATE('COMPANY',WoLogCustNo,'','X')
|
||||
|
||||
Captive = CompRec<COMPANY_CAPTIVE$>
|
||||
VendCd = CompRec<COMPANY_VEND_CD$>
|
||||
CustName = CompRec<COMPANY_CO_NAME$>
|
||||
|
||||
IF ProdOrdNo NE '' THEN
|
||||
IF WoLogCustPONo = 'NA' OR WoLogCustPONo = '' THEN
|
||||
PONo = ProdOrdNo
|
||||
END ELSE
|
||||
PONo = WoLogCustPONo
|
||||
END
|
||||
OrderItems = ''
|
||||
VisionOrderNo = ''
|
||||
VisionLineNos = ''
|
||||
END
|
||||
|
||||
CassCnt = COUNT(CassNos,@VM) + (CassNos NE '')
|
||||
|
||||
FOR I = 1 TO CassCnt
|
||||
|
||||
WOStep = WOSteps<1,I>
|
||||
ProdSpecID = XLATE('WO_STEP',WONo:'*':WOStep,WO_STEP_PROD_SPEC_ID$,'X')
|
||||
RevLvl = XLATE('CUST_EPI_PART',WoLogCustNo:'*':WoLogEpiPartNo,CUST_EPI_PART_SPEC_REV$,'X')[-1,'B':@VM] ;* use rev from Cust Epi Part, not PSN
|
||||
CassNo = CassNos<1,I>
|
||||
RDSNo = RDSNos<1,I>
|
||||
ReactType = Xlate('WO_MAT', WONo:'*':CassNo,'REACTOR_TYPE','X')
|
||||
WOMatRec = XLATE('WO_MAT',WONo:'*':CassNo,'','X')
|
||||
ReShipCust = WOMatRec<WO_MAT_RESHIP_CUST_NO$>
|
||||
If ReShipCust EQ '' then
|
||||
CustNo = WoLogCustNo
|
||||
end else
|
||||
CustNo = ReShipCust
|
||||
end
|
||||
CompRec = XLATE('COMPANY',CustNo,'','X')
|
||||
Captive = CompRec<COMPANY_CAPTIVE$>
|
||||
VendCd = CompRec<COMPANY_VEND_CD$>
|
||||
CustName = CompRec<COMPANY_CO_NAME$>
|
||||
ReShipDate = WOMatRec<WO_MAT_RESHIP_DT$>
|
||||
If ReShipDate EQ '' then
|
||||
ReqShipDt = OCONV( WORec<WO_LOG_PROMISE_SHIP_DT$>, 'D2/' )
|
||||
DMShipDt = OCONV( WORec<WO_LOG_PROMISE_SHIP_DT$>, 'DE' )
|
||||
end else
|
||||
ReqShipDt = OCONV( ReShipDate, 'D2/' )
|
||||
DMShipDt = OCONV( ReShipDate, 'DE' )
|
||||
end
|
||||
ReShipCustEpiPartNo = WOMatRec<WO_MAT_RESHIP_CUST_EPI_PART_NO$>
|
||||
If ReShipCustEpiPartNo EQ '' then
|
||||
EpiPartNo = WoLogEpiPartNo
|
||||
end else
|
||||
EpiPartNo = ReShipCustEpiPartNo
|
||||
end
|
||||
ReShipCustPO = WOMatRec<WO_MAT_RESHIP_CUST_PO$>
|
||||
If ReShipCustPO EQ '' then
|
||||
CustPONo = WoLogCustPONo
|
||||
end else
|
||||
CustPONo = ReShipCustPO
|
||||
end
|
||||
IF CustPONo = 'NA' OR CustPONo = '' THEN
|
||||
PONo = ProdOrdNo
|
||||
END ELSE
|
||||
PONo = CustPONo
|
||||
END
|
||||
ReShipCustPartNo = WOMatRec<WO_MAT_RESHIP_CUST_PART_NO$>
|
||||
SAPBatchNo = WOMatRec<WO_MAT_SAP_BATCH_NO$>
|
||||
|
||||
SubSupplier = obj_Vendor_Code('SemiToEpi',WOMatRec<WO_MAT_SUB_VEND_CD$>)
|
||||
|
||||
IF VendCd NE '' THEN SubSupplier = VendCd ;* Override from Company Table.
|
||||
|
||||
Begin Case
|
||||
Case (RDSNo NE '' AND RDSType EQ 'SIC') OR (RDSNo NE '' AND ReactType<1,I> NE 'EPP' AND ReactType<1,I> NE 'GAN') ;* regular Epi
|
||||
//if @UserName EQ 'DAN_CR' then debug
|
||||
CassIDLabel = 'RDSNo: '
|
||||
CassID = RDSNo
|
||||
ReactType = ReactTypes<1,I>
|
||||
|
||||
MakeupBox = WOMatRec<WO_MAT_MAKEUP_BOX$>
|
||||
PartNo = XLATE('WO_LOG',WONo,WO_LOG_CUST_PART_NO$,'X')
|
||||
If ReShipCustPartNo NE '' then
|
||||
PartNo = ReShipCustPartNo
|
||||
end
|
||||
LotNo = WOMatRec<WO_MAT_LOT_NO$>
|
||||
SubstrPartNo = WOMatRec<WO_MAT_SUB_PART_NO$>
|
||||
|
||||
IF SubstrPartNo[-2,2] _EQC '.S' THEN SubstrPartNo = ''
|
||||
|
||||
CassOrderItem = WOMatRec<WO_MAT_ORDER_ITEM$>
|
||||
|
||||
IF ProdVerNo = '' THEN
|
||||
CustPNDesc = XLATE( 'ORDER_DET',WONo:'*':CassOrderItem,'CUST_PN_DESC','X')
|
||||
END ELSE
|
||||
CustPNDesc = XLATE('PROD_VER',ProdVerNo,PROD_VER_CUST_PART_DESC$,'X')
|
||||
END
|
||||
|
||||
SupVerify = XLATE( 'RDS', RDSNo, 'SUP_VER_SIG_NAME', 'X' )
|
||||
SupVerifyDt = OCONV(XLATE('WO_MAT',WONo:'*':CassNo,'SHIP_SUP_VER_SIG_DT','X'),'D2/')
|
||||
WfrsOut = XLATE( 'RDS', RDSNo, 'WFRS_OUT', 'X' )
|
||||
MUWfrsRemQty = XLATE( 'RDS', RDSNo, 'MU_WFRS_REMOVED','X' )
|
||||
MUWfrsAddQty = XLATE( 'RDS', RDSNo, 'MU_WFRS_ADDED','X' )
|
||||
|
||||
ResultThickL1 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'TTHICK_AVG', 'X' ), 'MD2' )
|
||||
ResultThickL2 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'TTHICK_AVG_L2', 'X' ), 'MD2' )
|
||||
ResultThickL3 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'TTHICK_AVG_L3', 'X' ), 'MD2' )
|
||||
|
||||
TargetThickL1 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'THICK_TARGET', 'X' ), 'MD2' )
|
||||
TargetThickL2 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'THICK_TARGET_L2', 'X' ), 'MD2' )
|
||||
TargetThickL3 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'THICK_TARGET_L3', 'X' ), 'MD2' )
|
||||
|
||||
IF ResultThickL1 = '' THEN ResultThickL1 = TargetThickL1
|
||||
IF ResultThickL2 = '' THEN ResultThickL2 = TargetThickL2
|
||||
IF ResultThickL3 = '' THEN ResultThickL3 = TargetThickL3
|
||||
|
||||
ThickUnitsL1 = XLATE( 'REACT_RUN', RDSNo, 'THICK_UNITS', 'X' )
|
||||
ThickUnitsL2 = XLATE( 'REACT_RUN', RDSNo, 'THICK_UNITS_L2', 'X' )
|
||||
ThickUnitsL3 = XLATE( 'REACT_RUN', RDSNo, 'THICK_UNITS_L3', 'X' )
|
||||
|
||||
ResultThick = ResultThickL1
|
||||
IF ResultThickL2 NE '' THEN ResultThick := '/':ResultThickL2
|
||||
IF ResultThickL3 NE '' THEN ResultThick := '/':ResultThickL3
|
||||
|
||||
IF ResultThick NE '' THEN ResultThick := ThickUnitsL1
|
||||
|
||||
ResultResL1 = XLATE( 'REACT_RUN', RDSNo, 'TRES_AVG', 'X' )
|
||||
ResultResL2 = XLATE( 'REACT_RUN', RDSNo, 'TRES_AVG_L2', 'X' )
|
||||
ResultResL3 = XLATE( 'REACT_RUN', RDSNo, 'TRES_AVG_L3', 'X' )
|
||||
|
||||
TargetResL1 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'RES_TARGET', 'X' ), 'MD3' )
|
||||
TargetResL2 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'RES_TARGET_L2', 'X' ), 'MD3' )
|
||||
TargetResL3 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'RES_TARGET_L3', 'X' ), 'MD3' )
|
||||
|
||||
IF ResultResL1 = '' THEN ResultResL1 = TargetResL1
|
||||
IF ResultResL2 = '' THEN ResultResL2 = TargetResL2
|
||||
IF ResultResL3 = '' THEN ResultResL3 = TargetResL3
|
||||
|
||||
ResUnitsL1 = XLATE( 'REACT_RUN', RDSNo, 'RES_UNITS', 'X' )
|
||||
ResUnitsL2 = XLATE( 'REACT_RUN', RDSNo, 'RES_UNITS_L2', 'X' )
|
||||
ResUnitsL3 = XLATE( 'REACT_RUN', RDSNo, 'RES_UNITS_L3', 'X' )
|
||||
|
||||
ResultRes = ResultResL1
|
||||
|
||||
IF ResultResL2 NE '' THEN ResultRes := '/':ResultResL2
|
||||
IF ResultResL3 NE '' THEN ResultRes := '/':ResultResL3
|
||||
|
||||
IF ResultRes NE '' THEN ResultRes := ResUnitsL1
|
||||
|
||||
ResultResMin = XLATE( 'REACT_RUN', RDSNo, 'TRES_MIN', 'X' )
|
||||
ResultResMax = XLATE( 'REACT_RUN', RDSNo, 'TRES_MAX', 'X' )
|
||||
|
||||
TargetConL1 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'CON_TARGET', 'X' )<1,1>, 'MS21' )
|
||||
TargetConL2 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'CON_TARGET_L2', 'X' ), 'MS21' )
|
||||
TargetConL3 = OCONV( XLATE( 'REACT_RUN', RDSNo, 'CON_TARGET_L3', 'X' ), 'MS21' )
|
||||
|
||||
ConUnitsL1 = XLATE( 'REACT_RUN', RDSNo, 'CON_UNITS', 'X' )
|
||||
ConUnitsL2 = XLATE( 'REACT_RUN', RDSNo, 'CON_UNITS_L2', 'X' )
|
||||
ConUnitsL3 = XLATE( 'REACT_RUN', RDSNo, 'CON_UNITS_L3', 'X' )
|
||||
|
||||
ResultCon = TargetConL1
|
||||
IF TargetConL2 NE '' THEN ResultCon := '/':TargetConL2
|
||||
IF TargetConL3 NE '' THEN ResultCon := '/':TargetConL3
|
||||
IF ResultCon NE '' THEN ResultCon := ConUnitsL1
|
||||
|
||||
Case (ReactType EQ 'EPP') or (ReactType EQ 'P') ; * EpiPro
|
||||
|
||||
WMOutKey = WONo:'*':WOStep:'*':CassNo
|
||||
WMOutRec = XLATE('WM_OUT',WMOutKey,'','X')
|
||||
|
||||
MakeupBox = WMOutRec<WM_OUT_MAKEUP_BOX$>
|
||||
|
||||
CassIDLabel = 'WMONo: '
|
||||
CassID = WMOutKey
|
||||
|
||||
CONVERT '*' TO '.' IN CassID
|
||||
|
||||
ReactType = 'EpiPro' ;* * * * 12/17/2008 Harded coded reactor type for EpiPro reactors
|
||||
|
||||
SupVerify = WMOutRec<WM_OUT_SUP_VER_SIG$>
|
||||
SupVerifyDt = OCONV(XLATE('WO_MAT',WONo:'*':CassNo,'SHIP_SUP_VER_SIG_DT','X'),'D2/')
|
||||
|
||||
InCassNo1 = ''
|
||||
InSlotNo1 = ''
|
||||
MUWoNo1 = ''
|
||||
MUCassNo1 = ''
|
||||
MUSlotNo1 = ''
|
||||
|
||||
PartNo = ''
|
||||
LotNo = ''
|
||||
SubstrPartNo = ''
|
||||
CassOrderItem = ''
|
||||
CustPNDesc = ''
|
||||
|
||||
Pointer = 1
|
||||
LOOP
|
||||
IF WMOutRec<WM_OUT_MU_WO_NO$,Pointer> = '' THEN
|
||||
InCassNo1 = WMOutRec<WM_OUT_IN_CASS_NO$,Pointer>
|
||||
InSlotNo1 = WMoutRec<WM_OUT_IN_SLOT_NO$,Pointer>
|
||||
END ELSE
|
||||
IF MUWoNo1 = '' THEN
|
||||
MUWoNo1 = WMOutRec<WM_OUT_MU_WO_NO$,Pointer>
|
||||
MUCassNo1 = WMOutRec<WM_OUT_MU_CASS_NO$,Pointer>
|
||||
MUSlotNo1 = WMOutRec<WM_OUT_MU_SLOT_NO$,Pointer>
|
||||
END
|
||||
END
|
||||
|
||||
UNTIL InCassNo1 NE '' OR Pointer > 25
|
||||
|
||||
Pointer += 1
|
||||
REPEAT
|
||||
|
||||
IF InCassNo1 NE '' THEN
|
||||
WOMatRec = XLATE('WO_MAT',WONo:'*':InCassNo1,'','X')
|
||||
PartNo = XLATE('WO_LOG',WONo,WO_LOG_CUST_PART_NO$,'X')
|
||||
LotNo = WOMatRec<WO_MAT_LOT_NO$>
|
||||
SubstrPartNo = WOMatRec<WO_MAT_SUB_PART_NO$>
|
||||
|
||||
END ELSE
|
||||
IF MUWoNo1 NE '' AND MUCassNo1 NE '' THEN
|
||||
MUWOMatRec = XLATE('WO_MAT',MUWoNo1:'*':MUCassNo1,'','X')
|
||||
PartNo = XLATE('WO_LOG',MUWoNo1,WO_LOG_CUST_PART_NO$,'X')
|
||||
LotNo = MUWOMatRec<WO_MAT_LOT_NO$>
|
||||
SubstrPartNo = MUWOMatRec<WO_MAT_SUB_PART_NO$>
|
||||
|
||||
END
|
||||
END
|
||||
If ReShipCustPartNo NE '' then
|
||||
PartNo = ReShipCustPartNo
|
||||
end
|
||||
WfrsOut = XLATE('WM_OUT',WMOutKey,'WFRS_OUT','X')
|
||||
MUWfrsRemQty = ''
|
||||
MUWfrsAddQty = ''
|
||||
|
||||
Specs = obj_Prod_Spec('GetLayerProp',ProdSpecID)
|
||||
|
||||
ResultThick = ''
|
||||
ResultRes = ''
|
||||
ResultResMin = ''
|
||||
ResultResMax = ''
|
||||
ResultCon = ''
|
||||
|
||||
LayerCount = COUNT(Specs,@RM) + (Specs NE '')
|
||||
|
||||
FOR Layer = 1 TO LayerCount
|
||||
|
||||
LayerSpecs = FIELD(Specs,@RM,Layer)
|
||||
LayerSpecs = FIELD(LayerSpecs,@FM,2,99) ;* Pull of the layer set ID
|
||||
|
||||
IF LayerSpecs<PRS_LAYER_THICK_TARGET$> NE '' THEN
|
||||
ResultThick := LayerSpecs<PRS_LAYER_THICK_TARGET$>
|
||||
END
|
||||
|
||||
IF LayerSpecs<PRS_LAYER_RES_TARGET$> NE '' THEN
|
||||
ResultRes := LayerSpecs<PRS_LAYER_RES_TARGET$>
|
||||
ResultResMin := LayerSpecs<PRS_LAYER_RES_MIN$>
|
||||
ResultResMax := LayerSpecs<PRS_LAYER_RES_MAX$>
|
||||
END
|
||||
|
||||
IF LayerSpecs<PRS_LAYER_CONC_TARGET$> NE '' THEN
|
||||
ResultCon := LayerSpecs<PRS_LAYER_CONC_TARGET$>
|
||||
END
|
||||
|
||||
IF Layer < LayerCount THEN
|
||||
IF ResultThick NE '' THEN ResultThick := '/'
|
||||
IF ResultRes NE '' THEN ResultRes := '/'
|
||||
IF ResultResMin NE '' THEN ResultResMin := '/'
|
||||
IF ResultResMax NE '' THEN ResultResMax := '/'
|
||||
IF ResultCon NE '' THEN ResultCon := '/'
|
||||
END ELSE
|
||||
IF ResultThick NE '' THEN ResultThick := LayerSpecs<PRS_LAYER_THICK_UNITS$>
|
||||
IF ResultRes NE '' THEN ResultRes := LayerSpecs<PRS_LAYER_RES_UNITS$>
|
||||
IF ResultResMin NE '' THEN ResultResMin := LayerSpecs<PRS_LAYER_RES_UNITS$>
|
||||
IF ResultResMax NE '' THEN ResultResMax := LayerSpecs<PRS_LAYER_RES_UNITS$>
|
||||
IF ResultCon NE '' THEN ResultCon := LayerSpecs<PRS_LAYER_CONC_UNITS$>
|
||||
END
|
||||
|
||||
NEXT Layer
|
||||
|
||||
Case ReactType EQ 'GAN'
|
||||
|
||||
WOMatKey = WONo:'*':CassNo
|
||||
MakeupBox = False$
|
||||
CassIDLabel = 'WOMatNo: '
|
||||
CassID = WOMatKey
|
||||
MUWfrsAddQty = 0
|
||||
|
||||
SupVerify = WOMatRec<WO_MAT_CASS_FINAL_SIG$>
|
||||
SupVerifyDt = WOMatRec<WO_MAT_CASS_FINAL_SIG_DTM$>
|
||||
|
||||
InCassNo1 = ''
|
||||
InSlotNo1 = ''
|
||||
MUWoNo1 = ''
|
||||
MUCassNo1 = ''
|
||||
MUSlotNo1 = ''
|
||||
|
||||
PartNo = ''
|
||||
LotNo = ''
|
||||
SubstrPartNo = ''
|
||||
CassOrderItem = ''
|
||||
CustPNDesc = ''
|
||||
|
||||
IF InCassNo1 NE '' THEN
|
||||
WOMatRec = XLATE('WO_MAT',WONo:'*':InCassNo1,'','X')
|
||||
PartNo = XLATE('WO_LOG',WONo,WO_LOG_CUST_PART_NO$,'X')
|
||||
LotNo = WOMatRec<WO_MAT_LOT_NO$>
|
||||
SubstrPartNo = WOMatRec<WO_MAT_SUB_PART_NO$>
|
||||
|
||||
END ELSE
|
||||
IF MUWoNo1 NE '' AND MUCassNo1 NE '' THEN
|
||||
MUWOMatRec = XLATE('WO_MAT',MUWoNo1:'*':MUCassNo1,'','X')
|
||||
PartNo = XLATE('WO_LOG',MUWoNo1,WO_LOG_CUST_PART_NO$,'X')
|
||||
LotNo = MUWOMatRec<WO_MAT_LOT_NO$>
|
||||
SubstrPartNo = MUWOMatRec<WO_MAT_SUB_PART_NO$>
|
||||
|
||||
END
|
||||
END
|
||||
If ReShipCustPartNo NE '' then
|
||||
PartNo = ReShipCustPartNo
|
||||
end
|
||||
|
||||
//WfrsOut = Count(Xlate('WO_MAT_WFR', WOMatKey, 'OUT_WFR_ID', 'X'), @VM)
|
||||
WfrsOut = obj_WO_Mat('CurrWaferCnt',WOMatKey)
|
||||
|
||||
Specs = obj_Prod_Spec('GetLayerProp',ProdSpecID)
|
||||
|
||||
ResultThick = ''
|
||||
ResultRes = ''
|
||||
ResultResMin = ''
|
||||
ResultResMax = ''
|
||||
ResultCon = ''
|
||||
|
||||
LayerCount = COUNT(Specs,@RM) + (Specs NE '')
|
||||
|
||||
FOR Layer = 1 TO LayerCount
|
||||
|
||||
LayerSpecs = FIELD(Specs,@RM,Layer)
|
||||
LayerSpecs = FIELD(LayerSpecs,@FM,2,99) ;* Pull of the layer set ID
|
||||
|
||||
IF LayerSpecs<PRS_LAYER_THICK_TARGET$> NE '' THEN
|
||||
ResultThick := LayerSpecs<PRS_LAYER_THICK_TARGET$>
|
||||
END
|
||||
|
||||
IF LayerSpecs<PRS_LAYER_RES_TARGET$> NE '' THEN
|
||||
ResultRes := LayerSpecs<PRS_LAYER_RES_TARGET$>
|
||||
ResultResMin := LayerSpecs<PRS_LAYER_RES_MIN$>
|
||||
ResultResMax := LayerSpecs<PRS_LAYER_RES_MAX$>
|
||||
END
|
||||
|
||||
IF LayerSpecs<PRS_LAYER_CONC_TARGET$> NE '' THEN
|
||||
ResultCon := LayerSpecs<PRS_LAYER_CONC_TARGET$>
|
||||
END
|
||||
|
||||
IF Layer < LayerCount THEN
|
||||
IF ResultThick NE '' THEN ResultThick := '/'
|
||||
IF ResultRes NE '' THEN ResultRes := '/'
|
||||
IF ResultResMin NE '' THEN ResultResMin := '/'
|
||||
IF ResultResMax NE '' THEN ResultResMax := '/'
|
||||
IF ResultCon NE '' THEN ResultCon := '/'
|
||||
END ELSE
|
||||
IF ResultThick NE '' THEN ResultThick := LayerSpecs<PRS_LAYER_THICK_UNITS$>
|
||||
IF ResultRes NE '' THEN ResultRes := LayerSpecs<PRS_LAYER_RES_UNITS$>
|
||||
IF ResultResMin NE '' THEN ResultResMin := LayerSpecs<PRS_LAYER_RES_UNITS$>
|
||||
IF ResultResMax NE '' THEN ResultResMax := LayerSpecs<PRS_LAYER_RES_UNITS$>
|
||||
IF ResultCon NE '' THEN ResultCon := LayerSpecs<PRS_LAYER_CONC_UNITS$>
|
||||
END
|
||||
|
||||
NEXT Layer
|
||||
End Case
|
||||
|
||||
IF ProdVerNo NE '' THEN
|
||||
// The CassIDLabel has already been determined at this point. It can either be "RDSNo:" or "WMONo:".
|
||||
// However, for some reason, it has always been overridden to be "CassID:".
|
||||
// Except that QA is now requesting to not override the cassette label string for the NXP (7124) customer.
|
||||
If (CustNo NE '7124') then
|
||||
CassIDLabel = 'CassID: '
|
||||
end
|
||||
END
|
||||
|
||||
IF PartNo = '' THEN
|
||||
PartNo = EpiPartNO
|
||||
END
|
||||
|
||||
GOSUB PrintLabel
|
||||
PrintSpectrumLabel = False$
|
||||
EpiPartNo = XLATE('WO_LOG', WONo, WO_LOG_EPI_PART_NO$, 'X')
|
||||
ZPVMMatNum = XLATE('EPI_PART', EpiPartNo, EPI_PART_VARM_PART_NO$, 'X')
|
||||
PrintSpectrumLabel = ZPVMMatNum NE '' AND (PrintPath EQ '\\messp1002.na.infineon.com\MESZBRPRT011' OR PrintPath EQ '\\messp1003.na.infineon.com\MESZBRPRT011')
|
||||
|
||||
If PrintSpectrumLabel then
|
||||
Sap_Services('PrintSpectrumLabel', WONo, WOStep, CassNo)
|
||||
If Error_Services('NoError') then
|
||||
LogData = ''
|
||||
LogData<1, 1> = LoggingDTM
|
||||
LogData<1, 2> = 'Successfully sent .sik file to Spectrum file share. WO#' : WONo : ', Cass# ' : CassNo
|
||||
Logging_Services('AppendLog', objSpectrumLog, LogData, @FM, @VM)
|
||||
end else
|
||||
ErrorMessage = Error_Services('GetMessage')
|
||||
LogData = ''
|
||||
LogData<1, 1> = LoggingDTM
|
||||
LogData<1, 2> = 'Failed to send .sik file to Spectrum file share. WO#' : WONo : ', Cass# ' : CassNo :'. ' : ErrorMessage
|
||||
Logging_Services('AppendLog', objSpectrumLog, LogData, @FM, @VM)
|
||||
end
|
||||
end
|
||||
NEXT I
|
||||
|
||||
|
||||
* * * * * * *
|
||||
OIPrint_Err:
|
||||
* * * * * * *
|
||||
|
||||
* Local method to kill the OIPI engine
|
||||
|
||||
*IF stat < 0 THEN DEBUG ;*********
|
||||
|
||||
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
|
||||
stat = Set_Printer("TERM")
|
||||
end else
|
||||
stat = Direct_Print('STOP')
|
||||
end
|
||||
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
* * * * * * * *
|
||||
PrintLabel:
|
||||
* * * * * * * *
|
||||
|
||||
Convert '*' to '.' in CassID
|
||||
|
||||
MULabel = ''
|
||||
IF MakeupBox = 1 THEN MULabel = '** Makeup Box **'
|
||||
IF MUWfrsAddQty > 0 THEN MULabel = 'Merged Lot'
|
||||
|
||||
SuppCd = SubSupplier
|
||||
ErrorMsg = ''
|
||||
|
||||
IF LEN(PartNo) > 18 THEN ErrorMsg = 'CustPartNo parameter exceeds 18 characters.'
|
||||
IF LEN(RevLvl) > 3 THEN ErrorMsg = 'RevLvl parameter exceeds 3 characters.'
|
||||
IF LEN(WfrsOut) > 6 THEN ErrorMsg = 'PartQty parameter exceeds 6 characters.'
|
||||
IF NOT(NUM(WfrsOut)) THEN ErrorMsg = 'PartQty parameter is not a number.'
|
||||
|
||||
IF ErrorMsg THEN
|
||||
ErrMsg(ErrorMsg)
|
||||
END ELSE
|
||||
* Good to go on the label print
|
||||
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
|
||||
stat = Set_Printer('TEXT',ImageData) ;* Download bitmap image to the printer
|
||||
end else
|
||||
stat = Direct_Print('PRINT', ImageData)
|
||||
end
|
||||
* Label is 812 x 608 dots at 8dots/mm (203 dots/inch)
|
||||
* Leave periodic spaces in Label String - OIPrint interface wraps text on spaces and will cut off
|
||||
* the LabelString if there aren't any spaces. Printer Width needs to be set to 132 or greater
|
||||
|
||||
LabelString = '^XA' ;* Start of label format
|
||||
LabelString := '^LH15,50' ;* Label home offset (needed to get onto the label medium)
|
||||
LabelString := '^BY3' ;* Set narrow Bar Code line width to 3 dots
|
||||
LabelString := '^PR2' ;* Print speed = 2 IPS
|
||||
|
||||
LabelString := '^FO0,156^GB809,0,3,B^FS':@FM ;* 'Top' of 4x3 Label
|
||||
LabelString := '^FO0,308^GB809,0,3,B^FS':@FM ;* 1st 'horizontal' line (bottom of 1st cell)
|
||||
LabelString := '^FO0,460^GB809,0,3,B^FS':@FM ;* 2nd 'horizontal' line (bottom of 2nd cell)
|
||||
|
||||
* Block 1 Left (Cust Part)
|
||||
LabelString := '^FO0,10^A0,25^FDCust Part (P):^FS':CRLF$ ;* Label Line 1
|
||||
LabelString := '^FO15,45^A0,50,40^FD':PartNo:'^FS':CRLF$ ;* Readable
|
||||
LabelString := '^FO15,95^BY2^BC,60,N^FDP':PartNo:'^FS':CRLF$ ;* Code 128
|
||||
LabelString := '^BY3,3.0':CRLF$
|
||||
|
||||
* Block 1 Right (Rev Lvl)
|
||||
LabelString := '^FO508,0^BY2^B3,,60,N^FD2P':RevLvl:'^FS':CRLF$ ;* Code 39
|
||||
LabelString := '^BY3,3.0':CRLF$
|
||||
LabelString := '^FO508,70^A0,25^FDRev.Level (2P):^FS':CRLF$ ;* Label Line 1
|
||||
LabelString := '^FO680,70^A0,50,48^FD':RevLvl:'^FS':CRLF$ ;* Readable
|
||||
|
||||
* Block 2 Left (Quantity)
|
||||
LabelString := '^FO0,165^A0,25^FDQuantity (Q):^FS':CRLF$ ;* Label Line 1
|
||||
LabelString := '^FO15,195^A0,50,40^FD':WfrsOut:'^FS':CRLF$ ;* Readable
|
||||
LabelString := '^FO15,245^BY2^B3,,60,N^FDQ':WfrsOut:'^FS':CRLF$ ;* Code 39
|
||||
LabelString := '^BY3,3.0':CRLF$
|
||||
|
||||
LabelString := '^FO250,275^A0,25^FDReact Type:^FS':CRLF$
|
||||
LabelString := '^FO380,275^A0,25^FD':ReactType:'^FS':CRLF$
|
||||
|
||||
LabelString := '^FO500,123^A0,25^FDReq Ship Dt:^FS':CRLF$
|
||||
LabelString := '^FO635,123^A0,36^FD':ReqShipDt:'^FS':CRLF$
|
||||
|
||||
//Data Matrix Barcode Content
|
||||
IF CustNo = '7053' THEN
|
||||
* Tower Specific
|
||||
//DPC - 2/10/20 - added '1B' prefix and SAPBatchNo per Matt T. request
|
||||
//DPC - 3/11/20 - replaced 1T LotNo with SAPBatchNo per Matt T. request
|
||||
BCContent = 'P' : PartNo :';' ;* Cust Part No
|
||||
BCContent := '2T' : CassID :';' ;* CassID (Epi Lot Number)
|
||||
BCContent := '1B' : SAPBatchNo :';' ;* SAP Batch ID
|
||||
BCContent := '1R' : ResultResMin :';' ;* Res Min
|
||||
BCContent := '2R' : ResultResMax :';' ;* Res Max
|
||||
BCContent := 'Q' : WfrsOut :';' ;* Qty
|
||||
BCContent := '1V' : 'IR' :';' ;* Vendor Code
|
||||
BCContent := '6D' : DMShipDt :';' ;* Req Ship Date
|
||||
BCContent := '32T' : EpiPartNo ;* EpiPartNo
|
||||
END ELSE
|
||||
* All other customers
|
||||
BCContent = 'P' : PartNo :';' ;* Cust Part No
|
||||
BCContent := '2T' : RevLvl :';' ;* Rev Level
|
||||
BCContent := '1T' : CassID :';' ;* Cass ID (Lot Number)
|
||||
BCContent := '1R' : ResultThick :';' ;* Thk Avg
|
||||
BCContent := '2R' : ResultRes :';' ;* Res Avg
|
||||
BCContent := '3R' : ResultCon :';' ;* Conc
|
||||
BCContent := 'Q' : WfrsOut :';' ;* Qty
|
||||
BCContent := '1V' : SuppCD :';' ;* Vendor Code
|
||||
BCContent := '6D' : DMShipDt :';' ;* Req Ship Date
|
||||
BCContent := '32T' : CustName ;* Customer Name
|
||||
END
|
||||
|
||||
LabelString := '^FO600,178^BXN,3,200^FD':BCContent:'^FS' ;* Test Data Matrix bar code
|
||||
|
||||
* Block 3 Left (Customer Lot)
|
||||
LabelString := '^FO0,315^A0,25^FDCustomer Lot :^FS':CRLF$ ;* Label Line 1
|
||||
LabelString := '^FO15,350^A0,50,40^FD':LotNo:'^FS':CRLF$ ;* Readable
|
||||
LabelString := '^FO15,400^BY2^B3,,60,N^FD':LotNo:'^FS':CRLF$ ;* Code 39
|
||||
LabelString := '^BY3,3.0':CRLF$
|
||||
|
||||
* Block 3 Right (Supplier)
|
||||
LabelString := '^FO510,320^A0,,40^FDIFX Epi Services^FS':CRLF$ ;* Added Text for 'IFX Epi Services * * * * * * * * * *
|
||||
|
||||
IF SuppCd NE '' THEN
|
||||
|
||||
LabelString := '^FO590,430^A0,25^FDSupp Cd (1V):^FS':CRLF$ ;* Label Line - Added 8/17/2005 JCH Supplier Code Info
|
||||
LabelString := '^FO740,430^A0,36,40^FD':SuppCd:'^FS':CRLF$ ;* Readable
|
||||
|
||||
LabelString := '^FO590,370^BY2^B3,,50,N^FD1V':SuppCd:'^FS':CRLF$ ;* Code 39 Supplier Code - This bar code is in line 1 ;*Changed ^FD' to ^FD1V' - dkk 7/27/15
|
||||
LabelString := '^BY3,3.0':CRLF$
|
||||
END
|
||||
|
||||
* Block 4 1st Line Left
|
||||
LabelString := '^FO0,470^A0,25^FDCustomer:^FS':CRLF$ ;* Label Line
|
||||
LabelString := '^FO120,470^A0,45,25^FD':CustName:'^FS':CRLF$ ;* Readable
|
||||
|
||||
* Block 4 1st Line Right
|
||||
IF MULabel NE '' THEN
|
||||
LabelString := '^FO550,470^A0,40^FD':MULabel:'^FS':CRLF$
|
||||
END
|
||||
|
||||
* Block 4 2nd Line
|
||||
If CustNo EQ '6874' then ;* for Newport, include the 1T prefix
|
||||
LabelString := '^FO0,515^A0,25^FD':'(1T)':CassIDLabel :'^FS':CRLF$ ;* Label Line
|
||||
LabelString := '^FO130,515^A0,36,40^FD':CassID:'^FS':CRLF$
|
||||
LabelString := '^FO340,515^BY2^B3,,40,N^FD':'1T':CassID:'^FS':CRLF$
|
||||
end else
|
||||
LabelString := '^FO0,515^A0,25^FD':CassIDLabel :'^FS':CRLF$ ;* Label Line
|
||||
LabelString := '^FO130,515^A0,36,40^FD':CassID:'^FS':CRLF$ ;* Readable
|
||||
LabelString := '^FO340,515^BY2^B3,,40,N^FD':CassID:'^FS':CRLF$ ;* Code 39 (This is the Cass ID) ;*Changed ^FD' to ^FD1T' - dkk 7/30/15
|
||||
end
|
||||
|
||||
LabelString := '^BY3,3.0':CRLF$
|
||||
|
||||
* Block 4 3rd Line
|
||||
IF ProdVerNo NE '' THEN
|
||||
* SAP
|
||||
LabelString := '^FO0,570^A0,25^FDBatch:^FS':CRLF$ ;* Label Line
|
||||
LabelString := '^FO130,570^A0,36^FD':SAPBatchNo:'^FS':CRLF$ ;* Readable * SAP Batch No *
|
||||
LabelString := '^FO340,570^BY2^B3,,40,N^FD':SAPBatchNo:'^FS':CRLF$ ;* Code 39 (This is the Cass ID)
|
||||
LabelString := '^BY3,3.0':CRLF$
|
||||
|
||||
END
|
||||
|
||||
* Block 4 5th Line
|
||||
LabelString := '^FO0,620^A0,25^FDPO No:^FS':CRLF$ ;* Label Line
|
||||
|
||||
IF LEN(PONo) > 11 THEN
|
||||
LabelString := '^FO80,620^A0,25,20^FD':PONo:'^FS':CRLF$ ;* Readable * Production Order * Squeezed
|
||||
END ELSE
|
||||
LabelString := '^FO80,620^A0,25,40^FD':PONo:'^FS':CRLF$ ;* Readable * Production Order *
|
||||
END
|
||||
|
||||
LabelString := '^FO300,620^A0,25^FDWO No:^FS':CRLF$ ;* Label Line
|
||||
LabelString := '^FO380,620^A0,25^FD':WONo:'^FS':CRLF$ ;* Readable
|
||||
LabelString := '^FO490,620^A0,25^FDEPI Part:^FS':CRLF$ ;* Label Line
|
||||
LabelString := '^FO590,620^A0,25^FD':EpiPartNo:'^FS':CRLF$
|
||||
|
||||
* Block 4
|
||||
IF SAPBatchNo = '' THEN
|
||||
ConcLabelString = FMT(EpiPartNo,"L#15"):FMT(CassID,"L#12"):FMT(WfrsOut,"R#6")
|
||||
END ELSE
|
||||
ConcLabelString = EpiPartNo:' ':SAPBatchNo:' ':WfrsOut
|
||||
END
|
||||
|
||||
LabelString := '^FO0,650^BY2^BC,90,N^FD':ConcLabelString:'^FS':CRLF$ ;* Code 128 - original
|
||||
LabelString := '^XZ'
|
||||
|
||||
If Environment_Services('GetLabelPrintMethod') _EQC 'OIPI' then
|
||||
stat = Set_Printer('TEXT',LabelString)
|
||||
end else
|
||||
stat = Direct_Print('PRINT', LabelString)
|
||||
end
|
||||
END ;* End of Check for good label data
|
||||
|
||||
|
||||
RETURN
|
||||
|
||||
|
Reference in New Issue
Block a user