Champs Calculés et SQL

Bonjour.
J’ai besoin d’afficher un champs calculé dans mon agenda ‹ PAX › ce champs est la somme de l’extrafields des contact assignés a cet événement.

Dans l’aide il est dit que l’on peux utiliser tout code PHP j’ai donc crée la requette suivante (elle fonctionne sur la base de donnée et me renvois ce qu’il me faut) :

SELECT sum(doli_socpeople_extrafields.nbrctc1)
FROM doli_socpeople_extrafields, doli_socpeople, doli_actioncomm, doli_actioncomm_extrafields, doli_actioncomm_resources
WHERE doli_socpeople.rowid=doli_socpeople_extrafields.fk_object
AND doli_actioncomm.id=doli_actioncomm_extrafields.fk_object
AND doli_actioncomm_resources.fk_actioncomm=doli_actioncomm.id
AND doli_actioncomm_resources.element_type=« socpeople »
AND doli_actioncomm_resources.fk_element=doli_socpeople_extrafields.fk_object
AND doli_actioncomm.id=$object->id)

Si je la rentre tel quel ca ne fonctionne pas.
Si j’ajoute du PHP
<?php
mysql_query()
?>

Ca ne fonctionne pas
Si je ne met que
mysql_query()

ca ne fonctionne pas

En essayant de créer une variable etr en l’executant :

(($sql=SELECT sum(doli_socpeople_extrafields.nbrctc1)
FROM doli_socpeople_extrafields, doli_socpeople, doli_actioncomm, doli_actioncomm_extrafields, doli_actioncomm_resources
WHERE doli_socpeople.rowid=doli_socpeople_extrafields.fk_object
AND doli_actioncomm.id=doli_actioncomm_extrafields.fk_object
AND doli_actioncomm_resources.fk_actioncomm=doli_actioncomm.id
AND doli_actioncomm_resources.element_type=« socpeople »
AND doli_actioncomm_resources.fk_element=doli_socpeople_extrafields.fk_object
AND doli_actioncomm.id=$object->id))&& executeSQL($sql)

ou
executeSQL(SELECT sum(doli_socpeople_extrafields.nbrctc1)
FROM doli_socpeople_extrafields, doli_socpeople, doli_actioncomm, doli_actioncomm_extrafields, doli_actioncomm_resources
WHERE doli_socpeople.rowid=doli_socpeople_extrafields.fk_object
AND doli_actioncomm.id=doli_actioncomm_extrafields.fk_object
AND doli_actioncomm_resources.fk_actioncomm=doli_actioncomm.id
AND doli_actioncomm_resources.element_type=« socpeople »
AND doli_actioncomm_resources.fk_element=doli_socpeople_extrafields.fk_object
AND doli_actioncomm.id=$object->id)

Je sèche un peu

Bonjour @flavy77

juste sur la forme, tu as ouvert un 2ème post ici www.dolibarr.fr/forum/t/champs-calcules-et-sql/28982/1
sur le même sujet. Ce serai bien de rationaliser, après pour ton problème, je suis désolé, mais mes connaissances en php sont trop limitées.

Bonjour

Avez vous trouvé une solution ?

Je sèche également sur la syntaxe de ces champs.

Bonjour :happy:

pour un problème similaire, j’ai mis en oeuvre une solution simple avec un peu de code php approprié

mysql_query('SELECT sum(doli_socpeople_extrafields.nbrctc1)
FROM doli_socpeople_extrafields, doli_socpeople, doli_actioncomm, doli_actioncomm_extrafields, doli_actioncomm_resources
WHERE doli_socpeople.rowid=doli_socpeople_extrafields.fk_object
AND doli_actioncomm.id=doli_actioncomm_extrafields.fk_object
AND doli_actioncomm_resources.fk_actioncomm=doli_actioncomm.id
AND doli_actioncomm_resources.element_type="socpeople"
AND doli_actioncomm_resources.fk_element=doli_socpeople_extrafields.fk_object
AND doli_actioncomm.id=($obj->id ? $obj->id : ($obj->rowid ? $obj->rowid : $object->id))');

vous pouvez me contacter à petitcamionbleu_at_free.fr

Bonne continuation

Bonjour

Sur une ligne de commande je voudrai créer un extrafield qui me donne l’id du produit commandé

J’ai essayé la formule suivante pour le champs calculé d’un attribut de ligne de commande fournisseur type chaine: $object->lines[0]->fk_product
============= cela me donne la valeur voulue de la première ligne de la commande

Quelle formule pour récupérer la valeur de la ligne courante ?
J’ai testé : $object->lines[$i]->fk_product
mais cela ne fonctionne pas.

Le Wiki prévu pour ces extrafields ne m’aide pas.
Après 3 semaines de réflexion qui voudra m’aider ?
D’avance merci .

Bonjour :happy:

Tout est envisageable, mais pour retrouver le fk_product d’une ligne dans une commande ou une facture, ça n’est vraiment pas facile…

vous pouvez me contacter à petitcamionbleu_at_free.fr

Bonne continuation