added LSL2 stored procedures
This commit is contained in:
212
LSL2/STPROC/OBJ_POST_LOG.txt
Normal file
212
LSL2/STPROC/OBJ_POST_LOG.txt
Normal file
@ -0,0 +1,212 @@
|
||||
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.
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
|
||||
$INSERT POST_LOG_EQUATES
|
||||
$INSERT WO_MAT_EQUATES
|
||||
$INSERT RDS_EQU
|
||||
$INSERT REACT_RUN_EQUATES
|
||||
|
||||
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'
|
||||
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
|
||||
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
|
||||
|
||||
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
|
||||
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
|
Reference in New Issue
Block a user