Champ calculé avec IF

Suite du sujet Attributs sup et champs calculés dans Produit :

Bonjour,

j’avais posté ce message et comme je ne renseigne pas toujours les champs quantiteavant et quantiteapres car ce n’est pas toujours nécessaire, j’ai un message d’erreur quand je charge la page produit car la valeur du calcul est null.

J’ai donc ajouté IF dans ma formule qui est la suivante (sur une ligne):

if($object->array_options['options_quantiteavant'] > 0) {(($object->array_options['options_quantiteavant'] - $object->array_options['options_quantiteapres']) / $object->array_options['options_quantiteavant'])*100}

et je reçois ce message quand je charge une page de produit:
Warning : Division by zero in E:\Autres\dolibarr\www\dolibarr\htdocs\core\lib\functions.lib.php(7042) : eval()'d code on line 1

Pour mémo, voici le code qui fonctionne sans condition:

(($object->array_options['options_quantiteavant'] - $object->array_options['options_quantiteapres']) / $object->array_options['options_quantiteavant'])*100

Savez-vous pourquoi ma condition ne fonctionne pas?

Voici le message d’erreur qui s’affiche quand les chmaps ne sont pas renseigner ou quand je met ‹ 1 › dans chaque champ:
Warning : Division by zero in E:\Autres\dolibarr\www\dolibarr\htdocs\core\lib\functions.lib.php(7042) : eval()'d code on line 1

Bonsoir :grinning:

à priori une instruction if n’est pas utilisable…
mais pour votre code, essayez plutôt :

!empty($object->array_options['options_quantiteavant']) ? (($object->array_options['options_quantiteavant'] - $object->array_options['options_quantiteapres']) / $object->array_options['options_quantiteavant'])*100:'???'

Bonne continuation

2 « J'aime »

c’est parfait! merci. Voici le code avec les balises car sinon les ’ ’ sont remplacés par

!empty($object->array_options['options_quantiteavant']) ? (($object->array_options['options_quantiteavant'] - $object->array_options['options_quantiteapres']) / $object->array_options['options_quantiteavant'])*100:'???'