Parameters
ihLocalHandleToThePersistence | input | handle | |
iiPostingSafCombinedID | input | integer | |
oiNbrOfCreatedPostingHist | output | integer | |
oiNbrOfUpdatedPostingHist | output | integer | |
oiNbrOfCreatedQFRWCube | output | integer | |
oiNbrOfCreatedQFRWCubeSaf | output | integer | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program1/bhistorydaemonprocessor.p)
/* ======================================================================= */
/* Prerequisite: */
/* The calling methods has to make sure a QpostingLine is available */
/* Purpose of this method: */
/* Create and/or Update the PostingHist-records for that QPostingLine */
/* ======================================================================= */
/* Indicate Direct db-access (find, update and create) is done here */
<I-42 {WRITEDIRECTDBACCESS
&WRITETABLENAMES = "'PostingHist'"}>
/* ============================================================================== */
/* Prerequisite: The calling methods has to make sure a QpostingLine is available */
/* ============================================================================== */
if not available QpostingLine
then do :
assign oiReturnStatus = -3
vcMsgHist = trim(substitute(#T-93'Internal error: mandatory information in the program code is not accessible; see below for more details.':255(70321)T-93#)) + chr(10) +
trim(substitute(#T-10'Record for table &1 is not available in method &2.':255(587056425)T-10#,"QpostingLine":U,"PerformWorkItemDIRECTUpdPHist":U)).
<M-22 run SetMessage
(input vcMsgHist (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'qadfin-929433':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BHistoryDaemonProcessor>
Return.
end. /* if not available QpostingLine */
/* Local definitions outside of CB */
define buffer bPostingHist for PostingHist.
/* ================================================================================================ */
/* Initialise the output parameters and initialise the date,time and etime values */
/* Update the PostingHist.PostingHistFRWCubeStimeStamp field with the format YYYYMMDD,TIME,ETIME */
/* We then use the same date,time and etime values to update the fields of QFRWCube records */
/* ================================================================================================ */
assign oiNbrOfCreatedPostingHist = 0
oiNbrOfUpdatedPostingHist = 0
oiNbrOfCreatedQFRWCube = 0
oiNbrOfCreatedQFRWCubeSAF = 0
viPostingHistIDForCube = 0
vlUpdatePostingHistBalanceField = false
vtDateForCube = today
viTimeForCube = time
vgETimeForCube = etime
vcLastModifyDateTimeEtime = string(year(vtDateForCube) * 10000 + month(vtDateForCube) * 100 + day(vtDateForCube)) + ',':U +
trim(string(viTimeForCube)) + ',':U +
trim(string(vgETimeForCube)).
/* ========================================================================== */
/* Start with assuming we do not find a PostingHist matching the QPostingLine */
/* ========================================================================== */
assign vlFoundPostingHistRecord = false.
/* =================================================== */
/* Try to find a PostingHist matching the QPostingLine */
/* =================================================== */
for first PostingHist where
PostingHist.Company_ID = QpostingLine.Company_ID and
PostingHist.GL_ID = QpostingLine.GL_ID and
PostingHist.Journal_ID = QpostingLine.Journal_ID and
PostingHist.Layer_ID = QpostingLine.Layer_ID and
PostingHist.Currency_ID = QpostingLine.Currency_ID and
PostingHist.Division_ID = QpostingLine.Division_ID and
PostingHist.Project_ID = QpostingLine.Project_ID and
PostingHist.CostCentre_ID = QpostingLine.CostCentre_ID and
PostingHist.IntercoBusinessRelation_ID = QpostingLine.IntercoBusinessRelation_ID and
PostingHist.PostingSafCombined_ID = iiPostingSafCombinedID and
PostingHist.PostingHistYearPeriodFrom <= QpostingLine.PeriodYearPeriod and
PostingHist.PostingHistYearPeriodTill >= QpostingLine.PeriodYearPeriod
exclusive-lock
on error undo, throw:
/* ========================================================= */
/* Indicate we found a PostingHist matching the QPostingLine */
/* ========================================================= */
assign vlFoundPostingHistRecord = true.
/* =================================================================== */
/* Check the Periods in PostingHist against the period in QpostingLine */
/* =================================================================== */
if PostingHist.PostingHistYearPeriodFrom = QpostingLine.PeriodYearPeriod
then do:
/* ============================================================================== */
/* Case 1 : PostingHist.PostingHistYearPeriodFrom = QpostingLine.PeriodYearPeriod */
/* ============================================================================== */
assign oiNbrOfUpdatedPostingHist = oiNbrOfUpdatedPostingHist + 1
/* Update the Movements of the current Period */
PostingHist.PostingHistMovemntDebitTC = PostingHist.PostingHistMovemntDebitTC + QpostingLine.QPostingLineDebitTC
PostingHist.PostingHistMovemntDebitLC = PostingHist.PostingHistMovemntDebitLC + QpostingLine.QPostingLineDebitLC
PostingHist.PostingHistMovemntDebitCC = PostingHist.PostingHistMovemntDebitCC + QpostingLine.QPostingLineDebitCC
PostingHist.PostingHistMovemntDebitPC = PostingHist.PostingHistMovemntDebitPC + QpostingLine.QPostingLineDebitPC
PostingHist.PostingHistMovemntCreditTC = PostingHist.PostingHistMovemntCreditTC + QpostingLine.QPostingLineCreditTC
PostingHist.PostingHistMovemntCreditLC = PostingHist.PostingHistMovemntCreditLC + QpostingLine.QPostingLineCreditLC
PostingHist.PostingHistMovemntCreditCC = PostingHist.PostingHistMovemntCreditCC + QpostingLine.QPostingLineCreditCC
PostingHist.PostingHistMovemntCreditPC = PostingHist.PostingHistMovemntCreditPC + QpostingLine.QPostingLineCreditPC
PostingHist.PostingHistMovemntQTY = if QpostingLine.QPostingLineDebitTC < 0 or
QpostingLine.QPostingLineCreditTC > 0
then PostingHist.PostingHistMovemntQTY - QpostingLine.QPostingLineQTY
else PostingHist.PostingHistMovemntQTY + QpostingLine.QPostingLineQTY
/* Update the Life-To-date Balances of the current Period */
PostingHist.PostingHistBalanceDebitTC = PostingHist.PostingHistBalanceDebitTC + QpostingLine.QPostingLineDebitTC
PostingHist.PostingHistBalanceDebitLC = PostingHist.PostingHistBalanceDebitLC + QpostingLine.QPostingLineDebitLC
PostingHist.PostingHistBalanceDebitCC = PostingHist.PostingHistBalanceDebitCC + QpostingLine.QPostingLineDebitCC
PostingHist.PostingHistBalanceDebitPC = PostingHist.PostingHistBalanceDebitPC + QpostingLine.QPostingLineDebitPC
PostingHist.PostingHistBalanceCreditTC = PostingHist.PostingHistBalanceCreditTC + QpostingLine.QPostingLineCreditTC
PostingHist.PostingHistBalanceCreditLC = PostingHist.PostingHistBalanceCreditLC + QpostingLine.QPostingLineCreditLC
PostingHist.PostingHistBalanceCreditCC = PostingHist.PostingHistBalanceCreditCC + QpostingLine.QPostingLineCreditCC
PostingHist.PostingHistBalanceCreditPC = PostingHist.PostingHistBalanceCreditPC + QpostingLine.QPostingLineCreditPC
PostingHist.PostingHistBalanceQTY = if QpostingLine.QPostingLineDebitTC < 0 or
QpostingLine.QPostingLineCreditTC > 0
then PostingHist.PostingHistBalanceQTY - QpostingLine.QPostingLineQTY
else PostingHist.PostingHistBalanceQTY + QpostingLine.QPostingLineQTY
/* Update the Year-To-date Balances of the current Period */
PostingHist.PostingHistYTDDebitTC = PostingHist.PostingHistYTDDebitTC + QpostingLine.QPostingLineDebitTC
PostingHist.PostingHistYTDDebitLC = PostingHist.PostingHistYTDDebitLC + QpostingLine.QPostingLineDebitLC
PostingHist.PostingHistYTDDebitCC = PostingHist.PostingHistYTDDebitCC + QpostingLine.QPostingLineDebitCC
PostingHist.PostingHistYTDDebitPC = PostingHist.PostingHistYTDDebitPC + QpostingLine.QPostingLineDebitPC
PostingHist.PostingHistYTDCreditTC = PostingHist.PostingHistYTDCreditTC + QpostingLine.QPostingLineCreditTC
PostingHist.PostingHistYTDCreditLC = PostingHist.PostingHistYTDCreditLC + QpostingLine.QPostingLineCreditLC
PostingHist.PostingHistYTDCreditCC = PostingHist.PostingHistYTDCreditCC + QpostingLine.QPostingLineCreditCC
PostingHist.PostingHistYTDCreditPC = PostingHist.PostingHistYTDCreditPC + QpostingLine.QPostingLineCreditPC
PostingHist.PostingHistYTDQTY = if QpostingLine.QPostingLineDebitTC < 0 or
QpostingLine.QPostingLineCreditTC > 0
then PostingHist.PostingHistYTDQTY - QpostingLine.QPostingLineQTY
else PostingHist.PostingHistYTDQTY + QpostingLine.QPostingLineQTY
/* Update some properties used by Cube */
viPostingHistIDForCube = PostingHist.PostingHist_ID
PostingHist.PostingHistFRWCubeTimeStamp = vcLastModifyDateTimeEtime
/* Keep track if we have to update the Balance fields of other PoistingHist records as well */
vlUpdatePostingHistBalanceField = (PostingHist.PostingHistYearPeriodTill <> 999999).
if PostingHist.PostingHistYTDDebitTC = 0 and
PostingHist.PostingHistYTDDebitLC = 0 and
PostingHist.PostingHistYTDDebitCC = 0 and
PostingHist.PostingHistYTDDebitPC = 0 and
PostingHist.PostingHistYTDCreditTC = 0 and
PostingHist.PostingHistYTDCreditLC = 0 and
PostingHist.PostingHistYTDCreditCC = 0 and
PostingHist.PostingHistYTDCreditPC = 0 and
PostingHist.PostingHistMovemntDebitTC = 0 and
PostingHist.PostingHistMovemntDebitLC = 0 and
PostingHist.PostingHistMovemntDebitCC = 0 and
PostingHist.PostingHistMovemntDebitPC = 0 and
PostingHist.PostingHistMovemntCreditTC = 0 and
PostingHist.PostingHistMovemntCreditLC = 0 and
PostingHist.PostingHistMovemntCreditCC = 0 and
PostingHist.PostingHistMovemntCreditPC = 0 and
PostingHist.PostingHistBalanceDebitTC = 0 and
PostingHist.PostingHistBalanceDebitLC = 0 and
PostingHist.PostingHistBalanceDebitCC = 0 and
PostingHist.PostingHistBalanceDebitPC = 0 and
PostingHist.PostingHistBalanceCreditTC = 0 and
PostingHist.PostingHistBalanceCreditLC = 0 and
PostingHist.PostingHistBalanceCreditCC = 0 and
PostingHist.PostingHistBalanceCreditPC = 0
then do:
<Q-18 run JournalByJournalLayerType (all) (Read) (NoCache)
(input PostingHist.Journal_ID, (JournalId)
input ?, (JournalCode)
input PostingHist.Company_ID, (CompanyId)
input ?, (LayerTypeCode)
output dataset tqJournalByJournalLayerType) in BJournal>
find first tqJournalByJournalLayerType where
tqJournalByJournalLayerType.tiJournal_ID = PostingHist.Journal_ID and
tqJournalByJournalLayerType.tcLayerTypeCode = {&LAYERTYPECODE-TRANSIENT} no-error.
if available tqJournalByJournalLayerType
then do:
/* If there is a prev record, we need to change the TILL */
for each bPostingHist where
bPostingHist.Company_ID = PostingHist.Company_ID and
bPostingHist.GL_ID = PostingHist.GL_ID and
bPostingHist.Journal_ID = PostingHist.Journal_ID and
bPostingHist.Layer_ID = PostingHist.Layer_ID and
bPostingHist.Currency_ID = PostingHist.Currency_ID and
bPostingHist.Division_ID = PostingHist.Division_ID and
bPostingHist.Project_ID = PostingHist.Project_ID and
bPostingHist.CostCentre_ID = PostingHist.CostCentre_ID and
bPostingHist.IntercoBusinessRelation_ID = PostingHist.IntercoBusinessRelation_ID and
bPostingHist.PostingSafCombined_ID = iiPostingSafCombinedID
by bPostingHist.PostingHistYearperiodTill descending :
if bPostingHist.PostingHistYearperiodTill < PostingHist.PostingHistYearperiodTill
then do:
assign bPostingHist.PostingHistYearperiodTill = PostingHist.PostingHistYearperiodTill.
leave.
end.
end.
delete PostingHist.
end.
end.
end. /* if PostingHist.PostingHistYearPeriodFrom = QpostingLine.PeriodYearPeriod */
else do :
if PostingHist.PostingHistYearPeriodFrom < QpostingLine.PeriodYearPeriod
then do:
/* ============================================================================== */
/* Case 2 : PostingHist.PostingHistYearPeriodFrom < QpostingLine.PeriodYearPeriod */
/* ============================================================================== */
/* Update the PostingHist-record its ostingHistYearPeriodTill*/
assign viPrevYearPeriod = PostingHist.PostingHistYearPeriodTill
oiNbrOfUpdatedPostingHist = oiNbrOfUpdatedPostingHist + 1
PostingHist.PostingHistYearPeriodTill = QpostingLine.PeriodYearPeriod - 1.
/* Create a new PostingHist-record */
create bPostingHist.
assign oiNbrOfCreatedPostingHist = oiNbrOfCreatedPostingHist + 1
vhFcComponent = ihLocalHandleToThePersistence
bPostingHist.PostingHist_ID = <M-48 GetNextValue (input 'ObjectNumber':U (icSequence)) in Progress>
bPostingHist.Company_ID = QpostingLine.Company_ID
bPostingHist.GL_ID = QpostingLine.GL_ID
bPostingHist.Journal_ID = QpostingLine.Journal_ID
bPostingHist.Layer_ID = QpostingLine.Layer_ID
bPostingHist.Currency_ID = QpostingLine.Currency_ID
bPostingHist.Division_ID = QpostingLine.Division_ID
bPostingHist.Project_ID = QpostingLine.Project_ID
bPostingHist.CostCentre_ID = QpostingLine.CostCentre_ID
bPostingHist.Layer_ID = QpostingLine.Layer_ID
bPostingHist.IntercoBusinessRelation_ID = QpostingLine.IntercoBusinessRelation_ID
bPostingHist.PostingSafCombined_ID = iiPostingSafCombinedID
bPostingHist.PostingHistYearPeriodFrom = QpostingLine.PeriodYearPeriod
bPostingHist.PostingHistYearPeriodTill = viPrevYearPeriod
/* Update the Movements */
bPostingHist.PostingHistMovemntDebitTC = QpostingLine.QPostingLineDebitTC
bPostingHist.PostingHistMovemntDebitLC = QpostingLine.QPostingLineDebitLC
bPostingHist.PostingHistMovemntDebitCC = QpostingLine.QPostingLineDebitCC
bPostingHist.PostingHistMovemntDebitPC = QpostingLine.QPostingLineDebitPC
bPostingHist.PostingHistMovemntCreditTC = QpostingLine.QPostingLineCreditTC
bPostingHist.PostingHistMovemntCreditLC = QpostingLine.QPostingLineCreditLC
bPostingHist.PostingHistMovemntCreditCC = QpostingLine.QPostingLineCreditCC
bPostingHist.PostingHistMovemntCreditPC = QpostingLine.QPostingLineCreditPC
bPostingHist.PostingHistMovemntQTY = if QpostingLine.QPostingLineDebitTC < 0 or
QpostingLine.QPostingLineCreditTC > 0
then - QpostingLine.QPostingLineQTY
else QpostingLine.QPostingLineQTY
/* Update Life-To-Date */
bPostingHist.PostingHistBalanceDebitTC = PostingHist.PostingHistBalanceDebitTC + QpostingLine.QPostingLineDebitTC
bPostingHist.PostingHistBalanceDebitLC = PostingHist.PostingHistBalanceDebitLC + QpostingLine.QPostingLineDebitLC
bPostingHist.PostingHistBalanceDebitCC = PostingHist.PostingHistBalanceDebitCC + QpostingLine.QPostingLineDebitCC
bPostingHist.PostingHistBalanceDebitPC = PostingHist.PostingHistBalanceDebitPC + QpostingLine.QPostingLineDebitPC
bPostingHist.PostingHistBalanceCreditTC = PostingHist.PostingHistBalanceCreditTC + QpostingLine.QPostingLineCreditTC
bPostingHist.PostingHistBalanceCreditLC = PostingHist.PostingHistBalanceCreditLC + QpostingLine.QPostingLineCreditLC
bPostingHist.PostingHistBalanceCreditCC = PostingHist.PostingHistBalanceCreditCC + QpostingLine.QPostingLineCreditCC
bPostingHist.PostingHistBalanceCreditPC = PostingHist.PostingHistBalanceCreditPC + QpostingLine.QPostingLineCreditPC
bPostingHist.PostingHistBalanceQTY = if QpostingLine.QPostingLineDebitTC < 0 or
QpostingLine.QPostingLineCreditTC > 0
then PostingHist.PostingHistBalanceQTY - QpostingLine.QPostingLineQTY
else PostingHist.PostingHistBalanceQTY + QpostingLine.QPostingLineQTY
/* Update some properties used by Cube */
viPostingHistIDForCube = bPostingHist.PostingHist_ID
bPostingHist.PostingHistFRWCubeTimeStamp = vcLastModifyDateTimeEtime.
/* Update Year-To-Date if it is in the same year */
if trunc(PostingHist.PostingHistYearPeriodFrom / 100, 0) = trunc(QpostingLine.PeriodYearPeriod / 100, 0)
then assign bPostingHist.PostingHistYTDDebitTC = PostingHist.PostingHistYTDDebitTC + QpostingLine.QPostingLineDebitTC
bPostingHist.PostingHistYTDDebitLC = PostingHist.PostingHistYTDDebitLC + QpostingLine.QPostingLineDebitLC
bPostingHist.PostingHistYTDDebitCC = PostingHist.PostingHistYTDDebitCC + QpostingLine.QPostingLineDebitCC
bPostingHist.PostingHistYTDDebitPC = PostingHist.PostingHistYTDDebitPC + QpostingLine.QPostingLineDebitPC
bPostingHist.PostingHistYTDCreditTC = PostingHist.PostingHistYTDCreditTC + QpostingLine.QPostingLineCreditTC
bPostingHist.PostingHistYTDCreditLC = PostingHist.PostingHistYTDCreditLC + QpostingLine.QPostingLineCreditLC
bPostingHist.PostingHistYTDCreditCC = PostingHist.PostingHistYTDCreditCC + QpostingLine.QPostingLineCreditCC
bPostingHist.PostingHistYTDCreditPC = PostingHist.PostingHistYTDCreditPC + QpostingLine.QPostingLineCreditPC
bPostingHist.PostingHistYTDQTY = if QpostingLine.QPostingLineDebitTC < 0 or
QpostingLine.QPostingLineCreditTC > 0
then PostingHist.PostingHistYTDQTY - QpostingLine.QPostingLineQTY
else PostingHist.PostingHistYTDQTY + QpostingLine.QPostingLineQTY.
else assign bPostingHist.PostingHistYTDDebitTC = QpostingLine.QPostingLineDebitTC
bPostingHist.PostingHistYTDDebitLC = QpostingLine.QPostingLineDebitLC
bPostingHist.PostingHistYTDDebitCC = QpostingLine.QPostingLineDebitCC
bPostingHist.PostingHistYTDDebitPC = QpostingLine.QPostingLineDebitPC
bPostingHist.PostingHistYTDCreditTC = QpostingLine.QPostingLineCreditTC
bPostingHist.PostingHistYTDCreditLC = QpostingLine.QPostingLineCreditLC
bPostingHist.PostingHistYTDCreditCC = QpostingLine.QPostingLineCreditCC
bPostingHist.PostingHistYTDCreditPC = QpostingLine.QPostingLineCreditPC
bPostingHist.PostingHistYTDQTY = if QpostingLine.QPostingLineDebitTC < 0 or
QpostingLine.QPostingLineCreditTC > 0
then - QpostingLine.QPostingLineQTY
else QpostingLine.QPostingLineQTY.
/* Keep track if we have to update the Balance fields of other PoistingHist records as well */
assign vlUpdatePostingHistBalanceField = bPostingHist.PostingHistYearPeriodTill <> 999999.
end. /* if PostingHist.PostingHistYearPeriodFrom < QpostingLine.PeriodYearPeriod */
end. /* Not if PostingHist.PostingHistYearPeriodFrom = QpostingLine.PeriodYearPeriod */
/* ============================================================================== */
/* If needed then update the Balance fields of other PoistingHist records as well */
/* ============================================================================== */
if vlUpdatePostingHistBalanceField
then do:
<M-31 run PerformWorkItemDIRECTUpdPHistBalances
(input ihLocalHandleToThePersistence (ihLocalHandleToThePersistence),
input iiPostingSafCombinedID (iiPostingSafCombinedID),
input-output oiNbrOfUpdatedPostingHist (biNbrOfUpdatedPostingHist),
output viFcReturnSuper (oiReturnStatus)) in BHistoryDaemonProcessor>
if viFcReturnSuper <> 0
then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then Return.
end. /* if vlUpdatePostingHistBalanceField */
/* ================================================================================================= */
/* Create QFRWCube and QFRWCubeSaf records */
/* If the QPostingLines are from the Rebuild Account Balance then do not create the QFRWCube Records */
/* ================================================================================================= */
<M-38 run PerformWorkItemDIRECTUpdPHistFRW
(input ihLocalHandleToThePersistence (ihLocalHandleToThePersistence),
input vtDateForCube (itDateForCube),
input viTimeForCube (iiTimeForCube),
input vgETimeForCube (igETimeForCube),
input viPostingHistIDForCube (iiPostingHistIDForCube),
output oiNbrOfCreatedQFRWCube (oiNbrOfCreatedQFRWCube),
output oiNbrOfCreatedQFRWCubeSaf (oiNbrOfCreatedQFRWCubeSaf),
output viFcReturnSuper (oiReturnStatus)) in BHistoryDaemonProcessor>
if viFcReturnSuper <> 0
then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then Return.
end. /* for first PostingHist where */
/* ======================================================================================= */
/* Actions required in case no PostingHist record was found with the for first PostingHist */
/* ======================================================================================= */
if not vlFoundPostingHistRecord
then do:
/* Check if posting history records exist after this period */
assign viPrevYearPeriod = 999999.
for each bPostingHist where
bPostingHist.Company_ID = QpostingLine.Company_ID and
bPostingHist.GL_ID = QpostingLine.GL_ID and
bPostingHist.Journal_ID = QpostingLine.Journal_ID and
bPostingHist.Layer_ID = QpostingLine.Layer_ID and
bPostingHist.Currency_ID = QpostingLine.Currency_ID and
bPostingHist.Division_ID = QpostingLine.Division_ID and
bPostingHist.Project_ID = QpostingLine.Project_ID and
bPostingHist.CostCentre_ID = QpostingLine.CostCentre_ID and
bPostingHist.IntercoBusinessRelation_ID = QpostingLine.IntercoBusinessRelation_ID and
bPostingHist.PostingSafCombined_ID = iiPostingSafCombinedID and
bPostingHist.PostingHistYearPeriodFrom > QpostingLine.PeriodYearPeriod
by BPostingHist.PostingHistYearPeriodFrom
on error undo, throw:
assign viPrevYearPeriod = bPostingHist.PostingHistYearPeriodFrom - 1.
leave.
end. /* for each bPostingHist */
/* Create a new PostingHist record */
create bPostingHist.
assign oiNbrOfCreatedPostingHist = oiNbrOfCreatedPostingHist + 1
vhFcComponent = ihLocalHandleToThePersistence
bPostingHist.PostingHist_ID = <M-41 GetNextValue (input 'ObjectNumber':U (icSequence)) in Progress>
bPostingHist.PostingHistYearPeriodFrom = QpostingLine.PeriodYearPeriod
bPostingHist.PostingHistYearPeriodTill = viPrevYearPeriod
bPostingHist.Company_ID = QpostingLine.Company_ID
bPostingHist.GL_ID = QpostingLine.GL_ID
bPostingHist.Journal_ID = QpostingLine.Journal_ID
bPostingHist.Layer_ID = QpostingLine.Layer_ID
bPostingHist.Currency_ID = QpostingLine.Currency_ID
bPostingHist.Division_ID = QpostingLine.Division_ID
bPostingHist.Project_ID = QpostingLine.Project_ID
bPostingHist.CostCentre_ID = QpostingLine.CostCentre_ID
bPostingHist.Layer_ID = QpostingLine.Layer_ID
bPostingHist.IntercoBusinessRelation_ID = QpostingLine.IntercoBusinessRelation_ID
bPostingHist.PostingSafCombined_ID = iiPostingSafCombinedID
/* Assign Movements */
bPostingHist.PostingHistMovemntDebitTC = QpostingLine.QPostingLineDebitTC
bPostingHist.PostingHistMovemntDebitLC = QpostingLine.QPostingLineDebitLC
bPostingHist.PostingHistMovemntDebitCC = QpostingLine.QPostingLineDebitCC
bPostingHist.PostingHistMovemntDebitPC = QpostingLine.QPostingLineDebitPC
bPostingHist.PostingHistMovemntCreditTC = QpostingLine.QPostingLineCreditTC
bPostingHist.PostingHistMovemntCreditLC = QpostingLine.QPostingLineCreditLC
bPostingHist.PostingHistMovemntCreditCC = QpostingLine.QPostingLineCreditCC
bPostingHist.PostingHistMovemntCreditPC = QpostingLine.QPostingLineCreditPC
bPostingHist.PostingHistMovemntQTY = if QpostingLine.QPostingLineDebitTC < 0 or
QpostingLine.QPostingLineCreditTC > 0
then - QpostingLine.QPostingLineQTY
else QpostingLine.QPostingLineQTY
/* Assign Life-To-Date Balances */
bPostingHist.PostingHistBalanceDebitTC = QpostingLine.QPostingLineDebitTC
bPostingHist.PostingHistBalanceDebitLC = QpostingLine.QPostingLineDebitLC
bPostingHist.PostingHistBalanceDebitCC = QpostingLine.QPostingLineDebitCC
bPostingHist.PostingHistBalanceDebitPC = QpostingLine.QPostingLineDebitPC
bPostingHist.PostingHistBalanceCreditTC = QpostingLine.QPostingLineCreditTC
bPostingHist.PostingHistBalanceCreditLC = QpostingLine.QPostingLineCreditLC
bPostingHist.PostingHistBalanceCreditCC = QpostingLine.QPostingLineCreditCC
bPostingHist.PostingHistBalanceCreditPC = QpostingLine.QPostingLineCreditPC
bPostingHist.PostingHistBalanceQTY = if QpostingLine.QPostingLineDebitTC < 0 or
QpostingLine.QPostingLineCreditTC > 0
then - QpostingLine.QPostingLineQTY
else QpostingLine.QPostingLineQTY
/* Assign Year-To-Date Balances */
bPostingHist.PostingHistYTDDebitTC = QpostingLine.QPostingLineDebitTC
bPostingHist.PostingHistYTDDebitLC = QpostingLine.QPostingLineDebitLC
bPostingHist.PostingHistYTDDebitCC = QpostingLine.QPostingLineDebitCC
bPostingHist.PostingHistYTDDebitPC = QpostingLine.QPostingLineDebitPC
bPostingHist.PostingHistYTDCreditTC = QpostingLine.QPostingLineCreditTC
bPostingHist.PostingHistYTDCreditLC = QpostingLine.QPostingLineCreditLC
bPostingHist.PostingHistYTDCreditCC = QpostingLine.QPostingLineCreditCC
bPostingHist.PostingHistYTDCreditPC = QpostingLine.QPostingLineCreditPC
bPostingHist.PostingHistYTDQTY = if QpostingLine.QPostingLineDebitTC < 0 or
QpostingLine.QPostingLineCreditTC > 0
then - QpostingLine.QPostingLineQTY
else QpostingLine.QPostingLineQTY
/* Assign some properties used by Cube */
viPostingHistIDForCube = bPostingHist.PostingHist_ID
bPostingHist.PostingHistFRWCubeTimeStamp = vcLastModifyDateTimeEtime.
/* ============================================================================== */
/* If needed then update the Balance fields of other PoistingHist records as well */
/* ============================================================================== */
if bPostingHist.PostingHistYearPeriodTill <> 999999
then do :
<M-63 run PerformWorkItemDIRECTUpdPHistBalances
(input ihLocalHandleToThePersistence (ihLocalHandleToThePersistence),
input iiPostingSafCombinedID (iiPostingSafCombinedID),
input-output oiNbrOfUpdatedPostingHist (biNbrOfUpdatedPostingHist),
output viFcReturnSuper (oiReturnStatus)) in BHistoryDaemonProcessor>
if viFcReturnSuper <> 0
then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then Return.
end. /* if bPostingHist.PostingHistYearPeriodTill <> 999999 */
/* ================================================================================================= */
/* Create QFRWCube and QFRWCubeSaf records */
/* If the QPostingLines are from the Rebuild Account Balance then do not create the QFRWCube Records */
/* ================================================================================================= */
<M-1 run PerformWorkItemDIRECTUpdPHistFRW
(input ihLocalHandleToThePersistence (ihLocalHandleToThePersistence),
input vtDateForCube (itDateForCube),
input viTimeForCube (iiTimeForCube),
input vgETimeForCube (igETimeForCube),
input viPostingHistIDForCube (iiPostingHistIDForCube),
output oiNbrOfCreatedQFRWCube (oiNbrOfCreatedQFRWCube),
output oiNbrOfCreatedQFRWCubeSaf (oiNbrOfCreatedQFRWCubeSaf),
output viFcReturnSuper (oiReturnStatus)) in BHistoryDaemonProcessor>
if viFcReturnSuper <> 0
then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then Return.
end. /* if not vlFoundPostingHistRecord */
/* ==================== */
/* Release used buffers */
/* ==================== */
release PostingHist.
release bPostingHist.