project QadFinancials > class BClosingPostingsReport > method JournalEntryBalanceDet

Description

Detail method for JournalEntryBalance


Parameters


dcrJournalEntryBalanceoutputdataset
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BClosingPostingsReport.JournalEntryBalance


program code (program7/bclosingpostingsreport.p)

empty temp-table tqJournalEntryBalance.

/*assign tFilter*/
<M-42 run SetDataItemsBasedOnFilterTTDet  (output viFcReturnSuper (oiReturnStatus)) in BClosingPostingsReport>

/*testing mandatory filter fields*/
if viPeriodPeriodFilter = ? or viPeriodYearFilter = ?
then do:
    <M-98 run SetMessage
       (input  #T-34'You must enter a value for the GL calendar year/GL period filter.':54(16512)T-34# (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'E':U (icType), 
        input  3 (iiSeverity), 
        input  '':U (icRowid), 
        input  'qadfin-431586':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.

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

   /* Assign company ID based on code */
    if vcCPCompanyCodeFilter = ? 
    then do:
        assign viCPCurrentCompany_ID = viCompanyId.
        <Q-11 run CompanyPrim (first) (Read) (NoCache)
           (input viCompanyId, (LookupCompanyId)
            input ?, (CompanyCode)
            output dataset tqCompanyPrim) in BCompany>
            
        find first tqCompanyPrim no-error.
        if available tqCompanyPrim 
        then assign vcCPCurrentCompany = tqCompanyPrim.tcCompanyCode.
    end.
    else do:
        assign vcCPCurrentCompany = entry(viCPCompanyIterator ,vcCPCompanyCodeFilter,",":U).
        <Q-84 run CompanyPrim (first) (Read) (NoCache)
           (input ?, (LookupCompanyId)
            input vcCPCurrentCompany, (CompanyCode)
            output dataset tqCompanyPrim) in BCompany>            
        
        find first tqCompanyPrim no-error.
        if available tqCompanyPrim
        then assign viCPCurrentCompany_ID = tqCompanyPrim.tiCompany_ID.
    end.

    /* ====================================================================== */
    /* Read all Posting/PostingLines from the entity/Year/period and check if */
    /* these are balanced in BC and SC                                        */
    /* ====================================================================== */
    for each Posting where
             Posting.Company_ID    = viCPCurrentCompany_ID and
             Posting.PostingYear   = viPeriodYearFilter and
             Posting.PostingPeriod = viPeriodPeriodFilter
             no-lock :

        assign vdPostingLineBalanceLC = 0
               vdPostingLineBalanceCC = 0
               vlSingleCurrency       = yes
               viPostingCurrencyID    = 0.

        for each PostingLine of Posting no-lock :

            assign vdPostingLineBalanceLC = vdPostingLineBalanceLC + 
                                            PostingLine.PostingLineDebitLC - 
                                            PostingLine.PostingLineCreditLC
                   vdPostingLineBalanceCC = vdPostingLineBalanceCC + 
                                            PostingLine.PostingLineDebitCC - 
                                            PostingLine.PostingLineCreditCC.

            if vlSingleCurrency 
            then do :
                if viPostingCurrencyID = 0
                then assign viPostingCurrencyID = PostingLine.Currency_ID.
                else assign vlSingleCurrency = (PostingLine.Currency_ID = viPostingCurrencyID). 
            end.

        end. /* for each PostingLine of Posting */

        if vdPostingLineBalanceLC <> 0 or vdPostingLineBalanceCC <> 0
        then do:
            find Journal of Posting no-lock.
            create tqJournalEntryBalance.
            assign tqJournalEntryBalance.tcJournalCode          = Journal.JournalCode
                   tqJournalEntryBalance.tiPostingVoucher       = Posting.PostingVoucher
                   tqJournalEntryBalance.tdPostingLineBalanceCC = vdPostingLineBalanceCC
                   tqJournalEntryBalance.tdPostingLineBalanceLC = vdPostingLineBalanceLC.

            if vlSingleCurrency
            then do:
                find Currency where
                     Currency.Currency_ID = viPostingCurrencyID no-lock no-error.
                if available Currency
                then assign tqJournalEntryBalance.tcCurrencyCode = Currency.CurrencyCode.
            end. /* if vdPostingLineBalanceLC <> 0 or vdPostingLineBalanceCC <> 0 */
        end.

    end. /* for each Posting  */

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

if not can-find (first tqJournalEntryBalance)
then do:
    create tqJournalEntryBalance.
    assign tqJournalEntryBalance.tiPostingVoucher   = -1
           tqJournalEntryBalance.tcJournalCode      = #T-41'No unbalanced postings can be found in the selected GL period.':100(64820)T-41#.
end.