report procedure
Parameters
dcrVoucherCompleteness | output | dataset | Dataset of VoucherCompleteness. |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program7/bclosingpostingsreport.p)
empty temp-table tqVoucherCompleteness.
assign vcMsg1 = trim (#T-4'Used in the GL period:':30(16332)T-4#)
vcMsg2 = trim(#T-95'Missing in the year:':30(16331)T-95#).
/* ========================================================= */
/* Assign the filter-data-items based on the tFilter records */
/* ========================================================= */
<M-87 run SetDataItemsBasedOnFilterTTDet (output viFcReturnSuper (oiReturnStatus)) in BClosingPostingsReport>
/* Validate filters */
if viPeriodYearFilter = ?
then do:
<M-72 run SetMessage
(input #T-53'You must specify the year.':50(16327)T-53# (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'qadfin-973184':U (icFcMsgNumber),
input #T-67'You must enter all mandatory filter fields.':100(14847)T-67# (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output oiReturnStatus (oiReturnStatus)) in BClosingPostingsReport>
assign oiReturnStatus = -1.
return.
end.
if viFromPeriodFilter = ? then assign viFromPeriodFilter = 0.
if viTillPeriodFilter = ? then assign viTillPeriodFilter = 99.
if viPeriodPeriodFilter <> ?
then assign viFromPeriodFilter = viPeriodPeriodFilter
viTillPeriodFilter = viPeriodPeriodFilter.
assign viYearPeriodFrom = viPeriodYearFilter * 100 + viFromPeriodFilter
viYearPeriodTill = viPeriodYearFilter * 100 + viTillPeriodFilter.
if vcCPCompanyCodeFilter = '' or vcCPCompanyCodeFilter = ?
then assign vcCPCompanyCodeFilter = vcCompanyCode.
if vcCPCandoJournalCodeFilter = ?
then assign vcCPCandoJournalCodeFilter = ''.
/* ====================================== */
/* Get all the Data and do the validation */
/* ====================================== */
<M-79 run LogFiltersValues
(input 'vcCPCompanyCodeFilter=' + vcCPCompanyCodeFilter (icParameter1),
input 'vcCPCandoJournalCodeFilter=' + vcCPCandoJournalCodeFilter (icParameter2),
input 'viYearPeriodFrom=' + string (viYearPeriodFrom) (icParameter3),
input 'viYearPeriodTill=' + string (viYearPeriodTill) (icParameter4),
input '' (icParameter5),
input '' (icParameter6),
input '' (icParameter7),
input '' (icParameter8),
input '' (icParameter9),
input '' (icParameter10),
output oiReturnStatus (oiReturnStatus)) in BClosingPostingsReport>
<I-25 {READDIRECTDBACCESS
&READTABLENAMES = "'Company CompanySharedSet SharedSet Journal Layer Period Posting'"}>
for each Company fields (Company_ID CompanyCode) where
can-do (vcCPCompanyCodeFilter,Company.CompanyCode)
no-lock,
each CompanySharedSet of Company no-lock,
each SharedSet of CompanySharedSet where
SharedSet.SharedSetTypeCode = {&SHAREDSETTYPE-JOURNAL} no-lock,
each Journal of SharedSet where
(can-do (vcCPCandoJournalCodeFilter,Journal.Journalcode) or
vcCPCandoJournalCodeFilter = ''),
first Layer of Journal where
Layer.LayerTypeCode <> {&LAYERTYPECODE-TRANSIENT}
no-lock:
assign viLowestVoucher = 0
viHighestVoucher = 0.
/* ============================================================== */
/* Get the Lowest and Highest number used in the period selection */
/* ============================================================== */
for each Period fields (Company_ID PeriodYearPeriod PeriodYear PeriodPeriod) where
Period.Company_ID = Company.Company_ID and
Period.PeriodYearPeriod >= viYearPeriodFrom and
Period.PeriodYearPeriod <= viYearPeriodTill
no-lock
by Period.Company_ID
by Period.PeriodYearPeriod:
find first Posting where
Posting.Company_ID = Company.Company_ID and
Posting.PostingYear = Period.PeriodYear and
Posting.PostingPeriod = Period.PeriodPeriod and
Posting.Journal_id = Journal.Journal_ID
use-index ViewIndex /* Company PostingYear PostingPeriod Journal */
no-lock no-error.
if available Posting
then do:
assign viLowestVoucher = if viLowestVoucher = 0
then Posting.PostingVoucher
else min (viLowestVoucher,Posting.PostingVoucher).
find last Posting of Company where
Posting.Company_ID = Company.Company_ID and
Posting.PostingYear = Period.PeriodYear and
Posting.PostingPeriod = Period.PeriodPeriod and
Posting.Journal_id = Journal.Journal_ID
use-index ViewIndex /* Company PostingYear PostingPeriod Journal */
no-lock no-error.
assign viHighestVoucher = max (viHighestVoucher,Posting.PostingVoucher).
end.
end. /* for each Period */
/* ============================================================== */
/* If no Postign Found, we can go to the next daybook */
/* ============================================================== */
if viLowestVoucher = 0
then next.
create tqVoucherCompleteness.
assign tqVoucherCompleteness.tcJournalCode = Company.CompanyCode + '-' + Journal.JournalCode
tqVoucherCompleteness.tcJournalDescription = Journal.JournalDescription
tqVoucherCompleteness.tiFirstVoucherNumber = viLowestVoucher
tqVoucherCompleteness.tiLastVoucherNumber = viHighestVoucher.
/* ============================================================== */
/* OK let's check now */
/* ============================================================== */
/*Initializes the values.*/
assign viPrevVoucher = 0
viPrevCollectedVoucher = 0
viFromVoucher = 0
viNumberOfVouchers = 0.
empty temp-table tCollectedVoucherPeriod.
for each Posting fields (Company_ID PostingYear Journal_ID PostingVoucher PostingYearPeriod PostingPeriod) where
Posting.Company_ID = Company.Company_ID and
Posting.PostingYear = viPeriodYearFilter and
Posting.Journal_id = Journal.Journal_ID and
Posting.PostingVoucher >= viLowestVoucher and
Posting.PostingVoucher <= viHighestVoucher
no-lock
by Posting.Company_ID
by Posting.PostingYear
by Posting.Journal_id
by Posting.PostingVoucher :
if viPrevVoucher <> 0
then do :
/* If the Voucher is consecutive but in another period, we report it */
if Posting.PostingYearPeriod < viYearPeriodFrom or
Posting.PostingYearPeriod > viYearPeriodTill
then do:
create tCollectedVoucherPeriod.
assign tCollectedVoucherPeriod.tcCompanyCode = Company.CompanyCode
tCollectedVoucherPeriod.tcJournalCode = Journal.JournalCode
tCollectedVoucherPeriod.tiVoucher = Posting.PostingVoucher
tCollectedVoucherPeriod.tiPeriodPeriod = Posting.PostingPeriod
tCollectedVoucherPeriod.tiPeriodYear = Posting.PostingYear
tCollectedVoucherPeriod.tiCompanyId = Company.Company_ID
tCollectedVoucherPeriod.tiJournalId = Journal.Journal_ID.
end. /*if Posting.PostingYearPeriod < viYearPeriodFrom or */
if Posting.PostingVoucher = viPrevVoucher + 2
then do:
create tqVoucherCompleteness.
assign tqVoucherCompleteness.tcJournalCode = Company.CompanyCode + '-' + Journal.JournalCode
tqVoucherCompleteness.tcErrorType = string (Posting.PostingVoucher - 1) + ' (1) : ' + vcMsg2 .
end.
else if Posting.PostingVoucher > viPrevVoucher + 2
then do:
create tqVoucherCompleteness.
assign tqVoucherCompleteness.tcJournalCode = Company.CompanyCode + '-' + Journal.JournalCode
tqVoucherCompleteness.tcErrorType = string (viPrevVoucher + 1) + ' - ' + string (Posting.PostingVoucher - 1) + " (" +
string (Posting.PostingVoucher - viPrevVoucher - 1) +
') : ' + vcMsg2.
end.
end. /* viPrevVoucher <> viLowestVoucher */
assign viPrevVoucher = Posting.PostingVoucher.
end. /* for each Posting */
for each tCollectedVoucherPeriod where
tCollectedVoucherPeriod.tiCompanyId = Company.Company_ID and
tCollectedVoucherPeriod.tiJournalId = Journal.Journal_ID
no-lock
break by tCollectedVoucherPeriod.tiJournalId
by tCollectedVoucherPeriod.tiVoucher :
if first-of(tCollectedVoucherPeriod.tiJournalId)
then do:
assign viFromVoucher = tCollectedVoucherPeriod.tiVoucher
viNumberOfVouchers = 0
viPrevCollectedVoucher = tCollectedVoucherPeriod.tiVoucher - 1
viFromVouchPeriod = tCollectedVoucherPeriod.tiPeriodPeriod.
end. /*if viFromVoucher = 0*/
if viFromVouchPeriod = tCollectedVoucherPeriod.tiPeriodPeriod
then do:
/*This will check whether the voucher is not in sequence and if the voucher reaches to end then display the thus accumulated vouchers*/
if tCollectedVoucherPeriod.tiVoucher <> viPrevCollectedVoucher + 1
then do:
/*if more than one voucher collected in the list*/
if viFromVoucher <> viPrevCollectedVoucher
then do :
create tqVoucherCompleteness.
assign tqVoucherCompleteness.tcJournalCode = Company.CompanyCode + '-' + Journal.JournalCode
tqVoucherCompleteness.tcErrorType = string(viFromVoucher) + '-' + string(viPrevCollectedVoucher) + ' (' + string(viNumberOfVouchers) + ') ' + vcMsg1 + ' '
+ string(tCollectedVoucherPeriod.tiPeriodYear) + "/":U + string(tCollectedVoucherPeriod.tiPeriodPeriod).
end. /*if viFromVoucher <> viPrevCollectedVoucher*/
else do :
create tqVoucherCompleteness.
assign tqVoucherCompleteness.tcJournalCode = Company.CompanyCode + '-' + Journal.JournalCode
tqVoucherCompleteness.tcErrorType = string(viFromVoucher) + ' (1) ' + vcMsg1 + ' ' + string(tCollectedVoucherPeriod.tiPeriodYear) + "/":U
+ string(tCollectedVoucherPeriod.tiPeriodPeriod).
end. /*else */
/*Reassign the fromvoucher to current voucher as,till the prev voucher the message was displayed */
assign viFromVoucher = tCollectedVoucherPeriod.tiVoucher
viNumberOfVouchers = 0
viFromVouchPeriod = tCollectedVoucherPeriod.tiPeriodPeriod.
end. /*if (tCollectedVoucherPeriod.tiVoucher <> viPrevCollectedVoucher + 1 */
end. /*if viFromVouchPeriod = tCollectedVoucherPeriod.tiPeriodPeriod*/
else do:
if viFromVoucher <> viPrevCollectedVoucher
then do:
create tqVoucherCompleteness.
assign tqVoucherCompleteness.tcJournalCode = Company.CompanyCode + '-' + Journal.JournalCode
tqVoucherCompleteness.tcErrorType = string(viFromVoucher) + '-' + string(viPrevCollectedVoucher) + ' (' + string(viNumberOfVouchers) + ') ' + vcMsg1 + ' ' + string(tCollectedVoucherPeriod.tiPeriodYear) + "/":U
+ string(viFromVouchPeriod).
end. /*if viFromVoucher <> viPrevCollectedVoucher*/
else do:
create tqVoucherCompleteness.
assign tqVoucherCompleteness.tcJournalCode = Company.CompanyCode + '-' + Journal.JournalCode
tqVoucherCompleteness.tcErrorType = string(viFromVoucher) + ' (1) ' + vcMsg1 + ' ' + string(tCollectedVoucherPeriod.tiPeriodYear) + "/":U
+ string(viFromVouchPeriod).
end. /*else do:*/
assign viFromVoucher = tCollectedVoucherPeriod.tiVoucher
viNumberOfVouchers = 0
viFromVouchPeriod = tCollectedVoucherPeriod.tiPeriodPeriod.
end. /*else do:*/
assign viPrevCollectedVoucher = tCollectedVoucherPeriod.tiVoucher
viNumberOfVouchers = viNumberOfVouchers + 1.
if last-of(tCollectedVoucherPeriod.tiJournalId)
then do:
if viFromVoucher <> viPrevCollectedVoucher
then do:
create tqVoucherCompleteness.
assign tqVoucherCompleteness.tcJournalCode = Company.CompanyCode + '-' + Journal.JournalCode
tqVoucherCompleteness.tcErrorType = string(viFromVoucher) + '-' + string(viPrevCollectedVoucher) + ' (' + string(viNumberOfVouchers) + ') ' + vcMsg1 + ' ' + string(tCollectedVoucherPeriod.tiPeriodYear) + "/":U
+ string(viFromVouchPeriod).
end. /*if viFromVoucher <> viPrevCollectedVoucher*/
else do:
create tqVoucherCompleteness.
assign tqVoucherCompleteness.tcJournalCode = Company.CompanyCode + '-' + Journal.JournalCode
tqVoucherCompleteness.tcErrorType = string(viFromVoucher) + ' (1) ' + vcMsg1 + ' ' + string(tCollectedVoucherPeriod.tiPeriodYear) + "/":U
+ string(viFromVouchPeriod).
end. /*else do:*/
end. /*if tCollectedVoucherPeriod.tiVoucher = viLastCollectedVoucher and*/
end. /*for each tCollectedVoucherPeriod where*/
End. /* for each Company */