Pour des contrats de maintenance souscrits pour des modules différents sur plusieurs années, j’ai un prix initial indexé sur la variation de l’indice Syntec (ou autre) qui est donc mis à jour chaque année selon la formule:
P=Po (S/So)
où
P: prix actuel
P0: prix initial (cf. contrat)
S: indice SYNTEC actuel: 267.2 (avr 18)
S0: indice SYNTEC initial: 244.7 (avr 14)
Une Trésorerie m’impose le présentation suivante :
faire figurer le prix unitaire de départ et dans une autre colonne le prix unitaire révisé en ayant soin de préciser quelque part la formule et les indices de révision, soit :
description | prix initial P0 | indice S0 | indice S | prix actuel P
Je pourrais saisir le prix initial dans le champ 3Prix Unitaire H.T", calculer le coefficient S/S0 et le saisir dans le champ quantité en saisissant les deux indices dans la description.
Mais j’aimerais quelque chose de plus « propre » en utilisant les « extrafields » de lignes. L’actualisation ne peut se faire au niveau du total car il y a eu des avenants et l’indice initial n’est pas toujours le même.
D’où mes questions :
existe-t-il déjà une solution de ce type
est-il possible de régler la question avec extrafields + modèle de devis/facture personnalisé + triggers sans modifier le code (afin de simplifier les mises à jour)
oui ça existe j’ai fait un module qui facture le volume en fonction des extrafields longeurlargeurhauteur, vous trouverez le code ici : https://github.com/ksar-ksar/Dolibarr_Volume Si mettre les mains dans le code ne vous fait pas peur c’est facile.
Oui tout à fait
Je pense oui j’ai fait la même chose. Aprés pour éviter un module supplémentaire, vous pouvez utiliser la fonction calcul des extrafields mais je suis pas sur d’arriver à la même chose (à tester).
Bonjour ksar,
Merci bien. Je vais creuser…
Concernant le #2 j’entendais triggers du SGBD
Concernant #3, la fonction calcul des extrafields éviterait-elle tout ajout/modification de code PHP ?
L’idée n’est pas de ne pas coder mais de centraliser toute la personnalisation dans la BD afin de simplifier les mises à jour. C’était l’objet de la question #2 et je ne suis pas sûr que votre oui soit aussi large.
SGBD ? Dolibarr fournit des triggers et cela que j’utilise dans mon module
en utilisant la fonction calcul des extra-fields vous pourriez peut-être vous passer de module supplémentaire mais pas de modèle de devis/facture personnalisé
Système de Gestion de Base de Données (PostgreSQL, mariaDb, SqlServer, Oracle, SQLite
Oui, c’est l’idée de ne pas avoir de code PHP spécifique; seulement une personnalisation de la BD et des modèles de documents.
A moins qu’un modèle de document personnalisé nécessite forcément un bout de code PHP ?
L’avantage de travailler avec les trigger de Dolibarr c’est une fois que vous aurez calculé et injecté la nouvelle quantité pour une ligne avec les données des extrafields vous pourrerz faire à appel aux fonction de mise à jour de la facture qui vont recaculer la ligne (HT,TVA,TTC,REMISE) etc et le total de la facture.
Si vous attaquez directement la base de donnée vous aurez 100% de chance de casser quelque chose en mettant pas toutes les tables à jour (personnellement je ne connais pas tout ce que met à jour la fonction DOlibarr de calcul de prix d’une linge de facture/devis/commande).
Généralement les modelés ODT sont peu utilisés car plus difficile d’obtenir exactement ce que l’on veut. Ils sont utilisés pour des choses « simples »