Description
This method will create DaemonQueue records
Parameters
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program6/bcubedaemonqueue.p)
/* ===================================== */
/* Start with a clean and empty instance */
/* ===================================== */
<M-40 run ClearData (output viFcReturnSuper (oiReturnStatus)) in BCubeDaemonQueue>
if viFcReturnSuper <> 0
then oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* ============================== */
/* Find the FRWCube Daemon-record */
/* ============================== */
<Q-54 run DaemonPrim (all) (Read) (NoCache)
(input {&CUBEDAEMON}, (DaemonName)
input ?, (DaemonId)
output dataset tqDaemonPrim) in BBaseDaemon>
find tqDaemonPrim where
tqDaemonPrim.tcDaemonName = {&CUBEDAEMON}
no-lock no-error.
if not available tqDaemonPrim
then do:
assign vcCubeDaemonQueueMsg = trim(#T-48'Cube daemon record does not exist.':100(307844977)T-48#)
oiReturnStatus = -3.
<M-49 run SetMessage
(input vcCubeDaemonQueueMsg (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input {&CUBEDAEMON} (icFieldValue),
input 'E':U (icType),
input 2 (iiSeverity),
input '':U (icRowid),
input 'qadfin-912594':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCubeDaemonQueue>
return.
end. /* find tqDaemonPrim where */
/* ============================================== */
/* Get the next 100 QFRWCube records */
/* ============================================== */
assign viNbrRecordsToRead = viCountErrorQueues + 100.
<Q-30 run QFRWCubeByCompanyIDRowID (firstviNbrRecordsToRead) (Read) (NoCache)
(input ?, (CompanyId)
input ?, (DaemonId)
output dataset tqQFRWCubeByCompanyIDRowID) in BQFRWCube>
/* Start the Persistence Layer for BQposting */
if can-find (first tqQFRWCubeByCompanyIDRowID) and
vhPerstistenceLayerHandleLocal = ?
then do:
<M-15 run StartPersistence
(output vhPerstistenceLayerHandleLocal (ohPersistence),
output viFcReturnSuper (oiReturnStatus)) in BCubeDaemonQueue>
end. /* IF can-find (first tqQPostingLineByCompanyIDROWID) and .. */
/* ============================================== */
/* Create the corresponding fcDaemonQueue records */
/* ============================================== */
assign viCount = 0.
viCountErrorQueues = 0.
for each tqQFRWCubeByCompanyIDRowID no-lock:
assign viCountErrorQueues = viCountErrorQueues + 1.
/* if DaemonQueue not correct filled, skip it */
if tqQFRWCubeByCompanyIDRowID.tiQFRWCube_ID = 0 or
tqQFRWCubeByCompanyIDRowID.tiQFRWCube_ID = ? or
tqQFRWCubeByCompanyIDRowID.tiCompany_ID = 0 or
tqQFRWCubeByCompanyIDRowID.tiCompany_ID = ?
then next.
/* if DaemonQueue already exists, skip it */
if tqQFRWCubeByCompanyIDRowID.tiDaemonQueueId <> 0 and
tqQFRWCubeByCompanyIDRowID.tiDaemonQueueId <> ? and
tqQFRWCubeByCompanyIDRowID.tiDaemonId = tqDaemonPrim.tiDaemonId
then next.
/* if qRecord is still locked, then skip it */
assign vcRowID = ?.
if vhPerstistenceLayerHandleLocal <> ?
then do :
assign vcRowID = entry (1,tqQFRWCubeByCompanyIDRowID.tc_rowid).
if vcRowID <> '' and vcRowID <> ?
then do :
assign vhFcComponent = vhPerstistenceLayerHandleLocal.
if <M-53 RecordIsLocked
(input 'QFRWCube':U (icTableName),
input vcRowID (icRecordRowid)) in Progress> = true
then next.
end. /* IF vcRowID <> '' and vcRowID <> ? */
end. /* IF vhPerstistenceLayerHandleLocal <> ? */
assign viCountErrorQueues = viCountErrorQueues - 1.
<M-4 run AddDetailLine
(input 'fcDaemonQueue':U (icTable),
input ? (icParentRowid),
output oiReturnStatus (oiReturnStatus)) in BCubeDaemonQueue>
if oiReturnStatus <> 0
then leave.
assign tfcDaemonQueue.DaemonId = tqDaemonPrim.tiDaemonId
tfcDaemonQueue.DaemonQueueStatus = {&DAEMONQUEUESTATUS-WAITING}
tfcDaemonQueue.DaemonQueuePriority = 1
tfcDaemonQueue.DaemonQueueRef = string(tqQFRWCubeByCompanyIDRowID.tiQFRWCube_ID)
tfcDaemonQueue.DaemonQueueRefDescription = trim(tqQFRWCubeByCompanyIDRowID.tcQFRWCubeInfo) + ' ((':U + trim(string(tqQFRWCubeByCompanyIDRowID.tiCompany_ID)) + '))':U
tfcDaemonQueue.DaemonQueueReqStartDate = ?
tfcDaemonQueue.DaemonQueueReqStartTime = 0.
/* Just process first 100 records */
assign viCount = viCount + 1.
if viCount > 100
then leave.
end.
if oiReturnStatus < 0
then return.
if viCount > 0
then do :
/* ===================================================================== */
/* Run Validate Component BCubeDaemonQueue - note this is a void method */
/* ==================================================================== */
<M-55 run ValidateBC (output viFcReturnSuper (oiReturnStatus)) in BCubeDaemonQueue>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
then assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0
then return.
/* ==================== */
/* Run Addition Updates */
/* ==================== */
<M-27 run AdditionalUpdates (output viFcReturnSuper (oiReturnStatus)) in BCubeDaemonQueue>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
then assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0
then return.
/* ============================================================== */
/* Run Datasave for BCubeDaemonQueue */
/* ============================================================== */
<M-96 run DataSave (output viFcReturnSuper (oiReturnStatus)) in BCubeDaemonQueue>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
then assign oiReturnstatus = viFcReturnSuper.
if oiReturnStatus < 0
then return.
end. /* if viCount */