Contexte
Je compte me faire une petite appli de compta qui sera dans un premier temps dispo en ligne pour mon usage seul, je verrai par la suite. Ca remplacera l'excel avec lequel je fais ma gestion de compte. Là je m'intéresse au modèle
L'orientation que je compte donner à mon appli, c'est le prévisionnel : il existe une chiée d'appli de compta qui permettent de tracer le passé, moi j'en veux une qui permette aussi de simuler dans le futur. L'appli gérera donc des données réelles, et aussi des prévisions.
Pour des raisons de simplicité, je prend l'année comme unité d'encapsulation des comptes. On pourra créer des années dans le futur pour faire de la pure simulation si on veut.
Autre hypothèse : je pars du principe qu'on a un compte en banque, et que le but de l'application est de tracer/prévoir le solde du compte à un instant T
Le model tel que je le vois naivement :
L'appli maintient une liste d'années, contenant les années passées, l'année courante, et si on le souhaite, des années futures
Une années contient des mois
Chaque mois contient une liste de catégorie
Une catégorie contient des éléments (dépense ou recette mais ça a peu d'importance), et peut avoir un budget prévisionnel
Un élément contient donc un montant, a 2 statut : prévisionnel, ou réconciliée : prévisionnel c'est que l'entrée n'est pas apparue sur le relevé de compte, réconciliée c'est qu'elle apparait et qu'elle a impacté le solde du compte à la banque.
Voici les opérations de base :
- ajout/modif/etc d'une catégorie : on peut lui affecter un montant prévisionnel, qui sera ajouté/déduit du solde de compte. Par ex je peux dire : je compte 200€ de bouffe par mois, un salaire d'un Ratibus, 1/2 ratibus de prime en décembre, etc...
- ajout/modif/etc d'une entrée : on choisit crédit/Débit, une catégorie, et un montant. Lors du rajout à la catégorie, on peut soit choisir d'impacter le montant de la catégorie. Par exemple je rajoute 50€ de carrefour. Ca peut vouloir dire :
* que je compte dépenser 200€ de bouffe, dont 50€ de carrefour (auquel cas l'appli baisse la prévision de la cat "bouffe" pour que la somme reste à 200)
* que je compte dépenser 250€ de bouffe (50€ à carrefour, et 200€ ailleurs)
- réconciliation :
* automatique : le site de ma banque permet de télécharger mes comptes en CSV, QIF, etc...l'idée étant que je veux pouvoir avoir une réconciliation automatique
* manuelle : je marque à la main les entrées réconciliées
le fait de réconcilier une entrée la sort du prévisionnel, et donc du calcul du solde réel.
Exemple : j'avais 100€ sur mon compte, et une dépense prévue de 10€. Mon solde réel calculé par l'appli est de 90€. Aujourd'hui j'ai reçu mon relevé, il indique 85€. Je réconcilie la dépense de 10€. Mon solde est toujours de 85€, la dépense ayant déjà affecté le solde à la banque. Elle apparait toujours pour des raisons de traçabilité, mais n'impacte plus mon solde.
à toutes les fins de période (probablement le mois), je regarde si y'a des dépenses non réconciliées et je demande au user :
- soit de les réconcilier si c'est une erreur
- soit de provisionner la dépense dans la période en cours
- soit d'annuler l'entrée
idem pour les catégories avec le budget prévisionnel
De ça je veux pouvoir extraire les infos suivantes :
- le solde réel à un moment donné (fin du mois en cours, à n'importe quel jour donné, dans 6 mois, etc...)
- pouvoir dire à la fin de l'année : j'ai dépensé 2400€ en bouffe, et j'avais prévu 2500€, etc...
Mes questions
* ce truc est "simple" à modéliser, le problème ça va probablement être la performance ou la praticité d'utilisation : tel que je le conçois, ça va etre bcp de parcours de collection, sortir un objet, récupérer la collection qu'il y a dedans, remouliner, etc...
* aggréger un solde, c'est mouliner bcp d'info répartie à plein d'endroits
* les catégories me posent problème : y'a 2 dimensions : une dimension mensuelle / annuelle, etc...et une dimension par catégorie. Je pensais ajouter l'objet qui représente la catégorie pour un mois donné à la fois à la liste des catégories du mois concerné, mais aussi à un objet listant toute les instances de la catégorie concernée. Par exemple, rajouter "bouffe du mois d'avril" à la fois au mois d'avril, et aussi à la catégorie "bouffe"...
* je sais pas si j'ai une pertinence à avoir un découpage objet année / mois...une grosse liste avec les dates me permettrait de faire le même découpage, c'est peut etre une optimisation inutile (je pense garder l'année quand même parce que ça semble une bonne unité d'analyse, et que c'est logique au niveau archivage, etc...)
* je compte fournir des vues semaine, mois, trimestre, etc...je vais donc sans cesse afficher des subsets de ma grosse liste d'entrées...c'est quoi le plus élégant ici ?
- balancer la grosse liste, et filtrer la vue uniquement
- créer une petite liste et y copier uniquement les références des objets qu'on veut afficher
* je compte utiliser Joda time, ça me semble plus prudent
* vous voyez des choses auxquelles faire gaffe ?
Message édité par Jubijub le 08-03-2009 à 16:01:38
---------------
Jubi Photos : Flickr - 500px