prog de comptabilite (francais)

Marc SCHAEFER schaefer at alphanet.ch
Thu May 2 19:48:23 CEST 2002


On Wed, 1 May 2002, Frederic Schutz wrote:

>   No  Compte Lot Libellé                             Montant
>   1   1000   1   Paiement Marc pour cours SQl        (250.-)
>   2   3000   1   Marc, cours SQL                      200.-
>   3   3010   1   Marc, frais déplacement pour cours    50.-

donc, non seulement tu veux que le numéro soit séquentiel sans trou, mais
en plus que tu puisses en allouer N atomiquement (sauf si je mélange deux
numéros: la remarque d'Alex me semble importante). Personnellement,
j'aimais bien l'idée de la table lot qui évitait ce genre de contraintes,
au prix peut-être d'une non adéquation 1-1 avec le modèle papier. 

Si tes numéros sont externes (reliés à des numéros papier vérifiables), et
non générés par la base, c'est encore faisable, sinon cela me semble d'une
complexité très importante si l'on veut cacher tout cela. 

La seule chose qui me vient à l'idée serait alors le comportement suivant:
le programme utilisateur remplit une table temporaire avec (compte,
libellé, montant) puis une fois terminé appelle une fonction PL/SQL qui:

   BEGIN WORK;
   - atomiquement alloue les numéros en un seul bloc (adaptation
     de la fonction f_ecriture_generate_numero())
   - insère toutes ces nouvelles écritures avec leurs numéros et leur
     numéro de lot (1er numéro du bloc)
   - vérifie la contrainte (ou fait par une règle/trigger, dans ce cas
     la transaction doit tourner en mode DEFERRED CONSTRAINTS ou qqch
     de ce genre si je me souviens bien).
        La contrainte: pour chaque lot, la somme des montants doit
                       être nul.
   COMMIT WORK;

Avantage: le programme utilisateur ne doit pas trop jouer avec tout cela.

Qu'en pensent ceux qui ont de l'expérience pratiques de ce genre de choses ?

Y-a-t-il des idées alternatives ?





More information about the compta mailing list