project QadFinancials > class BBudgetRebuild > method ApiRebuildBudgetPartTwo

Description

rebuild


Parameters


iiBudgetIdinputintegerBudget ID
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BBudgetRebuild.ApiRebuildBudget


program code (program9/bbudgetrebuild.p)

/* Check if the saf information should be treated */
<Q-15 assign vlFcQueryRecordsAvailable = PostingBySafID (NoCache)  (input 0, (Saf_ID)) in BPosting>
assign vlIsSafInformationUsed = (vlFcQueryRecordsAvailable <> false).
if vlIsSafInformationUsed
then do :
    <Q-30 run SafConceptPrim (all) (Read) (NoCache)
       (input ?, (SafConceptID)
        input ?, (SafConceptCode)
        output dataset tqSafConceptPrim) in BSafConcept>

     <Q-49 run SafStructurePrim (all) (Read) (NoCache)
        (input ?, (SafStructureID)
         input ?, (SafStructureCode)
         output dataset tqSafStructurePrim) in BSafStructure>    
end.

/* Retrieve start/end date based on budget periods to rebuild the budget */
<Q-19 run BudgetPeriodByBudgetIDDate (all) (Read) (NoCache)
   (input iiBudgetId, (BudgetID)
    input ?, (BudgetPeriodID)
    input ?, (EnclosedDate)
    output dataset tqBudgetPeriodByBudgetIDDate) in BBudget>
assign vtBudgetStartDate = ?
       vtBudgetEndDate   = ?.

/* Find the from date */
for each tqBudgetPeriodByBudgetIDDate by tqBudgetPeriodByBudgetIDDate.ttBudgetPeriodFromDate :
    assign vtBudgetStartDate = tqBudgetPeriodByBudgetIDDate.ttBudgetPeriodFromDate.
    leave.
end.

/* Find the till date */
for each tqBudgetPeriodByBudgetIDDate by tqBudgetPeriodByBudgetIDDate.ttBudgetPeriodTillDate descending :
    assign vtBudgetEndDate = tqBudgetPeriodByBudgetIDDate.ttBudgetPeriodTillDate.
    leave.
end.

/* Get all the companies the budget is linked to */
<Q-90 run BudgetCompanyByBudgetID (all) (Read) (NoCache)
   (input ?, (CompanyId)
    input iiBudgetId, (BudgetID)
    output dataset tqBudgetCompanyByBudgetID) in BBudget>

/* Get all the PostingLines of the budget companies */
empty temp-table tNewQBudgetLA.
assign viLastSafStructureID = 0
       vcSafStructureCode   = ''
       viCounterLinkActual  = 0.

for each tqBudgetCompanyByBudgetID where
         tqBudgetCompanyByBudgetID.tiBudget_ID = iiBudgetId
         :

    /* get the layertypecode */
    <Q-65 run JournalByJournalLayerType (all) (Read) (NoCache)
       (input ?, (JournalId)
        input ?, (JournalCode)
        input tqBudgetCompanyByBudgetID.tiCompany_ID, (CompanyId)
        input ?, (LayerTypeCode)
        output dataset tqJournalByJournalLayerType) in BJournal>

    <Q-26 run QryPostingLinesForBudgetRebuild (all) (Read) (NoCache)
       (input tqBudgetCompanyByBudgetID.tiCompany_ID, (CompanyId)
        input TRUE, (GLIsWithBudget)
        input vtBudgetStartDate, (PostingDateFrom)
        input vtBudgetEndDate, (PostingDateTo)
        output dataset tqQryPostingLinesForBudgetRebuil) in BPostingQuery>

    for each tqQryPostingLinesForBudgetRebuil where 
             tqQryPostingLinesForBudgetRebuil.tdPostingLineDebitTC  <> 0 or 
             tqQryPostingLinesForBudgetRebuil.tdPostingLineCreditTC <> 0
             break by tqQryPostingLinesForBudgetRebuil.tiPostingYearPeriod :

        if vlIsSafInformationUsed and first-of (tqQryPostingLinesForBudgetRebuil.tiPostingYearPeriod)
        then do :    
             /* Get the SAF Trx information for this YearPeriod */
             <Q-84 run QryPostingSAFsByYearPeriod (all) (Read) (NoCache)
                (input tqQryPostingLinesForBudgetRebuil.tiCompany_ID, (CompanyId)
                 input tqQryPostingLinesForBudgetRebuil.tiPostingYearPeriod, (PostingYearPeriod)
                 input TRUE, (GLIsWithBudget)
                 output dataset tqQryPostingSAFsByYearPeriod) in BPostingQuery>
        end.

        create tNewQBudgetLA.
        assign viCounterLinkActual                   = viCounterLinkActual + 1
               tNewQBudgetLA.tc_Rowid                = string(viCounterLinkActual)
               tNewQBudgetLA.Budget_ID               = iiBudgetID
               tNewQBudgetLA.Company_ID              = tqQryPostingLinesForBudgetRebuil.tiCompany_ID
               tNewQBudgetLA.Journal_ID              = tqQryPostingLinesForBudgetRebuil.tiJournal_ID
               tNewQBudgetLA.BudgetLinkActualDate    = tqQryPostingLinesForBudgetRebuil.ttPostingDate
               tNewQBudgetLA.PostingLine_ID          = tqQryPostingLinesForBudgetRebuil.tiPostingLine_ID
               tNewQBudgetLA.BudgetLinkActualTC      = tqQryPostingLinesForBudgetRebuil.tdPostingLineDebitTC
                                                     - tqQryPostingLinesForBudgetRebuil.tdPostingLineCreditTC
               tNewQBudgetLA.Currency_ID             = tqQryPostingLinesForBudgetRebuil.tiCurrency_ID
               tNewQBudgetLA.BudgetLinkActualInfo    = tqBudgetCompanyByBudgetID.tcCompanyCode + "/"
                                                     + string(tqQryPostingLinesForBudgetRebuil.tiPostingYear,'9999':U) + '/':U
                                                     + string(tqQryPostingLinesForBudgetRebuil.tiPostingPeriod,'99':U) + '/':U
                                                     + tqQryPostingLinesForBudgetRebuil.tcJournalCode                 + '/':U
                                                     + string(tqQryPostingLinesForBudgetRebuil.tiPostingVoucher,'999999999':U)
               tNewQBudgetLA.BudgetLinkActualDivCode = tqQryPostingLinesForBudgetRebuil.tcDivisionCode
               tNewQBudgetLA.BudgetLinkActualGLCode  = tqQryPostingLinesForBudgetRebuil.tcGLCode
               tNewQBudgetLA.BudgetLinkActualPrjCode = tqQryPostingLinesForBudgetRebuil.tcProjectCode
               tNewQBudgetLA.BudgetLinkActualCCCode  = tqQryPostingLinesForBudgetRebuil.tcCostCentreCode.
        
        find first tqJournalByJournalLayerType where
                   tqJournalByJournalLayerType.tiJournal_ID = tqQryPostingLinesForBudgetRebuil.tiJournal_ID
                   no-error.        
        if not available tqJournalByJournalLayerType
        then do :
            assign vhFcComponent  = ?
                   oiReturnStatus = -25.
            <M-13 run CreateCorruption
               (input  'Journal':u (icTableName), 
                input  tqQryPostingLinesForBudgetRebuil.tiJournal_ID (icKey), 
                input  '':U (icDescription), 
                input  ? (ilSkipMessage), 
                output viFcReturnSuper (oiReturnStatus)) in BCorrLog>
            Leave.
        end.
        assign tNewQBudgetLA.LayerTypeCode   = tqJournalByJournalLayerType.tcLayerTypeCode
               tNewQBudgetLA.Layer_ID        = tqJournalByJournalLayerType.tiLayer_ID
               tNewQBudgetLA.JournalTypeCode = tqJournalByJournalLayerType.tcJournalTypeCode.
           
        /* when PostingLineQTY is filled get the unitID*/
        if tqQryPostingLinesForBudgetRebuil.tdPostingLineQTY <> 0 and
           tqQryPostingLinesForBudgetRebuil.tdPostingLineQTY <> ?
        then assign tNewQBudgetLA.Unit_ID             = tqQryPostingLinesForBudgetRebuil.tiUnit_ID
                    tNewQBudgetLA.BudgetLinkActualQTY = tqQryPostingLinesForBudgetRebuil.tdPostingLineQTY.
                
        if vlIsSafInformationUsed
        then do:
            /* treat the safinformation if possible */
            for each tqQryPostingSAFsByYearPeriod where
                     tqQryPostingSAFsByYearPeriod.tiPostingLine_ID = tqQryPostingLinesForBudgetRebuil.tiPostingLine_ID:

                case tqQryPostingSAFsByYearPeriod.tcPostingSafParentType : 
                    
                    when {&POSTINGSAFPARENTTYPE-COSTCENTRE}
                    then find tNewQBudgetLA where 
                              tNewQBudgetLA.PostingLine_ID          = tqQryPostingSAFsByYearPeriod.tiPostingLine_ID and 
                              tNewQBudgetLA.BudgetLinkActualCCCode <> "":U no-error.
                    when {&POSTINGSAFPARENTTYPE-PROJECT}
                    then find tNewQBudgetLA where 
                              tNewQBudgetLA.PostingLine_ID           = tqQryPostingSAFsByYearPeriod.tiPostingLine_ID and 
                              tNewQBudgetLA.BudgetLinkActualPrjCode <> "":U no-error.
                    when {&POSTINGSAFPARENTTYPE-GL}
                    then find tNewQBudgetLA where 
                              tNewQBudgetLA.PostingLine_ID          = tqQryPostingSAFsByYearPeriod.tiPostingLine_ID and 
                              tNewQBudgetLA.BudgetLinkActualCCCode  = "":U and 
                              tNewQBudgetLA.BudgetLinkActualPrjCode = "":U no-error.
                end case.
                
                if not available tNewQBudgetLA
                then leave.

                /* Assign SafStructure */
                if viLastSafStructureID <> tqQryPostingSAFsByYearPeriod.tiSafStructure_ID
                then do :
                    find tqSafStructurePrim where
                         tqSafStructurePrim.tiSafStructure_ID = tqQryPostingSAFsByYearPeriod.tiSafStructure_ID
                         no-error.
                    assign vcSafStructureCode = (if available tqSafStructurePrim
                                                 then tqSafStructurePrim.tcSafStructureCode
                                                 else '').
                end.

                assign tNewQBudgetLA.BudgetLinkActualSafStruct = vcSafStructureCode.

                /* Assign Saf and SAFConcept */
                find tqSafConceptPrim where
                     tqSafConceptPrim.tiSafConcept_ID = tqQryPostingSAFsByYearPeriod.tiSafConcept_ID
                     no-error.
                assign vcSafConceptCode = (if available tqSafConceptPrim
                                           then tqSafConceptPrim.tcSafConceptCode
                                           else '').

                if tqQryPostingSAFsByYearPeriod.tiPostingSafInputSequence = 1
                then assign tNewQBudgetLA.BudgetLinkActualSaf1Concpt = vcSafConceptCode
                            tNewQBudgetLA.BudgetLinkActualSaf1Code   = tqQryPostingSAFsByYearPeriod.tcSafCode.
                else 
                if tqQryPostingSAFsByYearPeriod.tiPostingSafInputSequence = 2
                then assign tNewQBudgetLA.BudgetLinkActualSaf2Concpt = vcSafConceptCode
                            tNewQBudgetLA.BudgetLinkActualSaf2Code   = tqQryPostingSAFsByYearPeriod.tcSafCode.
                else 
                if tqQryPostingSAFsByYearPeriod.tiPostingSafInputSequence = 3
                then assign tNewQBudgetLA.BudgetLinkActualSaf3Concpt = vcSafConceptCode
                            tNewQBudgetLA.BudgetLinkActualSaf3Code   = tqQryPostingSAFsByYearPeriod.tcSafCode.
                else 
                if tqQryPostingSAFsByYearPeriod.tiPostingSafInputSequence = 4
                then assign tNewQBudgetLA.BudgetLinkActualSaf4Concpt = vcSafConceptCode
                            tNewQBudgetLA.BudgetLinkActualSaf4Code   = tqQryPostingSAFsByYearPeriod.tcSafCode.
                else 
                if tqQryPostingSAFsByYearPeriod.tiPostingSafInputSequence = 5
                then assign tNewQBudgetLA.BudgetLinkActualSaf5Concpt = vcSafConceptCode
                            tNewQBudgetLA.BudgetLinkActualSaf5Code   = tqQryPostingSAFsByYearPeriod.tcSafCode.

            end. /* for each tPostingSaf of tPostingLine */
        end. /* if vlIsSafInformationUsed */
    end. /* fe tqQryPostingLinesForBudgetRebuil */
end. /* for each tqBudgetCompanyByBudgetID */