project QadFinancials > class TConCheck > method CreditorControlGLBalance
Description
AP sub-administration with GL
Parameters
icFile | input | character | |
ocConCheckLineDetResult | output | character | |
otConCheckLineDetStartDate | output | date | |
oiConCheckLineDetStartTime | output | integer | |
oiConCheckLineDetDuration | output | integer | |
iiCompanyID | input | integer | |
iiPeriodID | input | integer | |
iiSessionID | input | integer | |
oiErrorNumbers | output | integer | |
ocConCheckLineDetVersion | output | character | |
icAppVersion | input | character | |
icSumFile | input | character | Summary file |
ihTranslationHandle | input | handle | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program1/tconcheck.p)
/*******************************************************************************************/
/* ================================================================================= */
/* This is the method for AP sub-administration with GL */
/* ================================================================================= */
assign oiReturnStatus = -98.
assign vdStartEtime = etime(no)
otConCheckLineDetStartDate = now
oiConCheckLineDetStartTime = time
oiErrorNumbers = 0
ocConCheckLineDetVersion = icAppVersion + '.1'.
/* open logfile stream */
OUTPUT STREAM sTechOut TO value(icFile) append.
OUTPUT STREAM sSumOut TO value(icSumFile) append.
PUT STREAM sTechOut unformatted ' ' skip.
PUT STREAM sTechOut unformatted '##### AP sub-administration with GL #####' skip.
PUT STREAM sTechOut unformatted 'Version: ' ocConCheckLineDetVersion skip.
PUT STREAM sTechOut unformatted 'Validation Start At: ' string(now, '99/99/9999 HH:MM:SS') skip.
MAIN_BLOCK:
do:
/* Get CompanyCode by iiCompanyId */
find first Company where
Company_id = iiCompanyID
no-lock no-error.
if iiCompanyID = ? or iiCompanyID = 0 or not available Company
then do:
assign ocConCheckLineDetResult = {&CONCHECKRESULT-FAILED}.
PUT STREAM sTechOut unformatted "**Error** Input parameter CompanyID is null or Company not found." skip.
LEAVE MAIN_BLOCK.
end.
assign vcCompanyCode = Company.CompanyCode.
/* Get YearPeriod by iiPeriodID */
find first Period of Company where
Period_id = iiPeriodID
no-lock no-error.
if iiPeriodID = ? or iiPeriodID = 0 or not available Period
then do:
assign ocConCheckLineDetResult = {&CONCHECKRESULT-FAILED}.
PUT STREAM sTechOut unformatted "**Error** Input parameter PeriodID is null or Period not found." skip.
LEAVE MAIN_BLOCK.
end.
assign viSelectedYearPeriod = Period.PeriodYearPeriod.
find first DomainProperty where DomainProperty.Domain_ID = Company.Domain_ID no-lock no-error.
if available DomainProperty then
assign viCompanyLC = DomainProperty.Currency_ID
viCompanyCC = DomainProperty.StatutoryCurrency_ID.
for each CompanySharedSet OF Company no-lock,
first SharedSet OF CompanySharedSet where
SharedSet.SharedSetType = 'GL' no-lock:
assign vdTotGLLCMovementCredit = 0
vdTotINLCMovementCredit = 0
vdTotGLLCMovementDebit = 0
vdTotINLCMovementDebit = 0
vdTotGLCCMovementCredit = 0
vdTotINCCMovementCredit = 0
vdTotGLCCMovementDebit = 0
vdTotINCCMovementDebit = 0.
/* This program will calculate 3 different numbers and compare then between AP and GL: */
/* 1. Movements in Selected Period */
/* 2. Balance as of end of selected Period */
/* 1. Movements in Selected Period */
empty temp-table tBalanceByGLAP.
/* Get the balance of GL as of date */
for each GL no-lock
where
GL.GLTypeCode = {&GLTYPECODE-CRED} and
GL.SharedSet_Id = SharedSet.SharedSet_Id,
each PostingHist no-lock
where
PostingHist.Company_ID = Company.Company_ID and
PostingHist.GL_ID = GL.GL_ID and
PostingHist.PostingHistYearPeriodFrom = viSelectedYearPeriod
break by gl.gl_id:
if first-of(gl.gl_id) then
do:
create tBalanceByGLAP.
assign tBalanceByGLAP.tiGLID = gl.gl_id
tBalanceByGLAP.tcGLCode = gl.glcode.
end.
assign tBalanceByGLAP.tdBalanceGLLC = tBalanceByGLAP.tdBalanceGLLC + PostingHist.PostingHistMovemntDebitLC
tBalanceByGLAP.tdBalanceGLLCCredit = tBalanceByGLAP.tdBalanceGLLCCredit + PostingHist.PostingHistMovemntDebitLC
tBalanceByGLAP.tdBalanceGLCC = tBalanceByGLAP.tdBalanceGLCC + PostingHist.PostingHistMovemntDebitCC
tBalanceByGLAP.tdBalanceGLCCCredit = tBalanceByGLAP.tdBalanceGLCCCredit + PostingHist.PostingHistMovemntDebitCC
vdTotGLLCMovementCredit = vdTotGLLCMovementCredit + PostingHistMovemntCreditLC
vdTotGLLCMovementDebit = vdTotGLLCMovementDebit + PostingHistMovemntDebitLC
vdTotGLCCMovementCredit = vdTotGLCCMovementCredit + PostingHistMovemntCreditCC
vdTotGLCCMovementDebit = vdTotGLCCMovementDebit + PostingHistMovemntDebitCC.
end.
/* Get the AP movement */
for each CInvoiceMovement of Company no-lock
where
CInvoiceMovement.CInvoiceMovementYearPeriod = viSelectedYearPeriod,
first PostingLine no-lock
where
PostingLine.PostingLine_ID = CInvoiceMovement.PostingLine_ID:
find first tBalanceByGLAP where tBalanceByGLAP.tiGLID = PostingLine.GL_ID no-error.
if available tBalanceByGLAP then
do:
assign tBalanceByGLAP.tdBalanceAPLC = tBalanceByGLAP.tdBalanceAPLC + postinglinedebitlc
tBalanceByGLAP.tdBalanceAPCC = tBalanceByGLAP.tdBalanceAPCC + postinglinedebitcc
tBalanceByGLAP.tdBalanceAPLCCredit = tBalanceByGLAP.tdBalanceAPLCCredit + postinglinecreditlc
tBalanceByGLAP.tdBalanceAPCCCredit = tBalanceByGLAP.tdBalanceAPCCCredit + postinglinecreditcc.
end.
else do:
find first gl where GL.GL_ID = PostingLine.GL_ID
and GL.SharedSet_Id = SharedSet.SharedSet_Id no-lock no-error.
if available gl then
do:
create tBalanceByGLAP.
assign tBalanceByGLAP.tiGLID = gl.gl_id
tBalanceByGLAP.tcGLCode = gl.glcode
tBalanceByGLAP.tdBalanceAPLC = postinglinedebitlc
tBalanceByGLAP.tdBalanceAPCC = postinglinedebitcc
tBalanceByGLAP.tdBalanceAPLCCredit = postinglinecreditlc
tBalanceByGLAP.tdBalanceAPCCCredit = postinglinecreditcc.
end.
end.
assign vdTotINLCMovementCredit = vdTotINLCMovementCredit + postinglinecreditlc
vdTotINLCMovementDebit = vdTotINLCMovementDebit + postinglinedebitlc
vdTotINCCMovementCredit = vdTotINCCMovementCredit + postinglinecreditcc
vdTotINCCMovementDebit = vdTotINCCMovementDebit + postinglinedebitcc.
End.
if vdTotINLCMovementDebit <> vdTotGLLCMovementDebit
then do :
/* try to get header info */
put stream sTechOut unformatted skip (1) 'Movements in selected period - Base Currency':U skip.
put stream sTechOut unformatted 'GL Account':U at 1
'GL Amount Debit':U to 60
'AP Amount Debit':U to 90
'Difference Debit':U to 120 skip.
for each tBalanceByGLAP:
if tBalanceByGLAP.tdBalanceGLLC <> tBalanceByGLAP.tdBalanceAPLC then
do:
put stream sTechOut unformatted tBalanceByGLAP.tcGLCode at 1
tBalanceByGLAP.tdBalanceGLLC to 60
tBalanceByGLAP.tdBalanceAPLC to 90
tBalanceByGLAP.tdBalanceGLLC - tBalanceByGLAP.tdBalanceAPLC to 120 skip.
end.
end.
end.
if vdTotINLCMovementCredit <> vdTotGLLCMovementCredit
then do :
/* try to get header info */
put stream sTechOut unformatted skip (1) 'Movements in selected period - Base Currency':U skip.
put stream sTechOut unformatted 'GL Account':U at 1
'GL Amount Credit':U to 60
'AP Amount Credit':U to 90
'Difference Credit':U to 120 skip.
for each tBalanceByGLAP:
if tBalanceByGLAP.tdBalanceGLLCCredit <> tBalanceByGLAP.tdBalanceAPLCCredit then
do:
put stream sTechOut unformatted tBalanceByGLAP.tcGLCode at 1
tBalanceByGLAP.tdBalanceGLLCCredit to 60
tBalanceByGLAP.tdBalanceAPLCCredit to 90
tBalanceByGLAP.tdBalanceGLLCCredit - tBalanceByGLAP.tdBalanceAPLCCredit to 120 skip.
end.
end.
end.
if vdTotINCCMovementDebit <> vdTotGLCCMovementDebit
then do :
/* try to get header info */
put stream sTechOut unformatted skip (1) 'Movements in selected period - Statutory Currency':U skip.
put stream sTechOut unformatted 'GL Account Debit':U at 1
'GL Amount Debit':U to 60
'AP Amount Debit':U to 90
'Difference Debit':U to 120 skip.
for each tBalanceByGLAP:
if tBalanceByGLAP.tdBalanceGLCC <> tBalanceByGLAP.tdBalanceAPCC then
do:
put stream sTechOut unformatted tBalanceByGLAP.tcGLCode at 1
tBalanceByGLAP.tdBalanceGLCC to 60
tBalanceByGLAP.tdBalanceAPCC to 90
tBalanceByGLAP.tdBalanceGLCC - tBalanceByGLAP.tdBalanceAPCC to 120 skip.
end.
end.
end.
if vdTotINCCMovementCredit <> vdTotGLCCMovementCredit
then do :
/* try to get header info */
put stream sTechOut unformatted skip (1) 'Movements in selected period - Statutory Currency':U skip.
put stream sTechOut unformatted 'GL Account Credit':U at 1
'GL Amount Credit':U to 60
'AP Amount Credit':U to 90
'Difference Credit':U to 120 skip.
for each tBalanceByGLAP:
if tBalanceByGLAP.tdBalanceGLCCCredit <> tBalanceByGLAP.tdBalanceAPCCCredit then
do:
put stream sTechOut unformatted tBalanceByGLAP.tcGLCode at 1
tBalanceByGLAP.tdBalanceGLCCCredit to 60
tBalanceByGLAP.tdBalanceAPCCCredit to 90
tBalanceByGLAP.tdBalanceGLCCCredit - tBalanceByGLAP.tdBalanceAPCCCredit to 120 skip.
end.
end.
end.
/* 2. Balance as of end of selected Period */
empty temp-table tBalanceByGLAP.
/* Get the balance of GL as of date */
for each GL no-lock
where
GL.GLTypeCode = {&GLTYPECODE-CRED} and
GL.SharedSet_Id = SharedSet.SharedSet_Id,
each PostingHist no-lock
where
PostingHist.Company_ID = Company.Company_id and
PostingHist.GL_ID = GL.GL_ID and
PostingHist.PostingHistYearPeriodFrom <= viSelectedYearPeriod and
PostingHist.PostingHistYearPeriodTill >= viSelectedYearPeriod
break by gl.gl_id:
find first tBalanceByGLAP where tBalanceByGLAP.tiGLID = GL.GL_ID and
tBalanceByGLAP.tiCurrencyID = PostingHist.Currency_ID no-error.
if not available tBalanceByGLAP
then do:
create tBalanceByGLAP.
assign tBalanceByGLAP.tiGLID = gl.gl_id
tBalanceByGLAP.tiCurrencyID = PostingHist.Currency_ID
tBalanceByGLAP.tcGLCode = gl.glcode
tBalanceByGLAP.tcGLDescription = gl.gldescription.
for first Currency where Currency.Currency_ID = PostingHist.Currency_ID:
assign tBalanceByGLAP.tcCurrencyCode = Currency.CurrencyCode.
end.
end.
assign tBalanceByGLAP.tdBalanceGLLC = tBalanceByGLAP.tdBalanceGLLC + PostingHist.PostingHistBalanceDebitLC - PostingHist.PostingHistBalanceCreditLC
tBalanceByGLAP.tdBalanceGLCC = tBalanceByGLAP.tdBalanceGLCC + PostingHist.PostingHistBalanceDebitCC - PostingHist.PostingHistBalanceCreditCC
tBalanceByGLAP.tdBalanceGLTC = tBalanceByGLAP.tdBalanceGLTC + PostingHist.PostingHistBalanceDebitTC - PostingHist.PostingHistBalanceCreditTC.
end.
/* Get the balance of AP as of date */
for each CInvoice of Company no-lock
where
CInvoice.CInvoiceClosingDate > Period.PeriodEndDate and
CInvoice.CInvoicePostingDate <= Period.PeriodEndDate and
CInvoice.CInvoiceIsInitialStatus = no,
each CInvoiceMovement no-lock
where
CInvoiceMovement.CInvoice_ID = CInvoice.CInvoice_ID and
CInvoiceMovement.CInvoiceMovementPostDate <= Period.PeriodEndDate,
first PostingLine no-lock
where
PostingLine.PostingLine_ID = CInvoiceMovement.PostingLine_ID,
first GL no-lock
where
GL.GL_ID = PostingLine.GL_ID and
GL.SharedSet_Id = SharedSet.SharedSet_Id:
find first tBalanceByGLAP where tBalanceByGLAP.tiGLID = PostingLine.GL_ID and
tBalanceByGLAP.tiCurrencyID = PostingLine.Currency_ID no-error.
if available tBalanceByGLAP then
do:
assign tBalanceByGLAP.tdBalanceAPLC = tBalanceByGLAP.tdBalanceAPLC + postinglinedebitlc - postinglinecreditlc
tBalanceByGLAP.tdBalanceAPCC = tBalanceByGLAP.tdBalanceAPCC + postinglinedebitcc - postinglinecreditcc
tBalanceByGLAP.tdBalanceAPTC = tBalanceByGLAP.tdBalanceAPTC + postinglinedebittc - postinglinecredittc.
end.
else do:
create tBalanceByGLAP.
assign tBalanceByGLAP.tiGLID = gl.gl_id
tBalanceByGLAP.tiCurrencyID = PostingLine.Currency_ID
tBalanceByGLAP.tcGLCode = gl.glcode
tBalanceByGLAP.tcGLDescription = gl.gldescription
tBalanceByGLAP.tdBalanceAPLC = postinglinedebitlc - postinglinecreditlc
tBalanceByGLAP.tdBalanceAPCC = postinglinedebitcc - postinglinecreditcc
tBalanceByGLAP.tdBalanceAPCC = postinglinedebittc - postinglinecredittc.
for first Currency where Currency.Currency_ID = PostingLine.Currency_ID:
assign tBalanceByGLAP.tcCurrencyCode = Currency.CurrencyCode.
end.
end.
End.
if can-find (first tBalanceByGLAP where tBalanceByGLAP.tdBalanceGLTC <> tBalanceByGLAP.tdBalanceAPTC)
then do:
/* try to get header info */
put stream sTechOut unformatted skip (1) 'Balance as of end of selected period - Transaction Currency':U skip.
put stream sTechOut unformatted 'GL Account':U at 1
'GL Amount':U to 60
'AP Amount':U to 90
'Difference':U to 120 skip.
for each tBalanceByGLAP where tBalanceByGLAP.tdBalanceGLTC <> tBalanceByGLAP.tdBalanceAPTC:
put stream sTechOut unformatted tBalanceByGLAP.tcGLCode at 1
tBalanceByGLAP.tdBalanceGLTC to 60
tBalanceByGLAP.tdBalanceAPTC to 90
tBalanceByGLAP.tdBalanceGLTC - tBalanceByGLAP.tdBalanceAPTC to 120 skip.
assign oiErrorNumbers = oiErrorNumbers + 1.
end.
end. /* if can-find (first tBalanceByGLAP) */
if can-find (first tBalanceByGLAP where tBalanceByGLAP.tdBalanceGLLC <> tBalanceByGLAP.tdBalanceAPLC)
then do :
/* try to get header info */
put stream sTechOut unformatted skip (1) 'Balance as of end of selected period - Base Currency':U skip.
put stream sTechOut unformatted 'GL Account':U at 1
'GL Amount':U to 60
'AP Amount':U to 90
'Difference':U to 120 skip.
for each tBalanceByGLAP where tBalanceByGLAP.tdBalanceGLLC <> tBalanceByGLAP.tdBalanceAPLC:
put stream sTechOut unformatted tBalanceByGLAP.tcGLCode at 1
tBalanceByGLAP.tdBalanceGLLC to 60
tBalanceByGLAP.tdBalanceAPLC to 90
tBalanceByGLAP.tdBalanceGLLC - tBalanceByGLAP.tdBalanceAPLC to 120 skip.
assign oiErrorNumbers = oiErrorNumbers + 1.
end.
end. /* if can-find (first tBalanceByGLAP) */
if can-find (first tBalanceByGLAP where tBalanceByGLAP.tdBalanceGLCC <> tBalanceByGLAP.tdBalanceAPCC)
then do :
/* try to get header info */
put stream sTechOut unformatted skip (1) 'Balance as of end of selected period - Statutory Currency':U skip.
put stream sTechOut unformatted 'GL Account':U at 1
'GL Amount':U to 60
'AP Amount':U to 90
'Difference':U to 120 skip.
for each tBalanceByGLAP where tBalanceByGLAP.tdBalanceGLCC <> tBalanceByGLAP.tdBalanceAPCC:
put stream sTechOut unformatted tBalanceByGLAP.tcGLCode at 1
tBalanceByGLAP.tdBalanceGLCC to 60
tBalanceByGLAP.tdBalanceAPCC to 90
tBalanceByGLAP.tdBalanceGLCC - tBalanceByGLAP.tdBalanceAPCC to 120 skip.
assign oiErrorNumbers = oiErrorNumbers + 1.
end.
end. /* if can-find (first tBalanceByGLAP) */
end. /* for each Company */
if oiErrorNumbers > 0 then assign ocConCheckLineDetResult = {&CONCHECKRESULT-FAILED}.
else assign ocConCheckLineDetResult = {&CONCHECKRESULT-PASSED}.
end. /* MAIN_BLOCK */
assign oiConCheckLineDetDuration = etime - vdStartEtime.
/* to format the total duration time */
assign viMilliSecs = oiConCheckLineDetDuration.
assign viSecs = TRUNCATE (oiConCheckLineDetDuration / 1000, 0).
assign viMilliSecs = viMilliSecs mod 1000.
assign vcTotalTime = string(viSecs, 'HH:MM:SS') + '.' + string(viMilliSecs).
put stream sTechOut unformatted 'Execution Duration: ' vcTotalTime skip.
put stream sTechOut unformatted 'Execution Result: ' ocConCheckLineDetResult skip.
put stream sTechOut unformatted '<Error Count:> ' oiErrorNumbers skip.
put stream sTechOut unformatted '**********************************************************************' skip.
output stream sTechOut close.
put stream sSumOut unformatted ' ' skip.
PUT STREAM sSumOut unformatted trim({&CONCHECKLINEDETTYPE-APSUBGL-TR}) skip.
PUT STREAM sSumOut unformatted '-----------------------------' skip.
put stream sSumOut unformatted trim(#T-66'Execution Result':255(510391963)T-66#) + ': ' + ocConCheckLineDetResult skip.
if ocConCheckLineDetResult = {&CONCHECKRESULT-FAILED}
then do:
put stream sSumOut unformatted
trim(#T-84'Total number of errors':100(376712702)T-84#)
+ ': ' + string(oiErrorNumbers) skip.
put stream sSumOut unformatted
'('
trim(#T-96'Please see details in the file':150(806040074)T-96#) ' ' icFile ')' skip.
end.
if can-find (first tBalanceByGLAP)
then do:
for each tBalanceByGLAP break by tBalanceByGLAP.tiGLID
by tBalanceByGLAP.tiCurrencyID:
if first-of(tBalanceByGLAP.tiGLID)
then do:
assign vdGLBalanceLCPerGL = 0
vdGLBalanceCCPerGL = 0
vdSubBalanceCCPerGL = 0
vdSubBalanceLCPerGL = 0
vlDetailPrinted = no.
put stream sSumOut unformatted ' ' skip.
put stream sSumOut unformatted trim(#T-48'GL':20(199)T-48#)
': ':U
tBalanceByGLAP.tcGLCode
' ':U
tBalanceByGLAP.tcGLDescription
' ':U skip.
end.
assign vdGLBalanceLCPerGL = vdGLBalanceLCPerGL + tBalanceByGLAP.tdBalanceGLLC
vdGLBalanceCCPerGL = vdGLBalanceCCPerGL + tBalanceByGLAP.tdBalanceGLCC
vdSubBalanceLCPerGL = vdSubBalanceLCPerGL + tBalanceByGLAP.tdBalanceAPLC
vdSubBalanceCCPerGL = vdSubBalanceCCPerGL + tBalanceByGLAP.tdBalanceAPCC.
if tBalanceByGLAP.tdBalanceGLTC <> tBalanceByGLAP.tdBalanceAPTC or
tBalanceByGLAP.tdBalanceGLLC <> tBalanceByGLAP.tdBalanceAPLC or
tBalanceByGLAP.tdBalanceGLCC <> tBalanceByGLAP.tdBalanceAPCC
then do:
assign vlDetailPrinted = yes.
put stream sSumOut unformatted trim(#T-44'Currency':20(220)T-44#) +
': ':U + tBalanceByGLAP.tcCurrencyCode at 1
trim(#T-17'GL Balance':20(1017)T-17#) +
'':U to 30
trim(#T-28'Sub-ledger Balance':20(254104290)T-28#) to 60
trim(#T-4'Difference':20(4114)T-4#) to 90 skip.
<M-92 run RoundAmount
(input-output tBalanceByGLAP.tdBalanceGLTC (bdUnroundedAmount),
input tBalanceByGLAP.tiCurrencyID (iiCurrencyId),
input ? (icCurrencyCode),
output vcGLBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
<M-57 run RoundAmount
(input-output tBalanceByGLAP.tdBalanceAPTC (bdUnroundedAmount),
input tBalanceByGLAP.tiCurrencyID (iiCurrencyId),
input ? (icCurrencyCode),
output vcSubBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
assign vdDiff = tBalanceByGLAP.tdBalanceGLTC - tBalanceByGLAP.tdBalanceAPTC.
<M-35 run RoundAmount
(input-output vdDiff (bdUnroundedAmount),
input tBalanceByGLAP.tiCurrencyID (iiCurrencyId),
input ? (icCurrencyCode),
output vcDiffFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
put stream sSumOut unformatted trim(#T-23'TC':3(4029)T-23#) at 1
vcGLBalanceFormat to 30
vcSubBalanceFormat to 60
vcDiffFormat to 90 skip.
<M-82 run RoundAmount
(input-output tBalanceByGLAP.tdBalanceGLLC (bdUnroundedAmount),
input viCompanyLC (iiCurrencyId),
input ? (icCurrencyCode),
output vcGLBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
<M-34 run RoundAmount
(input-output tBalanceByGLAP.tdBalanceAPLC (bdUnroundedAmount),
input viCompanyLC (iiCurrencyId),
input ? (icCurrencyCode),
output vcSubBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
assign vdDiff = tBalanceByGLAP.tdBalanceGLLC - tBalanceByGLAP.tdBalanceAPLC.
<M-45 run RoundAmount
(input-output vdDiff (bdUnroundedAmount),
input viCompanyLC (iiCurrencyId),
input ? (icCurrencyCode),
output vcDiffFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
put stream sSumOut unformatted trim(#T-38'BC':3(4030)T-38#) at 1
vcGLBalanceFormat to 30
vcSubBalanceFormat to 60
vcDiffFormat to 90 skip.
<M-1 run RoundAmount
(input-output tBalanceByGLAP.tdBalanceGLCC (bdUnroundedAmount),
input viCompanyCC (iiCurrencyId),
input ? (icCurrencyCode),
output vcGLBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
<M-39 run RoundAmount
(input-output tBalanceByGLAP.tdBalanceAPCC (bdUnroundedAmount),
input viCompanyCC (iiCurrencyId),
input ? (icCurrencyCode),
output vcSubBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
assign vdDiff = tBalanceByGLAP.tdBalanceGLCC - tBalanceByGLAP.tdBalanceAPCC.
<M-20 run RoundAmount
(input-output vdDiff (bdUnroundedAmount),
input viCompanyCC (iiCurrencyId),
input ? (icCurrencyCode),
output vcDiffFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
put stream sSumOut unformatted trim(#T-37'SC':12(3936)T-37#) at 1
vcGLBalanceFormat to 30
vcSubBalanceFormat to 60
vcDiffFormat to 90 skip.
end.
if last-of(tBalanceByGLAP.tiGLID)
then do:
assign vdSumGLBalanceCC = vdSumGLBalanceCC + vdGLBalanceCCPerGL
vdSumGLBalanceLC = vdSumGLbalanceLC + vdGLBalanceLCPerGL
vdSumSubBalanceCC = vdSumSubBalanceCC + vdSubBalanceCCPerGL
vdSumSubBalanceLC = vdSumSubBalanceLC + vdSubBalanceLCPerGL.
if vlDetailPrinted then put stream sSumOut unformatted ' ':U skip.
put stream sSumOut unformatted trim(#T-29'All Currencies':50(837972044)T-29#) at 1
trim(#T-95'GL Balance':20(1017)T-95#) to 30
trim(#T-89'Sub-ledger Balance':20(254104290)T-89#) to 60
trim(#T-32'Difference':20(4114)T-32#) to 90 skip.
<M-5 run RoundAmount
(input-output vdGLBalanceLCPerGL (bdUnroundedAmount),
input viCompanyLC (iiCurrencyId),
input ? (icCurrencyCode),
output vcGLBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
<M-98 run RoundAmount
(input-output vdSubBalanceLCPerGL (bdUnroundedAmount),
input viCompanyLC (iiCurrencyId),
input ? (icCurrencyCode),
output vcSubBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
assign vdDiff = vdGLBalanceLCPerGL - vdSubBalanceLCPerGL.
<M-61 run RoundAmount
(input-output vdDiff (bdUnroundedAmount),
input viCompanyLC (iiCurrencyId),
input ? (icCurrencyCode),
output vcDiffFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
put stream sSumOut unformatted trim(#T-43'BC':3(4030)T-43#) at 1
vcGLBalanceFormat to 30
vcSubBalanceFormat to 60
vcDiffFormat to 90 skip.
<M-75 run RoundAmount
(input-output vdGLBalanceCCPerGL (bdUnroundedAmount),
input viCompanyCC (iiCurrencyId),
input ? (icCurrencyCode),
output vcGLBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
<M-33 run RoundAmount
(input-output vdSubBalanceCCPerGL (bdUnroundedAmount),
input viCompanyCC (iiCurrencyId),
input ? (icCurrencyCode),
output vcSubBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
assign vdDiff = vdGLBalanceCCPerGL - vdSubBalanceCCPerGL.
<M-87 run RoundAmount
(input-output vdDiff (bdUnroundedAmount),
input viCompanyCC (iiCurrencyId),
input ? (icCurrencyCode),
output vcDiffFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
put stream sSumOut unformatted trim(#T-88'SC':12(3936)T-88#) at 1
vcGLBalanceFormat to 30
vcSubBalanceFormat to 60
vcDiffFormat to 90 skip.
end.
end. /* for each tBalanceByGLAP */
put stream sSumOut unformatted ' ' skip.
<M-70 run RoundAmount
(input-output vdSumGLBalanceLC (bdUnroundedAmount),
input viCompanyLC (iiCurrencyId),
input ? (icCurrencyCode),
output vcGLBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
<M-40 run RoundAmount
(input-output vdSumSubBalanceLC (bdUnroundedAmount),
input viCompanyLC (iiCurrencyId),
input ? (icCurrencyCode),
output vcSubBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
assign vdDiff = vdSumGLBalanceLC - vdSumSubBalanceLC.
<M-7 run RoundAmount
(input-output vdDiff (bdUnroundedAmount),
input viCompanyLC (iiCurrencyId),
input ? (icCurrencyCode),
output vcDiffFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
put stream sSumOut unformatted trim(#T-90'Total BC':50(330832880)T-90#) at 1
vcGLBalanceFormat to 30
vcSubBalanceFormat to 60
vcDiffFormat to 90 skip.
<M-74 run RoundAmount
(input-output vdSumGLBalanceCC (bdUnroundedAmount),
input viCompanyCC (iiCurrencyId),
input ? (icCurrencyCode),
output vcGLBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
<M-83 run RoundAmount
(input-output vdSumSubBalanceCC (bdUnroundedAmount),
input viCompanyCC (iiCurrencyId),
input ? (icCurrencyCode),
output vcSubBalanceFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
assign vdDiff = vdSumGLBalanceCC - vdSumSubBalanceCC.
<M-56 run RoundAmount
(input-output vdDiff (bdUnroundedAmount),
input viCompanyCC (iiCurrencyId),
input ? (icCurrencyCode),
output vcDiffFormat (ocFormatedAmount),
output viFcReturnSuper (oiReturnStatus)) in TConCheck>
put stream sSumOut unformatted trim(#T-329'Total SC':50(601335079)T-329#) at 1
vcGLBalanceFormat to 30
vcSubBalanceFormat to 60
vcDiffFormat to 90 skip.
end.
put stream sSumOut unformatted "____________________________________________________________" skip.
output stream sSumOut close.
if oiReturnStatus = -98
then assign oiReturnStatus = 0.