Utilisation de transactions

aa37
Invité n'ayant pas de compte PHPfrance

14 mai 2007, 19:16

Ceci concerne PHP et MySQL

Plateforme x86, Windows XP Pro, Xamp5, PHPDesigner Pro

Bonjour,

1. Remarques préliminaires
Dans les pays en voie de développement, la piraterie informatique est très répandue, faute de moyens financiers. Au cours de mes missions, je m'efforce de promouvoir les logiciels et solutions libres en alternative au piratage des logiciels du leader du marché.

2. Contexte
Je suis Ingénieur civil en charge de projets dans des pays en voie de développement. La durée de mes missions va de quelques mois à quelques années.

La réaction première d'un ingénieur de terrain lambda est de faire la compta avec un tableur, sauf qu'on viole ainsi les règles fondamentales de la comptabilité et que les auditeurs nous tombent dessus à chaque fois. De plus, le contrôle budgétaire (adéquation entre engagements et postes budgétaires) doit se faire manuellement et que j'y passe des nuits.

Lors d'une mission récente, je disposais d'une suite Office Pro, et donc d'ACCESS. J'ai commencé à développer une nouvelle solution avec ACCESS, mais faute de temps je n'ai pu la finir. Pourtant, j'avais pu produire des états et rapports que ne permettait pas Excel en juste trois clics.

Il existe des logiciels sur le marché, adaptés à la comptabilité d'entreprise, mais très mal aux cas de figure que je rencontre. De plus, le temps d'acquérir un logiciel commercial et d'y former les comptables, il faut assurer le quotidien, et j'en reviens donc à mon propos.

3. Objectif
De retour en France, je me suis proposé de développer une solution prototype personnelle en logiciels libres.

Ma première réaction a été de connecter OpenOffice à une BD MySQL. Hélas i) les possibilités de l'interface Base sont encore loin de valoir celles d'ACCESS/VBA. ii) A ma connaissance, OpenOffice n'inclut pas, au contraire d'ACCESS, un module Crystal Reports.

A ce stade, j'ai donc pensé à Apache/PHP/MySQL. Je m'autoforme depuis quelque temps mais je ne suis pas au top, d'autant que je suis maintenant un vieux bouc [en anglais, old goat :wink: ] et que l'apprentissage est de plus en plus laborieux.

4. Problème posé
Je finis donc par en venir au fait. Dans toute comptabilité qui se respecte, donc à double compte, on crée une transaction, dans laquelle nichent [nest] deux ou plusieurs opérations (ventilation), la balance débit-crédit devant au final être nulle.

Pour ce que je sais des SGBDR, il faut créer une table Transactions, une table Opérations, et une table de liaison dont l'index serait formé des deux clefs étrangères le compteur de transactions et le compteur d'opérations.

Mes questions donc:

* Comment effectuer avec PHP le remplissage approprié des champs des trois tables, dans une approche transactionnelle. Je ne cherche pas de solution toute faite, mais comment m'y prendre, ou bien encore l'adresse d'un site où c'est déjà expliqué.

* Existe-t-il une alternative libre à Crystal Reports?

Quand j'aurai réalisé la partie "Compta" je me préoccuperai de la partie "Contrôle budgétaire". Ceci est aussi un jeu intellectuel pour moi. Si je parviens à mon objectif dans un délai suffisamment court pour l'utiliser moi-même sur le terrain, je pourrai, à ma retraite, laisser à mes jeunes collègues une contribution utile (je l'espère) et libre pour la gestion de projets en brousse.

J'ai été long, veuillez me le pardonner.

Merci de vos suggestions, et à bientôt je l'espère

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

15 mai 2007, 09:49

Je pense que tu veux dire par transaction, un journal comptable qui trace le détail daté d'une transaction (vente, achat, ...) sous forme d'opérations valorisées ciblant des comptes (débit/crédit).

En programmation Web on peut concevoir un formulaire de saisie du journal comptable qui dans le cadre d'une session de travail côté serveur alimente le journal comptable lui même.
Une fois le journal est terminé et validé son enregistrement dans une base ou un fichier peut se faire.
La ventilation dans le grand livre (comptes) peut aussi se faire à partir du journal validé (mise à jour des comptes de base)

Les techniques conseillées à maitriser pour cet ouvrage sont les suivantes:
  • 1. Le passage de paramétres POST et GET entre formulaire et php
    2. La création et l'usage de variables de session
    3. La lecture/écriture dans des fichiers ou dans une base de données (mysql par exemple)
    4. l'affichage au formats HTML évolués (titres, listes, tables ...)
    5. du javascript pour dynamiser l'interface utilisateur
    6. SQL pour utiliser une base de données (requêtes: INSERT, UPDATE, DELETE et SELECT)
Au niveau conceptuel, il faut poser les régles de gestion qui réglementent l'écritue et la mise à jour de l'info dans la base de données. Ainsi que les régles de manipulation des données de l'interface utilisateur

Quant à la question:
* Comment effectuer avec PHP le remplissage approprié des champs des trois tables, dans une approche transactionnelle. Je ne cherche pas de solution toute faite, mais comment m'y prendre, ou bien encore l'adresse d'un site où c'est déjà expliqué.
Je ne sais pas comment tu comptes saisir les données mais je suppose que tu saisi tout une transaction (n opérations balancées), le schèma suivant trace ce fonctionnement en utilisant une mémoire de session intermédiaire pour accélerer le travail et permettre des révisions avant d'enregistrer dans la BDD:
  • 1 temps: Formulaire (n opérations+une date) ----- données transmises ----> programme php (données reçues)
    1.1 temps: programme php (données reçues) ---> Mémoire de la session de travail (écriture)
    1.2 temps: programme php (données écrites) --- retour ---> Formulaire
    2 temps: Formulaire (validation) ---> programme php --- mémoire session (n opérations+une date)--> SQL (INSERT) ---> table(s) de BDD (écriture)
    2.1 temps: programme php (données écrites) --- retour ---> Formulaire
Modifié en dernier par sadeq le 15 mai 2007, 10:23, modifié 2 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

ViPHP
ViPHP | 5924 Messages

15 mai 2007, 10:15

Petite curiosité aa37, as tu pensé au Delphi, au C++ ou au java pour faire ton logiciel ? Ce serait tout de même plus approprié que PHP ou un module OpenOffice.

Eléphant du PHP | 259 Messages

15 mai 2007, 13:18

Hello,

Accessoirement, si tu veux t'orienter vers du libre, tu as aussi la solution d'oublier Windows et de chercher du coté de Linux... Cela évite par la même occasion de payer/pirater une license windows. Il existe probablement tout un tas de logiciels libres qui correspondront à ton besoin sous cet OS.