project QadFinancials > class BPosting > method AdditionalUpdatesBQBudgetActualN

Description

AdditionalUpdatesBQBudgetActualN; sub-method of AdditionalUpdatesBQBudgetActual that works on the new instance-data


Parameters


biQBudgetLinkActualIDCounterinput-outputintegerQBudgetLinkActualIDCounter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BPosting.AdditionalUpdatesBQBudgetActual
method BPosting.AdditionalUpdatesBQBudgetActualC


program code (program5/bposting.p)

/* Return in case we have no TC-amount */
if tPostingLine.PostingLineCreditTC = 0 and 
   tPostingLine.PostingLineDebitTC  = 0 and
   tPostingLine.PostingLineQTY      = 0
then Return.

/* State the Line-info */
/* We save the IDs of GL, Project and CostCentre together with the code, they will be removed later on */
create tNewQBudgetLinkAct.

assign biQBudgetLinkActualIDCounter               = biQBudgetLinkActualIDCounter + 1
       tNewQBudgetLinkAct.tc_Rowid                = string(biQBudgetLinkActualIDCounter)
       tNewQBudgetLinkAct.Company_ID              = tPosting.Company_ID
       tNewQBudgetLinkAct.Journal_ID              = tPosting.Journal_ID
       tNewQBudgetLinkAct.BudgetLinkActualDate    = tPosting.PostingDate
       tNewQBudgetLinkAct.Layer_ID                = tPosting.tiLayer_ID
       tNewQBudgetLinkAct.LayerTypeCode           = tPosting.tcLayerTypeCode
       tNewQBudgetLinkAct.JournalTypeCode         = tPosting.tcJournalTypeCode
       tNewQBudgetLinkAct.PostingLine_ID          = tPostingLine.PostingLine_ID
       tNewQBudgetLinkAct.BudgetLinkActualTC      = tPostingLine.PostingLineDebitTC - tPostingLine.PostingLineCreditTC
       tNewQBudgetLinkAct.Currency_ID             = tPostingLine.Currency_ID
       tNewQBudgetLinkAct.BudgetLinkActualInfo    = string(tPosting.PostingYear, "9999":U) + "/":U +
                                                    string(tPosting.PostingPeriod, "99":U) + "/":U +
                                                    tPosting.tcJournalCode                 + "/":U +
                                                    string(tPosting.PostingVoucher, "999999999":U)
       tNewQBudgetLinkAct.BudgetLinkActualDivCode = tPostingLine.tcDivisionCode
       tNewQBudgetLinkAct.BudgetLinkActualGLCode  = tPostingLine.tcGLCode      + chr(2) +
                                                    string(tPostingLine.GL_ID) + chr(2) +
                                                    string(true)
       tNewQBudgetLinkAct.BudgetLinkActualPrjCode = if tPostingLine.Project_ID = 0 or
                                                       tPostingLine.Project_ID = ?
                                                    then "":U
                                                    else tPostingLine.tcProjectCode + chr(2) +
                                                         string(tPostingLine.Project_ID)
       tNewQBudgetLinkAct.BudgetLinkActualCCCode  = if tPostingLine.CostCentre_ID = 0 or
                                                       tPostingLine.CostCentre_ID = ?
                                                    then "":U
                                                    else tPostingLine.tcCostCentreCode + chr(2) +
                                                         string(tPostingLine.CostCentre_ID).

if tPostingLine.PostingLineQTY <> 0 and
   tPostingLine.PostingLineQTY <> ?
then do:
    assign tNewQBudgetLinkAct.BudgetLinkActualQTY = tPostingLine.PostingLineQTY.

    if tPostingLine.tcUnitCode = "":U or
       tPostingLine.tcUnitCode = ?
    then assign tNewQBudgetLinkAct.Unit_ID = 0.
    else do:

        <Q-2 run UnitPrim (all) (Read) (Cache)
          (input ?, (UnitID)
           input tPostingLine.tcUnitCode, (UnitCode)
           output dataset tqUnitPrim) in BUnit >

        find first tqUnitPrim where
                   tqUnitPrim.tcUnitCode = tPostingLine.tcUnitCode
                   no-error.

        assign tNewQBudgetLinkAct.Unit_ID = if available tqUnitPrim
                                            then tqUnitPrim.tiUnit_ID
                                            else 0.
    end.
end.

/* State the SAF-info */
for each tPostingSaf where
         tPostingSaf.tc_ParentRowid = tPostingLine.tc_Rowid
         by tPostingSaf.PostingSafParentType
         by tPostingSaf.PostingSafInputSequence:
    case tPostingSaf.PostingSafParentType:
        when {&POSTINGSAFPARENTTYPE-COSTCENTRE}
        then find tNewQBudgetLinkAct where
                  tNewQBudgetLinkAct.PostingLine_ID          = tPostingSaf.PostingLine_ID and
                  tNewQBudgetLinkAct.BudgetLinkActualCCCode <> "":U
                  no-error.

        when {&POSTINGSAFPARENTTYPE-PROJECT}
        then find tNewQBudgetLinkAct where
                  tNewQBudgetLinkAct.PostingLine_ID           = tPostingSaf.PostingLine_ID and
                  tNewQBudgetLinkAct.BudgetLinkActualPrjCode <> "":U
                  no-error.

        when {&POSTINGSAFPARENTTYPE-GL}
        then find tNewQBudgetLinkAct where
                  tNewQBudgetLinkAct.PostingLine_ID          = tPostingSaf.PostingLine_ID and
                  tNewQBudgetLinkAct.BudgetLinkActualCCCode  = "":U                       and
                  tNewQBudgetLinkAct.BudgetLinkActualPrjCode = "":U
                  no-error.
    end case.

    if not available tNewQBudgetLinkAct
    then leave.

    assign tNewQBudgetLinkAct.BudgetLinkActualSafStruct = tPostingSaf.tcSafStructureCode + chr(2) +
                                                          string(tPostingSaf.SafStructure_ID).

    case tPostingSaf.PostingSafInputSequence:
        when 1
        then assign tNewQBudgetLinkAct.BudgetLinkActualSaf1Code   = tPostingSaf.tcSafCode
                    tNewQBudgetLinkAct.BudgetLinkActualSaf1Concpt = tPostingSaf.tcSafConceptCode.

        when 2
        then assign tNewQBudgetLinkAct.BudgetLinkActualSaf2Code   = tPostingSaf.tcSafCode
                    tNewQBudgetLinkAct.BudgetLinkActualSaf2Concpt = tPostingSaf.tcSafConceptCode.

        when 3
        then assign tNewQBudgetLinkAct.BudgetLinkActualSaf3Code   = tPostingSaf.tcSafCode
                    tNewQBudgetLinkAct.BudgetLinkActualSaf3Concpt = tPostingSaf.tcSafConceptCode.

        when 4
        then assign tNewQBudgetLinkAct.BudgetLinkActualSaf4Code   = tPostingSaf.tcSafCode
                    tNewQBudgetLinkAct.BudgetLinkActualSaf4Concpt = tPostingSaf.tcSafConceptCode.

        when 5
        then assign tNewQBudgetLinkAct.BudgetLinkActualSaf5Code   = tPostingSaf.tcSafCode
                    tNewQBudgetLinkAct.BudgetLinkActualSaf5Concpt = tPostingSaf.tcSafConceptCode.
    end.
end.