Description
AdditonalUpdatesDeleteSub; Submethod of AdditionalUpdatesDelete because it could not haold all the data
Parameters
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program6/bqbudgetactual.p)
assign viBudgetLinkAcc = 1
viBudgetLinkAccDet = 1.
<Q-18 run CurrencyByCode (all) (Read) (NoCache)
(input ?, (CurrencyCode)
output dataset tqCurrencyByCode) in BCurrency >
<Q-24 run PostingLineByLineID (Start) in BPosting >
<Q-28 run BudgetFDSByBudgetIDPropAlloc (Start) in BBudget >
/* ================================================================================= */
/* Go through all tBudgetCheckInfoWBSQBA-record (returned by the resolving) */
/* Note that the currency of the Q-record amy differ from the Budget-currency */
/* A by on Jrnls is added to improve the performance on db-reads using queries */
/* ================================================================================= */
for each tQBudgetLinkActual where
tQBudgetLinkActual.tc_Status = "D":U ,
each tBudgetCheckInfoQBA where
tBudgetCheckInfoQBA.tcParentTcRowid = string(rowid(tQBudgetLinkActual)) ,
each tBudgetCheckInfoWBSQBA where
tBudgetCheckInfoWBSQBA.tiBudgetCheckInfoID = tBudgetCheckInfoQBA.tiBudgetCheckInfoID
break by tQBudgetLinkActual.Journal_ID :
/* ======================================= */
/* State the QTY and TC (Sales of Cost) */
/* ======================================= */
/* ======================================= */
/* Create the new BudgetLinkActual-records */
/* ======================================= */
create tNewBudgetLinkActualFromBQ.
assign tNewBudgetLinkActualFromBQ.Budget_ID = tBudgetCheckInfoWBSQBA.tiBudgetID
tNewBudgetLinkActualFromBQ.BudgetPeriod_ID = tBudgetCheckInfoWBSQBA.tiBudgetPeriodID
tNewBudgetLinkActualFromBQ.BudgetWBS_ID = tBudgetCheckInfoWBSQBA.tiBudgetWBSID
tNewBudgetLinkActualFromBQ.PostingLine_ID = tQBudgetLinkActual.PostingLine_ID
tNewBudgetLinkActualFromBQ.Company_ID = tQBudgetLinkActual.Company_ID
tNewBudgetLinkActualFromBQ.Journal_ID = tQBudgetLinkActual.Journal_ID
tNewBudgetLinkActualFromBQ.Layer_ID = tQBudgetLinkActual.Layer_ID
tNewBudgetLinkActualFromBQ.LayerTypeCode = tQBudgetLinkActual.LayerTypeCode
tNewBudgetLinkActualFromBQ.BudgetLinkActualDate = tQBudgetLinkActual.BudgetLinkActualDate
tNewBudgetLinkActualFromBQ.BudgetLinkActualInfo = tQBudgetLinkActual.BudgetLinkActualInfo
tNewBudgetLinkActualFromBQ.BudgetLinkActualDivCode = tQBudgetLinkActual.BudgetLinkActualDivCode
tNewBudgetLinkActualFromBQ.BudgetLinkActualGLCode = tQBudgetLinkActual.BudgetLinkActualGLCode
tNewBudgetLinkActualFromBQ.BudgetLinkActualPrjCode = tQBudgetLinkActual.BudgetLinkActualPrjCode
tNewBudgetLinkActualFromBQ.BudgetLinkActualCCCode = tQBudgetLinkActual.BudgetLinkActualCCCode
tNewBudgetLinkActualFromBQ.BudgetLinkActualSafStruct = tQBudgetLinkActual.BudgetLinkActualSafStruct
tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf1Code = tQBudgetLinkActual.budgetlinkactualSaf1Code
tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf2Code = tQBudgetLinkActual.budgetlinkactualSaf2Code
tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf3Code = tQBudgetLinkActual.budgetlinkactualSaf3Code
tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf4Code = tQBudgetLinkActual.BudgetLinkActualSaf4Code
tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf5Code = tQBudgetLinkActual.budgetlinkactualSaf5Code
tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf1Concpt = tQBudgetLinkActual.BudgetLinkActualSaf1Concpt
tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf2Concpt = tQBudgetLinkActual.BudgetLinkActualSaf2Concpt
tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf3Concpt = tQBudgetLinkActual.BudgetLinkActualSaf3Concpt
tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf4Concpt = tQBudgetLinkActual.BudgetLinkActualSaf4Concpt
tNewBudgetLinkActualFromBQ.BudgetLinkActualSaf5Concpt = tQBudgetLinkActual.BudgetLinkActualSaf5Concpt
tNewBudgetLinkActualFromBQ.tc_Rowid = string(rowid(tBudgetCheckInfoWBSQBA)).
/* ======================================= */
/* Create the new BudgetLinkAcc- records */
/* ======================================= */
<Q-22 run PostingLineByLineID (all) (Read) (NoCache)
(input ?, (CompanyId)
input tQBudgetLinkActual.PostingLine_ID, (PostingLine_ID)
output dataset tqPostingLineByLineID) in BPosting>
find first tqPostingLineByLineID where
tqPostingLineByLineID.tipostingline_id = tQBudgetLinkActual.PostingLine_ID
no-error.
if available tqPostingLineByLineID and tBudgetCheckInfoWBSQBA.tlBudgetIsUsedForAllocation
then do:
create tApiBudgetLinkAccFromBQ.
assign tApiBudgetLinkAccFromBQ.BudgetLinkAcc_ID = viBudgetLinkAcc
tApiBudgetLinkAccFromBQ.Budget_ID = tBudgetCheckInfoWBSQBA.tiBudgetID
tApiBudgetLinkAccFromBQ.BudgetWBS_ID = tBudgetCheckInfoWBSQBA.tiBudgetWBSID
tApiBudgetLinkAccFromBQ.Layer_ID = tQBudgetLinkActual.Layer_ID
tApiBudgetLinkAccFromBQ.tc_Rowid = string(rowid(tBudgetCheckInfoWBSQBA))
tApiBudgetLinkAccFromBQ.BudgetLinkAccQTY = tqPostingLineByLineID.tdPostingLineQTY
tApiBudgetLinkAccFromBQ.Period_ID = tqPostingLineByLineID.tiPeriod_ID
viBudgetLinkAcc = viBudgetLinkAcc + 1.
/* Initial posting creation */
if tQBudgetLinkActual.BudgetLinkActualTC = tqPostingLineByLineID.tdPostingLineDebitTC - tqPostingLineByLineID.tdPostingLineCreditTC
then do:
assign tApiBudgetLinkAccFromBQ.BudgetLinkAccCreditLC = tqPostingLineByLineID.tdPostingLineCreditLC
tApiBudgetLinkAccFromBQ.BudgetLinkAccDebitLC = tqPostingLineByLineID.tdPostingLineDebitLC
tApiBudgetLinkAccFromBQ.BudgetLinkAccCreditCC = tqPostingLineByLineID.tdPostingLineCreditCC
tApiBudgetLinkAccFromBQ.BudgetLinkAccDebitCC = tqPostingLineByLineID.tdPostingLineDebitCC.
end.
/* Update or posting delete */
else do:
if tQBudgetLinkActual.BudgetLinkActualTC < 0
then assign tApiBudgetLinkAccFromBQ.BudgetLinkAccCreditLC = 0
tApiBudgetLinkAccFromBQ.BudgetLinkAccDebitLC = tQBudgetLinkActual.BudgetLinkActualTC * tqPostingLineByLineID.tdPostingLineExchangeRate * tqPostingLineByLineID.tdPostingLineRateScale
tApiBudgetLinkAccFromBQ.BudgetLinkAccCreditCC = 0
tApiBudgetLinkAccFromBQ.BudgetLinkAccDebitCC = tQBudgetLinkActual.BudgetLinkActualTC * tqPostingLineByLineID.tdPostingLineCCRate * tqPostingLineByLineID.tdPostingLineCCScale.
else assign tApiBudgetLinkAccFromBQ.BudgetLinkAccDebitLC = 0
tApiBudgetLinkAccFromBQ.BudgetLinkAccCreditLC = - tQBudgetLinkActual.BudgetLinkActualTC * tqPostingLineByLineID.tdPostingLineExchangeRate * tqPostingLineByLineID.tdPostingLineRateScale
tApiBudgetLinkAccFromBQ.BudgetLinkAccDebitCC = 0
tApiBudgetLinkAccFromBQ.BudgetLinkAccCreditCC = - tQBudgetLinkActual.BudgetLinkActualTC * tqPostingLineByLineID.tdPostingLineCCRate * tqPostingLineByLineID.tdPostingLineCCScale.
end.
end.
/* ========================================= */
/* Create the new BudgetLinkAccDet - records */
/* ========================================= */
if tBudgetCheckInfoWBSQBA.tlBudgetIsUsedForAllocation
then do:
/* ============================================================= */
/* Find FDS level of the budget used for proportional allocation */
/* ============================================================= */
<Q-26 run BudgetFDSByBudgetIDPropAlloc (all) (Read) (NoCache)
(input tBudgetCheckInfoWBSQBA.tiBudgetID, (BudgetID)
output dataset tqBudgetFDSByBudgetIDPropAlloc) in BBudget >
find first tqBudgetFDSByBudgetIDPropAlloc no-lock no-error.
if available tqBudgetFDSByBudgetIDPropAlloc
then do:
create tApiBudgetLinkAccDetFromBQ.
assign tApiBudgetLinkAccDetFromBQ.BudgetLinkAccDet_ID = viBudgetLinkAccDet
tApiBudgetLinkAccDetFromBQ.Budget_ID = tBudgetCheckInfoWBSQBA.tiBudgetID
tApiBudgetLinkAccDetFromBQ.BudgetWBS_ID = tBudgetCheckInfoWBSQBA.tiBudgetWBSID
tApiBudgetLinkAccdetFromBQ.Layer_ID = tQBudgetLinkActual.Layer_ID
tApiBudgetLinkAccDetFromBQ.tc_Rowid = string(rowid(tBudgetCheckInfoWBSQBA)).
assign viBudgetLinkAccDet = viBudgetLinkAccDet + 1.
/* store values to be added to the summary record */
if available tqPostingLineByLineID
then assign tApiBudgetLinkAccDetFromBQ.BudgetLinkAccDetCreditLC = tqPostingLineByLineID.tdPostingLineCreditLC
tApiBudgetLinkAccDetFromBQ.BudgetLinkAccDetDebitLC = tqPostingLineByLineID.tdPostingLineDebitLC
tApiBudgetLinkAccDetFromBQ.BudgetLinkAccDetQTY = tqPostingLineByLineID.tdPostingLineQTY
tApiBudgetLinkAccDetFromBQ.Period_ID = tqPostingLineByLineID.tiPeriod_ID.
/* get relavant FDS element by which value is cumulated */
assign tApiBudgetLinkAccDetFromBQ.tiBudgetFDS_ID = tqBudgetFDSByBudgetIDPropAlloc.tiBudgetFDS_ID
tApiBudgetLinkAccDetFromBQ.tcBudgetFDSType = tqBudgetFDSByBudgetIDPropAlloc.tcBudgetFDSType
tApiBudgetLinkAccDetFromBQ.Division_ID = tqPostingLineByLineID.tiDivision_ID
tApiBudgetLinkAccDetFromBQ.CostCentre_ID = tqPostingLineByLineID.tiCostCentre_ID
tApiBudgetLinkAccDetFromBQ.Project_ID = tqPostingLineByLineID.tiProject_ID
tApiBudgetLinkAccDetFromBQ.tiSafConcept1_ID = tBudgetCheckInfoQBA.tiSafConcept1ID
tApiBudgetLinkAccDetFromBQ.tiSafConcept2_ID = tBudgetCheckInfoQBA.tiSafConcept2ID
tApiBudgetLinkAccDetFromBQ.tiSafConcept3_ID = tBudgetCheckInfoQBA.tiSafConcept3ID
tApiBudgetLinkAccDetFromBQ.tiSafConcept4_ID = tBudgetCheckInfoQBA.tiSafConcept4ID
tApiBudgetLinkAccDetFromBQ.tiSafConcept5_ID = tBudgetCheckInfoQBA.tiSafConcept5ID
tApiBudgetLinkAccDetFromBQ.tcSaf1_Code = tBudgetCheckInfoQBA.tcSaf1Code
tApiBudgetLinkAccDetFromBQ.tcSaf2_Code = tBudgetCheckInfoQBA.tcSaf2Code
tApiBudgetLinkAccDetFromBQ.tcSaf3_Code = tBudgetCheckInfoQBA.tcSaf3Code
tApiBudgetLinkAccDetFromBQ.tcSaf4_Code = tBudgetCheckInfoQBA.tcSaf4Code
tApiBudgetLinkAccDetFromBQ.tcSaf5_Code = tBudgetCheckInfoQBA.tcSaf5Code.
end.
end.
/* ======================================= */
/* State the QTY and TC (Sales of Cost) */
/* ======================================= */
case tQBudgetLinkActual.JournalTypeCode :
when {&JOURNALTYPE-CREDITORADJUSTMENT} or
when {&JOURNALTYPE-CREDITORCREDITNOTE} or
when {&JOURNALTYPE-CREDITORINVOICE} or
when {&JOURNALTYPE-CREDITORPAYMENT}
then assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC = tQBudgetLinkActual.BudgetLinkActualTC
tNewBudgetLinkActualFromBQ.BudgetLinkActualQTY = (if tQBudgetLinkActual.Unit_ID = tBudgetCheckInfoWBSQBA.tiUnitID then tQBudgetLinkActual.BudgetLinkActualQTY else 0)
tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC = 0
tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesQTY = 0.
when {&JOURNALTYPE-DEBTORADJUSTMENT} or
when {&JOURNALTYPE-DEBTORCREDITNOTE} or
when {&JOURNALTYPE-DEBTORINVOICE} or
when {&JOURNALTYPE-DEBTORPAYMENT}
then assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC = 0
tNewBudgetLinkActualFromBQ.BudgetLinkActualQTY = 0
tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC = tQBudgetLinkActual.BudgetLinkActualTC * -1
tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesQTY = (if tQBudgetLinkActual.Unit_ID = tBudgetCheckInfoWBSQBA.tiUnitID then tQBudgetLinkActual.BudgetLinkActualQTY * -1 else 0).
otherwise assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC = tQBudgetLinkActual.BudgetLinkActualTC
tNewBudgetLinkActualFromBQ.BudgetLinkActualQTY = (if tQBudgetLinkActual.Unit_ID = tBudgetCheckInfoWBSQBA.tiUnitID then tQBudgetLinkActual.BudgetLinkActualQTY else 0)
tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC = 0
tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesQTY = 0.
end case.
/* ===================================== */
/* Get the exchange-rate (if applicable) */
/* ===================================== */
if tQBudgetLinkActual.Currency_ID /* PO currency */ <> tBudgetCheckInfoWBSQBA.tiCurrencyID /* Budget-currency */
then do :
<M-39 run GetExchangeRate
(input ? (iiCompanyID),
input tQBudgetLinkActual.Currency_ID (iiFromCurrencyID),
input ? (icFromCurrencyCode),
input tBudgetCheckInfoWBSQBA.tiCurrencyID (iiToCurrencyID),
input ? (icToCurrencyCode),
input ? (iiExchangeRateTypeID),
input {&EXCHANGERATETYPE-ACCOUNTING} (icExchangeRateTypeCode),
input tQBudgetLinkActual.BudgetLinkActualDate (itValidityDate),
output vdExchangeRate (odExchangeRate),
output vdExchangeRateScale (odExchangeScaleFactor),
output viFcReturnSuper (oiReturnStatus)) in BQBudgetActual>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0 then Return.
if vdExchangeRate <> 1
then do :
assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC = tNewBudgetLinkActualFromBQ.BudgetLinkActualTC * vdExchangeRate * vdExchangeRateScale
tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC = tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC * vdExchangeRate * vdExchangeRateScale.
if tBudgetCheckInfoWBSQBA.tiCurrencyID = viCompanyLCId
then assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC = <M-30 RoundAmount
(input tNewBudgetLinkActualFromBQ.BudgetLinkActualTC (idUnroundedAmount),
input viCompanyLCId (iiCurrencyID),
input '':U (icCurrencyCode)) in business>
/* round(tNewBudgetLinkActualFromBQ.BudgetLinkActualTC,viCompanyLCDec) */
tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC = <M-31 RoundAmount
(input tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC (idUnroundedAmount),
input viCompanyLCId (iiCurrencyID),
input '':U (icCurrencyCode)) in business>.
/* round(tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC,viCompanyLCDec). */
else if tBudgetCheckInfoWBSQBA.tiCurrencyID = viCompanyCCId
then assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC = <M-32 RoundAmount
(input tNewBudgetLinkActualFromBQ.BudgetLinkActualTC (idUnroundedAmount),
input viCompanyCCId (iiCurrencyID),
input '':U (icCurrencyCode)) in business>
/* round(tNewBudgetLinkActualFromBQ.BudgetLinkActualTC,viCompanyCCDec) */
tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC = <M-33 RoundAmount
(input tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC (idUnroundedAmount),
input viCompanyCCId (iiCurrencyID),
input '':U (icCurrencyCode)) in business>.
/* round(tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC,viCompanyCCDec). */
else do :
find first tqCurrencyByCode where
tqCurrencyByCode.tiCurrency_ID = tBudgetCheckInfoWBSQBA.tiCurrencyID
no-lock no-error.
if available tqCurrencyByCode
then assign tNewBudgetLinkActualFromBQ.BudgetLinkActualTC = <M-34 RoundAmount
(input tNewBudgetLinkActualFromBQ.BudgetLinkActualTC (idUnroundedAmount),
input tQBudgetLinkActual.Currency_ID (iiCurrencyID),
input '':U (icCurrencyCode)) in business>
tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC = <M-35 RoundAmount
(input tNewBudgetLinkActualFromBQ.BudgetLinkActualSalesTC (idUnroundedAmount),
input tQBudgetLinkActual.Currency_ID (iiCurrencyID),
input '':U (icCurrencyCode)) in business>.
end. /* if tBudgetCheckInfoWBSQBA.tiCurrencyID <> viCompanyCCId */
end. /* if vdExchangeRate <> 1 */
end. /* if tQBudgetLinkCommit.Currency_ID <> tBudgetCheckInfoWBSQBA.tiCurrencyID */
end. /* for each tBudgetCheckInfoQBA */
/* ============ */
/* Stop Queries */
/* ============ */
<Q-23 run PostingLineByLineID (Stop) in BPosting >
<Q-29 run BudgetFDSByBudgetIDPropAlloc (Stop) in BBudget >