project QadFinancials > class BFixedAssetRevaluation > method AdditionalUpdatesPosting

Description

Creates postings


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BFixedAssetRevaluation.AdditionalUpdates


program code (program1/bfixedassetrevaluation.p)

/* start and/or open the BJournalEntry instance    */
if viBJournalEntryRevalID = 0 or viBJournalEntryRevalID = ?
then do:
    <I-1 {bFcStartAndOpenInstance
            &ADD-TO-TRANSACTION = "true"
            &CLASS              = "BJournalEntry"}>
    assign vlBJEIsStartedFromReval = true.
end.
else do:
    <I-2 {bFcOpenInstance
            &CLASS           = "BJournalEntry"}>
end.

/* Create JournalEntry for each tFAReval record.*/
for each tFAReval where
         tFAReval.tc_Status = 'N':U
    /*grouped by Asset code so we can easily create additional postings for an official book*/
    group by tFAReval.tiFAAsset_ID:
    /* Add Posting Header */
    assign vcPostingText = (if tFAReval.tlFABookTypeIsOfficial 
                           then trim(#T-21'Off Reval':20(14360)T-21#)
                           else trim(#T-28'Unoff Reval':20(14361)T-28#)) + " ":U +
                           trim(tFAReval.tcFAAssetCode) + " ":U +
                           trim(tFAReval.tcFAAssetBookCode).
    
    <M-7 run AddPostingHeader
       (input  ? (iiCompanyId), 
        input  viFARevalAccPeriodYear (iiPeriodYear), 
        input  viFARevalAccPeriodPeriod (iiPeriodPeriod), 
        input  tFAReval.tcRevaluationJournalCode (icJournalCode), 
        input  '' (icReportingJournalCode), 
        input  0 (iiVoucher), 
        input  vtFARevalPostingDate (itPostingDate), 
        input  ? (itValueDate), 
        input  vcPostingText (icPostingText), 
        input  '':U (icPostingBusinessRelationText), 
        input  '':U (icPostingInvoiceReferenceText), 
        input  '':U (icPostingParentText), 
        input  0 (iiBPeriodId), 
        input  ? (icPostingOriginAddressCode), 
        input  ? (icPostingOriginDocument), 
        input  ? (icPostingOriginDocumentType), 
        input  '':U (icBatchNumber), 
        input  ? (icBankImpLineRef), 
        output viPostingID (oiPostingId), 
        output vcRowid (ocRowid), 
        output viPostingVoucher (oiPostingVoucher), 
        output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>

    if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus >= 0)
    then assign oiReturnStatus = viFcReturnSuper.
    
    /*do not continue with this posting if there were errors*/
    if viFcReturnSuper < 0
    then next.
    
    /*create tFARevalPosting*/
    <M-22 run AddDetailLine (input  'FARevalPosting':U (icTable), 
                     input  tFAReval.tc_Rowid (icParentRowid), 
                     output viFcReturnSuper (oiReturnStatus)) in BFixedAssetRevaluation>
    
    if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus >= 0)
    then assign oiReturnStatus = viFcReturnSuper.
    
    if available tFARevalPosting
    then assign tFARevalPosting.FARevalPostingType = if tFAReval.tlFABookTypeIsOfficial 
                                                     then {&FAPOSTINGTYPE-OFFICIAL}
                                                     else {&FAPOSTINGTYPE-UNOFFICIAL}
                tFARevalPosting.Posting_ID      = viPostingId
                tFARevalPosting.tiPeriodYear    = viFARevalAccPeriodYear
                tFARevalPosting.tiPeriodPeriod  = viFARevalAccPeriodPeriod
                tFARevalPosting.tcJournalCode   = tFAReval.tcRevaluationJournalCode
                tFARevalPosting.tiPostingVoucher= viPostingVoucher.
                  
    /* Add PostingLines for each tFARevalDet */    
    for each tFARevalDet where
             tFARevalDet.tc_ParentRowid = tFAReval.tc_Rowid and
             tFARevalDet.tc_Status      = 'N':U:
                     
        if tFARevalDet.FARevalDetAmountLC > 0 
        then assign vdDebitLC  = tFARevalDet.FARevalDetAmountLC
                    vdCreditLC = 0.
        else assign vdDebitLC  = 0
                    vdCreditLC = tFARevalDet.FARevalDetAmountLC * -1.

        empty temp-table tRevalPostingSafs.
        
        assign vcSafStructureCode = '':U.
        for each tFARevalDetSaf where
                 tFARevalDetSaf.tc_ParentRowid = tFARevalDet.tc_Rowid and
                 tFARevalDetSaf.tc_Status      = 'N':U:
            
            if vcSafStructureCode = '':U
            then assign vcSafStructureCode = tFARevalDetSaf.tcSafStructureCode.

            create tRevalPostingSafs.
            assign tRevalPostingSafs.tcSafConceptCode = tFARevalDetSaf.tcSafConceptCode
                   tRevalPostingSafs.tcSafCode        = tFARevalDetSaf.tcSafCode.
        end.

        <M-8 run AddStandardPosting (input  vcRowID (icPostingtcRowid), 
                             input  tFARevalDet.tcGLCode (icGLCode), 
                             input  tFARevalDet.tcDivisionCode (icDivisionCode), 
                             input  tFARevalDet.tcCostCentreCode (icCostCentreCode), 
                             input  '':U (icCostCentreText), 
                             input  tFARevalDet.tcProjectCode (icProjectCode), 
                             input  '':U (icProjectText), 
                             input  '':U (icIntercoBusinessRelationCode), 
                             input  vcCompanyLC (icCurrencyCode), 
                             input  vdDebitLC (idDebitTC), 
                             input  vdDebitLC (idDebitLC), 
                             input  ? (idDebitCC), 
                             input  ? (idDebitPC), 
                             input  vdCreditLC (idCreditTC), 
                             input  vdCreditLC (idCreditLC), 
                             input  ? (idCreditCC), 
                             input  ? (idCreditPC), 
                             input  0 (idQty), 
                             input  '':U (icLineText), 
                             input  '':U (icSafText), 
                             input  tRevalPostingSafs (tDefaultSafs), 
                             input  {&EXCHANGERATETYPE-ACCOUNTING} (icExchangeRateType), 
                             input  1 (idExchangeRate), 
                             input  1 (idExchangeRateScale), 
                             output viPostingLineID (oiPostingLineId), 
                             input  ? (iiSafStructureId), 
                             input  vcSafStructureCode (icSafStructureCode), 
                             input  ? (icAllocationKey), 
                             output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
        if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus >= 0)
        then assign oiReturnStatus = viFcReturnSuper.
    end.
    /*ONLY FOR OFFICIAL BOOKS*/
    if not tFAReval.tlFABookTypeIsOfficial 
    then next.
    /*get all non-official books of the asset*/
    if first-of (tFAReval.tiFAAsset_ID)
    then do:
        empty temp-table tqFAAssetBookByFARevalAddPost.
        <Q-27 run FAAssetBookByFARevalAddPost (all) (Read) (NoCache)
          (input viCompanyId, (CompanyId)
           input tFAReval.tiFAAsset_ID, (FAAssetId)
           input false, (FABookTypeIsOfficial)
           output dataset tqFAAssetBookByFARevalAddPost) in BFixedAssetAsset >
        
    end.
    /*additional postings into those non-official books retrieved above*/
    for each tqFAAssetBookByFARevalAddPost: 
        /* Add Posting Header */
        assign vcPostingText = trim(#T-26'Reverse Reval':20(14362)T-26#) + " ":U +
                               trim(tFAReval.tcFAAssetCode) + " ":U +
                               trim(tFAReval.tcFAAssetBookCode).
        
        <M-23 run AddPostingHeader
           (input  ? (iiCompanyId), 
            input  viFARevalAccPeriodYear (iiPeriodYear), 
            input  viFARevalAccPeriodPeriod (iiPeriodPeriod), 
            input  tqFAAssetBookByFARevalAddPost.tcRevaluationJournalCode (icJournalCode), 
            input  '' (icReportingJournalCode), 
            input  0 (iiVoucher), 
            input  vtFARevalPostingDate (itPostingDate), 
            input  ? (itValueDate), 
            input  vcPostingText (icPostingText), 
            input  '':U (icPostingBusinessRelationText), 
            input  '':U (icPostingInvoiceReferenceText), 
            input  '':U (icPostingParentText), 
            input  0 (iiBPeriodId), 
            input  ? (icPostingOriginAddressCode), 
            input  ? (icPostingOriginDocument), 
            input  ? (icPostingOriginDocumentType), 
            input  '':U (icBatchNumber), 
            input  ? (icBankImpLineRef), 
            output viPostingID (oiPostingId), 
            output vcRowid (ocRowid), 
            output viPostingVoucher (oiPostingVoucher), 
            output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    
        if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus >= 0)
        then assign oiReturnStatus = viFcReturnSuper.
        
        /*do not continue with this posting if there were errors*/
        if viFcReturnSuper < 0
        then next.
        
        /*create tFARevalPosting*/
        <M-24 run AddDetailLine (input  'FARevalPosting':U (icTable), 
                         input  tFAReval.tc_Rowid (icParentRowid), 
                         output viFcReturnSuper (oiReturnStatus)) in BFixedAssetRevaluation>
        
        if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus >= 0)
        then assign oiReturnStatus = viFcReturnSuper.
        
        if available tFARevalPosting
        then assign tFARevalPosting.FARevalPostingType = {&FAPOSTINGTYPE-REVERSE}
                    tFARevalPosting.Posting_ID      = viPostingId
                    tFARevalPosting.tiPeriodYear    = viFARevalAccPeriodYear
                    tFARevalPosting.tiPeriodPeriod  = viFARevalAccPeriodPeriod
                    tFARevalPosting.tcJournalCode   = tqFAAssetBookByFARevalAddPost.tcRevaluationJournalCode
                    tFARevalPosting.tiPostingVoucher= viPostingVoucher.
                      
        /* Add PostingLines for each tFARevalDet */    
        for each tFARevalDet where
                 tFARevalDet.tc_ParentRowid = tFAReval.tc_Rowid and
                 tFARevalDet.tc_Status      = 'N':U:
            /*REVERSE POSTING, so amount > 0 is posted on Credit*/             
            if tFARevalDet.FARevalDetAmountLC > 0 
            then assign vdCreditLC  = tFARevalDet.FARevalDetAmountLC
                        vdDebitLC = 0.
            else assign vdCreditLC  = 0
                        vdDebitLC = tFARevalDet.FARevalDetAmountLC * -1.
    
            empty temp-table tRevalPostingSafs.
            
            assign vcSafStructureCode = '':U.
            for each tFARevalDetSaf where
                     tFARevalDetSaf.tc_ParentRowid = tFARevalDet.tc_Rowid and
                     tFARevalDetSaf.tc_Status      = 'N':U:
                
                if vcSafStructureCode = '':U
                then assign vcSafStructureCode = tFARevalDetSaf.tcSafStructureCode.
    
                create tRevalPostingSafs.
                assign tRevalPostingSafs.tcSafConceptCode = tFARevalDetSaf.tcSafConceptCode
                       tRevalPostingSafs.tcSafCode        = tFARevalDetSaf.tcSafCode.
            end.
    
            <M-25 run AddStandardPosting (input  vcRowID (icPostingtcRowid), 
                              input  tFARevalDet.tcGLCode (icGLCode), 
                              input  tFARevalDet.tcDivisionCode (icDivisionCode), 
                              input  tFARevalDet.tcCostCentreCode (icCostCentreCode), 
                              input  '':U (icCostCentreText), 
                              input  tFARevalDet.tcProjectCode (icProjectCode), 
                              input  '':U (icProjectText), 
                              input  '':U (icIntercoBusinessRelationCode), 
                              input  vcCompanyLC (icCurrencyCode), 
                              input  vdDebitLC (idDebitTC), 
                              input  vdDebitLC (idDebitLC), 
                              input  ? (idDebitCC), 
                              input  ? (idDebitPC), 
                              input  vdCreditLC (idCreditTC), 
                              input  vdCreditLC (idCreditLC), 
                              input  ? (idCreditCC), 
                              input  ? (idCreditPC), 
                              input  0 (idQty), 
                              input  '':U (icLineText), 
                              input  '':U (icSafText), 
                              input  tRevalPostingSafs (tDefaultSafs), 
                              input  {&EXCHANGERATETYPE-ACCOUNTING} (icExchangeRateType), 
                              input  1 (idExchangeRate), 
                              input  1 (idExchangeRateScale), 
                              output viPostingLineID (oiPostingLineId), 
                              input  ? (iiSafStructureId), 
                              input  vcSafStructureCode (icSafStructureCode), 
                              input  ? (icAllocationKey), 
                              output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
            if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus >= 0)
            then assign oiReturnStatus = viFcReturnSuper.
        end.
        
    end.
end.

/* Validate Component and Additional updates */
if vlBJEIsStartedFromReval = true
then do:
    <M-13 run ValidateBCAndAdditionalUpdates (output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
    if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
    then assign oiReturnStatus = viFcReturnSuper.
end.
/* close the BJournalEntry instance    */
<I-10 {bFcCloseInstance
            &CLASS           = "BJournalEntry"}>