project QadFinancials > class BClosingPostingsReport > method CreditorControlGLBalance

report procedure


Parameters


icLanguageCodeinputcharacterLanguage Code.
tFilterinputtemp-tableTemp table to store input parameters.
dcrCreditorControlGLBalanceoutputdatasetDataset of CreditorControlGLBalance.
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program7/bclosingpostingsreport.p)

empty temp-table tqCreditorControlGLBalance.
assign viCountTemp = 0.

<M-23 run GetReportLabels
   (input  'CreditorControlGLBalance':U (icReportName), 
    input  icLanguageCode (icLanguageCode), 
    input  tFilter (tFilter), 
    output tqHeader (tqHeader), 
    output tqFilter (tqFilter), 
    output tqText (tqText), 
    output oiReturnStatus (oiReturnStatus)) in BClosingPostingsReport>
if oiReturnStatus <> 0
then return.

<M-24 run SetDataItemsBasedOnFilterTT  (output oiReturnStatus (oiReturnStatus)) in BClosingPostingsReport>

<M-64 run CRDRControlGLBalValidation  (output oiReturnStatus (oiReturnStatus)) in BClosingPostingsReport>

assign viYearPeriod = viPeriodYearFilter * 100 + viPeriodPeriodFilter
       vcGLType     = {&GLTYPECODE-CRED}.

/* Company iteration */
do viCPCompanyIterator = 1 to viCompanyEntries:

    <M-9 run CompanyValues
       (input  viCPCompanyIterator (iiEntryNumber), 
        output oiReturnStatus (oiReturnStatus)) in BClosingPostingsReport>

    /* Get the Period */
    <Q-30 run PeriodByYearPeriod (all) (Read) (NoCache)
       (input viCPCurrentCompany_ID, (CompanyId)
        input viPeriodYearFilter, (PeriodYear)
        input viPeriodPeriodFilter, (PeriodPeriod)
        input ?, (PeriodId)
        output dataset tqPeriodByYearPeriod) in BPeriod >
                                  
    find first tqPeriodByYearPeriod no-error.
    if not available tqPeriodByYearPeriod
    then do:
        <M-31 run SetMessage
           (input  #T-26'The entered GL period does not exist.':50(413993638)T-26# (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'QadFin-9507':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BClosingPostingsReport>
        assign oiReturnStatus = -1.
        return.
    end.
    
    assign vtFromDateFilter = tqPeriodByYearPeriod.ttPeriodStartDate                               
           vtTillDateFilter = tqPeriodByYearPeriod.ttPeriodEndDate.  
    
    /* This program will calculate 3 different numbers and compare then between AP and GL: */
    /*   1. Balance as of today                                                            */
    /*   2. Balance as of end of selected Period                                           */
    /*   3. Movements in Selected Period                                                   */
    
    
    /* 1. Get the AP Balance at the end of the selected period */
    assign vdTotalPostingCreditCC     = 0
           vdTotalPostingCreditLC     = 0
           vdTotalPostingDebitCC      = 0
           vdTotalPostingDebitLC      = 0
           vdTotalPostingHistCreditCC = 0    
           vdTotalPostingHistCreditLC = 0
           vdTotalPostingHistDebitCC  = 0
           vdTotalPostingHistDebitLC  = 0.
    
    assign viCountTemp = viCountTemp + 1.
    create tqCreditorControlGLBalance.
    assign tqCreditorControlGLBalance.tcGLCode = #T-56'Current Balance':255(73426065)T-56#
           tqCreditorControlGLBalance.tdPostingBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tiRecordCount = viCountTemp
           tqCreditorControlGLBalance.tcRecordType  = 'BC'
           tqCreditorControlGLBalance.tcBoldType    = 'B'.
    
    /* Get the AP balance as-of today starting from cinvoice */
    <Q-51 run APBalanceCurrent (all) (Read) (NoCache)
       (input viCPCurrentCompany_ID, (CompanyId)
        output dataset tqAPBalanceCurrent) in BClosingPostingsReport >
        
    for each tqAPBalanceCurrent break by tqAPBalanceCurrent.tcGLCode:
        if first-of (tqAPBalanceCurrent.tcGLCode)
        then do:
            assign vdPostingCreditCC = 0
                   vdPostingCreditLC = 0
                   vdPostingDebitCC  = 0
                   vdPostingDebitLC  = 0.
        end.
        
        assign vdPostingDebitCC = vdPostingDebitCC + tqAPBalanceCurrent.tdCInvoiceBalanceCC
               vdPostingDebitLC = vdPostingDebitLC + tqAPBalanceCurrent.tdCInvoiceBalanceLC.
    
        if last-of (tqAPBalanceCurrent.tcGLCode)
        then do:
            assign viCountTemp = viCountTemp + 1.
            create tqCreditorControlGLBalance.
            assign tqCreditorControlGLBalance.tcGLCode                     = tqAPBalanceCurrent.tcGLCode
                   tqCreditorControlGLBalance.tdPostingBalanceCreditCC     = 0
                   tqCreditorControlGLBalance.tdPostingBalanceCreditLC     = 0
                   tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = 0
                   tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = 0
                   tqCreditorControlGLBalance.tdPostingBalanceDebitCC      = vdPostingDebitCC
                   tqCreditorControlGLBalance.tdPostingBalanceDebitLC      = vdPostingDebitLC
                   vdTotalPostingDebitCC = vdTotalPostingDebitCC + vdPostingDebitCC
                   vdTotalPostingDebitLC = vdTotalPostingDebitLC + vdPostingDebitLC
                   tqCreditorControlGLBalance.tiRecordCount = viCountTemp
                   tqCreditorControlGLBalance.tcRecordType  = 'BC'.
        end. /* if last-of (tqAPBalanceCurrent.tcGLCode) */
    
    end. /* for each tqAPBalanceCurrent */
  
    
    /* Get the GL balance as-of today starting from PostingHist */
    <Q-52 run GLBalanceCurrent (all) (Read) (NoCache)
       (input viCPCurrentCompany_ID, (CompanyId)
        input vcGLType, (GLType)
        output dataset tqGLBalanceCurrent) in BClosingPostingsReport >
           
    for each tqGLBalanceCurrent break by tqGLBalanceCurrent.tcGLCode:
        if first-of (tqGLBalanceCurrent.tcGLCode)
        then do:
            assign vdPostingHistCreditCC = 0
                   vdPostingHistCreditLC = 0
                   vdPostingHistDebitCC  = 0
                   vdPostingHistDebitLC  = 0.
        end.
        
        assign vdPostingHistCreditCC = vdPostingHistCreditCC + tqGLBalanceCurrent.tdPostingHistBalanceCreditCC
               vdPostingHistCreditLC = vdPostingHistCreditLC + tqGLBalanceCurrent.tdPostingHistBalanceCreditLC
               vdPostingHistDebitCC  = vdPostingHistDebitCC  + tqGLBalanceCurrent.tdPostingHistBalanceDebitCC
               vdPostingHistDebitLC  = vdPostingHistDebitLC  + tqGLBalanceCurrent.tdPostingHistBalanceDebitLC.
    
        if last-of (tqGLBalanceCurrent.tcGLCode)
        then do:
            find first tqCreditorControlGLBalance where
                       tqCreditorControlGLBalance.tcGLCode = tqGLBalanceCurrent.tcGLCode and
                       tqCreditorControlGLBalance.tcRecordType  = 'BC'
                       no-error.
            if not available tqCreditorControlGLBalance
            then do:
                assign viCountTemp = viCountTemp + 1.
                create tqCreditorControlGLBalance.
                assign tqCreditorControlGLBalance.tcGLCode = tqGLBalanceCurrent.tcGLCode
                       tqCreditorControlGLBalance.tiRecordCount = viCountTemp
                       tqCreditorControlGLBalance.tcRecordType  = 'BC'.
            end.
            assign tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = 0
                   tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = 0
                   tqCreditorControlGLBalance.tdPostingBalanceCreditCC     = 0
                   tqCreditorControlGLBalance.tdPostingBalanceCreditLC     = 0
                   tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = vdPostingHistDebitCC - vdPostingHistCreditCC
                   tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = vdPostingHistDebitLC - vdPostingHistCreditLC
                   vdTotalPostingHistDebitCC = vdTotalPostingHistDebitCC   + vdPostingHistDebitCC - vdPostingHistCreditCC
                   vdTotalPostingHistDebitLC = vdTotalPostingHistDebitLC   + vdPostingHistDebitLC - vdPostingHistCreditLC.
    
        end. /* if last-of (tqGLBalanceCurrent.tcGLCode) */
    
    end. /* for each tqGLBalanceAsOfDate */
    
    assign viCountTemp = viCountTemp + 1.
    create tqCreditorControlGLBalance.
    assign tqCreditorControlGLBalance.tcGLCode = #T-57'Current Balance Total':255(591241541)T-57#
           tqCreditorControlGLBalance.tdPostingBalanceCreditCC = 0
           tqCreditorControlGLBalance.tdPostingBalanceCreditLC = 0
           tqCreditorControlGLBalance.tdPostingBalanceDebitCC  = vdTotalPostingDebitCC
           tqCreditorControlGLBalance.tdPostingBalanceDebitLC  = vdTotalPostingDebitLC
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = 0
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = 0
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = vdTotalPostingHistDebitCC
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = vdTotalPostingHistDebitLC
           tqCreditorControlGLBalance.tiRecordCount = viCountTemp
           tqCreditorControlGLBalance.tcRecordType  = 'BC'
           tqCreditorControlGLBalance.tcBoldType    = 'B'.
    
    assign viCountTemp = viCountTemp + 1.
    create tqCreditorControlGLBalance.
    assign tqCreditorControlGLBalance.tdPostingBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tiRecordCount = viCountTemp
           tqCreditorControlGLBalance.tcRecordType  = 'BC'.
    
    
    /* 2. Get the AP Balance at the end of the selected period */
    assign vdTotalPostingCreditCC     = 0
           vdTotalPostingCreditLC     = 0
           vdTotalPostingDebitCC      = 0
           vdTotalPostingDebitLC      = 0
           vdTotalPostingHistCreditCC = 0    
           vdTotalPostingHistCreditLC = 0
           vdTotalPostingHistDebitCC  = 0
           vdTotalPostingHistDebitLC  = 0.
    
    assign viCountTemp = viCountTemp + 1.
    create tqCreditorControlGLBalance.
    assign tqCreditorControlGLBalance.tcGLCode = #T-58'Balance end of selected period':255(332022009)T-58#
           tqCreditorControlGLBalance.tdPostingBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tiRecordCount = viCountTemp
           tqCreditorControlGLBalance.tcRecordType  = 'BS'
           tqCreditorControlGLBalance.tcBoldType    = 'B'.
    
    /* Get the AP balance as-of the selected date starting from cinvoice */
    <Q-53 run APBalanceAsOfDate (all) (Read) (NoCache)
       (input viCPCurrentCompany_ID, (CompanyId)
        input vtTillDateFilter, (EndOfDate)
        output dataset tqAPBalanceAsOfDate) in BClosingPostingsReport >
    
    /* Get the balance amounts for each GL individually */
    for each tqAPBalanceAsOfDate break by tqAPBalanceAsOfDate.tcGLCode:
        if first-of (tqAPBalanceAsOfDate.tcGLCode)
        then do:
            assign vdPostingCreditCC = 0
                   vdPostingCreditLC = 0
                   vdPostingDebitCC  = 0
                   vdPostingDebitLC  = 0.    
        end.
        
        assign vdPostingCreditCC = vdPostingCreditCC + tqAPBalanceAsOfDate.tdPostingLineCreditCC
               vdPostingCreditLC = vdPostingCreditLC + tqAPBalanceAsOfDate.tdPostingLineCreditLC
               vdPostingDebitCC  = vdPostingDebitCC  + tqAPBalanceAsOfDate.tdPostingLineDebitCC
               vdPostingDebitLC  = vdPostingDebitLC  + tqAPBalanceAsOfDate.tdPostingLineDebitLC.
    
        if last-of (tqAPBalanceAsOfDate.tcGLCode)
        then do:
            assign viCountTemp = viCountTemp + 1.
            create tqCreditorControlGLBalance.
            assign tqCreditorControlGLBalance.tcGLCode                     = tqAPBalanceAsOfDate.tcGLCode
                   tqCreditorControlGLBalance.tdPostingBalanceCreditCC     = 0
                   tqCreditorControlGLBalance.tdPostingBalanceCreditLC     = 0
                   tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = 0
                   tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = 0
                   tqCreditorControlGLBalance.tdPostingBalanceDebitCC      = vdPostingDebitCC - vdPostingCreditCC
                   tqCreditorControlGLBalance.tdPostingBalanceDebitLC      = vdPostingDebitLC - vdPostingCreditLC               
                   vdTotalPostingDebitCC = vdTotalPostingDebitCC + vdPostingDebitCC - vdPostingCreditCC
                   vdTotalPostingDebitLC = vdTotalPostingDebitLC + vdPostingDebitLC - vdPostingCreditLC
                   tqCreditorControlGLBalance.tiRecordCount = viCountTemp
                   tqCreditorControlGLBalance.tcRecordType  = 'BS'.
        end. /* if last-of (tqAPBalanceAsOfDate.tcGLCode) */
        
    end. /* for each tqAPBalanceAsOfDate */
    
    /* Get the GL balance as-of end of selected period using PostingHist */
    <Q-54 run GLBalanceAsOfDate (all) (Read) (NoCache)
       (input viCPCurrentCompany_ID, (CompanyId)
        input viYearPeriod, (EndOfYearPeriod)
        input vcGLType, (GLType)
        output dataset tqGLBalanceAsOfDate) in BClosingPostingsReport >
    
    for each tqGLBalanceAsOfDate break by tqGLBalanceAsOfDate.tcGLCode:
        if first-of (tqGLBalanceAsOfDate.tcGLCode)
        then do :
            assign vdPostingHistCreditCC = 0
                   vdPostingHistCreditLC = 0
                   vdPostingHistDebitCC  = 0
                   vdPostingHistDebitLC  = 0.
        end.
        
        assign vdPostingHistCreditCC = vdPostingHistCreditCC + tqGLBalanceAsOfDate.tdPostingHistBalanceCreditCC
               vdPostingHistCreditLC = vdPostingHistCreditLC + tqGLBalanceAsOfDate.tdPostingHistBalanceCreditLC
               vdPostingHistDebitCC  = vdPostingHistDebitCC  + tqGLBalanceAsOfDate.tdPostingHistBalanceDebitCC
               vdPostingHistDebitLC  = vdPostingHistDebitLC  + tqGLBalanceAsOfDate.tdPostingHistBalanceDebitLC.
    
        if last-of (tqGLBalanceAsOfDate.tcGLCode)
        then do:
            find first tqCreditorControlGLBalance where
                       tqCreditorControlGLBalance.tcGLCode = tqGLBalanceAsOfDate.tcGLCode and
                       tqCreditorControlGLBalance.tcRecordType = 'BS'
                       no-error.
            if not available tqCreditorControlGLBalance
            then do:
                assign viCountTemp = viCountTemp + 1.
                create tqCreditorControlGLBalance.
                assign tqCreditorControlGLBalance.tcGLCode = tqGLBalanceAsOfDate.tcGLCode
                       tqCreditorControlGLBalance.tiRecordCount = viCountTemp
                       tqCreditorControlGLBalance.tcRecordType  = 'BS'.
            end.
            assign tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = 0
                   tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = 0
                   tqCreditorControlGLBalance.tdPostingBalanceCreditCC     = 0
                   tqCreditorControlGLBalance.tdPostingBalanceCreditLC     = 0
                   tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = vdPostingHistDebitCC - vdPostingHistCreditCC
                   tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = vdPostingHistDebitLC - vdPostingHistCreditLC
                   vdTotalPostingHistDebitCC = vdTotalPostingHistDebitCC   + vdPostingHistDebitCC - vdPostingHistCreditCC
                   vdTotalPostingHistDebitLC = vdTotalPostingHistDebitLC   + vdPostingHistDebitLC - vdPostingHistCreditLC.
        end. /* if last-of (tqGLBalanceAsOfDate.tcGLCode) */
    
    end. /* for each tqGLBalanceAsOfDate */
    
    assign viCountTemp = viCountTemp + 1.
    create tqCreditorControlGLBalance.
    assign tqCreditorControlGLBalance.tcGLCode = #T-59'Balance end of selected period Total':255(227665182)T-59#
           tqCreditorControlGLBalance.tdPostingBalanceCreditCC = 0
           tqCreditorControlGLBalance.tdPostingBalanceCreditLC = 0
           tqCreditorControlGLBalance.tdPostingBalanceDebitCC  = vdTotalPostingDebitCC
           tqCreditorControlGLBalance.tdPostingBalanceDebitLC  = vdTotalPostingDebitLC
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = 0
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = 0
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = vdTotalPostingHistDebitCC
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = vdTotalPostingHistDebitLC
           tqCreditorControlGLBalance.tiRecordCount = viCountTemp
           tqCreditorControlGLBalance.tcRecordType  = 'BS'
           tqCreditorControlGLBalance.tcBoldType    = 'B'.
    
    assign viCountTemp = viCountTemp + 1.
    create tqCreditorControlGLBalance.
    assign tqCreditorControlGLBalance.tdPostingBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tiRecordCount = viCountTemp
           tqCreditorControlGLBalance.tcRecordType  = 'BS'.
    
    
    /* 3. Get the AP Movements in the selected period */
    assign vdTotalPostingCreditCC     = 0
           vdTotalPostingCreditLC     = 0
           vdTotalPostingDebitCC      = 0
           vdTotalPostingDebitLC      = 0
           vdTotalPostingHistCreditCC = 0
           vdTotalPostingHistCreditLC = 0
           vdTotalPostingHistDebitCC  = 0
           vdTotalPostingHistDebitLC  = 0.
    
    assign viCountTemp = viCountTemp + 1.
    create tqCreditorControlGLBalance.
    assign tqCreditorControlGLBalance.tcGLCode = #T-60'Debit Movements selected period':255(825538143)T-60#
           tqCreditorControlGLBalance.tdPostingBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tiRecordCount = viCountTemp
           tqCreditorControlGLBalance.tcRecordType  = 'MSADR'
           tqCreditorControlGLBalance.tcBoldType    = 'B'.
    
    assign viCountTemp = viCountTemp + 1.
    create tqCreditorControlGLBalance.
    assign tqCreditorControlGLBalance.tcGLCode = #T-61'Credit Movements selected period':255(584009654)T-61#
           tqCreditorControlGLBalance.tdPostingBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tiRecordCount = viCountTemp
           tqCreditorControlGLBalance.tcRecordType  = 'MSBCR'
           tqCreditorControlGLBalance.tcBoldType    = 'B'.
    
    /* Get the GL movements using PostingHist */
    <Q-34 run GLMovementsInPeriod (all) (Read) (NoCache)
       (input viCPCurrentCompany_ID, (CompanyId)
        input vcGLType, (GLType)
        input viYearPeriod, (YearPeriod)
        output dataset tqGLMovementsInPeriod) in BClosingPostingsReport >
                  
    for each tqGLMovementsInPeriod break by tqGLMovementsInPeriod.tcGLCode:
        if first-of (tqGLMovementsInPeriod.tcGLCode)
        then do :
            assign vdPostingHistCreditCC = 0
                   vdPostingHistCreditLC = 0
                   vdPostingHistDebitCC  = 0
                   vdPostingHistDebitLC  = 0.    
        end.
        
        assign vdPostingHistCreditCC = vdPostingHistCreditCC + tqGLMovementsInPeriod.tdPostingHistMovemntCreditCC
               vdPostingHistCreditLC = vdPostingHistCreditLC + tqGLMovementsInPeriod.tdPostingHistMovemntCreditLC
               vdPostingHistDebitCC  = vdPostingHistDebitCC  + tqGLMovementsInPeriod.tdPostingHistMovemntDebitCC
               vdPostingHistDebitLC  = vdPostingHistDebitLC  + tqGLMovementsInPeriod.tdPostingHistMovemntDebitLC.
    
        if last-of (tqGLMovementsInPeriod.tcGLCode)
        then do:
            assign viCountTemp = viCountTemp + 1.
            create tqCreditorControlGLBalance.
            assign tqCreditorControlGLBalance.tcGLCode                     = tqGLMovementsInPeriod.tcGLCode
                   tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = 0
                   tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = 0
                   tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = vdPostingHistDebitCC 
                   tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = vdPostingHistDebitLC
                   tqCreditorControlGLBalance.tiRecordCount = viCountTemp
                   tqCreditorControlGLBalance.tcRecordType  = 'MSADR'.
            assign viCountTemp = viCountTemp + 1.
            create tqCreditorControlGLBalance.
            assign tqCreditorControlGLBalance.tcGLCode                     = tqGLMovementsInPeriod.tcGLCode
                   tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = vdPostingHistCreditCC
                   tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = vdPostingHistCreditLC
                   tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = 0 
                   tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = 0
                   tqCreditorControlGLBalance.tiRecordCount = viCountTemp
                   tqCreditorControlGLBalance.tcRecordType  = 'MSBCR'.
            assign vdTotalPostingHistCreditCC = vdTotalPostingHistCreditCC + vdPostingHistCreditCC
                   vdTotalPostingHistCreditLC = vdTotalPostingHistCreditLC + vdPostingHistCreditLC
                   vdTotalPostingHistDebitCC  = vdTotalPostingHistDebitCC  + vdPostingHistDebitCC
                   vdTotalPostingHistDebitLC  = vdTotalPostingHistDebitLC  + vdPostingHistDebitLC.
        end. /* if last-of (tqGLMovementsInPeriod.tcGLCode) */
    
    end. /* for each tqGLMovementsInPeriod */
    
    /* Get the AP movements using CinvoiceMovement */
    <Q-36 run APMovementsInPeriod (all) (Read) (NoCache)
       (input viCPCurrentCompany_ID, (CompanyId)
        input viYearPeriod, (YearPeriod)
        output dataset tqAPMovementsInPeriod) in BClosingPostingsReport >
    
    for each tqAPMovementsInPeriod break by tqAPMovementsInPeriod.tcGLCode:
        if first-of (tqAPMovementsInPeriod.tcGLCode)
        then do :
            assign vdPostingCreditCC = 0
                   vdPostingCreditLC = 0
                   vdPostingDebitCC  = 0
                   vdPostingDebitLC  = 0.
        end.
    
        assign vdPostingCreditCC = vdPostingCreditCC + tqAPMovementsInPeriod.tdPostingLineCreditCC
               vdPostingCreditLC = vdPostingCreditLC + tqAPMovementsInPeriod.tdPostingLineCreditLC
               vdPostingDebitCC  = vdPostingDebitCC  + tqAPMovementsInPeriod.tdPostingLineDebitCC
               vdPostingDebitLC  = vdPostingDebitLC  + tqAPMovementsInPeriod.tdPostingLineDebitLC.
    
        if last-of (tqAPMovementsInPeriod.tcGLCode)
        then do:
            find first tqCreditorControlGLBalance where
                       tqCreditorControlGLBalance.tcGLCode = tqAPMovementsInPeriod.tcGLCode and
                       tqCreditorControlGLBalance.tcRecordType = 'MSADR'
                       no-error.
            if not available tqCreditorControlGLBalance
            then do:
                assign viCountTemp = viCountTemp + 1.
                create tqCreditorControlGLBalance.
                assign tqCreditorControlGLBalance.tcGLCode = tqAPMovementsInPeriod.tcGLCode
                       tqCreditorControlGLBalance.tiRecordCount = viCountTemp
                       tqCreditorControlGLBalance.tcRecordType  = 'MSADR'.
            end.
    
            assign tqCreditorControlGLBalance.tdPostingBalanceCreditCC = 0
                   tqCreditorControlGLBalance.tdPostingBalanceCreditLC = 0
                   tqCreditorControlGLBalance.tdPostingBalanceDebitCC  = vdPostingDebitCC
                   tqCreditorControlGLBalance.tdPostingBalanceDebitLC  = vdPostingDebitLC.
    
            find first tqCreditorControlGLBalance where
                       tqCreditorControlGLBalance.tcGLCode = tqAPMovementsInPeriod.tcGLCode and
                       tqCreditorControlGLBalance.tcRecordType = 'MSBCR'
                       no-error.
            if not available tqCreditorControlGLBalance
            then do:
                assign viCountTemp = viCountTemp + 1.
                create tqCreditorControlGLBalance.
                assign tqCreditorControlGLBalance.tcGLCode = tqAPMovementsInPeriod.tcGLCode
                       tqCreditorControlGLBalance.tiRecordCount = viCountTemp
                       tqCreditorControlGLBalance.tcRecordType  = 'MSBCR'.
            end.
            
            assign tqCreditorControlGLBalance.tdPostingBalanceCreditCC = vdPostingCreditCC
                   tqCreditorControlGLBalance.tdPostingBalanceCreditLC = vdPostingCreditLC
                   tqCreditorControlGLBalance.tdPostingBalanceDebitCC  = 0
                   tqCreditorControlGLBalance.tdPostingBalanceDebitLC  = 0.
    
            assign vdTotalPostingCreditCC = vdTotalPostingCreditCC + vdPostingCreditCC
                   vdTotalPostingCreditLC = vdTotalPostingCreditLC + vdPostingCreditLC
                   vdTotalPostingDebitCC  = vdTotalPostingDebitCC  + vdPostingDebitCC
                   vdTotalPostingDebitLC  = vdTotalPostingDebitLC  + vdPostingDebitLC.
    
        end. /* if last-of (tqAPMovementsInPeriod.tcGLCode) */
    
    end. /* for each tqAPMovementsInPeriod */
    
    assign viCountTemp = viCountTemp + 1.
    create tqCreditorControlGLBalance.
    assign tqCreditorControlGLBalance.tcGLCode = #T-62'Debit Movements selected period Total':255(606077688)T-62#
           tqCreditorControlGLBalance.tdPostingBalanceCreditCC = 0
           tqCreditorControlGLBalance.tdPostingBalanceCreditLC = 0
           tqCreditorControlGLBalance.tdPostingBalanceDebitCC  = vdTotalPostingDebitCC
           tqCreditorControlGLBalance.tdPostingBalanceDebitLC  = vdTotalPostingDebitLC
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = 0
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = 0
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = vdTotalPostingHistDebitCC
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = vdTotalPostingHistDebitLC
           tqCreditorControlGLBalance.tiRecordCount = viCountTemp
           tqCreditorControlGLBalance.tcRecordType  = 'MSADR'
           tqCreditorControlGLBalance.tcBoldType    = 'B'.
    
    assign viCountTemp = viCountTemp + 1.
    create tqCreditorControlGLBalance.
    assign tqCreditorControlGLBalance.tcGLCode = #T-63'Credit Movements selected period Total':255(52847364)T-63#
           tqCreditorControlGLBalance.tdPostingBalanceCreditCC = vdTotalPostingCreditCC
           tqCreditorControlGLBalance.tdPostingBalanceCreditLC = vdTotalPostingCreditLC
           tqCreditorControlGLBalance.tdPostingBalanceDebitCC  = 0
           tqCreditorControlGLBalance.tdPostingBalanceDebitLC  = 0
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = vdTotalPostingHistCreditCC
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = vdTotalPostingHistCreditLC
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = 0
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = 0
           tqCreditorControlGLBalance.tiRecordCount = viCountTemp
           tqCreditorControlGLBalance.tcRecordType  = 'MSBCR'
           tqCreditorControlGLBalance.tcBoldType    = 'B'.
    
    assign viCountTemp = viCountTemp + 1.
    create tqCreditorControlGLBalance.
    assign tqCreditorControlGLBalance.tdPostingBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqCreditorControlGLBalance.tiRecordCount = viCountTemp
           tqCreditorControlGLBalance.tcRecordType  = 'MSADR'.
    
    for each tqCreditorControlGLBalance:
        if (tqCreditorControlGLBalance.tdPostingHistBalanceDebitLC - tqCreditorControlGLBalance.tdPostingHistBalanceCreditLC = 0) and
           (tqCreditorControlGLBalance.tdPostingHistBalanceDebitCC - tqCreditorControlGLBalance.tdPostingHistBalanceCreditCC = 0) and
           (tqCreditorControlGLBalance.tdPostingBalanceDebitLC - tqCreditorControlGLBalance.tdPostingBalanceCreditLC = 0) and
           (tqCreditorControlGLBalance.tdPostingBalanceDebitCC - tqCreditorControlGLBalance.tdPostingBalanceCreditCC = 0)
        then delete tqCreditorControlGLBalance.
    end.
    

end.