----------------------------------------------------- Facile ----------------------------------------------------- Dans la vue d'un compte, rajouter la somme des débits et la somme des crédits, ainsi que le solde du compte. --*-- Permettre la modification de la date d'une transaction et trier les transactions par la date. --*-- Dans la vue d'une transaction, afficher la somme des débits et la somme des crédits, ainsi que la différence entre les deux. --*-- Rajouter la fonctionnalité permettant la suppression d'une entrée dans une transaction. --*-- Rajouter la fonctionnalité permettant la modification d'un montant d'une entrée dans une transaction. --*-- Faire des vérifications avant de valider la création d'une nouvelle transaction : - un même compte ne doit pas apparaître 2 fois - somme des débit = somme des crédits ----------------------------------------------------- Moyen ----------------------------------------------------- Permettre la création d'un ensemble de comptes pouvant être considéré comme un seul compte. Un exemple de ce type d'ensemble serait "fournisseurs" pour regrouper tous les fournisseurs. Créer les ensembles "Coût" (Télécommunication, Électricité, Nourriture, etc), "Revenue" (Salaire, etc), "Actif" (Créances, Comptes bancaires, Stock de marchandise, etc) et "Passif" (Dettes). --*-- Rajouter la possibilité de limiter les informations affichées à une période précise. La vue d'un compte doit alors afficher à la fois le solde au début de la période et celui à la fin de la période. --*-- Rajouter la possibilité de charger plusieurs organisations simultanément dans le logiciel, et de pouvoir sélectionner entre ces organisations. --*-- Afin d'éviter des "constantes magiques" (comme la taille des diverses fenêtres) dans le code, mettre ces constantes (ainsi que d'autres expressions arbitraires Common Lisp) dans un fichier ~/.compta, et modifier le logiciel pour que ce fichier soit chargé avant l'exécution du logiciel. --*-- À la fin d'une période, créer le rapport "résultat" (la différence entre revenues et coûts). --*-- À la fin d'une période, créer le rapport "bilan" (la différence entre actif et passif). --*-- Automatiser le calcul de la TVA selon les taux en vigueur. --*-- Éviter que le logiciel ne plante en informant proprement l'utilisateur de la cause du problème. --*-- Écrire un ensemble de tests unitaires pour garantir le bon fonctionnement de l'application. S'appuyer pour cela sur un des frameworks décrits sur : http://www.cliki.net/test%20framework --*-- Faire du fichier "io.lisp" un projet Common Lisp à part entière, qui peut s'installer avec asdf-install depuis Internet. Écrire des tests unitaires en ce basant sur un des frameworks décrits dans http://www.cliki.net/test%20framework. Écrire aussi une petite documentation pour accompagner ce projet. ----------------------------------------------------- Difficile ----------------------------------------------------- Alors que certains achats peuvent être considérés comme des coûts lorsque le payement est effectué, ce n'est pas toujours le cas. L'achat de mobilier ou d'équipement avec une durée de vie qui dépasse celle de la période de comptabilité et traité différemment. Lorsque l'achat est effectué, il y a un transfert entre le compte bancaire, et un compte représentant l'équipement. Cet transfert ne modifie pas le résultat de l'opération. Puis chaque année (par exemple), on considère que l'équipement perd une partie de sa valeur (par exemple 20% chaque année pendant 5 ans). Ces montants sont donc transférés du compte pour l'équipement à un compte de coût. Ces dernières transactions influencent le résultat de l'opération et donc aussi d'autre aspects comme les impôts sur le résultat. Automatiser la création de ces dernières transactions lorsque le premier transfert est effectué. --*-- Partiellement parce que les comptables n'aiment pas des montants négatifs, le traitement de la TVA est en réalité un peu complexe. En réalité on manipule 6 comptes différents : tva-à-décaisser Ce compte est débité à chaque fois que l'entreprise verse une somme de tva aux autorités (c'est le compte bancaire qui est crédité). tva-à-encaisser Ce compte est crédité à chaque fois que l'entreprise reçois un payement de TVA des autorités. tva-versée Ce compte est débité à chaque fois qu'un achat est effectué. tva-collectée Ce compte est crédité à chaque fois qu'une vente est effectuée. tva-crédits tva-dettes Ces deux comptes indiquent à la fin de la période combien de TVA est due à la société ou par la société. Si la société doit de l'argent, alors c'est tva-dette qui est crédité, et si la société a payé plus de TVA qu'elle n'a collecté, alors c'est le compte tva-crédits qui est débité. Le compte tva-crédits est un compte dans le groupe "créances", et tva-dettes est un compte dans le groupe "dettes". À la fin de l'année, on émet assez de transactions pour les quatre premiers compte ainsi qu'au moins l'un des deux derniers aient un solde de 0. Automatiser la génération de ces transactions grâce à une commande "balance-vat". --*-- Permettre la manipulation du logiciel entièrement au clavier (sélection de comptes, enregistrement de transactions...). --*-- Simplifier l'enregistrement de nouvelles transactions en demandant au préalable à l'utilisateur le type de transaction à créer. En fonction de la réponse, le choix des comptes à impacter en débit et crédit pourra être réduit. --*-- Ajouter la possibilité d'avoir des graphiques. Par exemple, on veut pouvoir savoir comment sont réparties les dépenses mensuelles entre les différents comptes (alimentation, abonnements...). Vous pouvez pour cela utiliser soit cl-pdf vu au premier TD soit CLIM directement (voir le Clim II User Guide). --*-- Ajouter la planification de transaction automatique : les factures et les salaires mensuels par exemple. --*-- Implémenter la sauvegarde automatique et la création de versions de sauvegarde. S'inspirer de ce que fait Emacs en lisant les paragraphes "backup" et "auto-save file" de son manuel. Permettre que cela soit facilement paramétrable par ajout de code. --*-- Permettre l'utilisation d'un calendrier pour rentrer les dates (prendre "M-x calendar" dans Emacs et la section "Calendar/Diary" du manuel Emacs comme exemples). %%% Local Variables: %%% mode: text %%% coding: utf-8 %%% ispell-local-dictionary: "french" %%% End: