In our current system, we use Excel to prepare the Budget and Sharepoint to consolidate the budgets from 70 countries. After the Budget file is submitted for review, we remove the edit access to the file. If the reviewer asks for some corrections to be made, then the edit access is granted again. Once approved, we store each country’s Budget as the Approved Budget. Then, later during the year, the country teams can update their budget and ask for another approval round. During this time, we want to find the difference between the new budget ask vs the approved budget. We have been doing all this using Excel, Sharepoint, Power Query for data consolidation and PowerBI for reporting.
The budget contains a number of Tables with different types of Budget Lines - Staff Costs, Office Costs, etc.
Now I am trying to recreate this system in Grist. Here are my thoughts/questions:
- How do a simulate an approval process in Grist? Once the country submits the budget, how can they notify the reviewer that the budget is ready for review? My initial guess is to have a Budget submission table with a status column - when the country creates the budget, the status column is empty. Once they are ready to submit the budget, then it can be set to Approved. I can use Webhooks along with a tool like Zapier to send an email notification - would this work? Has anyone done something similar?
- Once the budget is in review mode, the country should not be able to edit it - I guess I can do this using the status column in Access Rules, but I need to lock down all the tables related to the budget - does this mean that I should add the Budget Submission as a reference column to all those tables? or is there any other way to think about this?
- Once the budget is approved, I want that version to be stored with that tag so that I can always go back to that version. Something like git release tags on all the related records for a certain country as each country can submit the budget at different times and get it reviewed. Is there a way to snapshot a whole web of records using some webhooks/API logic? Any pointers would be appreciated.