project QadFinancials > class BPosting > method AdditionalUpdatesCreateQPostingLineN
Description
Create record in the temporary table for the History daemon - for new posting lines
Parameters
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program5/bposting.p)
/* =============================================================== */
/* Create tApiQPostingLine records based on the tPostingLines */
/* =============================================================== */
create tApiQPostingLine.
assign viApiQPostingLineID = viApiQPostingLineID + 1
tApiQPostingLine.QPostingLine_ID = viApiQPostingLineID
tApiQPostingLine.Company_ID = tPosting.Company_ID
tApiQPostingLine.Period_ID = tPosting.Period_ID
tApiQPostingLine.GL_ID = tPostingLine.GL_ID
tApiQPostingLine.Division_ID = tPostingLine.Division_ID
tApiQPostingLine.CostCentre_ID = tPostingLine.CostCentre_ID
tApiQPostingLine.Project_ID = tPostingLine.Project_ID
tApiQPostingLine.Journal_ID = tPosting.Journal_ID
tApiQPostingLine.Currency_ID = tPostingLine.Currency_ID
tApiQPostingLine.IntercoBusinessRelation_ID = tPostingLine.IntercoBusinessRelation_ID
tApiQPostingLine.QPostingLineDebitLC = tPostingLine.PostingLineDebitLC
tApiQPostingLine.QPostingLineCreditLC = tPostingLine.PostingLineCreditLC
tApiQPostingLine.QPostingLineDebitTC = tPostingLine.PostingLineDebitTC
tApiQPostingLine.QPostingLineCreditTC = tPostingLine.PostingLineCreditTC
tApiQPostingLine.QPostingLineDebitCC = tPostingLine.PostingLineDebitCC
tApiQPostingLine.QPostingLineCreditCC = tPostingLine.PostingLineCreditCC
tApiQPostingLine.QPostingLineQTY = tPostingLine.PostingLineQTY
tApiQPostingLine.QPostingLineInfo = string(tPosting.PostingYear) + "/":U + string(tPosting.PostingPeriod) + "/":U + tPosting.tcJournalCode + "/":U + string(tPosting.PostingVoucher)
tApiQPostingLine.PeriodYearPeriod = (tPosting.PostingYear * 100) + tPosting.PostingPeriod
tApiQPostingLine.Layer_ID = tPosting.tiLayer_ID
tApiQPostingLine.JournalTypeCode = tPosting.tcJournalTypeCode
tApiQPostingLine.tc_Rowid = string(viApiQPostingLineID)
tApiQPostingLine.tc_ParentRowid = "":U
tApiQPostingLine.tc_Status = "N":U
tApiQPostingLine.QPostingDate = tPostingLine.PostingDate.
/* ======================================================================================================= */
/* Fill in missing fields in temp-table tApiQPostingLine: this cannot be done later on in the processing */
/* of the QPostingLine records as in most cases these records will be created already in BPosting:PostSave */
/* ======================================================================================================= */
if tApiQPostingLine.Period_ID <> 0 and
tApiQPostingLine.Period_ID <> ? and
(tApiQPostingLine.PeriodYearPeriod = 0 or
tApiQPostingLine.PeriodYearPeriod = ?)
then do :
<Q-35 run PeriodPrim (all) (Read) (Cache)
(input ?, (CompanyId)
input tApiQPostingLine.Period_ID, (PeriodId)
input ?, (PeriodYear)
input ?, (PeriodPeriod)
output dataset tqPeriodPrim) in BPeriod>
find tqPeriodPrim where
tqPeriodPrim.tiPeriod_ID = tApiQPostingLine.Period_ID
no-lock no-error.
if available tqPeriodPrim
then assign tApiQPostingLine.PeriodYearPeriod = (tqPeriodPrim.tiPeriodYear * 100) + tqPeriodPrim.tiPeriodPeriod.
end. /* if tApiQPostingLine.Period_ID <> 0 and */
if tApiQPostingLine.Journal_ID <> 0 and
tApiQPostingLine.Journal_ID <> ? and
(tApiQPostingLine.Layer_ID = 0 or
tApiQPostingLine.Layer_ID = ? or
tApiQPostingLine.JournalTypeCode = "":U or
tApiQPostingLine.JournalTypeCode = ?)
then do :
<Q-30 run JournalByJournalLayerType (all) (Read) (Cache)
(input tApiQPostingLine.Journal_ID, (JournalId)
input ?, (JournalCode)
input ?, (CompanyId)
input ?, (LayerTypeCode)
output dataset tqJournalByJournalLayerType) in BJournal>
find tqJournalByJournalLayerType where
tqJournalByJournalLayerType.tiJournal_ID = tApiQPostingLine.Journal_ID
no-error.
if available tqJournalByJournalLayerType
then assign tApiQPostingLine.JournalTypeCode = tqJournalByJournalLayerType.tcJournalTypeCode
tApiQPostingLine.Layer_ID = tqJournalByJournalLayerType.tiLayer_ID.
end. /* if tApiQPostingLine.Journal_ID <> 0 and */
/* =============================================================== */
/* Create tApiQPostingSaf records for the tApiQPostingLine records */
/* =============================================================== */
for each tPostingSaf where
tPostingSaf.tc_ParentRowid = tPostingLine.tc_Rowid and
tPostingSaf.tc_Status <> "D":U:
create tApiQPostingSaf.
assign viApiQPostingSafID = viApiQPostingSafID + 1
tApiQPostingSaf.QPostingSaf_ID = viApiQPostingSafID
tApiQPostingSaf.QPostingLine_ID = viApiQPostingLineID
tApiQPostingSaf.Saf_ID = tPostingSaf.Saf_ID
tApiQPostingSaf.QPostingSafParentType = tPostingSaf.PostingSafParentType
tApiQPostingSaf.QPostingSafInputSequence = tPostingSaf.PostingSafInputSequence
tApiQPostingSaf.SafStructure_ID = tPostingSaf.SafStructure_ID
tApiQPostingSaf.tc_Rowid = string(viApiQPostingSafID)
tApiQPostingSaf.tc_ParentRowid = tApiQPostingLine.tc_Rowid
tApiQPostingSaf.tc_Status = "N":U.
/* ================================================================================ */
/* In case real-time processing of the posting-lines on the bank-accounts is needed */
/* then we transfer the data we just created into separate but similar temp-tables */
/* ================================================================================ */
if vlBankCashTrxInRealTime = TRUE and
(tPostingLine.tcGLTypeCode = {&GLTYPECODE-BANK} or
tPostingLine.tcGLTypeCode = {&GLTYPECODE-CASH})
then do:
create tApiQPostingSafBank.
buffer-copy tApiQPostingSaf to tApiQPostingSafBank.
delete tApiQPostingSaf.
end. /* if vlBankCashTrxInRealTime = TRUE and */
end. /* for each tPostingSaf where */
/* ================================================================================ */
/* In case real-time processing of the posting-lines on the bank-accounts is needed */
/* then we transfer the data we just created into separate but similar temp-tables */
/* ================================================================================ */
if vlBankCashTrxInRealTime = TRUE and
(tPostingLine.tcGLTypeCode = {&GLTYPECODE-BANK} or
tPostingLine.tcGLTypeCode = {&GLTYPECODE-CASH})
then do:
create tApiQPostingLineBank.
buffer-copy tApiQPostingLine to tApiQPostingLineBank.
delete tApiQPostingLine.
end. /* if vlBankCashTrxInRealTime = TRUE and */