234 lines
9.3 KiB
Plaintext
234 lines
9.3 KiB
Plaintext
COMPILE FUNCTION obj_Post_Log(Method,Parms)
|
|
/*
|
|
Methods for the Post Log (POST_LOG) table.
|
|
(Input buffer for record updates that must be made
|
|
even if the record is locked, works like a !file)
|
|
|
|
05/12/2008 JCH - Initial Coding
|
|
04/22/2019 DJS - Added unlock service statements within POST subroutine wherever an error condition returns
|
|
prematurely to prevent POST_LOG service from locking up.
|
|
02/10/2025 DJM - Added additional logging and unlocking logic for WO_MAT records.
|
|
|
|
Properties:
|
|
|
|
Methods:
|
|
|
|
Create(TableName,RecKey,FieldNos,Values) ;* Create new Post Log entry
|
|
Post(null) ;* Pass null - will attempt to post all transactions in the table
|
|
|
|
*/
|
|
|
|
|
|
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, Get_Property, obj_RDS, Database_Services, Environment_Services
|
|
DECLARE FUNCTION Logging_Services, Datetime, SRP_DateTime
|
|
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, Send_Dyn, Send_Dyn, RList, obj_WO_Log, Send_Event, obj_RDS
|
|
DECLARE SUBROUTINE obj_WO_Mat, Send_Info, obj_Notes, ErrMsg, Logging_Services, Mona_Services
|
|
|
|
|
|
$INSERT POST_LOG_EQUATES
|
|
$INSERT WO_MAT_EQUATES
|
|
$INSERT RDS_EQU
|
|
$INSERT REACT_RUN_EQUATES
|
|
$INSERT LOGICAL
|
|
|
|
EQU CRLF$ TO \0D0A\
|
|
Equ Comma$ to ','
|
|
|
|
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\POST_LOG'
|
|
LogDate = Oconv(Date(), 'D4/')
|
|
LogTime = Oconv(Time(), 'MTS')
|
|
LogFileName = LogDate[7, 4] : '-' : LogDate[1, 2] : '-' : LogDate[4, 2] : ' SAPBatchNo Log.csv'
|
|
Headers = 'Logging DTM' : @FM : 'WOMatKey' : @FM : ' SAPBatchNo' : @FM : 'Failed?'
|
|
objLog = Logging_Services('NewLog', LogPath, LogFileName, CRLF$, Comma$, Headers, '', False$, False$)
|
|
LoggingDTM = LogDate : ' ' : LogTime ; // Logging DTM
|
|
|
|
ErrTitle = 'Error in Stored Procedure "obj_Post_Log"'
|
|
ErrorMsg = ''
|
|
|
|
IF NOT(ASSIGNED(Method)) THEN ErrorMsg = 'Unassigned parameter "Method" passed to subroutine'
|
|
IF NOT(ASSIGNED(Parms)) THEN Parms = ''
|
|
|
|
IF ErrorMsg NE '' THEN
|
|
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
|
|
RETURN ''
|
|
END
|
|
|
|
Result = ''
|
|
|
|
BEGIN CASE
|
|
CASE Method = 'Create' ; GOSUB Create
|
|
CASE Method = 'Post' ; GOSUB Post
|
|
|
|
CASE 1
|
|
ErrorMsg = 'Unknown Method ':QUOTE(Method):' passed to routine.'
|
|
|
|
END CASE
|
|
|
|
IF ErrorMsg NE '' THEN
|
|
Set_Status(-1,ErrTitle:@SVM:ErrorMsg)
|
|
RETURN ''
|
|
END
|
|
|
|
RETURN Result
|
|
|
|
|
|
* * * * * * *
|
|
Create:
|
|
* * * * * * *
|
|
|
|
TableName = Parms[1,@RM]
|
|
TableKey = Parms[COL2()+1,@RM] ;* TableKey
|
|
FieldNos = Parms[COL2()+1,@RM] ;* @VM'd list of field numbers to update
|
|
FieldDataVals = Parms[COL2()+1,@RM] ;* @VM'd list of data values
|
|
FieldAddMVby = Parms[COL2()+1,@RM] ;* AR, AL, TOP, or BOT - insert new data into MV'd field
|
|
|
|
IF TableName = '' THEN ErrorMsg = 'Null parameter "TableName" passed to routine. (':Method:')'
|
|
IF TableKey = '' THEN ErrorMsg = 'Null parameter "TableKey" passed to routine. (':Method:')'
|
|
IF FieldNos = '' THEN ErrorMsg = 'Null parameter "FieldNos" passed to routine. (':Method:')'
|
|
IF FieldDataVals = '' THEN ErrorMsg = 'Null parameter "FieldDataVals" passed to routine. (':Method:')'
|
|
|
|
IF ErrorMsg NE '' THEN RETURN
|
|
|
|
CurrDTM = ICONV(OCONV(Date(),'D4/'):' ':OCONV(Time(),'MTS'),'DT')
|
|
|
|
IF FieldDataVals = 'NULL' THEN FieldDataVals = ''
|
|
|
|
TransKey = TableName:'*':CurrDtm:'*':TableKey
|
|
TransRec = FieldNos:@FM:FieldDataVals:@FM:FieldAddMVby
|
|
|
|
PlParms = 'POST_LOG':@RM:TransKey:@RM:@RM:TransRec
|
|
obj_Tables('WriteRec',PlParms)
|
|
|
|
If ( (TableName EQ 'WO_MAT') and (FieldNos EQ WO_MAT_SAP_BATCH_NO$) ) then
|
|
// Log SAP Batch No write request
|
|
LogData = ''
|
|
LogData<1> = LoggingDTM
|
|
LogData<2> = TableKey
|
|
LogData<3> = FieldDataVals
|
|
LogDate<4> = ''
|
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
|
end
|
|
|
|
RETURN
|
|
|
|
|
|
* * * * * * *
|
|
Post:
|
|
* * * * * * *
|
|
|
|
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
|
ServiceKeyID = 'Obj_Post_Log*Post'
|
|
Lock hSysLists, ServiceKeyID then
|
|
|
|
OPEN 'POST_LOG' TO FileIn ELSE
|
|
ErrorMsg = 'Unable to Open POST_LOG table for Posting.'
|
|
// 4/22/19 Added unlock statement to prevent POST_LOG service from locking up
|
|
Unlock hSysLists, ServiceKeyID else Null
|
|
RETURN
|
|
END
|
|
|
|
CursorVar = ''
|
|
SELECT 'POST_LOG' BY 'CREATE_DTM' SETTING CursorVar ELSE
|
|
Status = Set_FSError()
|
|
// 4/22/19 Added unlock statement to prevent POST_LOG service from locking up
|
|
Unlock hSysLists, ServiceKeyID else Null
|
|
RETURN
|
|
END
|
|
|
|
If @RecCount EQ 0 then Mona_Services('SendBufferedStatus', 'GRP_OPENINSIGHT_MES_OP_FE_SAP_INBOUND', 'SetSAPBatchQueue', 'ok')
|
|
Done = 0
|
|
LOOP
|
|
READNEXT PostLogKey USING CursorVar ELSE Done = 1
|
|
UNTIL Done
|
|
PlParms = 'POST_LOG':@RM:PostLogKey
|
|
PostLogRec = obj_Tables('ReadRec',PlParms)
|
|
|
|
Send_Info('POST_LOG ':PostLogKey)
|
|
|
|
LogFile = PostLogKey[1,'*']
|
|
thisTransDTM = PostLogKey[COL2()+1,'*']
|
|
RecKey = FIELD(PostLogKey,'*',3,99)
|
|
|
|
IF RowExists(LogFile,RecKey) THEN
|
|
errCode = ''
|
|
UFParms = LogFile:@RM:RecKey:@RM:@RM
|
|
UpdateRec = obj_Tables('ReadRec',UFParms)
|
|
IF Get_Status(errCode) THEN
|
|
|
|
If (Field(PostLogKey, '*', 1) EQ 'WO_MAT') AND ((PostLogRec<POST_LOG_FIELD_NO$, 1> EQ WO_MAT_SAP_BATCH_NO$) OR (PostLogRec<POST_LOG_FIELD_NO$, 1> EQ WO_MAT_SAP_TX_DTM$)) then
|
|
AllowedTime = SRP_DateTime("AddMinutes", DateTime(), -5)
|
|
If (Field(PostLogKey, '*', 2)) LT AllowedTime then
|
|
Resp = Database_Services('UnlockKeyID', 'WO_MAT', PostLogRec<POST_LOG_REC_KEY1$>)
|
|
If Resp NE False$ then
|
|
Mona_Services('SendBufferedStatus', 'GRP_OPENINSIGHT_MES_OP_FE_SAP_INBOUND', 'SetSAPBatchQueue', 'ok')
|
|
end else
|
|
Mona_Services('SendBufferedStatus', 'GRP_OPENINSIGHT_MES_OP_FE_SAP_INBOUND', 'SetSAPBatchQueue', 'critical')
|
|
LogData = ''
|
|
LogData<1> = LoggingDTM
|
|
LogData<2> = TableKey
|
|
LogData<3> = FieldDataVals
|
|
LogData<4> = 'Record failed to unlock.'
|
|
Logging_Services('AppendLog', objLog, LogData, @RM, @FM)
|
|
end
|
|
end
|
|
end
|
|
Set_Status(0) ;* Cant't get the lock or other problem reading the log rec so just bail
|
|
obj_Tables('UnlockRec',PlParms)
|
|
END ELSE
|
|
|
|
FieldCnt = COUNT(PostLogRec<POST_LOG_FIELD_NO$>,@VM) + (PostLogRec<POST_LOG_FIELD_NO$> NE '')
|
|
FOR I = 1 TO FieldCnt
|
|
FieldNo = PostLogRec<POST_LOG_FIELD_NO$,I>
|
|
FieldAddMVBy = PostLogRec<POST_LOG_FIELD_ADD_MV_BY$,I>
|
|
|
|
IF FieldAddMVBy = '' THEN
|
|
UpdateRec<FieldNo> = PostLogRec<POST_LOG_FIELD_VALUE$,I>
|
|
END ELSE
|
|
NewValue = PostLogRec<POST_LOG_FIELD_VALUE$,I>
|
|
|
|
BEGIN CASE
|
|
CASE FieldAddMVBy = 'BOT'
|
|
|
|
UpdateRec = INSERT(UpdateRec,FieldNo,-1,0,NewValue)
|
|
|
|
CASE FieldAddMVBy = 'TOP'
|
|
|
|
UpdateRec = INSERT(UpdateRec,FieldNo,1,0,NewValue)
|
|
|
|
CASE FieldAddMVBy = 'AR' OR FieldAddMVBy = 'DR' OR FieldAddMVBy = 'AL' OR FieldAddMVBy = 'DL'
|
|
|
|
LOCATE NewValue IN UpdateRec<FieldNo> BY FieldAddMVBy USING @VM SETTING Pos ELSE
|
|
UpdateRec = INSERT(UpdateRec,FieldNo,Pos,0,NewValue)
|
|
END
|
|
|
|
END CASE
|
|
END
|
|
NEXT I
|
|
|
|
UFParms = FIELDSTORE(UFParms,@RM,4,0,UpdateRec)
|
|
obj_Tables('WriteRec',UFParms)
|
|
|
|
IF Get_Status(errCode) THEN
|
|
Set_Status(0)
|
|
obj_Tables('UnlockRec',PlParms)
|
|
obj_Tables('UnlockRec',UFParms)
|
|
ClearSelect CursorVar
|
|
// 4/22/19 Added unlock statement to prevent POST_LOG service from locking up
|
|
Unlock hSysLists, ServiceKeyID else Null
|
|
RETURN
|
|
END ELSE
|
|
obj_Tables('DeleteRec',PlParms)
|
|
END
|
|
END
|
|
END ELSE
|
|
obj_Tables('DeleteRec',PlParms)
|
|
END
|
|
|
|
REPEAT
|
|
|
|
Unlock hSysLists, ServiceKeyID else Null
|
|
end
|
|
|
|
RETURN
|
|
|