project QadFinancials > class BDebtorReport > method DebtorAccountsSummary

report procedure

Description

Summary information about debtors accounts


Parameters


icLanguageCodeinputcharacter
tFilterinputtemp-table
dcrDebtorAccountsSummaryoutputdataset
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program7/bdebtorreport.p)

empty temp-table tqDebtorAccountsSummary.

define buffer btqDebtorAccountsSummary for tqDebtorAccountsSummary.

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

/*assign tFilter*/
<M-1 run SetDataItemsBasedOnFilterTT (output  viFcReturnSuper (oiReturnStatus)) in BDebtorReport>

if vcSummaryByFilter <> '':U and
   vcSummaryByFilter <> ?
then do:
    create tqFilter.
    assign tqFilter.ti_Sequence          = 0
           tqFilter.tcBusinessFieldLabel = "icActivityCode":U
           tqFilter.tcBusinessFieldName  = "SummaryByFilter":U
           tqFilter.tcParameterValue     = vcSummaryByFilter.
end.

/* We need to check if there are still some transactions pending in the historydaemon */
if vlDCheckHistoryFilter = ? or
   vlDCheckHistoryFilter
then do:
    <Q-12 assign vlFcQueryRecordsAvailable = QDInvoiceMovementAll (NoCache)
       (input viCompanyId, (CompanyId)
        input ?, (DaemonId)) in BQDInvoiceMovement >
    if vlFcQueryRecordsAvailable = true or
       vlFcQueryRecordsAvailable = ?
    then do:
        <M-20 run SetMessage
           (input  #T-23'Run the Balance daemon to update customer balances.':70(65165)t-23# (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'QADFIN-3745':U (icFcMsgNumber), 
            input  #T-22'There are still transactions in the Balance daemon queue. Run to Balance daemon to process the queue or data inconsistencies could occur.':150(65166)t-22# (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output oiReturnStatus (oiReturnStatus)) in BDebtorReport> 
        assign oiReturnStatus = -1.
        return.
    end.
end.


/* =================================================================================== */
/* Check Period Input paramters and give a default value if needed.                    */
/* =================================================================================== */
assign viYearPeriodFrom = viFromAccYearFilter * 100 + viFromAccPeriodFilter
       viYearPeriodTill = viToAccYearFilter * 100 + viToAccPeriodFilter.
if viYearPeriodFrom = 0 then assign viYearPeriodFrom = 1.
if viYearPeriodTill = 0 then assign viYearPeriodTill = 999999.

/* =================================================================================== */
/* Get all The Movements for the selection criteria between Period from and PeriodTill */
/* Note that when a DHist record is found, it means there are activities done, even    */
/* when the debit and/or credit amount is 0 (DHist is a summary)                       */
/* =================================================================================== */

<Q-50 run DebtorMovementsSummary (all) (Read) (NoCache)
   (input viCompanyId, (CompanyId)
    input vcCandoBRCodeFilter, (CandoBRCode)
    input vcCandoDebtorCodeFilter, (CandoDebtorCode)
    input vcCandoDContrGLCodeFilter, (CanDoGLCode)
    input viYearPeriodFrom, (FromAccYearPeriod)
    input vcFromBRCodeFilter, (FromBRCode)
    input vcFromDebtorCodeFilter, (FromDebtorCode)
    input vcFromDContrGLCodeFilter, (FromGLCode)
    input viYearPeriodTill, (ToAccYearPeriod)
    input vcToBRCodeFilter, (ToBRCode)
    input vcToDebtorCodeFilter, (ToDebtorCode)
    input vcToDContrGLCodeFilter, (ToGLCode)
    output dataset tqDebtorMovementsSummary) in BDebtorReport >
        
/* =================================================================================== */
/* Get all The Balance at the beginning of the From Period                             */               
/* =================================================================================== */

<Q-57 run DebtorBalanceSummary (all) (Read) (NoCache)
   (input viCompanyId, (CompanyId)
    input viYearPeriodFrom - 1, (AccYearPeriod)
    input vcCandoBRCodeFilter, (CandoBRCode)
    input vcCandoDebtorCodeFilter, (CandoDebtorCode)
    input vcCandoDContrGLCodeFilter, (CanDoGLCode)
    input vcFromBRCodeFilter, (FromBRCode)
    input vcFromDebtorCodeFilter, (FromDebtorCode)
    input vcFromDContrGLCodeFilter, (FromGlCode)
    input vcToBRCodeFilter, (ToBRCode)
    input vcToDebtorCodeFilter, (ToDebtorCode)
    input vcToDContrGLCodeFilter, (ToGLCode)
    output dataset tqDebtorBalanceSummary) in BDebtorReport >
    
/* =================================================================================== */
/* Build up the result set which contains both the movements and the closing balance   */
/* =================================================================================== */

/* ***************************/
/* Merge the Opening Balance */
/* ***************************/
for each tqDebtorBalanceSummary :

    /* In case there is a 0 balance, we skip it */
    if tqDebtorBalanceSummary.tdDHistBalanceLC = 0 and
       tqDebtorBalanceSummary.tdDHistBalanceTC = 0
    then next.

    find tqDebtorAccountsSummary where
         tqDebtorAccountsSummary.tcDebtorCode     = tqDebtorBalanceSummary.tcDebtorCode     and
         tqDebtorAccountsSummary.tcGLCode         = tqDebtorBalanceSummary.tcGLCode         and
         tqDebtorAccountsSummary.tcCurrencyCode   = tqDebtorBalanceSummary.tcCurrencyCode   and
         tqDebtorAccountsSummary.tcJournalCode    = tqDebtorBalanceSummary.tcJournalCode    and
         tqDebtorAccountsSummary.tcDivisionCode   = tqDebtorBalanceSummary.tcDivisionCode   and
         tqDebtorAccountsSummary.tcCostCentreCode = tqDebtorBalanceSummary.tcCostCentreCode and
         tqDebtorAccountsSummary.tcProjectCode    = tqDebtorBalanceSummary.tcProjectCode
         no-error.
     if not available tqDebtorAccountsSummary
     then do :
            create tqDebtorAccountsSummary.
            buffer-copy tqDebtorBalanceSummary to tqDebtorAccountsSummary.
            assign tqDebtorAccountsSummary.tdDebtorCreditLC = 0
                   tqDebtorAccountsSummary.tdDebtorCreditTC = 0
                   tqDebtorAccountsSummary.tdDebtorDebitLC  = 0
                   tqDebtorAccountsSummary.tdDebtorDebitTC  = 0
                   tqDebtorAccountsSummary.tdSumBeforePeriodLC = 0
                   tqDebtorAccountsSummary.tdSumBeforePeriodTC = 0.            
     end. /*if not available tqDebtorAccountsSummary*/    
     
     assign tqDebtorAccountsSummary.tdSumBeforePeriodLC = tqDebtorAccountsSummary.tdSumBeforePeriodLC + tqDebtorBalanceSummary.tdDHistBalanceLC
            tqDebtorAccountsSummary.tdSumBeforePeriodTC = tqDebtorAccountsSummary.tdSumBeforePeriodTC + tqDebtorBalanceSummary.tdDHistBalanceTC.

end. /* for each tqDebtorBalanceSummary : */

/* ***********************************************************************************************/
/* In case only Activity is selected, remove all the records which do not have a Movement linked */
/* ***********************************************************************************************/
if vcDebtorBalanceFilter = "ACTIVITY"
then do :
    for each tqDebtorAccountsSummary:        

        find tqDebtorMovementsSummary where
             tqDebtorMovementsSummary.tcDebtorCode     = tqDebtorAccountsSummary.tcDebtorCode     and
             tqDebtorMovementsSummary.tcGLCode         = tqDebtorAccountsSummary.tcGLCode         and
             tqDebtorMovementsSummary.tcCurrencyCode   = tqDebtorAccountsSummary.tcCurrencyCode   and
             tqDebtorMovementsSummary.tcJournalCode    = tqDebtorAccountsSummary.tcJournalCode    and
             tqDebtorMovementsSummary.tcDivisionCode   = tqDebtorAccountsSummary.tcDivisionCode   and
             tqDebtorMovementsSummary.tcCostCentreCode = tqDebtorAccountsSummary.tcCostCentreCode and
             tqDebtorMovementsSummary.tcProjectCode    = tqDebtorAccountsSummary.tcProjectCode
             no-error.
             
         if not available tqDebtorMovementsSummary 
         then delete tqDebtorAccountsSummary.
         
    end. /* for each tqDebtorAccountsSummary */
end. /*if vcDebtorBalanceFilter = "ACTIVITY"*/

/* *********************/
/* Merge the Movements */
/* *********************/
for each tqDebtorMovementsSummary :

    find tqDebtorAccountsSummary where
         tqDebtorAccountsSummary.tcDebtorCode     = tqDebtorMovementsSummary.tcDebtorCode     and
         tqDebtorAccountsSummary.tcGLCode         = tqDebtorMovementsSummary.tcGLCode         and
         tqDebtorAccountsSummary.tcCurrencyCode   = tqDebtorMovementsSummary.tcCurrencyCode   and
         tqDebtorAccountsSummary.tcJournalCode    = tqDebtorMovementsSummary.tcJournalCode    and
         tqDebtorAccountsSummary.tcDivisionCode   = tqDebtorMovementsSummary.tcDivisionCode   and
         tqDebtorAccountsSummary.tcCostCentreCode = tqDebtorMovementsSummary.tcCostCentreCode and
         tqDebtorAccountsSummary.tcProjectCode    = tqDebtorMovementsSummary.tcProjectCode
         no-error.
     if not available tqDebtorAccountsSummary
     then do :
            create tqDebtorAccountsSummary.
            buffer-copy tqDebtorMovementsSummary to tqDebtorAccountsSummary.
            assign tqDebtorAccountsSummary.tdDebtorCreditLC    = 0
                   tqDebtorAccountsSummary.tdDebtorCreditTC    = 0
                   tqDebtorAccountsSummary.tdDebtorDebitLC     = 0
                   tqDebtorAccountsSummary.tdDebtorDebitTC     = 0
                   tqDebtorAccountsSummary.tdSumBeforePeriodLC = 0
                   tqDebtorAccountsSummary.tdSumBeforePeriodTC = 0.            
     end. /*if not available tqDebtorAccountsSummary*/    

     assign tqDebtorAccountsSummary.tdDebtorCreditLC = tqDebtorAccountsSummary.tdDebtorCreditLC + tqDebtorMovementsSummary.tdDHistMovementCreditLC
            tqDebtorAccountsSummary.tdDebtorCreditTC = tqDebtorAccountsSummary.tdDebtorCreditTC + tqDebtorMovementsSummary.tdDHistMovementCreditTC
            tqDebtorAccountsSummary.tdDebtorDebitLC  = tqDebtorAccountsSummary.tdDebtorDebitLC + tqDebtorMovementsSummary.tdDHistMovementDebitLC
            tqDebtorAccountsSummary.tdDebtorDebitTC  = tqDebtorAccountsSummary.tdDebtorDebitTC + tqDebtorMovementsSummary.tdDHistMovementDebitTC.    
          
end. /* for each tqDebtorMovementsSummary : */

/* ========================================== */
/* Check the criteria and remove where needed */
/* ========================================== */
for each tqDebtorAccountsSummary :

    /* Remove in case the end-balance is not a credit balance */
    if vcDebtorBalanceFilter = {&DEBTORBALANCE-CREDIT}
    then do:
        if (tqDebtorAccountsSummary.tdSumBeforePeriodLC + tqDebtorAccountsSummary.tdDebtorDebitLC - tqDebtorAccountsSummary.tdDebtorCreditLC >= 0) and
           (tqDebtorAccountsSummary.tdSumBeforePeriodTC + tqDebtorAccountsSummary.tdDebtorDebitTC - tqDebtorAccountsSummary.tdDebtorCreditTC >= 0)
        then delete tqDebtorAccountsSummary.
    end.
    else
    /* Remove in case the end-balance is not a debit balance */    
    if vcDebtorBalanceFilter = {&DEBTORBALANCE-DEBIT}
    then do :
        if (tqDebtorAccountsSummary.tdSumBeforePeriodLC + tqDebtorAccountsSummary.tdDebtorDebitLC - tqDebtorAccountsSummary.tdDebtorCreditLC <= 0) and
           (tqDebtorAccountsSummary.tdSumBeforePeriodTC + tqDebtorAccountsSummary.tdDebtorDebitTC - tqDebtorAccountsSummary.tdDebtorCreditTC <= 0)
        then delete tqDebtorAccountsSummary.    
    end.
    else
    /* Remove in case the end-balance is 0 */
    if vcDebtorBalanceFilter = {&DEBTORBALANCE-BALANCE}
    then do :
        if (tqDebtorAccountsSummary.tdSumBeforePeriodLC + tqDebtorAccountsSummary.tdDebtorDebitLC - tqDebtorAccountsSummary.tdDebtorCreditLC = 0) and
           (tqDebtorAccountsSummary.tdSumBeforePeriodTC + tqDebtorAccountsSummary.tdDebtorDebitTC - tqDebtorAccountsSummary.tdDebtorCreditTC = 0)
        then delete tqDebtorAccountsSummary.    
    end.
    else
    /* Remove in case closing = 0 and no activity */
    if vcDebtorBalanceFilter = "ACTIVITY-" + {&DEBTORBALANCE-BALANCE} or
       vcDebtorBalanceFilter = {&DEBTORBALANCE-ALL}
    then do :
        /* nothing is needed */
    end.    
end. /* for each tqDebtorAccountsSummary */