Budgets évolutifs (par mois)


#1

Bonjour,

mes besoins ont changé, notamment car mes entrées et sorties d’argent chaque mois ne sont plus aussi immobiles qu’avant, et par conséquent j’aimerais pouvoir avoir chaque mois un budget potentiellement différent.

Actuellement il y a un budget, quel que soit le mois. J’aimerais maintenant pouvoir définir “Transport” à 100€ en juin mais à 110€ en juillet, sans que ça change la valeur pour juin.

L’UI ne changerait pas en revanche.

Le budget est actuellement stocké dans la catégorie directement : https://framagit.org/bnjbvr/kresus/blob/master/server/models/category.js#L15.

Tel que je le vois désormais, il faudrait un nouveau modèle

let Budget = cozydb.getModel('bankcategory', {
    // Internal category id.
    categoryId: String,

    // Month for which the budget is defined
    month: Number,

    // Year for which the budget is defined
    year: Number,

    // Threshold
    value: {
        type: Number,
        default: 0
    }
});

À l’utilisation, si l’UI ne change pas, l’UX s’adapte: lorsqu’aucun budget n’est défini (si, pour toutes les catégories, aucun budget n’est défini) pour le mois et l’année sélectionnée, on tente de récupérer les budgets du dernier mois/année qui a un budget défini (pour éviter à l’utilisateur de le saisir de nouveau).

Lors de la suppression d’une catégorie il faudrait donc s’assurer de la suppression des budgets associés au categoryId.

Pour la migration à partir du modèle actuel, 2 possibilités :

  1. On prend le budget actuel et on le colle dans le modèle avec le mois et l’année en cours
  2. On prend le budget actuel et pour chaque mois/année possible (selon les opérations existantes) on crée une entrée.

Qu’est-ce que vous en pensez ? Je sais que certains ont d’autres besoins bien précis mais j’aimerais rester simple et avancer par étapes) ?


#2

Bonjour !

Merci d’avoir écrit sur ton idée. Je pense que la section budgets est suffisamment isolée du reste du code pour que les implications globales soient moindres -à part les nouveaux liens de données que tu mentionnes), ce qui me rassure quant à la complexification de cette section.

Indépendamment de ça, ou en même temps : pourrait-on passer la gestion du budget à l’ensemble des comptes, c’est-à-dire en prenant en compte toutes les opérations de tous les comptes ? Pour le moment, le budget est associé à une catégorie, mais en passant d’un compte à l’autre, le budget reste le même, mais les montants affectés changent, parce que le budget ne prend pas en compte tous les comptes d’un même accès, mais ne considère que les opérations du compte en cours de visualisation.

J’ai personnellement deux comptes courants, et cela me semble très important de pouvoir définir un budget qui soit commun aux deux comptes.

En idéalisant un peu, on peut même se poser la question : est-ce qu’un budget devrait pouvoir affecter un sous-ensemble des comptes, sélectionnables par l’utilisateur.ice ? Par exemple, on pourrait imaginer que quelqu’un avec plusieurs comptes courants voudrait faire plusieurs budgets, un par compte. Je ne sais pas si en pratique, ça arrive (personnellement ça ne me serait pas utile, seul un budget global le serait).

Je pense que ce serait la manière la plus simple, vu qu’elle correspond à ce que tu décris comme comportement UX par défaut, si un nouveau mois n’a pas de budget propre pré-défini (la migration consisterait à juste créer un budget pour le mois le plus récent, ou le plus ancien ; à réfléchir).

Cool idée, en tous cas !


#3

Ça m’arrange pas du tout sauf si je peux ne sélectionner que le compte qui m’intéresse. Mais je pense que la question est la même que pour le reste de l’application et pas seulement limitée aux budgets : dans les graphiques, les opérations, etc., il faudrait pouvoir sélectionner un ou plusieurs comptes. Je proposerai une piste d’UI sur ça bientôt.

Je crois que c’est le cas de @ZeHiro. Ça s’éloigne de ce que je considère comme “simple” du coup. Par contre peut-être peut-on prévoir dans le modèle un id pour le budget, pour que ce soit évolutif, et bien plus tard revoir l’UI pour le permettre :stuck_out_tongue: ?

Pour la migration en effet si lorsqu’un budget n’est pas défini on prend le + récent (au lieu du + proche anciennement), ça règle le souci.


#4

Avoir un budget évolutif, serait parfait :slight_smile:

Par contre, j’ai une vision un peu différente, et encore plus compliquée à implémenter. J’aimerai avoir une approche “par projet” du budget. Typiquement un budget “normal”, et des sous budgets par vacances, par exemple, notamment avec une visualisation différente du budget global (une autre liste de catégories).

J’aimerai aussi pouvoir visualiser les opérations d’une catégories donnée, mais réparties sur plusieurs comptes (accès même), mais je sais pas si via l’approche par budgets, on pourrait arriver à ça facilement.

En ce qui concerne la possibilité de faire évoluer le budget avec le temps, c’est un gros oui @nicofrand. Cependant, deux approches:

  • la nouvelle valeur de niveaux est valable uniquement pour le mois précisé (juillet)
  • la nouvelle valeur de niveaux est valable à partir du mois précisé
    Le premier cas correspondant à un écart localisé du niveau, et pour les mois suivants, on revient à la valeur par défaut.
    Le second cas correspondant par exemple à une augmentation de salaire, mais avec la volonté de garder l’historique.

#5

C’est désormais ajouté dans Kresus : https://framagit.org/kresusapp/kresus/merge_requests/776.


Fonctionnement actuel des budgets : signification des couleurs/barres
#6

Bravo ! C’est un super pas vers des budgets plus intelligents et plus utiles ! :+1:


a fermé ce sujet #7