project QadFinancials > class BDebtorReport > method DebtorAgeingAnalysisCurrent
report procedure
Description
DebtorAgeingAnalysisCurrent
Parameters
Internal usage
QadFinancials
program code (program7/bdebtorreport.p)
empty temp-table tqDebtorAgeingAnalysisCurrent.
empty temp-table tCreditLimits.
<M-17 run GetReportLabels
(input 'DebtorAgeingAnalysisCurrent':U (icReportName),
input icLanguageCode (icLanguageCode),
input tFilter (tFilter),
output tqHeader (tqHeader),
output tqFilter (tqFilter),
output tqText (tqText),
output viFcReturnSuper (oiReturnStatus)) in BDebtorReport>
if viFcReturnSuper < 0 or oiReturnStatus = 0
then assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0 then return.
<M-1 run SetDataItemsBasedOnFilterTT (output viFcReturnSuper (oiReturnStatus)) in BDebtorReport>
if viFcReturnSuper < 0 or oiReturnStatus = 0
then assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0 then return.
create tqFilter.
assign
tqFilter.ti_Sequence = 0
tqFilter.tcBusinessFieldLabel = "icActivityCode":U
tqFilter.tcBusinessFieldName = "SummaryByInfo":U
tqFilter.tcParameterValue = vcSummaryByFilter.
<M-21 run ValidateAgeingFilters (output viFcReturnSuper (oiReturnStatus)) in BDebtorReport>
if viFcReturnSuper < 0 or oiReturnStatus = 0
then assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0 then return.
<M-12 run SetAgeingPeriod (output viFcReturnSuper (oiReturnStatus)) in BDebtorReport>
if viFcReturnSuper < 0 or oiReturnStatus = 0
then assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0 then return.
/* There cannot be year 0, this is converted to -999 so it won't be translated in query as 0 -> true !!! */
if viToAccYearFilter = 0
then viToAccYearFilter = -999.
assign viToAccPeriodFilter = viToAccYearFilter * 100 + viToAccPeriodFilter.
if vcReportingCurrencyFilter = ?
then assign vcReportingCurrencyFilter = {&CURRENCYTYPE-LC}.
/* Cross-company iteration */
do viDRCompanyIterator = 1 to viDRCompanyEntries:
/* Get Info about Company (this method fills viDRCurrentCompany_ID) */
<M-26 run CrossCompanyValues
(input viDRCompanyIterator (iiEntryNumber),
output viFcReturnSuper (oiReturnStatus)) in BDebtorReport>
if viFcReturnSuper < 0 or
oiReturnStatus = 0
then assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0
then return.
empty temp-table tqBaseDebtorAgeingAnalysisCurr.
/* start --- Ageing Reports Enhancement (Adding Draft Records Information) zhc */
<Q-36 run GetDraftInvoicesforDAAC (all) (Read) (NoCache)
(input viDRCurrentCompany_ID, (CompanyId)
input vcFromDebtorCodeFilter, (FromDebtorCode)
input vcToDebtorCodeFilter, (ToDebtorCode)
input vcCandoDebtorCodeFilter, (CandoDebtorCode)
input vcFromBRCodeFilter, (FromBRCode)
input vcToBRCodeFilter, (ToBRCode)
input vcCandoBRCodeFilter, (CandoBRCode)
input vcFromDivisionCodeFilter, (FromDivisionCode)
input vcToDivisionCodeFilter, (ToDivisionCode)
input vcCandoDivisionCodeFilter, (CandoDivisionCode)
input vcFromJournalCodeFilter, (FromJournalCode)
input vcToJournalCodeFilter, (ToJournalCode)
input vcCandoJournalCodeFilter, (CandoJournalCode)
input vcCurrencyCodeFilter, (CurrencyCode)
input viToAccPeriodFilter, (ToAccPeriod)
input vcFromProjectCodeFilter, (FromProjectCode)
input vcToProjectCodeFilter, (ToProjectCode)
input vcCandoProjectCodeFilter, (CandoProjectCode)
input vcFromCostCentreCodeFilter1, (FromCCCode)
input vcToCostCentreCodeFilter1, (ToCCCode)
input vcCanDoCostCentreCodeFilter1, (CanDoCCCode)
input vcFromDContrGLCodeFilter, (FromGLCode)
input vcToDContrGLCodeFilter, (ToGLCode)
input vcCandoDContrGLCodeFilter, (CanDoGLCode)
input {&DOCUMENTTYPE-DRAFT}, (DDocumentDraftType)
input vcDebtorTypeFilter, (DebtorTypeCode)
input vcSalespersonFilter, (Salesperson)
input vcPaymentGroupFilter, (PaymentGroup)
output dataset tqGetDraftInvoicesforDAAC) in BDebtorReport>
assign vcDinvoiceOpInfoList = "".
for each tqGetDraftInvoicesforDAAC
break by tqGetDraftInvoicesforDAAC.tiDDocument_ID:
if first-of(tqGetDraftInvoicesforDAAC.tiDDocument_ID)
then do:
create tqBaseDebtorAgeingAnalysisCurr.
buffer-copy tqGetDraftInvoicesforDAAC to tqBaseDebtorAgeingAnalysisCurr.
assign
tqBaseDebtorAgeingAnalysisCurr.tcDInvoiceType = {&DOCUMENTTYPE-DRAFT}
tqBaseDebtorAgeingAnalysisCurr.tcCurrencyCode = tqGetDraftInvoicesforDAAC.tcCurrencyCode
tqBaseDebtorAgeingAnalysisCurr.tcJournalCode = tqGetDraftInvoicesforDAAC.tcPayFormatTypeCode
tqBaseDebtorAgeingAnalysisCurr.tiDInvoiceVoucher = tqGetDraftInvoicesforDAAC.tiDDocumentNumber
tqBaseDebtorAgeingAnalysisCurr.ttDInvoiceDate = tqGetDraftInvoicesforDAAC.ttDDocumentCreationDate
tqBaseDebtorAgeingAnalysisCurr.ttDInvoiceDueDate = tqGetDraftInvoicesforDAAC.ttDDocumentDueDate
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceCreditCC = tqGetDraftInvoicesforDAAC.tdDDocumentOriginalCreditCC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceCreditLC = tqGetDraftInvoicesforDAAC.tdDDocumentOriginalCreditLC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceCreditTC = tqGetDraftInvoicesforDAAC.tdDDocumentOriginalCreditTC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceDebitCC = tqGetDraftInvoicesforDAAC.tdDDocumentOriginalDebitCC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceDebitLC = tqGetDraftInvoicesforDAAC.tdDDocumentOriginalDebitLC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceDebitTC = tqGetDraftInvoicesforDAAC.tdDDocumentOriginalDebitTC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalCreditCC = tqGetDraftInvoicesforDAAC.tdDDocumentOriginalCreditCC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalCreditLC = tqGetDraftInvoicesforDAAC.tdDDocumentOriginalCreditLC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalCreditTC = tqGetDraftInvoicesforDAAC.tdDDocumentOriginalCreditTC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalDebitCC = tqGetDraftInvoicesforDAAC.tdDDocumentOriginalDebitCC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalDebitLC = tqGetDraftInvoicesforDAAC.tdDDocumentOriginalDebitLC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalDebitTC = tqGetDraftInvoicesforDAAC.tdDDocumentOriginalDebitTC
tqBaseDebtorAgeingAnalysisCurr.tcDebtorCommentNote = tqGetDraftInvoicesforDAAC.tcDebtorCommentNote
tqBaseDebtorAgeingAnalysisCurr.tcDInvoiceCommentNote = tqGetDraftInvoicesforDAAC.tcDInvoiceCommentNote
tqBaseDebtorAgeingAnalysisCurr.tcDInvoiceShipperList = tqGetDraftInvoicesforDAAC.tcDInvoiceShipperList.
end.
end.
<Q-2 run DebtorAgeingAnalysisCurrMR (all) (Read) (NoCache)
(input viDRCurrentCompany_ID, (CompanyId)
input vcFromDebtorCodeFilter, (FromDebtorCode)
input vcToDebtorCodeFilter, (ToDebtorCode)
input vcCandoDebtorCodeFilter, (CandoDebtorCode)
input vcFromBRCodeFilter, (FromBRCode)
input vcToBRCodeFilter, (ToBRCode)
input vcCandoBRCodeFilter, (CandoBRCode)
input vcFromDivisionCodeFilter, (FromDivisionCode)
input vcToDivisionCodeFilter, (ToDivisionCode)
input vcCandoDivisionCodeFilter, (CandoDivisionCode)
input vcFromJournalCodeFilter, (FromJournalCode)
input vcToJournalCodeFilter, (ToJournalCode)
input vcCandoJournalCodeFilter, (CandoJournalCode)
input vcCurrencyCodeFilter, (CurrencyCode)
input viToAccPeriodFilter, (ToAccPeriod)
input vcFromProjectCodeFilter, (FromProjectCode)
input vcToProjectCodeFilter, (ToProjectCode)
input vcCandoProjectCodeFilter, (CandoProjectCode)
input vcFromCostCentreCodeFilter1, (FromCCCode)
input vcToCostCentreCodeFilter1, (ToCCCode)
input vcCanDoCostCentreCodeFilter1, (CanDoCCCode)
input vcFromDContrGLCodeFilter, (FromGLCode)
input vcToDContrGLCodeFilter, (ToGLCode)
input vcCandoDContrGLCodeFilter, (CanDoGLCode)
input vcDebtorTypeFilter, (DebtorTypeCode)
input vcSalespersonFilter, (Salesperson)
input vcPaymentGroupFilter, (PaymentGroup)
output dataset tqDebtorAgeingAnalysisCurrMR) in BDebtorReport>
for each tqDebtorAgeingAnalysisCurrMR
break by tqDebtorAgeingAnalysisCurrMR.tiDInvoice_ID
by tqDebtorAgeingAnalysisCurrMR.tiDInvoiceStage_ID:
/* in case there are more than one DInvoiceOpInfo records with type SHIPPER per stage, we will only take one record */
if last-of(tqDebtorAgeingAnalysisCurrMR.tiDInvoiceStage_ID)
then do:
if tqDebtorAgeingAnalysisCurrMR.tcPaymentConditionPaymentTyp = {&PAYMENTCONDITIONPAYMENTTYPE-STAGED}
then do:
if (tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountTC >= 0 and
tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountTC > tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmtAppliedTC) or
(tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountTC <= 0 and
tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountTC < tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmtAppliedTC)
then do:
create tqBaseDebtorAgeingAnalysisCurr.
buffer-copy tqDebtorAgeingAnalysisCurrMR to tqBaseDebtorAgeingAnalysisCurr.
if (tqDebtorAgeingAnalysisCurrMR.tdDInvoiceOriginalDebitTC - tqDebtorAgeingAnalysisCurrMR.tdDInvoiceOriginalCreditTC) * tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountTC >= 0
then assign tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceDebitCC = tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountCC - tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountCC * tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmtAppliedTC / tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountTC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceDebitLC = tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountLC - tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountLC * tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmtAppliedTC / tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountTC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceDebitTC = tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountTC - tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmtAppliedTC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceCreditCC = 0
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceCreditLC = 0
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceCreditTC = 0
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalDebitCC = tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountCC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalDebitLC = tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountLC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalDebitTC = tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountTC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalCreditCC = 0
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalCreditLC = 0
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalCreditTC = 0.
else assign tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceDebitCC = 0
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceDebitLC = 0
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceDebitTC = 0
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceCreditCC = tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountCC - tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountCC * tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmtAppliedTC / tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountTC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceCreditLC = tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountLC - tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountLC * tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmtAppliedTC / tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountTC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceCreditTC = tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountTC - tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmtAppliedTC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalDebitCC = 0
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalDebitLC = 0
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalDebitTC = 0
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalCreditCC = tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountCC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalCreditLC = tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountLC
tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalCreditTC = tqDebtorAgeingAnalysisCurrMR.tdDInvoiceStageAmountTC.
assign tqBaseDebtorAgeingAnalysisCurr.ttDInvoiceDueDate = tqDebtorAgeingAnalysisCurrMR.ttDInvoiceStageDueDate
tqBaseDebtorAgeingAnalysisCurr.ttDInvoiceDiscountDueDate = tqDebtorAgeingAnalysisCurrMR.ttDInvoiceStageDiscDate
tqBaseDebtorAgeingAnalysisCurr.tcDebtorCommentNote = tqDebtorAgeingAnalysisCurrMR.tcDebtorCommentNote
tqBaseDebtorAgeingAnalysisCurr.tcDInvoiceCommentNote = tqDebtorAgeingAnalysisCurrMR.tcDInvoiceCommentNote
tqBaseDebtorAgeingAnalysisCurr.tcDInvoiceShipperList = tqDebtorAgeingAnalysisCurrMR.tcDInvoiceShipperList.
end.
end.
else do:
create tqBaseDebtorAgeingAnalysisCurr.
buffer-copy tqDebtorAgeingAnalysisCurrMR to tqBaseDebtorAgeingAnalysisCurr.
end. /* else do: */
end. /* if first-of(tqDebtorAgeingAnalysisCurrMR.tiDInvoiceStage_ID) */
end.
/* end --- Ageing Reports Enhancement (Adding Draft Records Information) zhc */
for each tqBaseDebtorAgeingAnalysisCurr:
/* Prepayments and Adjustments: valid only if "Within terms = yes" */
/* if vlInvoicesWithinTermsFilter <> true and
(tqBaseDebtorAgeingAnalysisCurr.tcdInvoiceType = {&INVOICETYPE-PREPAYMENT} or
tqBaseDebtorAgeingAnalysisCurr.tcdInvoiceType = {&INVOICETYPE-ADJUSTMENT})
then next. */
/* If "Within terms = no", skip all invoices that aren't due yet */
if vlInvoicesWithinTermsFilter = false and tqBaseDebtorAgeingAnalysisCurr.ttDInvoiceDueDate >= vtDateForAgeingCalcFilter
then next.
create tqDebtorAgeingAnalysisCurrent.
buffer-copy tqBaseDebtorAgeingAnalysisCurr to tqDebtorAgeingAnalysisCurrent.
assign tqDebtorAgeingAnalysisCurrent.tcControlGLCode = tqBaseDebtorAgeingAnalysisCurr.tcGLCode
tqDebtorAgeingAnalysisCurrent.tcControlGLDescription = tqBaseDebtorAgeingAnalysisCurr.tcGLDescription
tqDebtorAgeingAnalysisCurrent.tcDInvoiceOpInfoCode = tqBaseDebtorAgeingAnalysisCurr.tcDInvoiceShipperList
tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod1BalanceXC = 0
tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod2BalanceXC = 0
tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod3BalanceXC = 0
tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod4BalanceXC = 0
tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod5BalanceXC = 0
vdBalanceCC = tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceDebitCC - tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceCreditCC
vdBalanceLC = tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceDebitLC - tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceCreditLC
vdBalanceTC = tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceDebitTC - tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceBalanceCreditTC
vdOriginal1CC = tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalDebitCC - tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalCreditCC
vdOriginal1LC = tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalDebitLC - tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalCreditLC
vdOriginal1TC = tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalDebitTC - tqBaseDebtorAgeingAnalysisCurr.tdDInvoiceOriginalCreditTC.
case vcReportingCurrencyFilter:
when {&CURRENCYTYPE-CC}
then assign vdBalanceXC = vdBalanceCC
vdOriginal1XC = vdOriginal1CC.
when {&CURRENCYTYPE-LC}
then assign vdBalanceXC = vdBalanceLC
vdOriginal1XC = vdOriginal1LC.
when {&CURRENCYTYPE-TC}
then assign vdBalanceXC = vdBalanceTC
vdOriginal1XC = vdOriginal1TC.
end.
assign tqDebtorAgeingAnalysisCurrent.tdBalanceXC =
if vcReportingCurrencyFilter = {&CURRENCYTYPE-TC}
then vdBalanceTC
else vdBalanceXC
tqDebtorAgeingAnalysisCurrent.tdBalanceTC = vdBalanceTC.
/* if tqBaseDebtorAgeingAnalysisCurr.tcDInvoiceType = {&INVOICETYPE-PREPAYMENT} or
tqBaseDebtorAgeingAnalysisCurr.tcDInvoiceType = {&INVOICETYPE-ADJUSTMENT}
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod1BalanceXC = vdBalanceXC.
else */
if tqBaseDebtorAgeingAnalysisCurr.tcDInvoiceType <> {&DOCUMENTTYPE-DRAFT}
then do:
/* if can-find(first tqDInvoiceStageByInvoice where
tqDInvoiceStageByInvoice.tiDInvoice_ID = tqBaseDebtorAgeingAnalysisCurr.tiDInvoice_ID)
then do:
assign vdBalanceXC = vdOriginal1XC - vdBalanceXC.
if vdBalanceXC < 0
then assign vdBalanceXC = vdBalanceXC * -1.
for each tqDInvoiceStageByInvoice where
tqDInvoiceStageByInvoice.tiDInvoice_ID = tqBaseDebtorAgeingAnalysisCurr.tiDInvoice_ID and
tqDInvoiceStageByInvoice.tdDInvoiceStageAmountTC > tqDInvoiceStageByInvoice.tdDInvoiceStageAmtAppliedTC:
if vlInvoicesWithinTermsFilter = false and
tqDInvoiceStageByInvoice.ttDInvoiceStageDueDate >= vtDateForAgeingCalcFilter
then next.
case vcReportingCurrencyFilter:
when {&CURRENCYTYPE-CC}
then assign vdStageAmountXC = tqDInvoiceStageByInvoice.tdDInvoiceStageAmountCC.
when {&CURRENCYTYPE-LC}
then assign vdStageAmountXC = tqDInvoiceStageByInvoice.tdDInvoiceStageAmountLC.
when {&CURRENCYTYPE-TC}
then assign vdStageAmountXC = tqDInvoiceStageByInvoice.tdDInvoiceStageAmountTC.
end.
if vdBalanceXC > 0
then assign vdBalanceXC = vdBalanceXC - vdStageAmountXC.
else assign vdBalanceXC = vdStageAmountXC * -1.
if vdBalanceXC < 0
then vdXCValue = vdBalanceXC * -1.
else vdXCValue = vdBalanceXC.
if tqBaseDebtorAgeingAnalysisCurr.tcDInvoiceType = {&INVOICETYPE-CREDITNOTE} or
tqBaseDebtorAgeingAnalysisCurr.tcDInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION}
then assign vdXCValue = vdXCValue * -1.
find first tAgeingPeriod where
tAgeingPeriod.ttAgeingPeriodFromDate <= tqDInvoiceStageByInvoice.ttDInvoiceStageDueDate and
tAgeingPeriod.ttAgeingPeriodToDate >= tqDInvoiceStageByInvoice.ttDInvoiceStageDueDate
no-error.
if available tAgeingPeriod and
vdBalanceXC < 0
then case tAgeingPeriod.tiAgeingPeriodSeq:
when 1
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod1BalanceXC = tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod1BalanceXC + vdXCValue.
when 2
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod2BalanceXC = tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod2BalanceXC + vdXCValue.
when 3
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod3BalanceXC = tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod3BalanceXC + vdXCValue.
when 4
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod4BalanceXC = tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod4BalanceXC + vdXCValue.
when 5
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod5BalanceXC = tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod5BalanceXC + vdXCValue.
end case.
end.
end.
else do: */
find first tAgeingPeriod where
tAgeingPeriod.ttAgeingPeriodFromDate <= tqDebtorAgeingAnalysisCurrent.ttDInvoiceDueDate and
tAgeingPeriod.ttAgeingPeriodToDate >= tqDebtorAgeingAnalysisCurrent.ttDInvoiceDueDate
no-error.
if available tAgeingPeriod
then case tAgeingPeriod.tiAgeingPeriodSeq:
when 1
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod1BalanceXC = vdBalanceXC.
when 2
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod2BalanceXC = vdBalanceXC.
when 3
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod3BalanceXC = vdBalanceXC.
when 4
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod4BalanceXC = vdBalanceXC.
when 5
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod5BalanceXC = vdBalanceXC.
end case.
/* end. */
end. /* if tqBaseDebtorAgeingAnalysisCurr.tcDInvoiceType <> {&DOCUMENTTYPE-DRAFT} */
else do:
find first tAgeingPeriod where
tAgeingPeriod.ttAgeingPeriodFromDate <= tqDebtorAgeingAnalysisCurrent.ttDInvoiceDueDate and
tAgeingPeriod.ttAgeingPeriodToDate >= tqDebtorAgeingAnalysisCurrent.ttDInvoiceDueDate
no-error.
if available tAgeingPeriod
then case tAgeingPeriod.tiAgeingPeriodSeq:
when 1
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod1BalanceXC = vdBalanceXC.
when 2
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod2BalanceXC = vdBalanceXC.
when 3
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod3BalanceXC = vdBalanceXC.
when 4
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod4BalanceXC = vdBalanceXC.
when 5
then assign tqDebtorAgeingAnalysisCurrent.tdAgeingPeriod5BalanceXC = vdBalanceXC.
end case.
end.
if tqDebtorAgeingAnalysisCurrent.tcDInvoiceType = {&INVOICETYPE-DEDUCTION} then
do:
<M-14 run CalDeductionStatus
(input tqDebtorAgeingAnalysisCurrent.tiDInvoice_ID (iiDInvoiceID),
output tqDebtorAgeingAnalysisCurrent.tcDInvoiceDeductionStatus (ocDeductionStatus),
input-output tqDebtorAgeingAnalysisCurrent.tcDInvoiceType (bcDInvoiceType),
output oiReturnStatus (oiReturnStatus)) in BDebtorReport>
end.
end.
end.
<I-64 {bFcStartAndOpenInstance
&ADD-TO-TRANSACTION = "false"
&CLASS = "BDebtor"}>
for each tqDebtorAgeingAnalysisCurrent
where tqDebtorAgeingAnalysisCurrent.tcDInvoiceType <> {&DOCUMENTTYPE-DRAFT}
break by tqDebtorAgeingAnalysisCurrent.tcDebtorCode:
if last-of(tqDebtorAgeingAnalysisCurrent.tcDebtorCode)
then do:
assign vdCreditOnTurnOver = 0.
<M-57 run CalculateCreditOnTurnover
(input 0 (iiDebtorId),
input tqDebtorAgeingAnalysisCurrent.tcDebtorCode (icDebtorCode),
input vcCurrencyCodeFilter (icCurrencyCode),
input tqDebtorAgeingAnalysisCurrent.tdDebtorPercTurnOverCredLim (idPercentageOfTurnover),
output vdCreditOnTurnOver (odCreditOnTurnover),
output oiReturnStatus (oiReturnStatus)) in BDebtor>
create tCreditLimits.
buffer-copy tqDebtorAgeingAnalysisCurrent to tCreditLimits.
assign tCreditLimits.tdDebtorCreditOnTurnOver = vdCreditOnTurnOver.
end.
end.
<I-82 {bFcCloseAndStopInstance
&CLASS = "BDebtor"}>
/* Remove records that don't match the Customer Balance filter */
/* Fill some extra info for the others */
for each tqDebtorAgeingAnalysisCurrent
break by tqDebtorAgeingAnalysisCurrent.tcDebtorCode:
accumulate tqDebtorAgeingAnalysisCurrent.tdBalanceXC (total by tqDebtorAgeingAnalysisCurrent.tcDebtorCode).
assign tqDebtorAgeingAnalysisCurrent.tcSortByFilter3 = vcSortByNameFilter
tqDebtorAgeingAnalysisCurrent.tcAgeingTypeCurrent = vcAgeingTypeFilter.
if last-of(tqDebtorAgeingAnalysisCurrent.tcDebtorCode)
then do:
assign vdBalanceXC = accum total by tqDebtorAgeingAnalysisCurrent.tcDebtorCode tqDebtorAgeingAnalysisCurrent.tdBalanceXC.
if vcDebtorBalanceFilter = {&DEBTORBALANCE-CREDIT} and
vdBalanceXC > 0 or
vcDebtorBalanceFilter = {&DEBTORBALANCE-DEBIT} and
vdBalanceXC < 0
then do:
for each bDebtorAgeingAnalysisCurrent where
bDebtorAgeingAnalysisCurrent.tcDebtorCode = tqDebtorAgeingAnalysisCurrent.tcDebtorCode and
rowid(bDebtorAgeingAnalysisCurrent) <> rowid(tqDebtorAgeingAnalysisCurrent):
delete bDebtorAgeingAnalysisCurrent.
end.
delete tqDebtorAgeingAnalysisCurrent.
end.
else do:
assign vhFcComponent = ?.
<M-34 run GetAddressWithType
(input tqDebtorAgeingAnalysisCurrent.tiBusinessRelation_ID (iiBusinessRelationId),
input tqDebtorAgeingAnalysisCurrent.tcBusinessRelationCode (icBusinessRelationCode),
input ? (iiAddressTypeId),
input {&ADDRESSTYPECODESYSTEM-HEADOFFICE} (icAddressTypeCode),
output tAddressQueryRef (tAddressQuery),
output viFcReturnSuper (oiReturnStatus)) in BBusinessRelation>
find first tAddressQueryRef
no-error.
if available tAddressQueryRef
then do:
<Q-35 run ContactByAddress (all) (Read) (NoCache)
(input tAddressQueryRef.tiAddress_ID, (AddressId)
output dataset tqContactByAddress) in BBusinessRelation >
find first tqContactByAddress
no-error.
for each bDebtorAgeingAnalysisCurrent where
bDebtorAgeingAnalysisCurrent.tcDebtorCode = tqDebtorAgeingAnalysisCurrent.tcDebtorCode:
assign bDebtorAgeingAnalysisCurrent.tcAddressCity = tAddressQueryRef.tcAddressCity
bDebtorAgeingAnalysisCurrent.tcAddressFax = tAddressQueryRef.tcAddressFax
bDebtorAgeingAnalysisCurrent.tcAddressStreet1 = tAddressQueryRef.tcAddressStreet1
bDebtorAgeingAnalysisCurrent.tcAddressStreet2 = tAddressQueryRef.tcAddressStreet2
bDebtorAgeingAnalysisCurrent.tcAddressStreet3 = tAddressQueryRef.tcAddressStreet3
bDebtorAgeingAnalysisCurrent.tcAddressTelephone = tAddressQueryRef.tcAddressTelephone
bDebtorAgeingAnalysisCurrent.tcAddressZip = tAddressQueryRef.tcAddressZip
bDebtorAgeingAnalysisCurrent.tcAddressState = tAddressQueryRef.tcAddressState
bDebtorAgeingAnalysisCurrent.tcAddressCounty = tAddressQueryRef.tcAddressCounty
bDebtorAgeingAnalysisCurrent.tiAddressFormat = tAddressQueryRef.tiAddressFormat
bDebtorAgeingAnalysisCurrent.tcCountryDescription = tAddressQueryRef.tcCountryDescription
bDebtorAgeingAnalysisCurrent.tcCountyDescription = tAddressQueryRef.tcCountyDescription
bDebtorAgeingAnalysisCurrent.tcStateCode = tAddressQueryRef.tcStateCode.
find first tCreditLimits
where tCreditLimits.tcDebtorCode = bDebtorAgeingAnalysisCurrent.tcDebtorCode no-error.
if available (tCreditLimits)
then assign bDebtorAgeingAnalysisCurrent.tdDebtorFixedCredLimTC = tCreditLimits.tdDebtorFixedCredLimTC
bDebtorAgeingAnalysisCurrent.tdDebtorPercTurnOverCredLim = tCreditLimits.tdDebtorPercTurnOverCredLim
bDebtorAgeingAnalysisCurrent.tdDebtorCreditOnTurnOver = tCreditLimits.tdDebtorCreditOnTurnOver.
if available tqContactByAddress
then assign bDebtorAgeingAnalysisCurrent.tcContactEmail = tqContactByAddress.tcContactEmail
bDebtorAgeingAnalysisCurrent.tcContactName = tqContactByAddress.tcContactName
bDebtorAgeingAnalysisCurrent.tcContactMobile = tqContactByAddress.tcContactMobilePhone
bDebtorAgeingAnalysisCurrent.tcContactPhone = tqContactByAddress.tcContactTelephone.
end.
end.
end.
end.
end.