project QadFinancials > class BJournalEntryMultiCy > method ApiCreateJournalEntryPostingsApplyValidations
Parameters
icRowId | input | character | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program1/bjournalentrymulticy.p)
/* ================================================================ */
/* This method performs validations on the incoming dataset */
/* All tables are validated before returning - even if an error */
/* is found. */
/* ================================================================ */
find first tPostingHeaderMultiCy where
tPostingHeaderMultiCy.tc_Rowid = icRowid and
tPostingHeaderMultiCy.tlPostingHeaderIsPosted = false
no-lock no-error.
if available tPostingHeaderMultiCy
then do:
/* =================================================================================== */
/* Go through all postings of the input */
/* =================================================================================== */
for each tPostingMultiCy where
tPostingMultiCy.tc_parentRowid = tPostingHeaderMultiCy.tc_rowid
on error undo, throw:
/* =================================================================================== */
/* Journal related validations */
/* =================================================================================== */
<Q-70 run JournalPrim (all) (Read) (Cache)
(input tPostingMultiCy.company_id, (CompanyId)
input tPostingMultiCy.tcJournalCode, (JournalCode)
input ?, (JournalID)
output dataset tqJournalPrim) in BJournal>
for first tqJournalPrim no-lock where tqJournalPrim.tcJournalCode = tPostingMultiCy.tcJournalCode:
assign
tPostingMultiCy.tcLayerTypeCode = tqJournalPrim.tcLayerTypeCode
tPostingMultiCy.journal_id = tqJournalPrim.tijournal_id.
end. /* for first tqJournalPrim */
if not available tqJournalPrim
then do:
assign
vcMsgExplanation = <M-36 GetErrorExplanation
(input tPostingMultiCy.tc_Rowid (icPostingRowId),
input ? (icPostingLineRowId),
output viFcReturnSuper (oiReturnStatus)) in BJournalEntryMultiCy>
vcMessageText = trim(substitute(#T-89'An invalid Daybook &1 was specified for entity &2':255(364845521)T-89#,tPostingMultiCy.tcJournalCode, tPostingMultiCy.tcCompanyCode))
oiReturnStatus = -1.
<M-15 run SetMessage
(input vcMessageText (icMessage),
input '' (icArguments),
input 'PostingMultiCy.tcJournalCode' (icFieldName),
input tPostingMultiCy.tcJournalCode (icFieldValue),
input 'E' (icType),
input 1 (iiSeverity),
input tPostingMultiCy.tc_rowid (icRowid),
input 'qadfin-714717':U (icFcMsgNumber),
input vcMsgExplanation (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BJournalEntryMultiCy>
end. /* if not available tqJournalPrim */
/* =================================================================================================== */
/* Although the period and period-mark of the postings is validated later on by class BPosting itself, */
/* we here already make sure that the combination of CompanyCode and Period or PeriodMark exist. */
/* The reason for checking this already here is that we can give a more clear message - including the */
/* CompanyCode - to the user */
/* =================================================================================================== */
if tPostingMultiCy.Company_ID <> 0 and
tPostingMultiCy.Company_ID <> ?
then do :
if tPostingMultiCy.PostingYear = 0 or
tPostingMultiCy.PostingYear = ? or
tPostingMultiCy.PostingPeriod = 0 or
tPostingMultiCy.PostingPeriod = ?
then do :
assign
vcMsgExplanation = <M-45 GetErrorExplanation
(input tPostingMultiCy.tc_Rowid (icPostingRowId),
input ? (icPostingLineRowId),
output viFcReturnSuper (oiReturnStatus)) in BJournalEntryMultiCy>
vcMessageText = trim(substitute(#T-17'You must enter the year and period of the posting on entity &1.':255(23237964)T-17#,tPostingMultiCy.tcCompanyCode))
oiReturnStatus = -1.
<M-34 run SetMessage
(input vcMessageText (icMessage),
input '':U (icArguments),
input 'tPostingMultiCy.PostingPeriod':U (icFieldName),
input tPostingMultiCy.PostingPeriod (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input tPostingMultiCy.tc_rowid (icRowid),
input 'qadfin-126773':U (icFcMsgNumber),
input vcMsgExplanation (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BJournalEntryMultiCy>
end. /* if tPostingMultiCy.PostingYear = 0 or */
else do :
<Q-64 run PeriodPrim (all) (Read) (NoCache)
(input tPostingMultiCy.Company_ID, (CompanyId)
input ?, (PeriodId)
input tPostingMultiCy.PostingYear, (PeriodYear)
input tPostingMultiCy.PostingPeriod, (PeriodPeriod)
output dataset tqPeriodPrim) in BPeriod>
Find first tqPeriodPrim where
tqPeriodPrim.tiCompany_ID = tPostingMultiCy.Company_ID and
tqPeriodPrim.tiPeriodYear = tPostingMultiCy.PostingYear and
tqPeriodPrim.tiPeriodPeriod = tPostingMultiCy.PostingPeriod
no-error.
if not available tqPeriodPrim
then do :
assign
vcMsgExplanation = <M-74 GetErrorExplanation
(input tPostingMultiCy.tc_Rowid (icPostingRowId),
input ? (icPostingLineRowId),
output viFcReturnSuper (oiReturnStatus)) in BJournalEntryMultiCy>
vcMessageText = trim(substitute(#T-32'This period (&1/&2) is not defined for Entity &3.':255(351538488)T-32#,tPostingMultiCy.PostingYear,tPostingMultiCy.PostingPeriod,tPostingMultiCy.tcCompanyCode))
oiReturnStatus = -1.
<M-9 run SetMessage
(input vcMessageText (icMessage),
input '':U (icArguments),
input 'tPostingMultiCy.PostingPeriod':U (icFieldName),
input tPostingMultiCy.PostingPeriod (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input tPostingMultiCy.tc_rowid (icRowid),
input 'qadfin-913565':U (icFcMsgNumber),
input vcMsgExplanation (icFcExplanation),
input '' (icFcIdentification),
input '' (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BJournalEntryMultiCy>
end. /* if not available tqPeriodPrim */
end. /* else if tPostingMultiCy.PostingYear = 0 or */
end. /* if tPostingMultiCy.Company_ID <> 0 and */
end. /* for each tPostingMultiCy */
end. /* if available tPostingHeaderMultiCy */