project QadFinancials > class BPosting > method AdditionalUpdatesBQBudgetActualD

Description

AdditionalUpdatesBQBudgetActualD; sub-method of AdditionalUpdatesBQBudgetActual that works on the deleted 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 t_iPostingLine.PostingLineCreditTC = 0 and 
   t_iPostingLine.PostingLineDebitTC  = 0 and
   t_iPostingLine.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              = t_iPosting.Company_ID
       tNewQBudgetLinkAct.Journal_ID              = t_iPosting.Journal_ID
       tNewQBudgetLinkAct.BudgetLinkActualDate    = t_iPosting.PostingDate
       tNewQBudgetLinkAct.Layer_ID                = t_iPosting.tiLayer_ID
       tNewQBudgetLinkAct.LayerTypeCode           = t_iPosting.tcLayerTypeCode
       tNewQBudgetLinkAct.JournalTypeCode         = t_iPosting.tcJournalTypeCode
       tNewQBudgetLinkAct.PostingLine_ID          = t_iPostingLine.PostingLine_ID
       tNewQBudgetLinkAct.BudgetLinkActualTC      = t_iPostingLine.PostingLineCreditTC - t_iPostingLine.PostingLineDebitTC
       tNewQBudgetLinkAct.Currency_ID             = t_iPostingLine.Currency_ID
       tNewQBudgetLinkAct.BudgetLinkActualInfo    = string(t_iPosting.PostingYear, "9999":U) + "/":U +
                                                    string(t_iPosting.PostingPeriod, "99":U) + "/":U +
                                                    t_iPosting.tcJournalCode                 + "/":U +
                                                    string(t_iPosting.PostingVoucher, "999999999":U)
       tNewQBudgetLinkAct.BudgetLinkActualDivCode = t_iPostingLine.tcDivisionCode
       tNewQBudgetLinkAct.BudgetLinkActualGLCode  = t_iPostingLine.tcGLCode      + chr(2) +
                                                    string(t_iPostingLine.GL_ID) + chr(2) +
                                                    string(true)
       tNewQBudgetLinkAct.BudgetLinkActualPrjCode = if t_iPostingLine.Project_ID = 0 or
                                                       t_iPostingLine.Project_ID = ?
                                                    then "":U
                                                    else t_iPostingLine.tcProjectCode + chr(2) +
                                                         string(t_iPostingLine.Project_ID)
       tNewQBudgetLinkAct.BudgetLinkActualCCCode  = if t_iPostingLine.CostCentre_ID = 0 or
                                                       t_iPostingLine.CostCentre_ID = ?
                                                    then "":U
                                                    else t_iPostingLine.tcCostCentreCode + chr(2) +
                                                         string(t_iPostingLine.CostCentre_ID).

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

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

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

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

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

/* Duplicate the line in case Prj and CC are filled, the original will keep the CC, the other the Prj */
if tNewQBudgetLinkAct.BudgetLinkActualPrjCode <> "":U and
   tNewQBudgetLinkAct.BudgetLinkActualCCCode  <> "":U
then do:
    create btNewQBudgetLinkAct.

    buffer-copy tNewQBudgetLinkAct
         except tNewQBudgetLinkAct.tc_Rowid
             to btNewQBudgetLinkAct.

    assign biQBudgetLinkActualIDCounter               = biQBudgetLinkActualIDCounter + 1
           btNewQBudgetLinkAct.tc_Rowid               = string(biQBudgetLinkActualIDCounter)
           btNewQBudgetLinkAct.BudgetLinkActualCCCode = "":U
           tNewQBudgetLinkAct.BudgetLinkActualPrjCode = "":U.
end.

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

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

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

    if not available tNewQBudgetLinkAct
    then leave.

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

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

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

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

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

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