project QadFinancials > class BClosingPostingsReport > method GLOpenItemControl

report procedure

Description

GL Open Item Check


Parameters


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


Internal usage


unused


program code (program7/bclosingpostingsreport.p)

/* =============================================================================== */
/* This method shows the report for GLOpenItem accounts                    */
/* Validations performed:                                                          */
/*    - check if the sum open balances GLOpenItems = Balance of GL                 */
/* Other validations are in TConcCheck */
/* =============================================================================== */

<M-1 run GetReportLabels
   (input  'GLOpenItemControl':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.                          

empty temp-table tqGLOpenItemControl. 
empty temp-table tqGLOpenItemAllocateLater.                     
<M-2 run SetDataItemsBasedOnFilterTT (output oiReturnStatus (oiReturnStatus)) in BClosingPostingsReport>

if viPeriodPeriodFilter = ? or viPeriodYearFilter = ?
then do:
    <M-13 run SetMessage
          (input  #T-14'The GL Period filter requires a value.':50(2285)T-14# (icMessage), 
           input  '':U (icArguments), 
           input  '':U (icFieldName), 
           input  '':U (icFieldValue), 
           input  'E':U (icType), 
           input  3 (iiSeverity), 
           input  '':U (icRowid),   `
           input  'QADFIN-3688':U (icFcMsgNumber), 
           input  '':U (icFcExplanation), 
           input  '':U (icFcIdentification), 
           input  '':U (icFcContext), 
           output oiReturnStatus (oiReturnStatus)) in BClosingPostingsReport>
    assign oiReturnStatus = -1.                     
end.

if oiReturnStatus <> 0
then return.

assign viYearPeriod     = viPeriodYearFilter * 100 + viPeriodPeriodFilter.

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

    <M-50 run CompanyValues
       (input  viCPCompanyIterator (iiEntryNumber), 
        output oiReturnStatus (oiReturnStatus)) in BClosingPostingsReport>
    
    <Q-4 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 available tqPeriodByYearPeriod
    then assign vtClosingDateFilter = tqPeriodByYearPeriod.ttPeriodEndDate.
    else return.        

    <Q-89 run GLByTypeOpenItem (all) (Read) (NoCache)
       (input viCPCurrentCompany_ID, (CompanyId)
        output dataset tqGLByTypeOpenItem) in BClosingPostingsReport>
    for each tqGLByTypeOpenItem:
        <Q-69 run PostingLineByYearPeriodAndGL (all) (Read) (NoCache)
           (input viCPCurrentCompany_ID, (CompanyId)
            input tqGLByTypeOpenItem.tiGL_ID, (GL_ID)
            input viYearPeriod, (YearPeriod)
            output dataset tqPostingLineByYearPeriodAndGL) in BClosingPostingsReport>
        for each tqPostingLineByYearPeriodAndGL:
            <Q-35 run GLOpenItemMovementByPostingLn (all) (Read) (NoCache)
               (input tqPostingLineByYearPeriodAndGL.tiPostingLine_ID, (PostingLine_Id)
                output dataset tqGLOpenItemMovementByPostingLn) in BClosingPostingsReport>    
    
            if not can-find(first tqGLOpenItemMovementByPostingLn)
            then do:
                 /* This is allocate later. Adding this will make the query very slow because it read ALL postinglines on this account since the start */
                create tqGLOpenItemAllocateLater.
                assign tqGLOpenItemAllocateLater.ttPostingDate = tqPostingLineByYearPeriodAndGL.ttPostingDate
                       tqGLOpenItemAllocateLater.tdPostingLineBalanceCC = tqPostingLineByYearPeriodAndGL.tdPostingLineDebitCC - tqPostingLineByYearPeriodAndGL.tdPostingLineCreditCC
                       tqGLOpenItemAllocateLater.tdPostingLineBalanceLC = tqPostingLineByYearPeriodAndGL.tdPostingLineDebitLC - tqPostingLineByYearPeriodAndGL.tdPostingLineCreditLC
                       tqGLOpenItemAllocateLater.tdPostingLineBalanceTC = tqPostingLineByYearPeriodAndGL.tdPostingLineDebitTC - tqPostingLineByYearPeriodAndGL.tdPostingLineCreditTC
                       tqGLOpenItemAllocateLater.tcCurrencyCode = tqPostingLineByYearPeriodAndGL.tcCurrencyCode
                       tqGLOpenItemAllocateLater.tcJournalCode = tqPostingLineByYearPeriodAndGL.tcJournalCode
                       tqGLOpenItemAllocateLater.tiPostingVoucher = tqPostingLineByYearPeriodAndGL.tiPostingVoucher
                       tqGLOpenItemAllocateLater.tcGLCode = tqGLByTypeOpenItem.tcGLCode.
            end. /* if not can-find(first tqGLOpenItemMovementByPostingLn) */    
        end. /* for each tqPostingLineByEndDateGLCurr */

        <Q-53 run GLOpenItemByClosingDate (all) (Read) (NoCache)
           (input viCPCurrentCompany_ID, (CompanyId)
            input vtClosingDateFilter, (ClosingDate)
            input tqGLByTypeOpenItem.tiGL_ID, (GL_ID)
            output dataset tqGLOpenItemByClosingDate) in BClosingPostingsReport>
        for each tqGLOpenItemByClosingDate:
            assign vlExistedAtPeriodEnd = no.
             <Q-27 run PostingLineByGLOpenItem (all) (Read) (NoCache)
                (input viCPCurrentCompany_ID, (CompanyId)
                 input tqGLOpenItemByClosingDate.tiGLOpenItem_ID, (GLOpenItemId)
                 input viYearPeriod, (SelectedPeriod)
                 input vtClosingDateFilter, (EndDate)
                 output dataset tqPostingLineByGLOpenItem) in BClosingPostingsReport>
            find first tqPostingLineByGLOpenItem no-error.
            if available tqPostingLineByGLOpenItem
            then assign vlExistedAtPeriodEnd = yes.
    
            if vlExistedAtPeriodEnd = no then next.        
            
            find first tqGLOpenItemControl where tqGLOpenItemControl.tiGLID = tqGLByTypeOpenItem.tiGL_ID and
                                                 tqGLOpenItemControl.tiCurrencyID = tqGLOpenItemByClosingDate.tiCurrency_ID no-error.
            if not available tqGLOpenItemControl
            then do:
                create tqGLOpenItemControl.
                assign tqGLOpenItemControl.tiGLID = tqGLByTypeOpenItem.tiGL_ID
                       tqGLOpenItemControl.tiCurrencyID = tqGLOpenItemByClosingDate.tiCurrency_ID
                       tqGLOpenItemControl.tcGLCode = tqGLByTypeOpenItem.tcGLCode
                       tqGLOpenItemControl.tcCurrencyCode = tqGLOpenItemByClosingDate.tcCurrencyCode.
            end.
    
            assign tqGLOpenItemControl.tdSubBalanceCC = tqGLOpenItemControl.tdSubBalanceCC + tqGLOpenItemByClosingDate.tdGLOpenItemBalanceDebitCC - tqGLOpenItemByClosingDate.tdGLOpenItemBalanceCreditCC
                   tqGLOpenItemControl.tdSubBalanceLC = tqGLOpenItemControl.tdSubBalanceLC + tqGLOpenItemByClosingDate.tdGLOpenItemBalanceDebitLC - tqGLOpenItemByClosingDate.tdGLOpenItemBalanceCreditLC
                   tqGLOpenItemControl.tdSubBalanceTC = tqGLOpenItemControl.tdSubBalanceTC + tqGLOpenItemByClosingDate.tdGLOpenItemBalanceDebitTC - tqGLOpenItemByClosingDate.tdGLOpenItemBalanceCreditTC.
    
            /* now subtract the movements after the period end */
            <Q-60 run PostingLineAfterPeriodByOpenItem (all) (Read) (NoCache)
               (input viCPCurrentCompany_ID, (CompanyId)
                input tqGLOpenItemByClosingDate.tiGLOpenItem_ID, (GLOpenItemID)
                input vtClosingDateFilter, (EndDate)
                output dataset tqPostingLnAfterPeriodByOpenItem) in BClosingPostingsReport>
            for each tqPostingLnAfterPeriodByOpenItem:
                assign tqGLOpenItemControl.tdSubBalanceCC = tqGLOpenItemControl.tdSubBalanceCC - tqPostingLnAfterPeriodByOpenItem.tdPostingLineDebitCC + tqPostingLnAfterPeriodByOpenItem.tdPostingLineCreditCC
                       tqGLOpenItemControl.tdSubBalanceLC = tqGLOpenItemControl.tdSubBalanceLC - tqPostingLnAfterPeriodByOpenItem.tdPostingLineDebitLC + tqPostingLnAfterPeriodByOpenItem.tdPostingLineCreditLC
                       tqGLOpenItemControl.tdSubBalanceTC = tqGLOpenItemControl.tdSubBalanceTC - tqPostingLnAfterPeriodByOpenItem.tdPostingLineDebitTC + tqPostingLnAfterPeriodByOpenItem.tdPostingLineCreditTC.
            end. /* for each tqPostingLnAfterPeriodByOpenItem */ 
        end. /* for each tqGLOpenItemByClosingDate */
     end. /* for each tqGLByTypeOpenItem */       
    
     for each tqGLOpenItemControl:
        <Q-32 run PostingHistByYearPeriodGLCurr (all) (Read) (NoCache)
           (input viCPCurrentCompany_ID, (CompanyId)
            input tqGLOpenItemControl.tiGLID, (GL_ID)
            input tqGLOpenItemControl.tiCurrencyID, (Currency_ID)
            input viYearPeriod, (YearPeriod)
            output dataset tqPostingHistByYearPeriodGLCurr) in BClosingPostingsReport>
            
        for each tqPostingHistByYearPeriodGLCurr:
            assign tqGLOpenItemControl.tdGLBalanceCC = tqGLOpenItemControl.tdGLBalanceCC + tqPostingHistByYearPeriodGLCurr.tdPostingHistBalanceDebitCC - tqPostingHistByYearPeriodGLCurr.tdPostingHistBalanceCreditCC
                   tqGLOpenItemControl.tdGLBalanceLC = tqGLOpenItemControl.tdGLBalanceLC + tqPostingHistByYearPeriodGLCurr.tdPostingHistBalanceDebitLC - tqPostingHistByYearPeriodGLCurr.tdPostingHistBalanceCreditLC
                   tqGLOpenItemControl.tdGLBalanceTC = tqGLOpenItemControl.tdGLBalanceTC + tqPostingHistByYearPeriodGLCurr.tdPostingHistBalanceDebitTC - tqPostingHistByYearPeriodGLCurr.tdPostingHistBalanceCreditTC.
        end. /* for each tqPostingHistByYearPeriodGLCurr */
     end. /* for each tqGLOpenItemControl */


end. /* do viCPCompanyIterator = 1 to viCompanyEntries: */