report procedure
Description
Summary information about debtors accounts
Parameters
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 */