- See the old Petra 2.x finance manuals for an introduction to the budget system.
Preparing a budget (maintain)
- This is the main screen, where you can edit the budgets for account/costcentre combinations.
- You can edit the budget for the current financial year, and the next year.
- the data is stored in the tables a_budget and a_budget_period.
Progress Code: progress\petra\finance\budget\gb1100o.w is the browse screen, gb1100b.w is the browse itself (including code to delete a budget), gb1100e.w is the edit screen. gb1110o.w for adhoc budgets, gb1120o.w Same Each Period budget, gb1130o.w Maintain Split Budget, gb1140o.w Maintain Inf.base Budget, gb1150o.w Maintain Inf.n Budget
Import a budget
Budgets can be prepared in Excel and imported as a CSV file.
Progress Code: gb1500o.w
Export a budget
Budgets can be exported as a CSV file for manipulation in Excel.
Follow the code for exporting Gift batches, which includes a dialog to specify the filename to export to plus regional settings (date and number format) and separator character. The code location mirrors that for importing budgets, i.e. resides on the server.
Auto generate a budget
Using the data from the last years, the actuals or the old budget
Progress Code: gb4000o.w
Submitting a budget (consolidate)
This is the process when the budget data is written to the table a_general_ledger_master_period
Progress Code: gb2000.p and gb5300.p and gb5300-1.i and progress\petra\common\lb_budgets.p
- Step 1: Load Data
Looking at existing c# code:
csharp\ICT\Petra\Server\lib\MFinance\Common\Common.Posting.cs private static void LoadGLMData(ref GLBatchTDS ADataSet, Int32 ALedgerNumber) loads all the glm records for the period of the first glbatch and the following periods. this could be modified to pass a period number instead, so that we could use it for the budget consolidation as well: private static void LoadGLMData(ref GLBatchTDS ADataSet, Int32 ALedgerNumber, Int32 AYear, Int32 APeriod) call from void LoadGLMData(ref GLBatchTDS ADataSet, Int32 ALedgerNumber): LoadGLMData(ref ADataSet, ALedgerNumber, ADataSet.ABatch.BatchYear, ADataSet.ABatch.BatchPeriod). and from the budget consolidation: LoadGLMData(ref ADataSet, ALedgerNumber, ABudgetYearNumber, 1).
- Step 2: Reset Data
Next step would be to go through all rows in ADataSet.AGeneralLedgerMasterPeriod and reset a_budget_base_n to 0. see ClearAllBudgetValues in lb_budgets, called from gb2000. Attention: need to create new glmperiod records, if they do not exist yet!
- Step 3: Unpost Budget
- Question: is this still necessary? have not all a_budget_base_n been reset?
- Step 4: Post Budget
- might be done less complicated than in Progress.
- go through a_budget/a_budget_period table, and get the corresponding glm period record. create glm and glm period records if they do not exist yet: call TGLPosting.CreateGLMYear for creating them.
- Step 4b: Summarize budget on account and cost centre tree, going up the hierarchy
GL Posting warns on budget overrun
Test for Valid Transaction, depending on a_ledger.a_budget_control_flag_l
Progress Code: finance/gl/gl4330.p
Reports on Budget
Progress Code: gb3000p.w
See Income/Expense Statement and Balance Sheet which should already be working.