updated WRITE_PRE action to not use GetStackTrace and to notify FI of field name being cleared
This commit is contained in:
@ -46,6 +46,7 @@ Function WO_MAT_Actions(Action, CalcColName, FSList, Handle, Name, FMC, Record,
|
|||||||
|
|
||||||
$insert APP_INSERTS
|
$insert APP_INSERTS
|
||||||
$insert FILE.SYSTEM.EQUATES
|
$insert FILE.SYSTEM.EQUATES
|
||||||
|
$insert DICT_EQUATES
|
||||||
$insert ACTION_SETUP
|
$insert ACTION_SETUP
|
||||||
$insert WO_MAT_EQUATES
|
$insert WO_MAT_EQUATES
|
||||||
$insert WO_LOG_EQUATES
|
$insert WO_LOG_EQUATES
|
||||||
@ -265,77 +266,55 @@ return
|
|||||||
|
|
||||||
|
|
||||||
WRITE_RECORD_PRE:
|
WRITE_RECORD_PRE:
|
||||||
|
|
||||||
WOMatKeyID = Name
|
|
||||||
OrigRDSNo = OrigRecord<WO_MAT_RDS_NO$>
|
|
||||||
NewRDSNo = Record<WO_MAT_RDS_NO$>
|
|
||||||
OrigLotNo = OrigRecord<WO_MAT_LOT_NO$>
|
|
||||||
NewLotNo = Record<WO_MAT_LOT_NO$>
|
|
||||||
OrigWfrQty = OrigRecord<WO_MAT_WAFER_QTY$>
|
|
||||||
NewWfrQty = Record<WO_MAT_WAFER_QTY$>
|
|
||||||
OrigCustPartNo = OrigRecord<WO_MAT_CUST_PART_NO$>
|
|
||||||
NewCustPartNo = Record<WO_MAT_CUST_PART_NO$>
|
|
||||||
OrigSubPartNo = OrigRecord<WO_MAT_SUB_PART_NO$>
|
|
||||||
NewSubPartNo = Record<WO_MAT_SUB_PART_NO$>
|
|
||||||
OrigInvActions = OrigRecord<WO_MAT_INV_ACTION$>
|
|
||||||
OrigNumActions = DCount(OrigInvActions, @VM)
|
|
||||||
NewInvActions = Record<WO_MAT_INV_ACTION$>
|
|
||||||
NewNumActions = DCount(NewInvActions, @VM)
|
|
||||||
OrigSlotNos = OrigRecord<WO_MAT_SLOT_NO$>
|
|
||||||
OrigNumSlotNos = DCount(OrigSlotNos, @VM)
|
|
||||||
NewSlotNos = Record<WO_MAT_SLOT_NO$>
|
|
||||||
NewNumSlotNos = DCount(NewSlotNos, @VM)
|
|
||||||
OrigRxDtm = OrigRecord<WO_MAT_RX_DTM$>
|
|
||||||
NewRxDtm = Record<WO_MAT_RX_DTM$>
|
|
||||||
OrigRxBy = OrigRecord<WO_MAT_RX_BY$>
|
|
||||||
NewRxBy = Record<WO_MAT_RX_BY$>
|
|
||||||
OrigRelDtm = OrigRecord<WO_MAT_REL_DTM$>
|
|
||||||
NewRelDtm = Record<WO_MAT_REL_DTM$>
|
|
||||||
OrigRelBy = OrigRecord<WO_MAT_REL_BY$>
|
|
||||||
NewRelBy = Record<WO_MAT_REL_BY$>
|
|
||||||
OrigSubVendCd = OrigRecord<WO_MAT_SUB_VEND_CD$>
|
|
||||||
NewSubVendCd = Record<WO_MAT_SUB_VEND_CD$>
|
|
||||||
OrigCassShipQty = OrigRecord<WO_MAT_CASS_SHIP_QTY$>
|
|
||||||
NewCassShipQty = Record<WO_MAT_CASS_SHIP_QTY$>
|
|
||||||
OrigShipShort = OrigRecord<WO_MAT_SHIP_SHORT$>
|
|
||||||
NewShipShort = Record<WO_MAT_SHIP_SHORT$>
|
|
||||||
OrigMuWaferFlag = OrigRecord<WO_MAT_MU_WAFER_FLAG$>
|
|
||||||
NewMuWaferFlag = Record<WO_MAT_MU_WAFER_FLAG$>
|
|
||||||
|
|
||||||
If ( ( (OrigRDSNo NE '') and (NewRDSNo EQ '') ) or ( (OrigLotNo NE '') and (NewLotNo EQ '') ) |
|
|
||||||
or ( (OrigWfrQty NE '') and (NewWfrQty EQ '') ) or ( (OrigCustPartNo NE '') and (NewCustPartNo EQ '') ) |
|
|
||||||
or ( (OrigSubPartNo NE '') and (NewSubPartNo EQ '') ) or (OrigNumActions GT NewNumActions) |
|
|
||||||
or (OrigNumSlotNos GT NewNumSlotNos) or ( (OrigRxDtm NE '') and (NewRxDtm EQ '') ) |
|
|
||||||
or ( (OrigRxBy NE '') and (NewRxBy EQ '') ) or ( (OrigRelDtm NE '') and (NewRelDtm EQ '') ) |
|
|
||||||
or ( (OrigRelBy NE '') and (NewRelBy EQ '') ) or ( (OrigSubVendCd NE '') and (NewSubVendCd EQ '') ) |
|
|
||||||
or ( (OrigCassShipQty NE '') and (NewCassShipQty EQ '') ) or ( (OrigShipShort NE '') and (NewShipShort EQ '') ) |
|
|
||||||
or ( (OrigMuWaferFlag NE '') and (NewMuWaferFlag EQ '') ) ) then
|
|
||||||
|
|
||||||
Stack = Error_Services('GetStackTrace')
|
|
||||||
Recipients = ''
|
|
||||||
SentFrom = 'SYSTEM'
|
|
||||||
Subject = 'WO_MAT_ACTIONS WRITE_PRE Blocked'
|
|
||||||
Message = OConv(Datetime(), 'DT2/^H')
|
|
||||||
Message<2> = 'Computer: ':@Station
|
|
||||||
Message<3> = 'User: ':@User4
|
|
||||||
Message<4> = 'WO_MAT key: ':Name
|
|
||||||
Message<5> = 'Message: Write operation failed due to readonly field being cleared.'
|
|
||||||
Message<6> = Stack
|
|
||||||
Swap @FM with \0D0A\ in Message
|
|
||||||
Swap @VM with ',' in Message
|
|
||||||
AttachWindow = 'WO_MAT'
|
|
||||||
AttachKey = Name
|
|
||||||
SendToGroup = 'OI_SYSADMIN'
|
|
||||||
|
|
||||||
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
|
WOMatKeyID = Name
|
||||||
obj_Notes('Create',Parms)
|
|
||||||
|
CriticalFields = WO_MAT_RDS_NO$:@VM:WO_MAT_LOT_NO$:@VM:WO_MAT_WAFER_QTY$:@VM:WO_MAT_CUST_PART_NO$:@VM
|
||||||
|
CriticalFields := WO_MAT_SUB_PART_NO$:@VM:WO_MAT_INV_ACTION$:@VM:WO_MAT_SLOT_NO$:@VM:WO_MAT_RX_DTM$:@VM
|
||||||
|
CriticalFields := WO_MAT_RX_BY$:@VM:WO_MAT_REL_DTM$:@VM:WO_MAT_REL_BY$:@VM:WO_MAT_SUB_VEND_CD$:@VM
|
||||||
|
CriticalFields := WO_MAT_CASS_SHIP_QTY$:@VM:WO_MAT_SHIP_SHORT$:@VM:WO_MAT_MU_WAFER_FLAG$
|
||||||
|
|
||||||
|
Continue = True$
|
||||||
|
For each CriticalField in CriticalFields using @VM setting vPos
|
||||||
|
|
||||||
OrigFileError = 104:': Write operation failed due to readonly field being cleared.'
|
If ( ( (OrigRecord<CriticalField> NE '') and (Record<CriticalField> EQ '') ) or ( DCount(OrigRecord<CriticalField, @VM) GT DCount(Record<CriticalField>, @VM) ) ) then
|
||||||
Status = 0
|
WOMatFieldNos = Xlate('DICT.WO_MAT', '%FIELDS%', DICT_PART$, 'X')
|
||||||
Record = ''
|
WOMatFieldNames = Xlate('DICT.WO_MAT', '%FIELDS%', DICT_DISPLAY$, 'X')
|
||||||
ActionFlow = ACTION_STOP$
|
Locate CriticalField in WOMatFieldNos using @VM setting FieldNo then
|
||||||
|
CriticalFieldName = WOMatFieldNames<0, FieldNo>
|
||||||
end else
|
end else
|
||||||
|
CriticalFieldName = 'Error determining field name'
|
||||||
|
end
|
||||||
|
Recipients = ''
|
||||||
|
SentFrom = 'SYSTEM'
|
||||||
|
Subject = 'WO_MAT_ACTIONS WRITE_PRE Blocked'
|
||||||
|
Message = OConv(Datetime(), 'DT2/^H')
|
||||||
|
Message<2> = 'Computer: ':@Station
|
||||||
|
Message<3> = 'User: ':@User4
|
||||||
|
Message<4> = 'WO_MAT key: ':Name
|
||||||
|
NoteMessage = 'Message: Write operation failed due to readonly field ':CriticalField
|
||||||
|
NoteMessage := ' (':CriticalFieldName:') being cleared.'
|
||||||
|
Message<5> = NoteMessage
|
||||||
|
Message<6> = 'Call Stack:':CRLF$:RetStack()
|
||||||
|
Swap @FM with \0D0A\ in Message
|
||||||
|
Swap @VM with ',' in Message
|
||||||
|
AttachWindow = 'WO_MAT'
|
||||||
|
AttachKey = Name
|
||||||
|
SendToGroup = 'OI_SYSADMIN'
|
||||||
|
|
||||||
|
Parms = Recipients:@RM:SentFrom:@RM:Subject:@RM:Message:@RM:AttachWindow:@RM:AttachKey:@RM:SendToGroup
|
||||||
|
obj_Notes('Create',Parms)
|
||||||
|
|
||||||
|
OrigFileError = 104:': Write operation failed due to readonly field being cleared.'
|
||||||
|
Status = 0
|
||||||
|
Record = ''
|
||||||
|
ActionFlow = ACTION_STOP$
|
||||||
|
Continue = False$
|
||||||
|
end
|
||||||
|
Until (Continue EQ False$)
|
||||||
|
Next CriticalField
|
||||||
|
|
||||||
|
If Continue then
|
||||||
|
|
||||||
WaferQty = Record<WO_MAT_WAFER_QTY$>
|
WaferQty = Record<WO_MAT_WAFER_QTY$>
|
||||||
If ( (WaferQty LT 0) or (WaferQty GT 25) ) then
|
If ( (WaferQty LT 0) or (WaferQty GT 25) ) then
|
||||||
@ -628,9 +607,7 @@ WRITE_RECORD_PRE:
|
|||||||
Null
|
Null
|
||||||
End Case
|
End Case
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -952,4 +929,3 @@ Restore_System_Variables:
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user