project QadFinancials > class BPosting > method AdditionalUpdatesBQBudgetActualD
Description
AdditionalUpdatesBQBudgetActualD; sub-method of AdditionalUpdatesBQBudgetActual that works on the deleted instance-data
Parameters
biQBudgetLinkActualIDCounter | input-output | integer | QBudgetLinkActualIDCounter |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
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.