project QadFinancials > class BHistoryDaemonProcessor > method PerformWorkItemDIRECTUpdPHistBalances


Parameters


ihLocalHandleToThePersistenceinputhandle
iiPostingSafCombinedIDinputinteger
biNbrOfUpdatedPostingHistinput-outputinteger
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BHistoryDaemonProcessor.PerformWorkItemDIRECTUpdPHist


program code (program1/bhistorydaemonprocessor.p)

/* ============================================================================ */ 
/* Prerequisite:                                                                */
/*      The calling methods has to make sure a QpostingLine is available        */
/* Purpose of this method:                                                      */
/*      Update to the balances of all PostingHist records with the same         */
/*      unique-index-fields but situated later in time than the QpostingLine    */
/* ============================================================================ */
/* Indicate Direct db-access (find, update and create) is done here             */
<I-55 {WRITEDIRECTDBACCESS
 &WRITETABLENAMES = "'PostingHist'"}>


/* ============================================================================== */ 
/* Prerequisite: The calling methods has to make sure a QpostingLine is available */
/* ============================================================================== */ 
if not available QpostingLine
then do :  
    assign oiReturnStatus  = -3
           vcMsgHist       = trim(substitute(#T-1'Internal error: mandatory information in the program code is not accessible; see below for more details.':255(70321)T-1#)) + chr(10) + 
                             trim(substitute(#T-80'Record for table &1 is not available in method &2.':255(587056425)T-80#,"QpostingLine":U,"PerformWorkItemDIRECTUpdPHistBalances":U)).
    <M-16 run SetMessage
       (input  vcMsgHist (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'E':U (icType), 
        input  3 (iiSeverity), 
        input  '':U (icRowid), 
        input  'qadfin-246302':U (icFcMsgNumber), 
        input  '':U (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BHistoryDaemonProcessor>
    Return.
end. /* if not available QpostingLine */

/* Local definitions outside of CB */
define buffer bPostingHist for PostingHist.

/* ===================================================================================================================== */ 
/* Go throuhg all PostingHist records with the same unique-index-fields but situated later in time than the QpostingLine */
/* ===================================================================================================================== */ 
for each bPostingHist where
         bPostingHist.Company_ID                 = QpostingLine.Company_ID                 and
         bPostingHist.GL_ID                      = QpostingLine.GL_ID                      and
         bPostingHist.Journal_ID                 = QpostingLine.Journal_ID                 and
         bPostingHist.Layer_ID                   = QpostingLine.Layer_ID                   and
         bPostingHist.Currency_ID                = QpostingLine.Currency_ID                and
         bPostingHist.Division_ID                = QpostingLine.Division_ID                and
         bPostingHist.Project_ID                 = QpostingLine.Project_ID                 and
         bPostingHist.CostCentre_ID              = QpostingLine.CostCentre_ID              and
         bPostingHist.IntercoBusinessRelation_ID = QpostingLine.IntercoBusinessRelation_ID and
         bPostingHist.PostingSafCombined_ID      = iiPostingSafCombinedID                  and
         bPostingHist.PostingHistYearPeriodFrom  > QpostingLine.PeriodYearPeriod
         exclusive-lock 
         on error undo, throw :
    
    /* ========================================================= */
    /* Create input-output param that counts the records tackled */
    /* ========================================================= */
    assign biNbrOfUpdatedPostingHist = biNbrOfUpdatedPostingHist + 1.

    /* =============================== */
    /* Update the Life-To-Date Balance */
    /* =============================== */
    assign bPostingHist.PostingHistBalanceDebitTC   = bPostingHist.PostingHistBalanceDebitTC  + QpostingLine.QPostingLineDebitTC
           bPostingHist.PostingHistBalanceDebitLC   = bPostingHist.PostingHistBalanceDebitLC  + QpostingLine.QPostingLineDebitLC
           bPostingHist.PostingHistBalanceDebitCC   = bPostingHist.PostingHistBalanceDebitCC  + QpostingLine.QPostingLineDebitCC
           bPostingHist.PostingHistBalanceDebitPC   = bPostingHist.PostingHistBalanceDebitPC  + QpostingLine.QPostingLineDebitPC
           bPostingHist.PostingHistBalanceCreditTC  = bPostingHist.PostingHistBalanceCreditTC + QpostingLine.QPostingLineCreditTC
           bPostingHist.PostingHistBalanceCreditLC  = bPostingHist.PostingHistBalanceCreditLC + QpostingLine.QPostingLineCreditLC
           bPostingHist.PostingHistBalanceCreditCC  = bPostingHist.PostingHistBalanceCreditCC + QpostingLine.QPostingLineCreditCC
           bPostingHist.PostingHistBalanceCreditPC  = bPostingHist.PostingHistBalanceCreditPC + QpostingLine.QPostingLineCreditPC
           bPostingHist.PostingHistBalanceQTY       = bPostingHist.PostingHistBalanceQTY      + QpostingLine.QPostingLineQTY.

    /* ================================================================ */
    /* Update the Year-To-Date Balance if it is still in the same year */
    /* ================================================================ */
    if trunc(bPostingHist.PostingHistYearPeriodFrom / 100, 0) = trunc(QpostingLine.PeriodYearPeriod / 100, 0)
    then assign bPostingHist.PostingHistYTDDebitTC       = bPostingHist.PostingHistYTDDebitTC  + QpostingLine.QPostingLineDebitTC
                bPostingHist.PostingHistYTDDebitLC       = bPostingHist.PostingHistYTDDebitLC  + QpostingLine.QPostingLineDebitLC
                bPostingHist.PostingHistYTDDebitCC       = bPostingHist.PostingHistYTDDebitCC  + QpostingLine.QPostingLineDebitCC
                bPostingHist.PostingHistYTDDebitPC       = bPostingHist.PostingHistYTDDebitPC  + QpostingLine.QPostingLineDebitPC
                bPostingHist.PostingHistYTDCreditTC      = bPostingHist.PostingHistYTDCreditTC + QpostingLine.QPostingLineCreditTC
                bPostingHist.PostingHistYTDCreditLC      = bPostingHist.PostingHistYTDCreditLC + QpostingLine.QPostingLineCreditLC
                bPostingHist.PostingHistYTDCreditCC      = bPostingHist.PostingHistYTDCreditCC + QpostingLine.QPostingLineCreditCC
                bPostingHist.PostingHistYTDCreditPC      = bPostingHist.PostingHistYTDCreditPC + QpostingLine.QPostingLineCreditPC
                bPostingHist.PostingHistYTDQTY           = bPostingHist.PostingHistYTDQTY      + QpostingLine.QPostingLineQTY.

end. /* for each bPostingHist */

/* ==================== */
/* Release used buffers */
/* ==================== */
release bPostingHist.