15
edits
(Ajout des opérateurs et fonctions connus) |
|||
| Line 55: | Line 55: | ||
Ce module est donc très puissant. Il ne lui manque que la gestion des tests conditionnels (accessible en remplaçant la librairie support evalmath par celle de Moodle (https://github.com/moodle/moodle/blob/master/lib/evalmath/evalmath.class.php)). Lorsque les calculs deviennent complexes (en tout cas longs et verbeux), il peut également être utile de modifier le champ expression de la table llx_c_price_expression qui a une longueur maximale de 80 caractères par défaut. | Ce module est donc très puissant. Il ne lui manque que la gestion des tests conditionnels (accessible en remplaçant la librairie support evalmath par celle de Moodle (https://github.com/moodle/moodle/blob/master/lib/evalmath/evalmath.class.php)). Lorsque les calculs deviennent complexes (en tout cas longs et verbeux), il peut également être utile de modifier le champ expression de la table llx_c_price_expression qui a une longueur maximale de 80 caractères par défaut. | ||
== | ==Opérateurs== | ||
Ne pas hésiter à compléter la liste. | |||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+ | ||
! | |||
! | |||
! colspan="2" |Fonctionne dans : | |||
! | |||
|- | |||
!Caractère | !Caractère | ||
!Rôle | !Rôle | ||
!Editeur d'expression de prix | |||
!Attributs supplémentaires | |||
!Exemple | |||
|- | |- | ||
|price = | |price = | ||
|A toujours placer au début de l'expression (correspond à la variable calculée). | |A toujours placer au début de l'expression (correspond à la variable calculée). | ||
En alternative, ne rien indiquer fonctionne aussi. | En alternative, ne rien indiquer fonctionne aussi. | ||
|X | |||
| | |||
|price = #supplier_min_price# | |||
<nowiki>#</nowiki>supplier_min_price# | |||
|- | |||
|'''#'''nomvar'''#''' | |||
|Pour signaler une variable où nomvar est le nom de la variable dans le code (à placer au début et à la fin du nom de variable sans espace) | |||
|X | |||
| | |||
|#supplier_min_price# | |||
|- | |||
| + | |||
|Addition | |||
|X | |||
|X | |||
|3 + 2 | |||
|- | |- | ||
| | | - | ||
| | |Soustraction | ||
|X | |||
|X | |||
|3 - 2 | |||
|- | |- | ||
|* | |* | ||
|Multiplication | |Multiplication | ||
|X | |||
|X | |||
|3 * 2 | |||
|- | |- | ||
|/ | |/ | ||
|Division | |Division | ||
|X | |||
|X | |||
|3 / 2 | |||
|- | |||
|( ) | |||
|Parenthèses à utiliser pour la priorité entre multiplication et addition. | |||
|X | |||
|X | |||
|(2+3)*2 | |||
|- | |- | ||
| | |( ) | ||
| | |Parenthèses à utiliser autour d'une condition pour la délimiter si elle est imbriquée dans une autre condition. | ||
| | |||
|X | |||
|($object->weight > 0 ? 20 : 0 ) > 0 ? 'jaune' : 'rouge' | |||
|- | |- | ||
| - | |'''$'''nomtable'''->'''nomvar | ||
| | |A utiliser si la variable nomvar est dans une table nomtable du code pouvant être appelée (ex : Attributs supplémentaires du module Produits) | ||
| | |||
|X | |||
|$object->weight | |||
|- | |- | ||
|; | |; | ||
|Pour séparer les expressions s'il y en a plusieurs dans la même formule | |Pour séparer les expressions s'il y en a plusieurs dans la même formule | ||
| | |||
|X | |||
| | |||
|- | |||
|A + B | |||
|"OU" logique (la condition A ou la condition B ou les deux doivent être vrais) | |||
| | |||
|X | |||
|isset($object->weight) && $object->weight > 0 | |||
|- | |||
|A && B | |||
|"ET" logique (les conditions A et B doivent être vraies) | |||
| | |||
|X | |||
| | |||
|- | |||
|A == B | |||
|Egalité logique (A doit être égal à B pour valider la condition) | |||
| | |||
|X | |||
| | |||
|- | |||
|A > B | |||
|A doit être strictement plus grand que B | |||
| | |||
|X | |||
| | |||
|- | |||
|A < B | |||
|A doit être strictement plus petit que B | |||
| | |||
|X | |||
| | |||
|- | |||
|X ? Y : Z | |||
|Equivaut respectivement au "then" et au "else" de l'expression "if X then Y else Z". | |||
| | |||
|X | |||
|$object->weight > 0 ? 20 : 0 | |||
|} | |||
== Fonctions == | |||
Ne pas hésiter à compléter la liste. | |||
{| class="wikitable" | |||
|+ | |||
!Fonction | |||
!Rôle | |||
!Exemple | |||
|- | |||
|X ? Y : Z | |||
|If X Then Y Else Z : si la condition X est satisfaite, appliquer Y, sinon appliquer Z. | |||
|weight > 0 ? 2 * weight : 0 (si le poids est supérieur à zéro, renvoyer deux fois le poids, sinon renvoyer zéro). | |||
|- | |||
|isset(X) | |||
|Vérifie si la variable X a une valeur définie. | |||
|Si Poids = "" et Volume = 500 mL, le poids n'a pas de valeur définie -> isset(Poids) = 0. | |||
|- | |||
|round(X,2) | |||
|Arrondit la variable X à 2 chiffres après la virgule. | |||
|round(2.564,2) = 2.56 | |||
|} | |} | ||
| Line 101: | Line 207: | ||
|- | |- | ||
|#supplier_min_price# | |#supplier_min_price# | ||
|<nowiki>Produits | Services -> | |<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | ||
|Prix d'achat | |Prix d'achat | ||
|Prix quantité min. | |Prix quantité min. | ||
| Line 107: | Line 213: | ||
|- | |- | ||
|#supplier_min_price_with_discount# | |#supplier_min_price_with_discount# | ||
|<nowiki>Produits | Services -> | |<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | ||
|Prix d'achat | |Prix d'achat | ||
|Prix quantité min. * ( 1 - Remise pour cette qté. ) | |Prix quantité min. * ( 1 - Remise pour cette qté. ) | ||
| Line 113: | Line 219: | ||
|- | |- | ||
|#pmp# | |#pmp# | ||
|<nowiki>Produits | Services -> | |<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | ||
|Prix d'achat | |Prix d'achat | ||
|Prix moyen pondéré (PMP) | |Prix moyen pondéré (PMP) | ||
| Line 119: | Line 225: | ||
|- | |- | ||
|#supplier_quantity# | |#supplier_quantity# | ||
|<nowiki>Produits | Services -> | |<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | ||
|Prix d'achat | |Prix d'achat | ||
|Qté achat minimum | |Qté achat minimum | ||
| Line 125: | Line 231: | ||
|- | |- | ||
|#supplier_tva_tx# | |#supplier_tva_tx# | ||
|<nowiki>Produits | Services -> | |<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | ||
|Prix d'achat | |Prix d'achat | ||
|Taux TVA (pour ce produit/fournisseur) | |Taux TVA (pour ce produit/fournisseur) | ||
| Line 131: | Line 237: | ||
|- | |- | ||
|#tva_tx# | |#tva_tx# | ||
|<nowiki>Produits | Services -> | |<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | ||
|Prix de vente | |Prix de vente | ||
|Taux de taxe par défaut | |Taux de taxe par défaut | ||
| Line 137: | Line 243: | ||
|- | |- | ||
|#weight# | |#weight# | ||
|<nowiki>Produits | Services -> | |<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | ||
|Produit | |Produit | ||
|Poids | |Poids | ||
| Line 165: | Line 271: | ||
|- | |- | ||
|#cost_price# | |#cost_price# | ||
|<nowiki>Produits | Services -> | |<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | ||
|Prix d'achat | |Prix d'achat | ||
|Prix de revient | |Prix de revient | ||
| Line 171: | Line 277: | ||
|- | |- | ||
|#price_min# | |#price_min# | ||
|<nowiki>Produits | Services -> | |<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | ||
|Prix de vente | |Prix de vente | ||
|Prix min | |Prix min | ||
| Line 177: | Line 283: | ||
|- | |- | ||
|#length# | |#length# | ||
|<nowiki>Produits | Services -> | |<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | ||
|Produit | |Produit | ||
|Longueur | |Longueur | ||
| Line 183: | Line 289: | ||
|- | |- | ||
|#surface# | |#surface# | ||
|<nowiki>Produits | Services -> | |<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | ||
|Produit | |Produit | ||
|Surface | |Surface | ||
| Line 196: | Line 302: | ||
|+ | |+ | ||
!Formule | !Formule | ||
!Chemin IHM correspondant | |||
!Onglet IHM correspondant | |||
!Champ IHM correspondant | |||
!Usage | !Usage | ||
!Testé dans la version Dolibarr | !Testé dans la version Dolibarr | ||
|- | |- | ||
|price = #supplier_min_price_with_discount# * #global_coefvente# | |price = #supplier_min_price_with_discount# * #global_coefvente# | ||
|<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | |||
|Prix de vente | |||
|Modifier prix par défaut -> Editeur d'expression de prix | |||
|Calcul du prix de vente TTC à partir du prix d'achat HT, de la remise produit, de la marge globale et de la TVA. | |Calcul du prix de vente TTC à partir du prix d'achat HT, de la remise produit, de la marge globale et de la TVA. | ||
|v20.0.2 | |v20.0.2 | ||
|- | |- | ||
|price = #supplier_min_price# * #global_coefvente# | |price = #supplier_min_price# * #global_coefvente# | ||
|<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | |||
|Prix de vente | |||
|Modifier prix par défaut -> Editeur d'expression de prix | |||
|Calcul du prix de vente TTC à partir du prix d'achat HT, de la marge globale et de la TVA. | |Calcul du prix de vente TTC à partir du prix d'achat HT, de la marge globale et de la TVA. | ||
|v20.0.2 | |v20.0.2 | ||
|- | |- | ||
|price = #cost_price# * #global_coefvente# | |price = #cost_price# * #global_coefvente# | ||
|<nowiki>Produits | Services -> Produits -> Liste -> choisir le produit</nowiki> | |||
|Prix de vente | |||
|Modifier prix par défaut -> Editeur d'expression de prix | |||
|Calcul du prix de vente TTC à partir du prix de revient, de la marge globale et de la TVA. | |Calcul du prix de vente TTC à partir du prix de revient, de la marge globale et de la TVA. | ||
|v20.0.2 | |||
|- | |||
|isset($object->weight) && $object->weight > 0 ? | |||
round($object->price_ttc / ($object->weight_units == '-3' ? $object->weight / 1000 : $object->weight), 2) : | |||
(isset($object->volume) && $object->volume > 0 ? | |||
round($object->price_ttc / ($object->volume_units == '0' ? $object->volume / 1000 : $object->volume), 2) : | |||
0) | |||
|Accueil -> Configuration -> Modules/Applications -> PRODUITS | |||
|Attributs supplémentaires | |||
|Nouvel attribut | |||
|Cette formule calcule le Prix au kg ou au L du produit. Elle permet de gérer si le produit est solide (au poids) ou liquide (au volume), gère aussi si l’unité est g (-3) ou kg (0), ou bien millilitre (0) ou litre (98), et fait un arrondi à 2 chiffre après la virgule. | |||
|v20.0.2 | |v20.0.2 | ||
|} | |} | ||
edits