project QadFinancials > class TSetStatutoryCurrency > method SetStatutoryCurrencyBasedOnTCRound

Description

Add History Record for Rounding postinglines when needed.


Parameters


ocErrorMessageoutputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method TSetStatutoryCurrency.PostingCCBalance
method TSetStatutoryCurrency.SetStatutoryCurrencyBasedOnTCAPM


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.