project QadFinancials > class BGLCalendar > method AdditionalUpdates

Description

This empty method allows to do additional updates on class temp-tables after records were received (and validated) from outside, using method SetPublicTables.
You can start instances of other business classes to do those updates.


Parameters


oiReturnStatusoutputinteger


Internal usage


unused


program code (program/bglcalendar.p)

<ANCESTOR-CODE>

/* Set default return status */
assign oiReturnStatus = -98
       viBlockReturnStatus = 0
       vlFailedSwitchSessionBack = false.

/* Get the list of companies linked to the current domain */
<Q-4 run CompanyByDomain (all) (Read) (NoCache)
          (input '':U, (CompanyId)
           input viDomainID, (DomainId)
           input ?, (Active)
           output dataset tqCompanyByDomain) in BCompany >

/* Start or open transaction */
<I-23 {bFcOpenInstance
            &CLASS           = "Transaction"}>

TRANSACTIONBLOCK:
do :
    <M-24 run StartTransaction (output viFcReturnSuper (oiReturnStatus)) in Transaction>

    if viFcReturnSuper <> 0
    then do:
        assign viBlockReturnStatus = viFcReturnSuper.
    end.

    <I-27 {bFcCloseInstance
            &CLASS           = "Transaction"}>

    if viBlockReturnStatus < 0
    then do :
        assign vcMessage = trim(#T-25'GL Period Maintenance: the transaction did not start correctly.':100(4279)t-25#).
        <M-26 run SetMessage (input  vcMessage (icMessage), 
                      input  '':U (icArguments), 
                      input  '':U (icFieldName), 
                      input  '':U (icFieldValue), 
                      input  'E':U (icType), 
                      input  3 (iiSeverity), 
                      input  '':U (icRowid), 
                      input  'QadFin-9544':U:U (icFcMsgNumber), 
                      input  '':U (icFcExplanation), 
                      input  '':U (icFcIdentification), 
                      input  '':U (icFcContext), 
                      output viFcReturnSuper (oiReturnStatus)) in BGLCalendar>

        leave TRANSACTIONBLOCK.
    end.

    /* Replicate GL periods to each linked company.  Each company must use
    *  its own instance of the BPeriod so the class temp-tables contains
    *  periods only for that company because all the business process assumes
    *  periods in the these temp-tables are for one company only
    */
    for each tqCompanyByDomain:

        /* Switch session to the linked company */
        <I-8 {bFcOpenInstance
            &CLASS           = "Session"}>

        <M-9 run SwitchCompany (input  tqCompanyByDomain.tcCompanyCode (icCompanyCode), 
                        input  tqCompanyByDomain.tiCompany_ID (iiCompanyId), 
                        output viLocalReturnStatus (oiReturnStatus)) in Session>

        if viLocalReturnStatus <> 0 then assign viBlockReturnStatus = viLocalReturnStatus.

        <I-10 {bFcCloseInstance
            &CLASS           = "Session"}>

        if viBlockReturnStatus < 0 then leave TRANSACTIONBLOCK.

        /* Replicate periods to the linked company */
        <I-1 {bFcStartAndOpenInstance
            &ADD-TO-TRANSACTION = "true"
            &CLASS              = "BPeriod"}>

        <M-2 run SynchronizePeriod (input  tGLCalendar (t_sGLCalendarForPeriod), 
                            input  tqCompanyByDomain.tiCompany_ID (iiCompanyId), 
                            input  vcDomainCode (icDomainCode), 
                            input  tqCompanyByDomain.tcCompanyCode (icEntityCode), 
                            output viLocalReturnStatus (oiReturnStatus)) in BPeriod>

        if viLocalReturnStatus <> 0 then assign viBlockReturnStatus = viLocalReturnStatus.

        <I-3 {bFcCloseInstance
            &CLASS           = "BPeriod"}>

        if viBlockReturnStatus < 0 then leave TRANSACTIONBLOCK.

    end.  /* for each tqCompanyByDomain */

    /* Switch session back to current company */
    <I-14 {bFcOpenInstance
            &CLASS           = "Session"}>

    <M-15 run SwitchCompany (input  '':U (icCompanyCode), 
                         input  viCompanyId (iiCompanyId), 
                         output viLocalReturnStatus (oiReturnStatus)) in Session>

    if viLocalReturnStatus <> 0
    then do:
        assign viBlockReturnStatus = viLocalReturnStatus.

        if viFcReturnSuper < 0
        then do:
            assign vcMessage = trim(#T-16'The system failed to switch this session back to the current entity. Exit the application and restart.':100(45501)t-16#)
                   vlFailedSwitchSessionBack = true.

            <M-17 run SetMessage (input  vcMessage (icMessage), 
                      input  '':U (icArguments), 
                      input  '':U (icFieldName), 
                      input  '':U (icFieldValue), 
                      input  'E':U (icType), 
                      input  3 (iiSeverity), 
                      input  '':U (icRowid), 
                      input  '-152':U (icFcMsgNumber), 
                      input  '':U (icFcExplanation), 
                      input  '':U (icFcIdentification), 
                      input  '':U (icFcContext), 
                      output viFcReturnSuper (oiReturnStatus)) in BGLCalendar>
        end.
    end.

    <I-18 {bFcCloseInstance
            &CLASS           = "Session"}>

    if viBlockReturnStatus < 0 then leave TRANSACTIONBLOCK.

    /* Replicate periods to MFG/PRO GL Calendar Master (glc_cal) */
    <I-19 {bFcStartAndOpenInstance
            &ADD-TO-TRANSACTION = "true"
            &CLASS              = "BMfgGLCalendar"}>

    <M-20 run MaintainData (input  tGLCalendar (tGLCalendar1), 
                        output viLocalReturnStatus (oiReturnStatus)) in BMfgGLCalendar>

    if viLocalReturnStatus <> 0 then assign viBlockReturnStatus = viLocalReturnStatus.

    <I-21 {bFcCloseInstance
            &CLASS           = "BMfgGLCalendar"}>

end.  /* TRANSACTIONBLOCK */

<I-28 {bFcOpenInstance
            &CLASS           = "Transaction"}>

if viBlockReturnStatus <> 0 then assign oiReturnStatus = viBlockReturnStatus.

/* Abort transaction if error occured */
if viBlockReturnStatus < 0 then do :
    <M-29 run AbortTransaction
       (input  ? (ihParentInstance), 
        output vcDummy (ocInstances), 
        output viFcReturnSuper (oiReturnStatus)) in Transaction>

    if viFcReturnSuper < 0
    then do:
        assign vcMessage = trim(substitute(#T-30'An error (&1) occurred while aborting the transaction.':100(4327)T-30#, string(viFcReturnSuper))).
        <M-31 run SetMessage (input  vcMessage (icMessage), 
                      input  '':U (icArguments), 
                      input  '':U (icFieldName), 
                      input  '':U (icFieldValue), 
                      input  'E':U (icType), 
                      input  '':U (iiSeverity), 
                      input  '':U (icRowid), 
                      input  'QadFin-9545':U:U (icFcMsgNumber), 
                      input  '':U (icFcExplanation), 
                      input  '':U (icFcIdentification), 
                      input  '':U (icFcContext), 
                      output viFcReturnSuper (oiReturnStatus)) in BGLCalendar>
    end.
end.
else do:
    <M-32 run CommitTransaction
       (input  true (ilStop), 
        input  ? (ihParentInstance), 
        output vcDummy (ocInstances), 
        output viFcReturnSuper (oiReturnStatus)) in Transaction>

    if viFcReturnSuper < 0
    then do:
        assign vcMessage = trim(substitute(#T-33'An error (&1) occurred while committing the transaction.':100(45511)T-33#, string(viFcReturnSuper))).
        <M-34 run SetMessage (input  vcMessage (icMessage), 
                      input  '':U (icArguments), 
                      input  '':U (icFieldName), 
                      input  '':U (icFieldValue), 
                      input  '':U (icType), 
                      input  'E':U (iiSeverity), 
                      input  3 (icRowid), 
                      input  'QadFin-9546':U:U (icFcMsgNumber), 
                      input  '':U (icFcExplanation), 
                      input  '':U (icFcIdentification), 
                      input  '':U (icFcContext), 
                      output viFcReturnSuper (oiReturnStatus)) in BGLCalendar>
    end.
end.

<I-35 {bFcCloseInstance
            &CLASS           = "Transaction"}>

if viBlockReturnStatus = 0 and oiReturnStatus = -98 then assign oiReturnStatus = 0.