project QadFinancials > class BReportPeriod > 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/breportperiod.p)

/* ======================================================================================================= */
    /* First, we load all relevant RpeortPeriods in a separate temp-table. This will make it easier to do     */
    /* some additional validations, because we can just check this temp-table and don't have to check both the */
    /* instance temp-table and the database.                                                                   */
    /* ======================================================================================================= */
    empty temp-table tReportPeriodTemp.
    for each tReportPeriod where
             tReportPeriod.tc_Status <> "D":U:
        create tReportPeriodTemp.
        buffer-copy tReportPeriod to tReportPeriodTemp.
    end.
    <Q-1 run ReportPeriodByAllInfo (all) (Read) (NoCache)
          (input ?, (ReportPeriodID)
           input ?, (ReportPeriodYear)
           input ?, (ReportPeriodPeriod)
           input ?, (ReportPeriodStartDate)
           input ?, (ReportPeriodEndDate)
           input ?, (ReportPeriodIsReported)
           output dataset tqReportPeriodByAllInfo) in BReportPeriod >
    for each tqReportPeriodByAllInfo no-lock :
        if can-find (first tReportPeriodTemp where
                           tReportPeriodTemp.ReportPeriodYear   = tqReportPeriodByAllInfo.tiReportPeriodYear and
                           tReportPeriodTemp.ReportPeriodPeriod = tqReportPeriodByAllInfo.tiReportPeriodPeriod) or
           can-find (first tReportPeriod where
                           tReportPeriod.ReportPeriodYear   = tqReportPeriodByAllInfo.tiReportPeriodYear   and
                           tReportPeriod.ReportPeriodPeriod = tqReportPeriodByAllInfo.tiReportPeriodPeriod and
                           tReportPeriod.tc_Status    = "D":U)
        then next.
        create tReportPeriodTemp.
        assign tReportPeriodTemp.ReportPeriod_ID       = tqReportPeriodByAllInfo.tiReportPeriod_ID
               tReportPeriodTemp.ReportPeriodYear      = tqReportPeriodByAllInfo.tiReportPeriodYear
               tReportPeriodTemp.ReportPeriodPeriod    = tqReportPeriodByAllInfo.tiReportPeriodPeriod
               tReportPeriodTemp.ReportPeriodStartDate = tqReportPeriodByAllInfo.ttReportPeriodStartDate
               tReportPeriodTemp.ReportPeriodEndDate   = tqReportPeriodByAllInfo.ttReportPeriodEndDate
               tReportPeriodTemp.tc_Rowid              = tqReportPeriodByAllInfo.tc_Rowid.
    end. /* for each tqReportPeriodByAllInfo no-lock : */
                                                                                                 
    /* ======================================================================================= */
    /* Now we can easily do some extra validations; testing the consecutive restrictions       */
    /* We test on  status <> "D" because period records must be successive so no gaps allowed  */                          
    /* eg i delete 2004/07 and then i test on status C or N, he doesn't do anything and you    */
    /* can save the record what's wrong                                                        */
    /* ======================================================================================= */
    for each tReportPeriod where
             tReportPeriod.tc_Status <> "D":U :
        /* ============================================= */
        /* The year of a Period must be consecutive      */
        /* This means that either:                       */
        /*   * The previous year is already defined      */
        /*   * This is the first year being defined      */
        /* ============================================= */
        if not can-find (first tReportPeriodTemp where
                               tReportPeriodTemp.ReportPeriodYear = tReportPeriod.ReportPeriodYear - 1) and
           can-find (first tReportPeriodTemp where
                           tReportPeriodTemp.ReportPeriodYear < tReportPeriod.ReportPeriodYear)
        then do:
            assign vcMsgRepPd      = trim (substitute(#T-9'You first must define the GL periods for &1.':255(3059)T-9#, string(tReportPeriod.ReportPeriodYear - 1)))
                   oiReturnStatus = -1.
            <M-2 run SetMessage (input  vcMsgRepPd (icMessage),
                     input  '':U (icArguments),
                     input  'tReportPeriod.ReportPeriodYear':U (icFieldName),
                     input  tReportPeriod.ReportPeriodYear (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  tReportPeriod.tc_Rowid (icRowid),
                     input  'QADFIN-967':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BReportPeriod>
        end. /* if not can-find */
        /* ============================================== */
        /* The period of a Period must be consecutive     */
        /* This means that either:                        */
        /*   * The previous period is already defined     */
        /*   * This is the first period being defined     */
        /* ============================================== */
        if tReportPeriod.ReportPeriodPeriod > 1 and
           not can-find (first tReportPeriodTemp where
                               tReportPeriodTemp.ReportPeriodYear   = tReportPeriod.ReportPeriodYear and
                               tReportPeriodTemp.ReportPeriodPeriod = tReportPeriod.ReportPeriodPeriod - 1)
        then do:
            assign vcMsgRepPd      = trim (subst (#T-10'You first must define GL period &1/&2.':255(3060)T-10#, string(tReportPeriod.ReportPeriodYear), string(tReportPeriod.ReportPeriodPeriod - 1)))
                   oiReturnStatus = -1.
            <M-3 run SetMessage (input  vcMsgRepPd (icMessage),
                     input  '':U (icArguments),
                     input  'tReportPeriod.ReportPeriodYear':U (icFieldName),
                     input  tReportPeriod.ReportPeriodYear (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  tReportPeriod.tc_Rowid (icRowid),
                     input  'QADFIN-975':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BReportPeriod>
        end. /* if tReportPeriod.ReportPeriodPeriod > 1 and */
        /* ================================================================ */
        /* The start date of a Period must be consecutive (no corr period)  */
        /* This means that either:                                          */
        /*   * There is a period with end date 1 day before this start date */
        /*   * This is the first period being defined                       */
        /* ================================================================ */
        if not can-find (first tReportPeriodTemp where
                               tReportPeriodTemp.ReportPeriodEndDate = tReportPeriod.ReportPeriodStartDate - 1) and
           can-find (first tReportPeriodTemp where
                           tReportPeriodTemp.ReportPeriodEndDate < tReportPeriod.ReportPeriodStartDate)
        then do:
            assign vcMsgRepPd      = trim (subst (#T-11'You first must define a GL period ending on &1.':100(3061)T-11#, string(tReportPeriod.ReportPeriodStartDate - 1)))
                   oiReturnStatus = -1.
            <M-4 run SetMessage (input  vcMsgRepPd (icMessage),
                     input  '':U (icArguments),
                     input  'tReportPeriod.ReportPeriodYear':U (icFieldName),
                     input  tReportPeriod.ReportPeriodYear (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  tReportPeriod.tc_Rowid (icRowid),
                     input  'QADFIN-976':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BReportPeriod>
        end. /* if not can-find (first tReportPeriodTemp where */
        /* ======================================================================================== */
        /* The start and end date of an accounting period cannot be the same as the previous period */
        /* ======================================================================================== */
        if can-find (first tReportPeriodTemp where
                           tReportPeriodTemp.ReportPeriodStartDate = tReportPeriod.ReportPeriodStartDate and
                           tReportPeriodTemp.ReportPeriodEndDate   = tReportPeriod.ReportPeriodEndDate   and
                           tReportPeriodTemp.ReportPeriodYear     <> tReportPeriod.ReportPeriodYear      and
                           tReportPeriodTemp.ReportPeriodPeriod   <> tReportPeriod.ReportPeriodPeriod )
        then do :
            assign vcDatetemp      = <M-53 DisplayDate  (input  tReportPeriod.ReportPeriodStartDate (itDate)) in BReportPeriod>.
            assign vcMsgRepPd      = trim(#T-12'The start and end date must be unique when it is not a correction period.':255(3062)T-12#)
                   vcMsgRepPd      = vcMsgRepPd + chr(10) + trim(#T-13'GL Calendar Year/GL Period':255(3063)T-13#) + " : ":U + string(tReportPeriod.ReportPeriodYear) + " / ":U + string(tReportPeriod.ReportPeriodPeriod)
                   oiReturnStatus = -1.
            <M-5 run SetMessage
               (input  vcMsgRepPd (icMessage), 
                input  '':U (icArguments), 
                input  'tReportPeriod.ReportPeriodStartDate':U (icFieldName), 
                input  vcDatetemp (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  tReportPeriod.tc_Rowid (icRowid), 
                input  'QADFIN-977':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BReportPeriod>
        end. /* if can-find (first tReportPeriodTemp where */
    end. /* for each tReportPeriod where tReportPeriod.tc_Status <> "D":U */
    
    /* ========================================================== */
    /* You can only delete the first and the last period          */
    /* ========================================================== */
    if not can-find (first tReportPeriod where
                           tReportPeriod.tc_Status <> "D":U)
    then do:
        find first tReportPeriod no-lock no-error.
        if available tReportPeriod and 
           can-find (first tReportPeriodTemp where
                           tReportPeriodTemp.ReportPeriodYear < tReportPeriod.ReportPeriodYear) and
           can-find (first tReportPeriodTemp where
                           tReportPeriodTemp.ReportPeriodYear > tReportPeriod.ReportPeriodYear)
        then do :
            assign vcMsgRepPd      = trim (#T-14'You can only delete the first or the last reporting year.':100(3547)T-14#)
                   oiReturnStatus = -1.
            <M-8 run SetMessage (input  vcMsgRepPd (icMessage),
                     input  '':U (icArguments),
                     input  'tReportPeriod.ReportPeriodYear':U (icFieldName),
                     input  tReportPeriod.ReportPeriodYear (icFieldValue),
                     input  'E':U (icType),
                     input  3 (iiSeverity),
                     input  tReportPeriod.tc_Rowid (icRowid),
                     input  'QADFIN-978':U (icFcMsgNumber),
                     input  '' (icFcExplanation),
                     input  '' (icFcIdentification),
                     input  '' (icFcContext),
                     output viFcReturnSuper (oiReturnStatus)) in BReportPeriod>
        end. /* if can-find (first tReportPeriodTemp where */
   end. /*  if not can-find (first tReportPeriod where */
    
    /* ====================================== */
    /* Do not continue in case errors occured */
    /* ====================================== */    
    if oiReturnStatus < 0
    then return.
    
    
<ANCESTOR-CODE>