Implemented ReceiveRelease_API.

Added OI Wizard Webview form to launch into OI Wizard from OI and
auto-login the user.

Added menu items to NDW_MAIN to launch the OI Wizard webview form and
navigated to the appropriate page.
This commit is contained in:
Infineon\StieberD
2025-09-08 15:31:25 -07:00
parent 4b7417c1a8
commit 261880fab8
25 changed files with 5292 additions and 1856 deletions

View File

@ -51,13 +51,14 @@ $Insert IFX_EQUATES
$Insert CUST_EPI_PART_EQUATES
Equ MAX_NUM_CASS$ to 150
Equ NUM_ATTEMPTS$ to 10
Declare subroutine Error_Services, Work_Order_Services, Memory_Services, RList, Database_Services, SRP_JSON
Declare subroutine Btree.Extract, Set_Status, obj_WO_Log, obj_Notes, Print_Wo_Mat_In_Labels, Print_Wo_Mat_Out_Labels
Declare subroutine Print_Wmi_Labels, Print_Wmo_Labels, ErrMsg, Print_Cass_Labels, Logging_Services, Service_Services
Declare subroutine obj_WO_Mat_Log, WO_Mat_Services, Work_Order_Services, Transaction_Services, Extract_Si_Keys
Declare subroutine Mona_Services, Lot_Event_Services, RDS_Services, Lot_Services, WM_In_Services, WM_Out_Services
Declare subroutine obj_WO_Mat, obj_Post_Log
Declare subroutine obj_WO_Mat, obj_Post_Log, Delay
Declare function SRP_Array, Work_Order_Services, Memory_Services, Database_Services, SRP_Sort_Array, SRP_JSON
Declare function Company_Services, obj_Prod_Spec, Schedule_Services, obj_WO_Log, obj_WO_Step, Memberof, Datetime
Declare function Environment_Services, Logging_Services, Hold_Services, Signature_Services, Lot_Services
@ -1140,6 +1141,86 @@ Service UpdateReleasedQty(WONo)
end service
Service AdjustReleasedQty(WONo, AdjustQty)
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WO_LOG'
LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS')
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Adjust Released Qty Log.csv'
Headers = 'Logging DTM' : @FM : 'WONo' : @FM : 'Notes'
objAdjRelLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$,',', Headers, '', False$, False$)
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
OrigRelQty = ''
RelQty = ''
UnrelQty = ''
ErrorMsg = ''
Begin Case
Case (WONo EQ '')
ErrorMsg = 'Error in ':Service:' service. Null WONo passed into service'
Case (AdjustQty EQ '')
ErrorMsg = 'Error in ':Service:' service. Null AdjustQty passed into service'
Case Not(Num(AdjustQty))
ErrorMsg = 'Error in ':Service:' service. AdjustQty is not a number'
Case Index(AdjustQty, '.', 1)
ErrorMsg = 'Error in ':Service:' service. AdjustQty cannot be a decimal value'
Case Otherwise$
Null
End Case
If (ErrorMsg EQ '' ) then
If RowExists('WO_LOG', WONo) then
For Attempt = 1 to NUM_ATTEMPTS$
If Attempt GT 0 then Delay(Attempt)
HaveLock = Database_Services('GetKeyIDLock', 'WO_LOG', WONo, True$)
If HaveLock then
WORec = Database_Services('ReadDataRow', 'WO_LOG', WONo)
If Error_Services('NoError') then
WOQty = WORec<WO_LOG_WO_QTY$>
OrigRelQty = WORec<WO_LOG_REL_QTY_STATIC$>
RelQty = OrigRelQty + AdjustQty
UnrelQty = WOQty - RelQty
If UnrelQty LT 0 then UnrelQty = 0
WORec<WO_LOG_REL_QTY_STATIC$> = RelQty
WORec<WO_LOG_UNREL_QTY_STATIC$> = UnRelQty
Database_Services('WriteDataRow', 'WO_LOG', WONo, WORec, True$, False$, False$)
If Error_Services('HasError') then
ErrorMsg = 'Error in ':Service:' service. Failed to write ':RelQty:' on REL_QTY_STATIC '
ErrorMsg := 'field and ':UnrelQty:' on UNREL_QTY_STATIC field of WO_LOG record ':WONo:'.'
ErrorMsg := 'Error message: ':Error_Services('GetMessage')
end
end else
ErrorMsg = 'Error in ':Service:' service. Failed to read record ':WONo:' from the WO_LOG table. '
ErrorMsg := 'Error message: ':Error_Services('GetMessage')
end
end
If ( Not(HaveLock) and (Attempt GE NUM_ATTEMPTS$) ) then
ErrorMsg = 'Error in ':Service:' service. Failed to lock WO_LOG ':WoNo:' for update after ':Attempt:' attempts.'
end
Until HaveLock or (ErrorMsg NE '')
Next Attempt
end else
ErrorMsg = 'Error in ':Service:' service. ':WONo:' does not exist in the WO_LOG table.'
end
end
LogData = ''
LogData<1> = LoggingDtm
LogData<2> = WONo
If ErrorMsg EQ '' then
LogResult = 'Successfully adjusted WO_LOG ':WONo:' released and unreleased quantities by ':AdjustQty
LogResult := '. Updated WO_LOG record ':WONo:' field REL_QTY_STATIC with released quantity ':RelQty
LogResult := ' and field UNREL_QTY_STATIC with unreleased quantity ':UnRelQty:'.'
LogData<3> = LogResult
Logging_Services('AppendLog', objAdjRelLog, LogData, @RM, @FM)
end else
LogResult = 'Failed to adjust WO_LOG ':WONo:' released and unreleased quantities by ':AdjustQty:'.'
LogData<3> = LogResult
Logging_Services('AppendLog', objAdjRelLog, LogData, @RM, @FM)
Error_Services('Add', ErrorMsg)
end
end service
Service UpdateReceivedQty(WONo)
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WO_LOG'
@ -1215,6 +1296,84 @@ Service UpdateReceivedQty(WONo)
end service
Service AdjustReceivedQty(WONo, AdjustQty)
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WO_LOG'
LogDate = Oconv(Date(), 'D4/')
LogTime = Oconv(Time(), 'MTS')
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' Adjust Received Qty Log.csv'
Headers = 'Logging DTM' : @FM : 'WONo' : @FM : 'Notes'
objAdjRecLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$,',', Headers, '', False$, False$)
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
RXQty = ''
OrigRXQty = ''
ErrorMsg = ''
Begin Case
Case (WONo EQ '')
ErrorMsg = 'Error in ':Service:' service. Null WONo passed into service'
Case (AdjustQty EQ '')
ErrorMsg = 'Error in ':Service:' service. Null AdjustQty passed into service'
Case Not(Num(AdjustQty))
ErrorMsg = 'Error in ':Service:' service. AdjustQty is not a number'
Case Index(AdjustQty, '.', 1)
ErrorMsg = 'Error in ':Service:' service. AdjustQty cannot be a decimal value'
Case Otherwise$
Null
End Case
If (ErrorMsg EQ '' ) then
If RowExists('WO_LOG', WONo) then
For Attempt = 1 to NUM_ATTEMPTS$
If Attempt GT 0 then Delay(Attempt)
HaveLock = Database_Services('GetKeyIDLock', 'WO_LOG', WONo, True$)
If HaveLock then
WORec = Database_Services('ReadDataRow', 'WO_LOG', WONo)
If Error_Services('NoError') then
WOQty = WORec<WO_LOG_WO_QTY$>
OrigRxQty = WORec<WO_LOG_RX_QTY_STATIC$>
RxQty = OrigRxQty + AdjustQty
OpenQty = WOQty - RXQty
WORec<WO_LOG_RX_QTY_STATIC$> = RxQty
WORec<WO_LOG_OPEN_QTY_STATIC$> = OpenQty
Database_Services('WriteDataRow', 'WO_LOG', WONo, WORec, True$, False$, False$)
If Error_Services('HasError') then
ErrorMsg = 'Error in ':Service:' service. Failed to write ':RxQty:' on RX_QTY_STATIC field '
ErrorMsg := 'and ':OpenQty:' on OPEN_QTY_STATIC to WO_LOG ':WONo:'. Error message: '
ErrorMsg := Error_Services('GetMessage')
end
end else
ErrorMsg = 'Error in ':Service:' service. Failed to read record ':WONo:' from the WO_LOG table. '
ErrorMsg := 'Error message: ':Error_Services('GetMessage')
end
end
If ( Not(HaveLock) and (Attempt GE NUM_ATTEMPTS$) ) then
ErrorMsg = 'Error in ':Service:' service. Failed to lock WO_LOG ':WoNo:' for update after ':Attempt:' attempts.'
end
Until HaveLock or (ErrorMsg NE '')
Next Attempt
end else
ErrorMsg = 'Error in ':Service:' service. ':WONo:' does not exist in the WO_LOG table.'
end
end
LogData = ''
LogData<1> = LoggingDtm
LogData<2> = WONo
If ErrorMsg EQ '' then
LogResult = 'Successfully adjusted WO_LOG ':WONo:' received and open quantities by ':AdjustQty
LogResult := '. Updated WO_LOG record ':WONo:' field RX_QTY_STATIC with received quantity ':RXQty
LogResult := ' and field OPEN_QTY_STATIC with open quantity ':OpenQty:'.'
LogData<3> = LogResult
Logging_Services('AppendLog', objAdjRecLog, LogData, @RM, @FM)
end else
LogResult = 'Failed to adjust WO_LOG ':WONo:' received and open quantities by ':AdjustQty
LogData<3> = LogResult
Logging_Services('AppendLog', objAdjRecLog, LogData, @RM, @FM)
Error_Services('Add', ErrorMsg)
end
end service
Service UpdateShippedQty(WONo)
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\WO_LOG'
@ -1346,99 +1505,124 @@ end service
Service ConvertRecordToJSON(WONo, Record, ItemURL)
jsonRecord = ''
ErrorMsg = ''
jsonRecord = ''
IF WONo NE '' then
If Record EQ '' then Record = Database_Services('ReadDataRow', 'WO_LOG', WONo)
If Error_Services('NoError') then
@DICT = Database_Services('GetTableHandle', 'DICT.WO_LOG')
@ID = WONo
@RECORD = Record
objJSON = ''
If SRP_JSON(objJSON, 'New', 'Object') then
objWOLog = ''
If SRP_JSON(objWOLog, 'New', 'Object') then
SRP_JSON(objWOLog, 'SetValue', 'KeyId', @ID)
SRP_JSON(objWOLog, 'SetValue', 'ProdOrdNo', {PROD_ORD_NO})
SRP_JSON(objWOLog, 'SetValue', 'PSN', {PS_NO})
SRP_JSON(objWOLog, 'SetValue', 'EpiPartNo', {EPI_PART_NO})
SRP_JSON(objWOLog, 'SetValue', 'HotFlag', {HOT_FLAG})
SRP_JSON(objWOLog, 'SetValue', 'WoQty', {WO_QTY})
SRP_JSON(objWOLog, 'SetValue', 'RxQty', {RX_QTY_STATIC})
SRP_JSON(objWOLog, 'SetValue', 'RelQty', {REL_QTY_STATIC})
SRP_JSON(objWOLog, 'SetValue', 'UnRelQty', {UNREL_QTY_STATIC})
SRP_JSON(objWOLog, 'SetValue', 'ShipQty', {SHIP_QTY_STATIC})
SRP_JSON(objWOLog, 'SetValue', 'ScrapQty', {SCRAP_QTY_STATIC})
SRP_JSON(objWOLog, 'SetValue', 'OpenQty', {OPEN_QTY_STATIC})
SRP_JSON(objWOLog, 'SetValue', 'CustNo', {CUST_NO})
SRP_JSON(objWOLog, 'SetValue', 'Customer', {CUST_NAME})
// Create a list of cassettes
CassIDs = {WO_MAT_KEY}
objChildCassettes = ''
If SRP_JSON(objChildCassettes, 'New', 'Array') then
If CassIDs NE '' then
for each Cass in CassIDs using @VM setting vPos
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', Cass)
If Error_Services('NoError') then
// Add in each indv. cassette object
objChildCassette = ''
If SRP_JSON(objChildCassette, 'New', 'Object') then
SRP_JSON(objChildCassette, 'SetValue', 'KeyId', Cass)
SRP_JSON(objChildCassette, 'SetValue', 'CassNo', Field(Cass, '*', 2, 1))
SRP_JSON(objChildCassette, 'SetValue', 'SAPBatchNo', WOMatRec<WO_MAT_SAP_BATCH_NO$>)
SRP_JSON(objChildCassette, 'SetValue', 'SAPTXDtm', Date_Services('ConvertDateTimeToISO8601', WOMatRec<WO_MAT_SAP_TX_DTM$>))
SRP_JSON(objChildCassette, 'SetValue', 'RDSNo', WOMatRec<WO_MAT_RDS_NO$>)
SRP_JSON(objChildCassette, 'SetValue', 'ShipNo', WOMatRec<WO_MAT_SHIP_NO$>)
SRP_JSON(objChildCassette, 'SetValue', 'LotNo', WOMatRec<WO_MAT_LOT_NO$>)
SRP_JSON(objChildCassette, 'SetValue', 'Qty', WOMatRec<WO_MAT_WAFER_QTY$>)
SRP_JSON(objChildCassette, 'SetValue', 'CustPartNo', WOMatRec<WO_MAT_CUST_PART_NO$>)
SRP_JSON(objChildCassette, 'SetValue', 'SubPartNo', WOMatRec<WO_MAT_SUB_PART_NO$>)
SRP_JSON(objChildCassette, 'SetValue', 'VendorCd', WOMatRec<WO_MAT_SUB_VEND_CD$>)
SRP_JSON(objChildCassette, 'SetValue', 'RecDtm', Date_Services('ConvertDateTimeToISO8601', WOMatRec<WO_MAT_RX_DTM$>))
SRP_JSON(objChildCassette, 'SetValue', 'RelDtm', Date_Services('ConvertDateTimeToISO8601', WOMatRec<WO_MAT_REL_DTM$>))
SRP_JSON(objChildCassette, 'SetValue', 'RecUser', OConv(WOMatRec<WO_MAT_RX_BY$>, '[XLATE_CONV,LSL_USERS*FIRST_LAST]'))
SRP_JSON(objChildCassette, 'SetValue', 'RelUser', OConv(WOMatRec<WO_MAT_REL_BY$>, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' ))
SRP_JSON(objChildCassettes, 'Add', objChildCassette)
SRP_JSON(objChildCassette, 'Release')
end
EpiPartNo = Record<WO_LOG_EPI_PART_NO$>
EpiPartRec = Database_Services('ReadDataRow', 'EPI_PART', EpiPartNo)
If Error_Services('NoError') then
SubSuppBy = EpiPartRec<EPI_PART_SUB_SUPP_BY$> ;* L - EpiSvcs supplied, C - Customer Supplied
ProdVerNo = Record<WO_LOG_PROD_VER_NO$>
ProdVerRec = Database_Services('ReadDataRow', 'PROD_VER', ProdVerNo)
If Error_Services('NoError') then
SubPartNo = ProdVerRec<PROD_VER_SUB_PART_NO$>
// Create the JSON response object
objJSON = ''
If SRP_JSON(objJSON, 'New', 'Object') then
objWOLog = ''
If SRP_JSON(objWOLog, 'New', 'Object') then
SRP_JSON(objWOLog, 'SetValue', 'KeyId', WONo)
SRP_JSON(objWOLog, 'SetValue', 'ProdOrdNo', Record<WO_LOG_PROD_ORD_NO$>)
SRP_JSON(objWOLog, 'SetValue', 'PSN', Xlate('WO_LOG', WONo, 'PS_NO', 'X'))
SRP_JSON(objWOLog, 'SetValue', 'EpiPartNo', EpiPartNo)
SRP_JSON(objWOLog, 'SetValue', 'HotFlag', Record<WO_LOG_HOT_FLAG$>)
SRP_JSON(objWOLog, 'SetValue', 'WoQty', Record<WO_LOG_WO_QTY$>)
SRP_JSON(objWOLog, 'SetValue', 'RxQty', Record<WO_LOG_RX_QTY_STATIC$>)
SRP_JSON(objWOLog, 'SetValue', 'RelQty', Record<WO_LOG_REL_QTY_STATIC$>)
SRP_JSON(objWOLog, 'SetValue', 'UnRelQty', Record<WO_LOG_UNREL_QTY_STATIC$>)
SRP_JSON(objWOLog, 'SetValue', 'ShipQty', Record<WO_LOG_SHIP_QTY_STATIC$>)
SRP_JSON(objWOLog, 'SetValue', 'ScrapQty', Record<WO_LOG_SCRAP_QTY_STATIC$>)
SRP_JSON(objWOLog, 'SetValue', 'OpenQty', Record<WO_LOG_OPEN_QTY_STATIC$>)
SRP_JSON(objWOLog, 'SetValue', 'CustNo', Record<WO_LOG_CUST_NO$>)
SRP_JSON(objWOLog, 'SetValue', 'Customer', Xlate('WO_LOG', WONo, 'CUST_NAME', 'X'))
ExpectedVendorCd = Record<WO_LOG_EXP_VEND_CD$>
If ( (Len(ExpectedVendorCd) NE 2) or (SubSuppBy NE 'L') ) then ExpectedVendorCd = ''
SRP_JSON(objWOLog, 'SetValue', 'ExpectedVendorCd', ExpectedVendorCd)
SRP_JSON(objWOLog, 'SetValue', 'SubPartNo', SubPartNo)
// Create a list of cassettes
CassIDs = Record<WO_LOG_WO_MAT_KEY$>
objChildCassettes = ''
If SRP_JSON(objChildCassettes, 'New', 'Array') then
If CassIDs NE '' then
for each Cass in CassIDs using @VM setting vPos
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', Cass)
If Error_Services('NoError') then
// Add in each indv. cassette object
objChildCassette = ''
If SRP_JSON(objChildCassette, 'New', 'Object') then
SRP_JSON(objChildCassette, 'SetValue', 'KeyId', Cass)
SRP_JSON(objChildCassette, 'SetValue', 'CassNo', Field(Cass, '*', 2, 1))
SRP_JSON(objChildCassette, 'SetValue', 'SAPBatchNo', WOMatRec<WO_MAT_SAP_BATCH_NO$>)
SRP_JSON(objChildCassette, 'SetValue', 'SAPTXDtm', Date_Services('ConvertDateTimeToISO8601', WOMatRec<WO_MAT_SAP_TX_DTM$>))
SRP_JSON(objChildCassette, 'SetValue', 'RDSNo', WOMatRec<WO_MAT_RDS_NO$>)
SRP_JSON(objChildCassette, 'SetValue', 'ShipNo', WOMatRec<WO_MAT_SHIP_NO$>)
SRP_JSON(objChildCassette, 'SetValue', 'LotNo', WOMatRec<WO_MAT_LOT_NO$>)
SRP_JSON(objChildCassette, 'SetValue', 'Qty', WOMatRec<WO_MAT_WAFER_QTY$>)
SRP_JSON(objChildCassette, 'SetValue', 'CustPartNo', WOMatRec<WO_MAT_CUST_PART_NO$>)
SRP_JSON(objChildCassette, 'SetValue', 'SubPartNo', WOMatRec<WO_MAT_SUB_PART_NO$>)
SRP_JSON(objChildCassette, 'SetValue', 'VendorCd', WOMatRec<WO_MAT_SUB_VEND_CD$>)
SRP_JSON(objChildCassette, 'SetValue', 'RecDtm', Date_Services('ConvertDateTimeToISO8601', WOMatRec<WO_MAT_RX_DTM$>))
SRP_JSON(objChildCassette, 'SetValue', 'RelDtm', Date_Services('ConvertDateTimeToISO8601', WOMatRec<WO_MAT_REL_DTM$>))
SRP_JSON(objChildCassette, 'SetValue', 'RecUser', OConv(WOMatRec<WO_MAT_RX_BY$>, '[XLATE_CONV,LSL_USERS*FIRST_LAST]'))
SRP_JSON(objChildCassette, 'SetValue', 'RelUser', OConv(WOMatRec<WO_MAT_REL_BY$>, '[XLATE_CONV,LSL_USERS*FIRST_LAST]' ))
SRP_JSON(objChildCassettes, 'Add', objChildCassette)
SRP_JSON(objChildCassette, 'Release')
end
end else
ErrorMsg = 'Error in ':Service:' service. Error message: ':Error_Services('GetMessage')
end
Next Cass
end else
SRP_JSON(objWOLog, 'SetValue', 'ChildCassettes', '')
end
Next Cass
end else
SRP_JSON(objWOLog, 'SetValue', 'ChildCassettes', '')
SRP_JSON(objWOLog, 'Set', 'ChildCassettes', objChildCassettes)
SRP_JSON(objChildCassettes, 'Release')
end
SRP_JSON(objJSON, 'Set', 'WO_Log', objWOLog)
SRP_JSON(objWOLog, 'Release')
end
SRP_JSON(objWOLog, 'Set', 'ChildCassettes', objChildCassettes)
SRP_JSON(objChildCassettes, 'Release')
end
SRP_JSON(objJSON, 'Set', 'WO_Log', objWOLog)
SRP_JSON(objWOLog, 'Release')
end
If itemURL NE '' then
// The itemURL was passed in so add HAL+JSON properties.
// Create the _links property and then all link objects needed for this resource.
objLinks = ''
If SRP_JSON(objLinks, 'New', 'Object') then
// Create a self link.
objLink = ''
If SRP_JSON(objLink, 'New', 'Object') then
SRP_JSON(objLink, 'SetValue', 'href', ItemURL, 'String')
SRP_JSON(objLink, 'SetValue', 'title', 'Self', 'String')
SRP_JSON(objLinks, 'Set', 'self', objLink)
SRP_JSON(objLink, 'Release')
If itemURL NE '' then
// The itemURL was passed in so add HAL+JSON properties.
// Create the _links property and then all link objects needed for this resource.
objLinks = ''
If SRP_JSON(objLinks, 'New', 'Object') then
// Create a self link.
objLink = ''
If SRP_JSON(objLink, 'New', 'Object') then
SRP_JSON(objLink, 'SetValue', 'href', ItemURL, 'String')
SRP_JSON(objLink, 'SetValue', 'title', 'Self', 'String')
SRP_JSON(objLinks, 'Set', 'self', objLink)
SRP_JSON(objLink, 'Release')
end
SRP_JSON(objJSON, 'Set', '_links', objLinks)
SRP_JSON(objLinks, 'Release')
end
// Create the _class property for this resource.
SRP_JSON(objJSON, 'SetValue', '_class', 'resource')
end
SRP_JSON(objJSON, 'Set', '_links', objLinks)
SRP_JSON(objLinks, 'Release')
end
// Create the _class property for this resource.
SRP_JSON(objJSON, 'SetValue', '_class', 'resource')
jsonRecord = SRP_JSON(objJSON, 'Stringify', 'Styled')
SRP_JSON(objJSON, 'Release')
end else
ErrorMsg = 'Error in ':Service:' service. Unable to create JSON object'
end
end else
ErrorMsg = 'Error in ':Service:' service. Error message: ':Error_Services('GetMessage')
end
jsonRecord = SRP_JSON(objJSON, 'Stringify', 'Styled')
SRP_JSON(objJSON, 'Release')
end else
Error_Services('Add', 'Unable to create JSON representation in the ' : Service : ' service.')
ErrorMsg = 'Error in ':Service:' service. Error message: ':Error_Services('GetMessage')
end
end else
ErrorMsg = 'Error in ':Service:' service. Error message: ':Error_Services('GetMessage')
end
end else
Error_Services('Add', 'KeyID argument was missing in the ' : Service : ' service.')
ErrorMsg = 'Error in ':Service:' service. Null WONo passed into service.'
end
If ErrorMsg NE '' then Error_Services('Add', ErrorMsg)
Response = jsonRecord
end service
@ -2344,6 +2528,57 @@ Service UpdateWorkOrderData(WONo)
end service
Service GetWoLogZpl(WoNo)
ZPL = ''
ErrorMsg = ''
If WoNo NE '' then
If RowExists('WO_LOG', WoNo) then
WOStepKeys = XLATE('WO_LOG',WONo,WO_LOG_WO_STEP_KEY$,'X')
IF INDEX(WOStepKeys,@VM,1) THEN
PrintWONo = WONo:'.':WOStep
END ELSE
PrintWONo = WONo
END
WORec = XLATE('WO_LOG',WONo,'','X')
ReqShipDate = OCONV(WORec<WO_LOG_PROMISE_SHIP_DT$>,'D2/')
CustNo = WORec<WO_LOG_CUST_NO$>
CustName = XLATE('COMPANY',CustNo,'ABBREV_OR_CO_NAME','X')
ZPL := '^XA^CFD'
ZPL := '^LH0,0'
ZPL := '^PR2' ;* Print speed 2 inches per second
ZPL := '^LL325' ;* Label length in dots
ZPL := '^MD15' ;* Media darkness
ZPL := '^PQ2' ;* Print 2 labels for each pass through here
ZPL := '^MMT':CRLF$ ;* Media mode t=tear off mode
IF INDEX(PrintWONo,'.',1) THEN
ZPL := '^FO10,30^A0,220,210^FD':PrintWONo:'^FS':CRLF$
END ELSE
ZPL := '^FO70,30^A0,220,210^FD':PrintWONo:'^FS':CRLF$
END
CharCnt = Len(CustName)
NameLength = CharCnt*72
WhiteSpace = INT(((2103 - NameLength)/2103) * 806)
StartingXPos = INT(WhiteSpace/2)
ZPL:= '^FO':StartingXPos:',230^A0,75,72^FD':CustName:'^FS':CRLF$
ZPL:= '^FO160,320^A080,50^FD':'Commit Date: ':OCONV( XLATE( 'WO_LOG', WONo, WO_LOG_COMMIT_DATE$, 'X' ), 'D2/' ):'^FS':CRLF$
ZPL:= '^XZ'
end else
ErrorMsg = 'Error in ':Service:' service. WO_LOG ':WoNo:' does not exist.'
end
end else
ErrorMsg = 'Error in ':Service:' service. Null WoNo passed in.'
end
If ErrorMsg EQ '' then
Response = ZPL
end else
Error_Services('Add', ErrorMsg)
end
end service
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Internal GoSubs
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////