Description
Add History Record for Rounding postinglines when needed.
Parameters
ocErrorMessage | output | character | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program1/tsetstatutorycurrency.p)
assign oiReturnStatus = -98
viLocalReturnStatus = 0.
ROUNDBLOCK:
do:
/* Check if PostingHist exists */
find journal where
journal.journal_id = posting.journal_id
no-lock no-error.
if not available journal
then do:
assign ocErrorMessage = "Database Corruption: Unable to retrieve the daybook with ID " + string(posting.journal_id)
viLocalReturnStatus = -701.
leave ROUNDBLOCK.
end. /* if not available journal */
if not can-find(first PostingHist where
PostingHist.Company_ID = Posting.Company_ID and
PostingHist.Journal_ID = Posting.Journal_ID and
PostingHist.Layer_ID = Journal.Layer_ID and
PostingHist.GL_ID = PostingLine.GL_ID and
PostingHist.Currency_ID = PostingLine.Currency_ID and
PostingHist.Division_ID = PostingLine.Division_ID and
PostingHist.Project_ID = PostingLine.Project_ID and
PostingHist.CostCentre_ID = PostingLine.CostCentre_ID and
PostingHist.IntercoBusinessRelation_ID = PostingLine.IntercoBusinessRelation_ID and
PostingHist.PostingSafCombined_ID = 0 and
PostingHist.PostingHistYearPeriodFrom = Posting.PostingYearPeriod) and
not can-find(first PostingHist where
PostingHist.Company_ID = Posting.Company_ID and
PostingHist.Journal_ID = Posting.Journal_ID and
PostingHist.Layer_ID = Journal.Layer_ID and
PostingHist.GL_ID = PostingLine.GL_ID and
PostingHist.Currency_ID = PostingLine.Currency_ID and
PostingHist.Division_ID = PostingLine.Division_ID and
PostingHist.Project_ID = PostingLine.Project_ID and
PostingHist.CostCentre_ID = PostingLine.CostCentre_ID and
PostingHist.IntercoBusinessRelation_ID = PostingLine.IntercoBusinessRelation_ID and
PostingHist.PostingSafCombined_ID = ? and
PostingHist.PostingHistYearPeriodFrom = Posting.PostingYearPeriod)
then do:
/* update Till Date of previous PostingHist record */
find last PostingHist where
PostingHist.Company_ID = Posting.Company_ID and
PostingHist.Journal_ID = Posting.Journal_ID and
PostingHist.Layer_ID = Journal.Layer_ID and
PostingHist.GL_ID = PostingLine.GL_ID and
PostingHist.Currency_ID = PostingLine.Currency_ID and
PostingHist.Division_ID = PostingLine.Division_ID and
PostingHist.Project_ID = PostingLine.Project_ID and
PostingHist.CostCentre_ID = PostingLine.CostCentre_ID and
PostingHist.IntercoBusinessRelation_ID = PostingLine.IntercoBusinessRelation_ID and
PostingHist.PostingSafCombined_ID = 0 and
PostingHist.PostingHistYearPeriodFrom < Posting.PostingYearPeriod
use-index IDsPeriod2From
exclusive-lock no-error.
if not available PostingHist
then find last PostingHist where
PostingHist.Company_ID = Posting.Company_ID and
PostingHist.Journal_ID = Posting.Journal_ID and
PostingHist.Layer_ID = Journal.Layer_ID and
PostingHist.GL_ID = PostingLine.GL_ID and
PostingHist.Currency_ID = PostingLine.Currency_ID and
PostingHist.Division_ID = PostingLine.Division_ID and
PostingHist.Project_ID = PostingLine.Project_ID and
PostingHist.CostCentre_ID = PostingLine.CostCentre_ID and
PostingHist.IntercoBusinessRelation_ID = PostingLine.IntercoBusinessRelation_ID and
PostingHist.PostingSafCombined_ID = ? and
PostingHist.PostingHistYearPeriodFrom < Posting.PostingYearPeriod
use-index IDsPeriod2From
exclusive-lock no-error.
if available PostingHist
then assign PostingHist.PostingHistYearPeriodTill = Posting.PostingYearPeriod - 1.
/* Get Till Date based on next PostingHist record */
find first PostingHist where
PostingHist.Company_ID = Posting.Company_ID and
PostingHist.Journal_ID = Posting.Journal_ID and
PostingHist.Layer_ID = Journal.Layer_ID and
PostingHist.GL_ID = PostingLine.GL_ID and
PostingHist.Currency_ID = PostingLine.Currency_ID and
PostingHist.Division_ID = PostingLine.Division_ID and
PostingHist.Project_ID = PostingLine.Project_ID and
PostingHist.CostCentre_ID = PostingLine.CostCentre_ID and
PostingHist.IntercoBusinessRelation_ID = PostingLine.IntercoBusinessRelation_ID and
PostingHist.PostingSafCombined_ID = 0 and
PostingHist.PostingHistYearPeriodFrom > Posting.PostingYearPeriod
use-index IDsPeriod2From
no-lock no-error.
if not available PostingHist
then find first PostingHist where
PostingHist.Company_ID = Posting.Company_ID and
PostingHist.Journal_ID = Posting.Journal_ID and
PostingHist.Layer_ID = Journal.Layer_ID and
PostingHist.GL_ID = PostingLine.GL_ID and
PostingHist.Currency_ID = PostingLine.Currency_ID and
PostingHist.Division_ID = PostingLine.Division_ID and
PostingHist.Project_ID = PostingLine.Project_ID and
PostingHist.CostCentre_ID = PostingLine.CostCentre_ID and
PostingHist.IntercoBusinessRelation_ID = PostingLine.IntercoBusinessRelation_ID and
PostingHist.PostingSafCombined_ID = ? and
PostingHist.PostingHistYearPeriodFrom > Posting.PostingYearPeriod
use-index IDsPeriod2From
no-lock no-error.
if available PostingHist
then assign viYearPeriodTill = PostingHist.PostingHistYearPeriodFrom - 1.
else assign viYearPeriodTill = 999999.
/* Create new PostingHist record */
create PostingHist.
assign PostingHist.PostingHist_ID = dynamic-function("GetNextValue":U in vhPersistence,"ObjectNumber":U)
PostingHist.Company_ID = Posting.Company_ID
PostingHist.Journal_ID = Posting.Journal_ID
PostingHist.Layer_ID = Journal.Layer_ID
PostingHist.GL_ID = PostingLine.GL_ID
PostingHist.Currency_ID = PostingLine.Currency_ID
PostingHist.Division_ID = PostingLine.Division_ID
PostingHist.Project_ID = PostingLine.Project_ID
PostingHist.CostCentre_ID = PostingLine.CostCentre_ID
PostingHist.IntercoBusinessRelation_ID = PostingLine.IntercoBusinessRelation_ID
PostingHist.PostingSafCombined_ID = 0
PostingHist.PostingHistYearPeriodFrom = Posting.PostingYearPeriod
PostingHist.PostingHistYearPeriodTill = viYearPeriodTill.
end. /* if not can-find(PostingHist where */
end. /* ROUNDBLOCK */
assign oiReturnStatus = viLocalReturnStatus.