project QadFinancials > class BClosingPostingsReport > method DebtorControlGLBalance

report procedure


Parameters


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


Internal usage


unused


program code (program7/bclosingpostingsreport.p)

empty temp-table tqDebtorControlGLBalance.
assign viCountTemp = 0.

<M-27 run GetReportLabels
   (input  'DebtorControlGLBalance':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-28 run SetDataItemsBasedOnFilterTT  (output oiReturnStatus (oiReturnStatus)) in BClosingPostingsReport>

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

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

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

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

    /* Get the selected Period */
    <Q-33 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-34 run SetMessage
           (input  #T-29'The entered GL period does not exist.':50(413993638)T-29# (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'QadFin-9510':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 vdTotDInvoiceBalanceCreditCC = 0
           vdTotDInvoiceBalanceCreditLC = 0
           vdTotDInvoiceBalanceDebitCC  = 0 
           vdTotDInvoiceBalanceDebitLC  = 0
           vdTotGLBalanceCreditCC       = 0
           vdTotGLBalanceCreditLC       = 0
           vdTotGLBalanceDebitCC        = 0
           vdTotGLBalanceDebitLC        = 0.
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tcControlGLCode              = #T-89'Entity Code':15(89462494)T-89# + ": " + vcCPCurrentCompany
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'BC'
           tqDebtorControlGLBalance.tcBoldType                   = 'B'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tcControlGLCode              = #T-60'Current Balance':255(73426065)T-60#
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'BC'
           tqDebtorControlGLBalance.tcBoldType                   = 'B'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    /* Get the AR balance as-of today starting from dinvoice */
    <Q-58 run ARBalanceCurrent (all) (Read) (NoCache)
       (input viCPCurrentCompany_ID, (CompanyId)
        output dataset tqARBalanceCurrent) in BClosingPostingsReport >
    
    for each tqARBalanceCurrent break by tqARBalanceCurrent.tcGLCode:
        if first-of (tqARBalanceCurrent.tcGLCode)
        then do :
            assign vdDInvoiceBalanceCreditCC = 0
                   vdDInvoiceBalanceCreditLC = 0
                   vdDInvoiceBalanceDebitCC  = 0
                   vdDInvoiceBalanceDebitLC  = 0.
        end.
        
        assign vdDInvoiceBalanceDebitCC = vdDInvoiceBalanceDebitCC + tqARBalanceCurrent.tdDInvoiceBalanceCC
               vdDInvoiceBalanceDebitLC = vdDInvoiceBalanceDebitLC + tqARBalanceCurrent.tdDInvoiceBalanceLC.
    
        if last-of (tqARBalanceCurrent.tcGLCode)
        then do:
            assign viCountTemp = viCountTemp + 1.
            create tqDebtorControlGLBalance.
            assign tqDebtorControlGLBalance.tcControlGLCode              = tqARBalanceCurrent.tcGLCode
                   tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = 0
                   tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = 0
                   tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = 0
                   tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = 0               
                   tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = vdDInvoiceBalanceDebitCC 
                   tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = vdDInvoiceBalanceDebitLC
                   vdTotDInvoiceBalanceDebitCC                           = vdTotDInvoiceBalanceDebitCC + vdDInvoiceBalanceDebitCC
                   vdTotDInvoiceBalanceDebitLC                           = vdTotDInvoiceBalanceDebitLC + vdDInvoiceBalanceDebitLC
                   tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
                   tqDebtorControlGLBalance.tcRecordType                 = 'BC'
                   tqDebtorControlGLBalance.tiGLCompanyID                = viCPCurrentCompany_ID.
        end. /* if last-of (tqARBalanceCurrent.tcGLCode) */
    
    end. /* for each tqARBalanceCurrent */
    
    /* Get the GL balance as-of today starting from PosthingHist */
    <Q-59 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 vdPostingHistBalanceCreditCC = 0
                   vdPostingHistBalanceCreditLC = 0
                   vdPostingHistBalanceDebitCC  = 0
                   vdPostingHistBalanceDebitLC  = 0.
        end.
    
        assign vdPostingHistBalanceCreditCC = vdPostingHistBalanceCreditCC + tqGLBalanceCurrent.tdPostingHistBalanceCreditCC
               vdPostingHistBalanceCreditLC = vdPostingHistBalanceCreditLC + tqGLBalanceCurrent.tdPostingHistBalanceCreditLC
               vdPostingHistBalanceDebitCC  = vdPostingHistBalanceDebitCC  + tqGLBalanceCurrent.tdPostingHistBalanceDebitCC
               vdPostingHistBalanceDebitLC  = vdPostingHistBalanceDebitLC  + tqGLBalanceCurrent.tdPostingHistBalanceDebitLC.
    
        if last-of (tqGLBalanceCurrent.tcGLCode)
        then do:
            find first tqDebtorControlGLBalance where
                       tqDebtorControlGLBalance.tcControlGLCode = tqGLBalanceCurrent.tcGLCode and
                       tqDebtorControlGLBalance.tcRecordType    = 'BC'                        and
                       tqDebtorControlGLBalance.tiGLCompanyID   = viCPCurrentCompany_ID
                       no-error.
            if not available tqDebtorControlGLBalance
            then do:
                assign viCountTemp = viCountTemp + 1.
                create tqDebtorControlGLBalance.
                assign tqDebtorControlGLBalance.tcControlGLCode = tqGLBalanceCurrent.tcGLCode
                       tqDebtorControlGLBalance.tiRecordCount   = viCountTemp
                       tqDebtorControlGLBalance.tcRecordType    = 'BC'
                       tqDebtorControlGLBalance.tiGLCompanyID   = viCPCurrentCompany_ID.
            end.
            assign tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = 0
                   tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = 0
                   tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = 0
                   tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = 0
                   tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = vdPostingHistBalanceDebitCC - vdPostingHistBalanceCreditCC
                   tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = vdPostingHistBalanceDebitLC - vdPostingHistBalanceCreditLC
                   vdTotGLBalanceDebitCC                                 = vdTotGLBalanceDebitCC + vdPostingHistBalanceDebitCC - vdPostingHistBalanceCreditCC
                   vdTotGLBalanceDebitLC                                 = vdTotGLBalanceDebitLC + vdPostingHistBalanceDebitLC - vdPostingHistBalanceCreditLC.
    
        end. /* if last-of (tqGLBalanceCurrent.tcGLCode) */
    
    end. /* for each tqGLBalanceCurrent */
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tcControlGLCode              = #T-61'Current Balance Total':255(591241541)T-61#
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = 0
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = 0
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = vdTotDInvoiceBalanceDebitCC
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = vdTotDInvoiceBalanceDebitLC
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = 0
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = 0
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = vdTotGLBalanceDebitCC
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = vdTotGLBalanceDebitLC
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'BC'
           tqDebtorControlGLBalance.tcBoldType                   = 'B'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'BC'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    
    /* 2. Get the AR Balance at the end of the selected period */
    assign vdTotDInvoiceBalanceCreditCC = 0
           vdTotDInvoiceBalanceCreditLC = 0
           vdTotDInvoiceBalanceDebitCC  = 0 
           vdTotDInvoiceBalanceDebitLC  = 0
           vdTotGLBalanceCreditCC       = 0
           vdTotGLBalanceCreditLC       = 0
           vdTotGLBalanceDebitCC        = 0
           vdTotGLBalanceDebitLC        = 0.
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tcControlGLCode              = #T-48'Entity Code':15(89462494)T-48# + ": " + vcCPCurrentCompany
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'BS'
           tqDebtorControlGLBalance.tcBoldType                   = 'B'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tcControlGLCode              =  #T-64'Balance end of selected period':255(332022009)T-64#
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'BS'
           tqDebtorControlGLBalance.tcBoldType                   = 'B'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    /* Get the AR balance as-of the selected date starting from dinvoice */
    <Q-62 run ARBalanceAsOfDate (all) (Read) (NoCache)
       (input viCPCurrentCompany_ID, (CompanyId)
        input vtTillDateFilter, (EndOfDate)
        output dataset tqARBalanceAsOfDate) in BClosingPostingsReport >
    
    /* Get the balance amounts for each GL individually */
    for each tqARBalanceAsOfDate break by tqARBalanceAsOfDate.tcGLCode:
        if first-of (tqARBalanceAsOfDate.tcGLCode)
        then do:
            assign vdDInvoiceBalanceCreditCC = 0
                   vdDInvoiceBalanceCreditLC = 0
                   vdDInvoiceBalanceDebitCC  = 0
                   vdDInvoiceBalanceDebitLC  = 0.
        end.
    
        assign vdDInvoiceBalanceCreditCC = vdDInvoiceBalanceCreditCC + tqARBalanceAsOfDate.tdPostingLineCreditCC
               vdDInvoiceBalanceCreditLC = vdDInvoiceBalanceCreditLC + tqARBalanceAsOfDate.tdPostingLineCreditLC
               vdDInvoiceBalanceDebitCC  = vdDInvoiceBalanceDebitCC  + tqARBalanceAsOfDate.tdPostingLineDebitCC
               vdDInvoiceBalanceDebitLC  = vdDInvoiceBalanceDebitLC  + tqARBalanceAsOfDate.tdPostingLineDebitLC.
    
        if last-of (tqARBalanceAsOfDate.tcGLCode)
        then do:
            assign viCountTemp = viCountTemp + 1.
            create tqDebtorControlGLBalance.
            assign tqDebtorControlGLBalance.tcControlGLCode              = tqARBalanceAsOfDate.tcGLCode
                   tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = 0
                   tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = 0
                   tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = 0
                   tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = 0
                   tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = vdDInvoiceBalanceDebitCC - vdDInvoiceBalanceCreditCC
                   tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = vdDInvoiceBalanceDebitLC - vdDInvoiceBalanceCreditLC
                   vdTotDInvoiceBalanceDebitCC                           = vdTotDInvoiceBalanceDebitCC + vdDInvoiceBalanceDebitCC - vdDInvoiceBalanceCreditCC
                   vdTotDInvoiceBalanceDebitLC                           = vdTotDInvoiceBalanceDebitLC + vdDInvoiceBalanceDebitLC - vdDInvoiceBalanceCreditLC
                   tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
                   tqDebtorControlGLBalance.tcRecordType                 = 'BS'
                   tqDebtorControlGLBalance.tiGLCompanyID                = viCPCurrentCompany_ID.
        end. /* if last-of (tqARBalanceAsOfDate.tcGLCode) */
    
    end. /* for each tqGLMovementsInPeriod */
    
    /* Get the GL balance as-of end of selected period using PosthingHist */
    <Q-63 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 vdPostingHistBalanceCreditCC = 0
                   vdPostingHistBalanceCreditLC = 0
                   vdPostingHistBalanceDebitCC  = 0
                   vdPostingHistBalanceDebitLC  = 0.
        end.
    
        assign vdPostingHistBalanceCreditCC = vdPostingHistBalanceCreditCC + tqGLBalanceAsOfDate.tdPostingHistBalanceCreditCC
               vdPostingHistBalanceCreditLC = vdPostingHistBalanceCreditLC + tqGLBalanceAsOfDate.tdPostingHistBalanceCreditLC
               vdPostingHistBalanceDebitCC  = vdPostingHistBalanceDebitCC  + tqGLBalanceAsOfDate.tdPostingHistBalanceDebitCC
               vdPostingHistBalanceDebitLC  = vdPostingHistBalanceDebitLC  + tqGLBalanceAsOfDate.tdPostingHistBalanceDebitLC.
    
        if last-of (tqGLBalanceAsOfDate.tcGLCode)
        then do:
            find first tqDebtorControlGLBalance where
                       tqDebtorControlGLBalance.tcControlGLCode = tqGLBalanceAsOfDate.tcGLCode and
                       tqDebtorControlGLBalance.tcRecordType    = 'BS'                         and
                       tqDebtorControlGLBalance.tiGLCompanyID   = viCPCurrentCompany_ID
                       no-error.
            if not available tqDebtorControlGLBalance
            then do:
                assign viCountTemp = viCountTemp + 1.
                create tqDebtorControlGLBalance.
                assign tqDebtorControlGLBalance.tcControlGLCode = tqGLBalanceAsOfDate.tcGLCode
                       tqDebtorControlGLBalance.tiRecordCount   = viCountTemp
                       tqDebtorControlGLBalance.tcRecordType    = 'BS'
                       tqDebtorControlGLBalance.tiGLCompanyID   = viCPCurrentCompany_ID.
            end.    
            assign tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = 0
                   tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = 0
                   tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = 0
                   tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = 0
                   tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = vdPostingHistBalanceDebitCC - vdPostingHistBalanceCreditCC
                   tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = vdPostingHistBalanceDebitLC - vdPostingHistBalanceCreditLC
                   vdTotGLBalanceDebitCC                                 = vdTotGLBalanceDebitCC + vdPostingHistBalanceDebitCC - vdPostingHistBalanceCreditCC
                   vdTotGLBalanceDebitLC                                 = vdTotGLBalanceDebitLC + vdPostingHistBalanceDebitLC - vdPostingHistBalanceCreditLC.
        end. /* if last-of (tqGLBalanceAsOfDate.tcGLCode) */
    
    end. /* for each tqGLBalanceAsOfDate */
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tcControlGLCode              = #T-65'Balance end of selected period Total':255(227665182)T-65#
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = 0
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = 0
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = vdTotDInvoiceBalanceDebitCC
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = vdTotDInvoiceBalanceDebitLC
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = 0
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = 0
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = vdTotGLBalanceDebitCC
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = vdTotGLBalanceDebitLC
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'BS'
           tqDebtorControlGLBalance.tcBoldType                   = 'B'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'BS'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    
    /* 3. Get the AR Movements in the selected period */
    assign vdTotDInvoiceBalanceCreditCC = 0
           vdTotDInvoiceBalanceCreditLC = 0
           vdTotDInvoiceBalanceDebitCC  = 0 
           vdTotDInvoiceBalanceDebitLC  = 0
           vdTotGLBalanceCreditCC       = 0
           vdTotGLBalanceCreditLC       = 0
           vdTotGLBalanceDebitCC        = 0
           vdTotGLBalanceDebitLC        = 0.
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tcControlGLCode              = #T-72'Entity Code':15(89462494)T-72# + ": " + vcCPCurrentCompany
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'MSADR'
           tqDebtorControlGLBalance.tcBoldType                   = 'B'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tcControlGLCode              = #T-66'Debit Movements selected period':255(825538143)T-66#
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'MSADR'
           tqDebtorControlGLBalance.tcBoldType                   = 'B'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tcControlGLCode              = #T-44'Entity Code':15(89462494)T-44# + ": " + vcCPCurrentCompany
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'MSBCR'
           tqDebtorControlGLBalance.tcBoldType                   = 'B'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tcControlGLCode              = #T-68'Credit Movements selected period':255(584009654)T-68#
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'MSBCR'
           tqDebtorControlGLBalance.tcBoldType                   = 'B'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    /* Get the GL movements using PostingHist */
    <Q-36 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 vdPostingHistBalanceCreditCC = 0
                   vdPostingHistBalanceCreditLC = 0
                   vdPostingHistBalanceDebitCC  = 0
                   vdPostingHistBalanceDebitLC  = 0.
        end.
        
        assign vdPostingHistBalanceCreditCC = vdPostingHistBalanceCreditCC + tqGLMovementsInPeriod.tdPostingHistMovemntCreditCC
               vdPostingHistBalanceCreditLC = vdPostingHistBalanceCreditLC + tqGLMovementsInPeriod.tdPostingHistMovemntCreditLC
               vdPostingHistBalanceDebitCC  = vdPostingHistBalanceDebitCC  + tqGLMovementsInPeriod.tdPostingHistMovemntDebitCC
               vdPostingHistBalanceDebitLC  = vdPostingHistBalanceDebitLC  + tqGLMovementsInPeriod.tdPostingHistMovemntDebitLC.
    
        if last-of (tqGLMovementsInPeriod.tcGLCode)
        then do:
            assign viCountTemp = viCountTemp + 1.
            create tqDebtorControlGLBalance.
            assign tqDebtorControlGLBalance.tcControlGLCode              = tqGLMovementsInPeriod.tcGLCode
                   tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = 0
                   tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = 0
                   tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = vdPostingHistBalanceDebitCC 
                   tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = vdPostingHistBalanceDebitLC
                   tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
                   tqDebtorControlGLBalance.tcRecordType                 = 'MSADR'
                   tqDebtorControlGLBalance.tiGLCompanyID                = viCPCurrentCompany_ID.
            assign viCountTemp = viCountTemp + 1.
            create tqDebtorControlGLBalance.
            assign tqDebtorControlGLBalance.tcControlGLCode              = tqGLMovementsInPeriod.tcGLCode
                   tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = vdPostingHistBalanceCreditCC
                   tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = vdPostingHistBalanceCreditLC
                   tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = 0 
                   tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = 0
                   tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
                   tqDebtorControlGLBalance.tcRecordType                 = 'MSBCR'
                   tqDebtorControlGLBalance.tiGLCompanyID                = viCPCurrentCompany_ID.
            assign vdTotGLBalanceCreditCC = vdTotGLBalanceCreditCC + vdPostingHistBalanceCreditCC
                   vdTotGLBalanceCreditLC = vdTotGLBalanceCreditLC + vdPostingHistBalanceCreditLC
                   vdTotGLBalanceDebitCC  = vdTotGLBalanceDebitCC  + vdPostingHistBalanceDebitCC
                   vdTotGLBalanceDebitLC  = vdTotGLBalanceDebitLC  + vdPostingHistBalanceDebitLC.
        end. /* if last-of (tqGLMovementsInPeriod.tcGLCode) */
    
    end. /* for each tqGLMovementsInPeriod */
    
    /* Get the AR movements using DinvoiceMovement */
    <Q-38 run ARMovementsInPeriod (all) (Read) (NoCache)
       (input viCPCurrentCompany_ID, (CompanyId)
        input viYearPeriod, (YearPeriod)
        output dataset tqARMovementsInPeriod) in BClosingPostingsReport >
    
    for each tqARMovementsInPeriod break by tqARMovementsInPeriod.tcGLCode:
        if first-of (tqARMovementsInPeriod.tcGLCode)
        then do :
            assign vdDInvoiceBalanceCreditCC = 0
                   vdDInvoiceBalanceCreditLC = 0
                   vdDInvoiceBalanceDebitCC  = 0
                   vdDInvoiceBalanceDebitLC  = 0.
        end.
    
        assign vdDInvoiceBalanceCreditCC = vdDInvoiceBalanceCreditCC + tqARMovementsInPeriod.tdPostingLineCreditCC
               vdDInvoiceBalanceCreditLC = vdDInvoiceBalanceCreditLC + tqARMovementsInPeriod.tdPostingLineCreditLC
               vdDInvoiceBalanceDebitCC  = vdDInvoiceBalanceDebitCC  + tqARMovementsInPeriod.tdPostingLineDebitCC
               vdDInvoiceBalanceDebitLC  = vdDInvoiceBalanceDebitLC  + tqARMovementsInPeriod.tdPostingLineDebitLC.
    
        if last-of (tqARMovementsInPeriod.tcGLCode)
        then do:
            find first tqDebtorControlGLBalance where
                       tqDebtorControlGLBalance.tcControlGLCode = tqARMovementsInPeriod.tcGLCode and
                       tqDebtorControlGLBalance.tcRecordType    = 'MSADR'                        and
                       tqDebtorControlGLBalance.tiGLCompanyID   = viCPCurrentCompany_ID
                       no-error.
            if not available tqDebtorControlGLBalance
            then do:
                assign viCountTemp = viCountTemp + 1.
                create tqDebtorControlGLBalance.
                assign tqDebtorControlGLBalance.tcControlGLCode = tqARMovementsInPeriod.tcGLCode
                       tqDebtorControlGLBalance.tiRecordCount   = viCountTemp
                       tqDebtorControlGLBalance.tcRecordType    = 'MSADR'
                       tqDebtorControlGLBalance.tiGLCompanyID   = viCPCurrentCompany_ID.
            end.
    
            assign tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC = 0
                   tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC = 0
                   tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC  = vdDInvoiceBalanceDebitCC 
                   tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC  = vdDInvoiceBalanceDebitLC.
    
            find first tqDebtorControlGLBalance where
                       tqDebtorControlGLBalance.tcControlGLCode = tqARMovementsInPeriod.tcGLCode and
                       tqDebtorControlGLBalance.tcRecordType    = 'MSBCR'                        and
                       tqDebtorControlGLBalance.tiGLCompanyID   = viCPCurrentCompany_ID
                       no-error.
            if not available tqDebtorControlGLBalance
            then do:
                assign viCountTemp = viCountTemp + 1.
                create tqDebtorControlGLBalance.
                assign tqDebtorControlGLBalance.tcControlGLCode = tqARMovementsInPeriod.tcGLCode
                       tqDebtorControlGLBalance.tiRecordCount   = viCountTemp
                       tqDebtorControlGLBalance.tcRecordType    = 'MSBCR'
                       tqDebtorControlGLBalance.tiGLCompanyID   = viCPCurrentCompany_ID.
            end.
    
            assign tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC = vdDInvoiceBalanceCreditCC
                   tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC = vdDInvoiceBalanceCreditLC
                   tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC  = 0 
                   tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC  = 0.
    
            assign vdTotDInvoiceBalanceCreditCC = vdTotDInvoiceBalanceCreditCC + vdDInvoiceBalanceCreditCC
                   vdTotDInvoiceBalanceCreditLC = vdTotDInvoiceBalanceCreditLC + vdDInvoiceBalanceCreditLC
                   vdTotDInvoiceBalanceDebitCC  = vdTotDInvoiceBalanceDebitCC  + vdDInvoiceBalanceDebitCC
                   vdTotDInvoiceBalanceDebitLC  = vdTotDInvoiceBalanceDebitLC  + vdDInvoiceBalanceDebitLC.
    
        end. /* if last-of (tqARMovementsInPeriod.tcGLCode) */
    
    end. /* for each tqARMovementsInPeriod */
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tcControlGLCode              = #T-69'Debit Movements selected period Total':255(606077688)T-69#
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = 0
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = 0
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = vdTotDInvoiceBalanceDebitCC
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = vdTotDInvoiceBalanceDebitLC
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = 0
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = 0
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = vdTotGLBalanceDebitCC
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = vdTotGLBalanceDebitLC
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'MSADR'
           tqDebtorControlGLBalance.tcBoldType                   = 'B'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
           
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'MSADR'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tcControlGLCode              = #T-71'Credit Movements selected period Total':255(52847364)T-71#
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = vdTotDInvoiceBalanceCreditCC
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = vdTotDInvoiceBalanceCreditLC
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = 0
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = 0
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = vdTotGLBalanceCreditCC
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = vdTotGLBalanceCreditLC
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = 0
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = 0
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'MSBCR'
           tqDebtorControlGLBalance.tcBoldType                   = 'B'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    assign viCountTemp = viCountTemp + 1.
    create tqDebtorControlGLBalance.
    assign tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC    = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC     = ?
           tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC     = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC  = ?
           tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC  = ?
           tqDebtorControlGLBalance.tiRecordCount                = viCountTemp
           tqDebtorControlGLBalance.tcRecordType                 = 'MSBCR'
           tqDebtorControlGLBalance.tiGLCompanyID                = ?.
    
    for each tqDebtorControlGLBalance:
        if (tqDebtorControlGLBalance.tdPostingHistBalanceDebitLC - tqDebtorControlGLBalance.tdPostingHistBalanceCreditLC = 0) and
           (tqDebtorControlGLBalance.tdPostingHistBalanceDebitCC - tqDebtorControlGLBalance.tdPostingHistBalanceCreditCC = 0) and
           (tqDebtorControlGLBalance.tdDInvoiceBalanceDebitLC - tqDebtorControlGLBalance.tdDInvoiceBalanceCreditLC = 0) and
           (tqDebtorControlGLBalance.tdDInvoiceBalanceDebitCC - tqDebtorControlGLBalance.tdDInvoiceBalanceCreditCC = 0)
        then delete tqDebtorControlGLBalance.
    end.
end.