Tool voor budgetopmaak
Opdracht ID: 26647
Budget: € 30 tot € 50 p.u.
Geplaatst: 14-04-2021
Reacties: 0
Locatie: , België
Laatst gewijzigd: 27-04-2021
Status: In afwachting van gekozen freelancer
Beste freelancer,
Wij willen voor onze organisatie een database en webbased GUI front laten maken voor onze budgetopmaak. De database op zich kan een relatief eenvoudige MySQL (of andere) database zijn, onze vereisten voor de front end zijn wel wat specifieker. We moeten uiteraard ook (relatief standaard) rapportjes kunnen uitdraaien met de ingevoerde data.
WORKFLOW
De workflow die we hiermee willen beheren loopt als volgt:
- Aan de frontend: elk van onze departementshoofden moet (minstens) jaarlijks een budget opstellen voor zijn/haar departement (alle deelbudgetten van die departementen samen vormen dan het totaalbudget). Sommige departementen zijn onderverdeeld in subdepartementen (maar niet allemaal), en die vervolgens soms nog in "sub-sub"-departementen (maar ook niet allemaal) - in dat geval moeten de departementshoofden hun budgetten over die verschillende lagere niveaus opsplitsen.
- De budgetten van elk departement, subdepartement en sub-subdepartementen zijn telkens verdeeld over een reeks kostensoorten (bv. "huur lokalen", "aankoop informaticamateriaal" enz.). Deze kostensoorten zijn dezelfde over elk departement en (sub-)subdepartement heen maar kunnen wel per jaar, dus per budget, veranderen.
- Het opstellen van het budget werkt "bottom-up": om hun budget op te stellen moeten de departementshoofden voor het geselecteerde budget voor hun departement entries invoeren per kostensoort (al dan niet verdeeld over (sub-)subdepartementen). Elk van die entries heeft twee data: de prijs (bedrag in euro) en een korte verantwoording/omschrijving. Bijvoorbeeld, als het hoofd van Departement A voorziet om in 2021 drie lokalen te huren voor subdepartement X en twee voor subdepartement Y, maakt zij in "Budget 2021" voor haar departement drie entries voor subdepartement X onder kostensoort "huur lokalen" met voor elke entry de voorziene prijs van de zaal en een omschrijving met bv. evenementnaam en datum, en twee zulke entries voor subdepartement Y.
- Aan de backend moeten we per budget een tabel met alle data entries over alle departementen, subdepartementen en kostensoorten heen kunnen exporteren, die we vervolgens weer kunnen importeren in ons boekhoudpakket voor de opvolging van de uitgaven. Zie verder hieronder hoe die tabel geformat moet zijn.
DATASTRUCTUUR
Op zich dus een vrij eenvoudige datastructuur:
- Een tabel met de budgetten ("Budget 2021", "1ste budgetaanpassing 2021", "Budget 2022" enz).
- Een tabel met departementen. Die kunnen elk boekjaar wijzigen (dus budgetten -> departementen : one-to-many)
- Een tabel met eventuele subdepartementen per departement (departementen -> subdepartementen: one-to-many) en eventuele sub-subdepartementen per subdepartement (subdepartementen -> sub-subdepartementen: one-to-many)
- Voor elk (sub-sub)departement is er een corresponderende zevencijferige code (nodig voor de export van het rapport, zie verder)
- Een tabel met kostensoorten, onderverdeeld in een aantal rubrieken (kostensoorten zijn dezelfde over alle departementen en subdepartementen, maar kunen verschillen tussen verschillende budgetten, dus budgetten -> kostensoorten: one-to-many). Voor elke kostensoort is er ook een corresponderende achtcijferige code (nodig voor de export van het rapport, zie verder).
FRONTEND
Het werk zit 'm vooral in de noden van de front end en de structuur van het rapport uit de data.
1) Web front met een login voor elk departementshoofd.
2) Na login: een formulier waarop de gebruiker het op te maken budget selecteert (bv. "Budget 2021", "1ste budgetaanpassing 2021", "Budget 2022" enz).
3) Op basis van de toegekende rechten van de ingelogde gebruiker vervolgens een formulier om het departement te selecteren (enkel de departementen waarvoor men rechten heeft zichtbaar en beschikbaar)
4) Na de login en vervolgens de selectie van het op te maken budget, krijgt de gebruiker een tabel te zien met op de lijnen de kostensoorten (onderverdeeld in een aantal rubrieken die het totaal voor verschillende lijnen geven) en op de kolommen (naast de eerste kolom voor de titel van de lijnen) de eventuele subdepartementen - of slechts ??n kolom indien geen er subdepartementen zijn. Elke cel in deze tabel correspondeert dus aan een kostensoort en, als dat er is, een subdepartement.
5) Entries worden ingegeven in een pop-up venstertje dat verschijnt door een double-click op een cel. Bv. de gebruiker klikt op de cel op rij "Huur lokalen" in de kolom "Subdepartement X"; er verschijnt een klein pop-upvenstertje met een klein tabelletje met twee kolommen en een aantal rijen (extra rijen kunnen worden toegevoegd) - in kolom 1 van deze pop-up voer je bedragen in, in de tweede kolom een beschrijving voor elk bedrag.
=> Afhankelijk van hoeveel extra ontwikkeling dat vereist, zou het ideaal zijn als deze tabel bewerkbaar is als een Drive tabel, d.w.z. dat we met meerdere personen tegelijk erin kunnen werken.
6) De cellen in de tabel beschreven in 4) geven het totaal weer van de entries ingegeven volgens 5). Bij de double-click op een cel zoals beschreven in 5) toont de pop-up de reeds ingegeven entries voor die cel.
7) De gebruiker kan de tabel opslaan voor latere bewerking
8) Een knop om de tabel te valideren, waarna hij afgesloten wordt voor verdere bewerking door de gebruiker (enkel admins kunnen dit "devalideren" om terug te openen voor bewerking). (Aan de backend moet er bij validatie van een tabel een notification worden gestuurd naar de admin)
BACKEND
Aan de backend moeten we een aantal zaken kunnen configureren:
1) De lijst met de budgetten. Bv. een nieuw jaar toevoegen, of een extra budgetaanpassing voor een bepaald jaar. Cfr. de selectie te maken in punt 2) van de frontend.
Als we een nieuw budget aanmaken, moeten default de departementen en (sub-)subdepartementen van het vorige budget worden overgenomen, maar we moeten die vervolgens wel kunnen wijzigen (zie volgend punt).
2) De lijst met departementen en hun (sub-)subdepartementen en de corresponderende zevencijferige codes. Die kunnen in principe bij elk nieuw budget wijzigen (bv. de departementen en subdepartementen voor het budget van 2020 zijn niet noodzakelijk dezelfde als voor jaar 2021)
3) De lijst met kostensoorten en hun corresponderende achtcijferige codes. De lijst is hetzelfde per (sub-sub)departement, maar ook deze kostensoorten kunnen in principe bij elk nieuw budget wijzigen (bv. de kostensoorten voor het budget van 2020 zijn niet noodzakelijk dezelfde als voor jaar 2021)
4) De toegangsrechten van de gebruikers (toegang tot welk departement)
5) Voor elk budget moeten we kunnen zien welk departementsbudget al is opgeslagen en/of gevalideerd door de gebruiker.
DATA EXPORT
Behalve de frontend GUI die in principe ook een soort rapport is, moeten we vanuit de backend maar ??n soort rapport kunnen exporteren, nl. de volledige lijst met alle entries voor een bepaald budget (bv. voor "Budget 2021"), met indien we wensen filters per (sub-sub)departement of kostensoort.
Belangrijk is dat dat moet in een formaat dat we kunnen importeren in ons boekhoudprogramma. Dat formaat is als volgt:
- E?n lijn per entry
- Kolom 1 met kolomtitel "Adjustment name": de titel van het budget (bv. "Initi?le begroting 2021"). Cfr. stap 2 van de front end.
- Kolom 2 met kolomtitel "Account number": de kostensoort, maar dan in de vorm van een achtcijferige code, bv. "61000000" voor kostensoort "huur gebouwen en lokalen". Dit moet dus gegenereerd worden op basis van een correspondentietabel tussen kostensoorten en achtcijferige codes
- Kolom 3 met kolomtitel "Description": omschrijving van de entry (bv. "huur Gemeentestraat januari")
- Kolom 4 met kolomtitel "2020-01": bedrag van de entry
- Kolom 5 met kolomtitel "Analytic 9": een zevencijferige code die wordt bepaald op basis van de combinatie departement-subdepartement-subsubdepartement. Er moet dus een correspondentietabel zijn tussen (sub-sub)departementen en deze zevencijferige codes. De code hangt steeds af van het laatste beschikbare niveau: een departement zonder (sub-)subdepartementen heeft zijn eigen zevencijferige code; ?ls een departement subdepartementen heeft hangt de code af van het subdepartement; en ?ls die subdepartementen sub-subdepartementen hebben hangt de code van die laatste af.
PRIJS
Wij werken liefst met een fixed price op basis van een inschatting van het aantal nodige uren, maar alles is bespreekbaar.