project QadFinancials > class BReplicaDaemonProcessor > method PerformWorkItem

Description

This is the method that contains the call to the specific method in the appropriate class to perform the request.
This method should be extended on the specific daemon level.
In order to have a proper logging of the errors/warnings you get from the business method that is used for processing the work, you need to fill in tPassMessages temp-table parameter, as a copy of tFcMessages from the called business component.


Parameters


iiDaemonQueueIdinputintegerID of the daemon queue record that indicates the work that needs to be done.
olSuccessoutputlogicalWas the operation successful?
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program/breplicadaemonprocessor.p)

<ANCESTOR-CODE>

/* ========================= */
/* Set default return status */
/* ========================= */
if oiReturnStatus = 0 
then assign oiReturnStatus = -98.
             
/* ================================================= */
/* Find the ReplicationDaemonQueue record            */
/* ================================================= */
<Q-4 run DaemonQueueByQueueIDRef (all) (Read) (NoCache)
   (input iiDaemonQueueId, (DaemonQueueID)
    input ?, (DaemonQueueRef)
    output dataset tqDaemonQueueByQueueIDRef) in BReplicaDaemonQueue >
find tqDaemonQueueByQueueIDRef where
     tqDaemonQueueByQueueIDRef.tiDaemonQueueId = iiDaemonQueueId
     no-lock no-error.
if not available tqDaemonQueueByQueueIDRef
then do:
    assign vcMessage      = trim(#T-6'Daemon queue record for the Replication daemon is missing.':100(31937)t-6#) + chr(10) +
                            trim(substitute('DaemonQueueID = &1.':U, trim(string(iiDaemonQueueId))))
           oiReturnStatus = -3.
    <M-7 run SetMessage (input  vcMessage (icMessage), 
                     input  '':U (icArguments), 
                     input  '':U (icFieldName), 
                     input  string(iidaemonqueueid) (icFieldValue), 
                     input  'E':U (icType), 
                     input  3 (iiSeverity), 
                     input  '':U (icRowid), 
                     input  'QadFin-4910':U (icFcMsgNumber), 
                     input  '':U (icFcExplanation), 
                     input  '':U (icFcIdentification), 
                     input  '':U (icFcContext), 
                     output viFcReturnSuper (oiReturnStatus)) in BReplicaDaemonProcessor>           
    return.                 
end.

/* ============================================ */
/* State the Company of the Daemon Queue record */
/* ============================================ */
assign vcCompanyIDForNewSession = trim(entry(2,tqDaemonQueueByQueueIDRef.tcDaemonQueueRef,chr(4)))      
       viCompanyIDForNewSession = integer(vcCompanyIDForNewSession) no-error.
if viCompanyIDForNewSession = 0 or 
   viCompanyIDForNewSession = ? or
   error-status:error 
then do :
    assign vcMessage      = trim(#T-2'Internal Replication daemon error: cannot state the entity based on the queue information':100(31938)t-2#) + chr(10) +
                            trim(substitute("Queue-information = &1.":U, trim(tqDaemonQueueByQueueIDRef.tcDaemonQueueRef))) + chr(10) + 
                            trim(substitute("Company = &1.":U, string(viCompanyIDForNewSession))) + chr(10) + 
                            trim(substitute("Error-details = &1.":U, trim(ERROR-STATUS:GET-MESSAGE(1))))                
           oiReturnStatus = -3.
    <M-8 run SetMessage (input  vcMessage (icMessage), 
                     input  '':U (icArguments), 
                     input  '':U (icFieldName), 
                     input  string(iidaemonqueueId) (icFieldValue), 
                     input  'E':U (icType), 
                     input  3 (iiSeverity), 
                     input  '':U (icRowid), 
                     input  'QadFin-4911':U (icFcMsgNumber), 
                     input  '':U (icFcExplanation), 
                     input  '':U (icFcIdentification), 
                     input  '':U (icFcContext), 
                     output viFcReturnSuper (oiReturnStatus)) in BReplicaDaemonProcessor>       
    return.            
end. /* if error-status:error */

    /* ================================== */
    /* State the type of the repliciation */
    /* Process Daemon Queue records       */
    /* ================================== */
    <M-13 run SwitchSessionCy
       (input  '' (icCompanyCode), 
        input  viCompanyIDForNewSession (iiCompanyId), 
        output viFcReturnSuper (oiReturnStatus)) in BReplicaDaemonProcessor>
        
    if viFcReturnSuper lt 0
    then do:
        assign
            oiReturnStatus = viFcReturnSuper
            olSuccess = false.
        return.
    end.
                
    case entry(1,tqDaemonQueueByQueueIDRef.tcDaemonQueueRef,chr(4)) :
        /* SHAREDSET TYPE GL */
        when {&SHAREDSETTYPECODE-GL}
        then do:
            <M-47 run api/bgl/apireplicatefromdaemon.p
               (input  '' (icApiLogin), 
                input  '' (icApiPassword), 
                input  '' (icApiExtra), 
                input  viSessionID (iiApiSessionId), 
                input  tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription (icListIDs), 
                output dataset tFcMessages (ozFcMessagesDS), 
                output viFcReturnSuper (oiReturnStatus))>
        end.
        
        /* SHAREDSET TYPE JOURNAL */
        when {&SHAREDSETTYPECODE-JOURNAL}
        then do:
            <M-26 run api/bjournal/apireplicatefromdaemon.p
               (input  '' (icApiLogin), 
                input  '' (icApiPassword), 
                input  '' (icApiExtra), 
                input  viSessionID (iiApiSessionId), 
                input  tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription (icListIDs), 
                output dataset tFcMessages (ozFcMessagesDS), 
                output viFcReturnSuper (oiReturnStatus))>
        end.
        
        /* SHAREDSET TYPE DIVISION */
        when {&SHAREDSETTYPECODE-DIVISION}
        then do:
            <M-53 run api/bdivision/apireplicatefromdaemon.p
               (input  '' (icApiLogin), 
                input  '' (icApiPassword), 
                input  '' (icApiExtra), 
                input  viSessionID (iiApiSessionId), 
                input  tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription (icListIDs), 
                output dataset tFcMessages (ozFcMessagesDS), 
                output viFcReturnSuper (oiReturnStatus))>
        end.
        
        /* SHAREDSET TYPE CREDITOR */
        when {&SHAREDSETTYPECODE-CREDITOR}
        then do:
            <M-84 run api/bcreditor/apireplicatefromdaemon.p
               (input  '' (icApiLogin), 
                input  '' (icApiPassword), 
                input  '' (icApiExtra), 
                input  viSessionID (iiApiSessionId), 
                input  tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription (icListIDs), 
                output dataset tFcMessages (ozFcMessagesDS), 
                output viFcReturnSuper (oiReturnStatus))>
        end.
        
        /* SHAREDSET TYPE DEBTOR */
        when {&SHAREDSETTYPECODE-DEBTOR}
        then do:
            <M-82 run api/bdebtor/apireplicatefromdaemon.p
               (input  '' (icApiLogin), 
                input  '' (icApiPassword), 
                input  '' (icApiExtra), 
                input  viSessionID (iiApiSessionId), 
                input  tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription (icListIDs), 
                output dataset tFcMessages (ozFcMessagesDS), 
                output viFcReturnSuper (oiReturnStatus))>
        end.
        
        /* SHAREDSET TYPE PROJECT */
        when {&SHAREDSETTYPECODE-PROJECT}
        then do:
            <M-77 run api/bproject/apireplicatefromdaemon.p
               (input  '' (icApiLogin), 
                input  '' (icApiPassword), 
                input  '' (icApiExtra), 
                input  viSessionID (iiApiSessionId), 
                input  tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription (icListIDs), 
                output dataset tFcMessages (ozFcMessagesDS), 
                output viFcReturnSuper (oiReturnStatus))>
        end.
            
        /* SHAREDSET TYPE COSTCENTRE */
        when {&SHAREDSETTYPECODE-COSTCENTRE}
        then do:
            <M-42 run api/bcostcentre/apireplicatefromdaemon.p
               (input  '' (icApiLogin), 
                input  '' (icApiPassword), 
                input  '' (icApiExtra), 
                input  viSessionID (iiApiSessionId), 
                input  tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription (icListIDs), 
                output dataset tFcMessages (ozFcMessagesDS), 
                output viFcReturnSuper (oiReturnStatus))>
        end.
        
        /* SHAREDSET TYPE EXCHANGE RATE */
        when {&SHAREDSETTYPECODE-EXCHANGERATE}
        then do:
            <M-36 run api/bexchangerate/apireplicatefromdaemon.p
               (input  '' (icApiLogin), 
                input  '' (icApiPassword), 
                input  '' (icApiExtra), 
                input  viSessionID (iiApiSessionId), 
                input  tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription (icListIDs), 
                output dataset tFcMessages (ozFcMessagesDS), 
                output viFcReturnSuper (oiReturnStatus))>
        end.
        
        /* DEBTORENDUSER */
        when {&REPLICATIONDAEMON-DEBTORENDUSER}
        then do:
            <M-83 run api/bdebtorenduser/apireplicatefromdaemon.p
               (input  '' (icApiLogin), 
                input  '' (icApiPassword), 
                input  '' (icApiExtra), 
                input  viSessionID (iiApiSessionId), 
                input  tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription (icListIDs), 
                output dataset tFcMessages (ozFcMessagesDS), 
                output viFcReturnSuper (oiReturnStatus))>
        end.
        
        /* DEBTORSHIPTO */
        when {&REPLICATIONDAEMON-DEBTORSHIPTO}
        then do:
            <M-17 run api/bdebtorshipto/apireplicatefromdaemon.p
               (input  '' (icApiLogin), 
                input  '' (icApiPassword), 
                input  '' (icApiExtra), 
                input  viSessionID (iiApiSessionId), 
                input  tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription (icListIDs), 
                output dataset tFcMessages (ozFcMessagesDS), 
                output viFcReturnSuper (oiReturnStatus))>
        end.
        
        /* COMPANY */
        when {&REPLICATIONDAEMON-COMPANY}
        then do:
            <M-71 run api/bcompany/apireplicatefromdaemon.p
               (input  '' (icApiLogin), 
                input  '' (icApiPassword), 
                input  '' (icApiExtra), 
                input  viSessionID (iiApiSessionId), 
                input  tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription (icListIDs), 
                output dataset tFcMessages (ozFcMessagesDS), 
                output viFcReturnSuper (oiReturnStatus))>
        end.
        
        /* EMPLOYEE */
        when {&REPLICATIONDAEMON-EMPLOYEE}
        then do:
            <M-49 run api/bemployee/apireplicatefromdaemon.p
               (input  '' (icApiLogin), 
                input  '' (icApiPassword), 
                input  '' (icApiExtra), 
                input  viSessionID (iiApiSessionId), 
                input  tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription (icListIDs), 
                output dataset tFcMessages (ozFcMessagesDS), 
                output viFcReturnSuper (oiReturnStatus))>
        end.
        
        /* PAYMENT CONDITION */
        when {&REPLICATIONDAEMON-PAYMENTCONDITION}
        then do:
            <M-14 run api/bpaymentcondition/apireplicatefromdaemon.p
               (input  '' (icApiLogin), 
                input  '' (icApiPassword), 
                input  '' (icApiExtra), 
                input  viSessionID (iiApiSessionId), 
                input  tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription (icListIDs), 
                output dataset tFcMessages (ozFcMessagesDS), 
                output viFcReturnSuper (oiReturnStatus))>
        end.
        
        otherwise do :
            assign vcMessage      = trim(#T-9'Internal Replication daemon error: cannot state shared set information of a request':100(31939)t-9#) + chr(10) +
                                    trim(substitute("Queue-information = &1.":U, trim(tqDaemonQueueByQueueIDRef.tcDaemonQueueRefDescription))) + chr(10) + 
                                    trim(substitute("Company = &1.":U, string(viCompanyIDForNewSession)))                
                   oiReturnStatus = -3.
            <M-10 run SetMessage (input  vcMessage (icMessage), 
                          input  '':U (icArguments), 
                          input  '':U (icFieldName), 
                          input  string(iidaemonqueueid) (icFieldValue), 
                          input  'E':U (icType), 
                          input  3 (iiSeverity), 
                          input  '':U (icRowid), 
                          input  'QadFin-4912':U (icFcMsgNumber), 
                          input  '':U (icFcExplanation), 
                          input  '':U (icFcIdentification), 
                          input  '':U (icFcContext), 
                          output viFcReturnSuper (oiReturnStatus)) in BReplicaDaemonProcessor>               
            return.  
        end. /*otherwise */    
    end case.

/* ============================ */
/* Reset Return values          */
/* ============================ */
If viFcReturnSuper < 0
then assign olSuccess = false.
else assign olSuccess = true.
If oiReturnStatus = -98 
then assign oiReturnstatus = 0.