Description
rebuild
Parameters
iiBudgetId | input | integer | Budget ID |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
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 */