L'application BudgetWeb permet la pré-saisie d'un budget d'une Université en mode décentralisé. Toutes ces pré-saisies sont ensuite consolidées, corrigées et validées par service central pour ensuite être intégrées dans le système financier. De nombreuses règles de gestions sont définies et personnalisables. Les accès se font via les profils suivants :
- un profil "utilisateur" qui permet la connexion et la saisie de prévisions de recettes et de dépenses sur lesquelles il dispose d'habilitations. Il existe plusieurs types de programmes de financement (fléché / ou NA / non fléché et pluri-annuel / non pluri-annuel). Pour un PFI pluriannuel, la saisie peut se faire sur plusieurs années. Quelques règles de gestion sont en place permettant de cadrer la saisie.
- un profil "budget" qui permet le suivi des différentes saisies, et qui passe outre les règles de gestion.
L'exploitation des données se fait via un univers Business Objects. L'outil permet, via un univers BO, de déverser dans le SI finance les fichiers suivants :
- Le budget d'engagement et de paiement
- Le BOPA (Budget pluriannuel)
- Des pré-budgets analytiques.
L'application BudgetWeb est basée sur Django, jQuery et BootStrap. La version est maintenant configurée pour fonctionner avec PostGreSQL.
apt-get install virtualenv
apt-get install virtualenvwrapper
apt-get install postgresql-9.5
sudo su postgres
psql -c "CREATE DATABASE budgetweb;"
psql -c "CREATE USER budgetweb WITH PASSWORD 'budgetweb';"
- virtualenvwrapper_ et le
.bashrc
complétés avec les lignes suivantes :
export WORKON_HOME=~/.virtualenvs/
export PIP_VIRTUALENV_BASE=$WORKON_HOME
export PIP_RESPECT_VIRTUALENV=true
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
- python3.7-dev
On revient dans le home dir (exemple /home/myuser) :
git clone https://github.com/unistra/budgetweb.git
On créé le virtualenv pour BudgetWeb :
mkvirtualenv -p /usr/bin/python3.7 -a /home/myuser/budgetweb budgetweb
Vous lancerez et désactiverez l'env. avec les commandes suivantes :
workon budgetweb
deactivate
- Pour installer Django dans l'environnement virtuel :
pip install -r requirements/dev.txt
- On configure l'environnement et on ajoute :
nano .virtualenvs/budgetweb/bin/postactivate
export DJANGO_SETTINGS_MODULE=budgetweb.settings.dev
DEFAULT_DB_USER=budgetweb
DEFAULT_DB_PASSWORD=budgetweb
DEFAULT_DB_NAME=budgetweb
workon budgetweb
cdproject # Si la commande est installé pour se trouver dans le bon répertoire.
# Vous devrez ensuite adapter les variables liées à l'authentification centralisé.
vi budgetweb/budgetweb/settings/base.py
CAS_SERVER_URL = XXXXXXXXXXXXXXXX
CAS_LOGOUT_REQUEST_ALLOWED = ('XXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX')
# Si on ne veut pas utiliser l'authentification CAS, on peut ajouter ce paramètre. Cela permet d'avoir une authentification local.
# CAS_ADMIN_AUTH = False
# Configuration du modèle.
python manage.py migrate
# On créé notre "superuser" qui disposera des droits administrateurs. (même login que votre login CAS !)
python manage.py createsuperuser
# Permet d'importer un jeu de test.
python manage.py initial_import
# Génération des fichiers de traductions.
python manage.py compilemessages
# Permet de générer des écritures en dépense et en recette de manière aléatoire.
python manage.py create_structuremontants
# On démarre le serveur.
python manage.py runserver
# On lance son navigateur favori via l'adresse suivante :
http://localhost:8000
Nous avons préparé plusieurs scripts d'import vous permettant d'insérer en masse vos données.
Le premier fichier à importer est les Structures (CFs) Le format est le suivant : Groupe1;Groupe2;Perimetre;CFParent;CF;Label
- Groupe1 et Groupe2 correspondent à des groupes personnalisés qui ne servent pas dans BudgetWeb mais qui permettent de faire des tris lors de la génération des annexes via BO. Vous pouvez laisser ces champs vides.
- Perimetre est le périmètre financier associé. Pour l'instant ce champ n'est d'aucune utilité. (Chez nous c'est 1010)
- CFParent est le nom du CF parent. Les CFs de niveau "0" sont crées directement dans la commande import_structure. Il conviendra d'adapter ce script en fonction du nombre de vos sociétés.
- CF est le code du CF (APS, ART, DPI, etc.)
- Label est le libellé associé au CFs.
L'import des structures se fait via la commande suivante :
python manage.py import_structures path/to/data.csv
Le deuxième fichier à importer est les Plan de Financement (PFi) Le format est le suivant : Structure;Code;Label;fleche;pluri;eotp;cc;cp;groupe1;groupe2
- Structure est le code du CF auquel est rattaché le PFI (Ex APS)
- Code est le code du PFi (Exemple : A13R316B). Le code n'a pas besoin d'être unique.
- Label est le libellé du PFi (Exemple : Mon super PFI)
- fleche défini si le PFi est fléché ou non. Un PFi fléché dispose d'une nature comptable différente d'un PFi non fléché
- pluri défini si le PFi est pluriannuel ou pas. Les écrans de saisie ne sont pas les mêmes.
- eotp correspond à l'eotp associé. Ce champ n'est pas obligatorie pour BudgetWeb.
- cc correspond au centre de coût du PFi
- cp correspond au centre de profil du PFi
- groupe1 et groupe2 correspondent à des groupes personnalisés (comme pour les structures)
L'import des plan de financement se fait via la commande suivante :
python manage.py import_pfi path/to/data.csv
Le troisième fichier à importer est les Domaines Fonctionnels Le format est le suivant : code;libelle_long;libelle_cours
- code correspond au code du domaine fonctionnel (identique à SAP)
- libelle_long correspond au libellé long du domaine fonctionnel. (Pas utile pour BudgetWeb)
- libelle_cours correspond au libellé cours du domaine fonctionnel. C'est ce libellé qui apparait dans les menus déroulants. Exemple : D101;Formation initiale et continue de niveau Licence;Formation de niveau Licence
python manage.py import_functionaldomains path/to/data.csv
Le quatrième fichier à importer est les Natures Comptables Depenses. Le format est le suivant :
- pfi_fleche correspond à un booléen qui défini si la nature comptable est de type fléché ou non. ('Valeur possible : 'PFI Fléché' ou toute autre valeur)
- enveloppe correspond à une liste à choix ('Fonctionnement', 'Personnel', 'Investissement')
- libelle_nature_comptable correspond au libellé de la nature comptable.
- code_nature_comptable correspond au code du compte budgetaire
- code_compte_budgetaire correspond au code du compte budgetaire
- libelle_compte_budgetaire correspond au libellé du compte budgétaire
- regle_decallage_treso correspond à une des règles de gestion pour la nature comptable. (Voir plus loin pour les règles)
- regle_budgetaire correspond à une des règles de gestion pour la nature comptable. (Voir plus loin pour les règles)
- regle_pi_cfg correspond à une des règles de gestion pour la nature comptable. (Voir plus loin pour les règles)
- ordre est un chiffre qui permet le classement des natures comptables par enveloppe.
Exemple : PFI fléché;Fonctionnement;Fluides;9DFLU;FF;Fonctionnement Fléché;non;non;non;1
python manage.py import_naturecomptabledepense path/to/data.csv
Le cinquième fichier à importer est les Natures Comptables Recettes. Le format est le suivant :
- pfi_fleche correspond à un booléen qui défini si la nature comptable est de type fléché ou non. ('Valeur possible : 'PFI Fléché' ou tout autre valeur)
- code_fond correspond au code du fond
- libelle_fond correspond au libellé du fond
- code_nature_comptable correspond au code du compte budgetaire
- libelle_nature_comptable correspond au libellé de la nature comptable.
- code_compte_budgetaire correspond au code du compte budgetaire
- libelle_compte_budgetaire correspond au libellé du compte budgétaire
- regle_is_ar_re correspond à une des règles de gestion pour la nature comptable. (Voir plus loin pour les règles)
- regle_is_non_budgetaire correspond à une des règles de gestion pour la nature comptable. (Voir plus loin pour les règles)
- ordre est un chiffre qui permet le classement des natures comptables par enveloppe.
Exemple : PFI non fléché ou NA;Investissement;NB-Restitution de dépôts ou cautionnements reçus d'un tiers;9DIDE;NEANT;Néant;non;oui;non;74
python manage.py import_naturecomptablerecette path/to/data.csv
Depuis la version 2 de BudgetWeb nous avons redécoupé l'application. Nous avons déplacé les données "Structures" dans une application Django à part (Pour pouvoir les réutiliser dans d'autres applications) et les données propres à BudgetWeb dans une autre application Django.
- La table "Structure" contient la structure financière de l'établissement.
- La table "StructureAuthorizations" contient les autorisations des utilisateurs aux structures.
- La table "StructureMontant" contient les montants cumulés des sous-structures / programmes de financement.
- La table "PeriodeBudget" contient les différentes périodes budgétaires (BI, Virement, BR1, BR2, etc.)
- La table "DomaineFonctionnel" contient la liste des domaines fonctionnels.
- La table "PlanFinancement" contient la liste des programmes de financement.
- La table "NatureComptableDepense" contient la liste des natures comptables dépenses.
- La table "NatureComptableRecette" contient la liste des natures comptables recettes
- La table "Depense" qui contient la liste des saisies en dépense.
- La table "Recette" qui contient la liste des saisies en recette.
Quelques règles de gestion ont été implémentées :
- Pour la partie Dépense (1 seul règle possible par nature comptable !):
- La règle "Décallage trésorerie" définie la règle suivante : Le montant CP et DC doivent obligatoirement être identiques.
- La règle "Non Budgétaire" définie la règle suivante : Le montant AE et CP ne peuvent pas être égal à 0.
- La règle "PI-CFG" s'applique alors AE = DC et CP = 0
- Si la nature comptable n'a pas pas de règles alors AE = CP = DC.
- Pour la partie Recette (1 seul règle possible par nature comptable !):
- La règle IS_AR_RE ne permet pas de saisir de valeur diffénrents entre AR et RE.
- La règle IS_NON_BUDGETAIRE définie cette règle : Si "is_non_budgetaire" = oui alors AR = RE = 0 et DC à saisir
- Enfin si l'utilisateur appartient au groupe "DFI", les règles par défaut s'appliquent mais il est possible de passer outre en saisissant d'autres valeurs.
- Les règles s'appliquent pour les gestionnaires en composantes.
La gestion des périodes budgétaires Maintenant l'application gère la période budgétaire BI (Budgt initial), la période VIREMENT, la période BR (Budget rectificatif). Chaque période est activable via des dates de début et de fin. Les gestionnaires en composantes disposent d'une période de saisie.
La gestion des virements La gestion des virements se fait par l'import depuis ERP SAP. Pour ce faire, nous avons développé un Web service dédié qui sera prochainement publié (ou pas) sur GitHub. L'application BudgetWeb appele le WebService qui lui appele la BAPI qui va bien.
A chaque ouverture d'un nouveau BI, un script d'initialisation s'execute pour "migrer" les données saisies dans les PFI "pluriannuel".
Vous trouverez ici un pas à pas très détaillé expliquant le fonctionnement de BudgetWeb.
La gestion des droits permets de donner des accès à des niveaux très fins (structure de niveau 3 ou plus selon la structure financière intégrée.
Un champ "is_active" est disponible pour les structures et les pfi, cela permet d'afficher / masquer les données voulues.
Le jeu de test contient : Des programmes de financement fléchés / non fléchés. ( La naturecomptable est différente entre un PFI fléché et non fléché) Des programmes de financement pluri-annuels et non pluri-annuels. (Les écrans de saisie ne sont pas identiques).
- Présentation de l'arborescence au budget initial.
- Présentation de l'arborescence au Budget Rectificatif
- Formulaire de saisie des dépenses.
- Formulaire de saisie des recettes
- Résumé disponible pour chaque niveau.
- Gestion des PFI pluri-annuel *Exploitation des données via un univers BO dédié.
Une seule adresse : [email protected]