Description
This empty method allows to do additional updates on class temp-tables after records were received (and validated) from outside, using method SetPublicTables.
You can start instances of other business classes to do those updates.
Parameters
| oiReturnStatus | output | integer | |
Internal usage
unused
program code (program/breportperiod.p)
/* ======================================================================================================= */
/* First, we load all relevant RpeortPeriods in a separate temp-table. This will make it easier to do */
/* some additional validations, because we can just check this temp-table and don't have to check both the */
/* instance temp-table and the database. */
/* ======================================================================================================= */
empty temp-table tReportPeriodTemp.
for each tReportPeriod where
tReportPeriod.tc_Status <> "D":U:
create tReportPeriodTemp.
buffer-copy tReportPeriod to tReportPeriodTemp.
end.
<Q-1 run ReportPeriodByAllInfo (all) (Read) (NoCache)
(input ?, (ReportPeriodID)
input ?, (ReportPeriodYear)
input ?, (ReportPeriodPeriod)
input ?, (ReportPeriodStartDate)
input ?, (ReportPeriodEndDate)
input ?, (ReportPeriodIsReported)
output dataset tqReportPeriodByAllInfo) in BReportPeriod >
for each tqReportPeriodByAllInfo no-lock :
if can-find (first tReportPeriodTemp where
tReportPeriodTemp.ReportPeriodYear = tqReportPeriodByAllInfo.tiReportPeriodYear and
tReportPeriodTemp.ReportPeriodPeriod = tqReportPeriodByAllInfo.tiReportPeriodPeriod) or
can-find (first tReportPeriod where
tReportPeriod.ReportPeriodYear = tqReportPeriodByAllInfo.tiReportPeriodYear and
tReportPeriod.ReportPeriodPeriod = tqReportPeriodByAllInfo.tiReportPeriodPeriod and
tReportPeriod.tc_Status = "D":U)
then next.
create tReportPeriodTemp.
assign tReportPeriodTemp.ReportPeriod_ID = tqReportPeriodByAllInfo.tiReportPeriod_ID
tReportPeriodTemp.ReportPeriodYear = tqReportPeriodByAllInfo.tiReportPeriodYear
tReportPeriodTemp.ReportPeriodPeriod = tqReportPeriodByAllInfo.tiReportPeriodPeriod
tReportPeriodTemp.ReportPeriodStartDate = tqReportPeriodByAllInfo.ttReportPeriodStartDate
tReportPeriodTemp.ReportPeriodEndDate = tqReportPeriodByAllInfo.ttReportPeriodEndDate
tReportPeriodTemp.tc_Rowid = tqReportPeriodByAllInfo.tc_Rowid.
end. /* for each tqReportPeriodByAllInfo no-lock : */
/* ======================================================================================= */
/* Now we can easily do some extra validations; testing the consecutive restrictions */
/* We test on status <> "D" because period records must be successive so no gaps allowed */
/* eg i delete 2004/07 and then i test on status C or N, he doesn't do anything and you */
/* can save the record what's wrong */
/* ======================================================================================= */
for each tReportPeriod where
tReportPeriod.tc_Status <> "D":U :
/* ============================================= */
/* The year of a Period must be consecutive */
/* This means that either: */
/* * The previous year is already defined */
/* * This is the first year being defined */
/* ============================================= */
if not can-find (first tReportPeriodTemp where
tReportPeriodTemp.ReportPeriodYear = tReportPeriod.ReportPeriodYear - 1) and
can-find (first tReportPeriodTemp where
tReportPeriodTemp.ReportPeriodYear < tReportPeriod.ReportPeriodYear)
then do:
assign vcMsgRepPd = trim (substitute(#T-9'You first must define the GL periods for &1.':255(3059)T-9#, string(tReportPeriod.ReportPeriodYear - 1)))
oiReturnStatus = -1.
<M-2 run SetMessage (input vcMsgRepPd (icMessage),
input '':U (icArguments),
input 'tReportPeriod.ReportPeriodYear':U (icFieldName),
input tReportPeriod.ReportPeriodYear (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input tReportPeriod.tc_Rowid (icRowid),
input 'QADFIN-967':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BReportPeriod>
end. /* if not can-find */
/* ============================================== */
/* The period of a Period must be consecutive */
/* This means that either: */
/* * The previous period is already defined */
/* * This is the first period being defined */
/* ============================================== */
if tReportPeriod.ReportPeriodPeriod > 1 and
not can-find (first tReportPeriodTemp where
tReportPeriodTemp.ReportPeriodYear = tReportPeriod.ReportPeriodYear and
tReportPeriodTemp.ReportPeriodPeriod = tReportPeriod.ReportPeriodPeriod - 1)
then do:
assign vcMsgRepPd = trim (subst (#T-10'You first must define GL period &1/&2.':255(3060)T-10#, string(tReportPeriod.ReportPeriodYear), string(tReportPeriod.ReportPeriodPeriod - 1)))
oiReturnStatus = -1.
<M-3 run SetMessage (input vcMsgRepPd (icMessage),
input '':U (icArguments),
input 'tReportPeriod.ReportPeriodYear':U (icFieldName),
input tReportPeriod.ReportPeriodYear (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input tReportPeriod.tc_Rowid (icRowid),
input 'QADFIN-975':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BReportPeriod>
end. /* if tReportPeriod.ReportPeriodPeriod > 1 and */
/* ================================================================ */
/* The start date of a Period must be consecutive (no corr period) */
/* This means that either: */
/* * There is a period with end date 1 day before this start date */
/* * This is the first period being defined */
/* ================================================================ */
if not can-find (first tReportPeriodTemp where
tReportPeriodTemp.ReportPeriodEndDate = tReportPeriod.ReportPeriodStartDate - 1) and
can-find (first tReportPeriodTemp where
tReportPeriodTemp.ReportPeriodEndDate < tReportPeriod.ReportPeriodStartDate)
then do:
assign vcMsgRepPd = trim (subst (#T-11'You first must define a GL period ending on &1.':100(3061)T-11#, string(tReportPeriod.ReportPeriodStartDate - 1)))
oiReturnStatus = -1.
<M-4 run SetMessage (input vcMsgRepPd (icMessage),
input '':U (icArguments),
input 'tReportPeriod.ReportPeriodYear':U (icFieldName),
input tReportPeriod.ReportPeriodYear (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input tReportPeriod.tc_Rowid (icRowid),
input 'QADFIN-976':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BReportPeriod>
end. /* if not can-find (first tReportPeriodTemp where */
/* ======================================================================================== */
/* The start and end date of an accounting period cannot be the same as the previous period */
/* ======================================================================================== */
if can-find (first tReportPeriodTemp where
tReportPeriodTemp.ReportPeriodStartDate = tReportPeriod.ReportPeriodStartDate and
tReportPeriodTemp.ReportPeriodEndDate = tReportPeriod.ReportPeriodEndDate and
tReportPeriodTemp.ReportPeriodYear <> tReportPeriod.ReportPeriodYear and
tReportPeriodTemp.ReportPeriodPeriod <> tReportPeriod.ReportPeriodPeriod )
then do :
assign vcDatetemp = <M-53 DisplayDate (input tReportPeriod.ReportPeriodStartDate (itDate)) in BReportPeriod>.
assign vcMsgRepPd = trim(#T-12'The start and end date must be unique when it is not a correction period.':255(3062)T-12#)
vcMsgRepPd = vcMsgRepPd + chr(10) + trim(#T-13'GL Calendar Year/GL Period':255(3063)T-13#) + " : ":U + string(tReportPeriod.ReportPeriodYear) + " / ":U + string(tReportPeriod.ReportPeriodPeriod)
oiReturnStatus = -1.
<M-5 run SetMessage
(input vcMsgRepPd (icMessage),
input '':U (icArguments),
input 'tReportPeriod.ReportPeriodStartDate':U (icFieldName),
input vcDatetemp (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input tReportPeriod.tc_Rowid (icRowid),
input 'QADFIN-977':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BReportPeriod>
end. /* if can-find (first tReportPeriodTemp where */
end. /* for each tReportPeriod where tReportPeriod.tc_Status <> "D":U */
/* ========================================================== */
/* You can only delete the first and the last period */
/* ========================================================== */
if not can-find (first tReportPeriod where
tReportPeriod.tc_Status <> "D":U)
then do:
find first tReportPeriod no-lock no-error.
if available tReportPeriod and
can-find (first tReportPeriodTemp where
tReportPeriodTemp.ReportPeriodYear < tReportPeriod.ReportPeriodYear) and
can-find (first tReportPeriodTemp where
tReportPeriodTemp.ReportPeriodYear > tReportPeriod.ReportPeriodYear)
then do :
assign vcMsgRepPd = trim (#T-14'You can only delete the first or the last reporting year.':100(3547)T-14#)
oiReturnStatus = -1.
<M-8 run SetMessage (input vcMsgRepPd (icMessage),
input '':U (icArguments),
input 'tReportPeriod.ReportPeriodYear':U (icFieldName),
input tReportPeriod.ReportPeriodYear (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input tReportPeriod.tc_Rowid (icRowid),
input 'QADFIN-978':U (icFcMsgNumber),
input '' (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BReportPeriod>
end. /* if can-find (first tReportPeriodTemp where */
end. /* if not can-find (first tReportPeriod where */
/* ====================================== */
/* Do not continue in case errors occured */
/* ====================================== */
if oiReturnStatus < 0
then return.
<ANCESTOR-CODE>