Extrafield Champ Calculé: Difference between revisions

From Dolibarr ERP CRM Wiki
Jump to navigation Jump to search
mNo edit summary
Tag: 2017 source edit
Tag: 2017 source edit
 
(8 intermediate revisions by 3 users not shown)
Line 6: Line 6:
Vous pouvez entrer ici une formule utilisant les propriétés objet ou tout code PHP pour obtenir des valeurs dynamiques. Vous pouvez utiliser toute formule compatible PHP, incluant l'opérateur conditionnel "?", et les objets globaux : $db, $conf, $langs, $mysoc, $user, $objectoffield ($object avant la V17).
Vous pouvez entrer ici une formule utilisant les propriétés objet ou tout code PHP pour obtenir des valeurs dynamiques. Vous pouvez utiliser toute formule compatible PHP, incluant l'opérateur conditionnel "?", et les objets globaux : $db, $conf, $langs, $mysoc, $user, $objectoffield ($object avant la V17).


[[File:Warning1.png]] depuis la V17 il ne faut plus utiliser $object/$obj mais $objectoffield
[[File:Warning.png]] depuis la V17 il ne faut plus utiliser $object/$obj mais $objectoffield


ATTENTION : Seulement quelques propriétés de l'objet $objectoffield pourraient être disponibles. Si vous avez besoin de propriétés non chargées, créez vous même une instance de l'objet dans votre formule, comme dans le deuxième exemple.
ATTENTION : Seulement quelques propriétés de l'objet $objectoffield pourraient être disponibles. Si vous avez besoin de propriétés non chargées, créez vous même une instance de l'objet dans votre formule, comme dans le deuxième exemple.
Line 12: Line 12:


Exemple de formule:
Exemple de formule:
<syntaxHighlight lang="php">
<syntaxhighlight lang="PHP">
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2) : ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2) : ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)
</syntaxHighlight>
</syntaxhighlight>


Exemple pour recharger l'objet:
Exemple pour recharger l'objet:
<syntaxHighlight lang="php">
<syntaxhighlight lang="PHP">
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetch($objectoffield->id)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5 : '-1'
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetch($objectoffield->id)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5 : '-1'
</syntaxHighlight>
</syntaxhighlight>
Un autre exemple de formule pour forcer le rechargement d'un objet et de son objet parent:
Un autre exemple de formule pour forcer le rechargement d'un objet et de son objet parent:
<syntaxHighlight lang="php">
<syntaxhighlight lang="PHP">
(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : 'Objet parent projet non trouvé'
(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : 'Objet parent projet non trouvé'
</syntaxHighlight>
</syntaxhighlight>




Line 40: Line 40:


{| class="wikitable"
{| class="wikitable"
|+ style="width:800px;" | MODULE PRODUIT  OBJECT PRODUIT/SERVICE
|+ style="width:800px;" |MODULE PRODUIT  OBJECT PRODUIT/SERVICE
|-
|-
!style="width:200px;" | NOM DE LA PROPRIETE
! style="width:200px;" |NOM DE LA PROPRIETE
!style="width:200px;" | TYPE DE LA PROPRIETE
! style="width:200px;" |TYPE DE LA PROPRIETE
!style="width:400px;" | CALCULABLE ?
! style="width:400px;" |CALCULABLE ?
|-
|-
|PRIX
|PRIX
Line 53: Line 53:


=Mise En Application=
=Mise En Application=
($objectoffield->array_options )+($objectoffield->array_options ) Simple addition
$objectoffield->array_options['options_xxxxxxxx1']+$objectoffield->array_options['options_xxxxxxxx2'] Simple addition


($objectoffield->array_options )*($objectoffield->array_options ) Simple Multiplication
$objectoffield->array_options['options_xxxxxxxx1']+$objectoffield->array_options['options_xxxxxxxx2'] Simple Multiplication


($objectoffield->array_options )-($objectoffield->array_options ) Simple subtraction
$objectoffield->array_options['options_xxxxxxxx1']+$objectoffield->array_options['options_xxxxxxxx2'] Simple subtraction




== Afficher l'adresse d'un tiers ==
==Afficher l'adresse d'un tiers==
<syntaxHighlight lang="php">
<syntaxhighlight lang="PHP">
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->socid) > 0)) ? $reloadedobj->address: ' '
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->socid) > 0)) ? $reloadedobj->address: ' '
</syntaxHighlight>
</syntaxhighlight>
== Afficher le champ complémentaire d'un tiers ==
==Afficher le champ complémentaire d'un tiers==
<syntaxHighlight lang="php">
<syntaxhighlight lang="PHP">
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->fk_soc ? $objectoffield->fk_soc : $objectoffield->socid) > 0)) ? $reloadedobj->array_options['options_soc_xx_conv'] : '-1'
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->socid) > 0)) ? $reloadedobj->array_options['options_xxxxxxxxx'] : '-1'
</syntaxHighlight>
</syntaxhighlight>
== Afficher la balance d'un tiers ==
 
<syntaxHighlight lang="php">
==Afficher la balance d'un tiers==
<syntaxhighlight lang="PHP">
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->rowid)) && ( $ret=$reloadedobj->getOutStandingBills())
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->rowid)) && ( $ret=$reloadedobj->getOutStandingBills())
) ? $ret['opened']: 666
) ? $ret['opened']: 666
</syntaxHighlight>
</syntaxhighlight>
== Afficher le nombre de facture ouvertes d'un tiers ==
==Afficher le nombre de facture ouvertes d'un tiers==
<syntaxHighlight lang="php">
<syntaxhighlight lang="PHP">
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->rowid)) && ( $ret=$reloadedobj->getOutStandingBills())
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->rowid)) && ( $ret=$reloadedobj->getOutStandingBills())
) ? sizeof($ret['refsopened']): 666
) ? sizeof($ret['refsopened']): 666
</syntaxHighlight>
</syntaxhighlight>
 
==Afficher le champ personnalisé d'un produit==
<syntaxhighlight lang="PHP">
(($reloadedobj = new Product($db)) && ($reloadedobj->fetch($objectoffield->fk_product))) ? $reloadedobj->array_options['options_xxxxxxxxx'] : 'Not found'
</syntaxhighlight>


== Afficher le champ personnalisé d'un produit ==
==Afficher le stock réel d'un produit==
<syntaxHighlight lang="php">
<syntaxhighlight lang="PHP">
(($reloadedobj = new Product($db)) && ($reloadedobj->fetch($objectoffield->fk_product))) ? $reloadedobj->array_options['options_xxxxxxxxx'] : 'Not found'</syntaxHighlight>
(($reloadedobj = new Product($db)) && ($reloadedobj->fetch($objectoffield->fk_product))) ? $reloadedobj-> stock_reel : 'Not found'
</syntaxhighlight>

Latest revision as of 13:07, 1 July 2025

PAGE EN COURS D ECRITURE

Principe

Vous pouvez entrer ici une formule utilisant les propriétés objet ou tout code PHP pour obtenir des valeurs dynamiques. Vous pouvez utiliser toute formule compatible PHP, incluant l'opérateur conditionnel "?", et les objets globaux : $db, $conf, $langs, $mysoc, $user, $objectoffield ($object avant la V17).

Warning.png depuis la V17 il ne faut plus utiliser $object/$obj mais $objectoffield

ATTENTION : Seulement quelques propriétés de l'objet $objectoffield pourraient être disponibles. Si vous avez besoin de propriétés non chargées, créez vous même une instance de l'objet dans votre formule, comme dans le deuxième exemple. Utiliser un champs calculé signifie que vous ne pouvez pas entrer vous même toute valeur à partir de l'interface. Aussi, s'il y a une erreur de syntaxe, la formule pourrait ne rien retourner.

Exemple de formule:

$objectoffield->id < 10 ? round($objectoffield->id / 2, 2) : ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Exemple pour recharger l'objet:

(($reloadedobj = new Societe($db)) && ($reloadedobj->fetch($objectoffield->id)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5 : '-1'

Un autre exemple de formule pour forcer le rechargement d'un objet et de son objet parent:

(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : 'Objet parent projet non trouvé'


Type de champ extrafield utilisable

Numerique Entier Decimale

Date Date/heure

Prix


propriétés d objet utilisable

MODULE PRODUIT OBJECT PRODUIT/SERVICE
NOM DE LA PROPRIETE TYPE DE LA PROPRIETE CALCULABLE ?
PRIX Decimale OUI


Mise En Application

$objectoffield->array_options['options_xxxxxxxx1']+$objectoffield->array_options['options_xxxxxxxx2'] Simple addition

$objectoffield->array_options['options_xxxxxxxx1']+$objectoffield->array_options['options_xxxxxxxx2'] Simple Multiplication

$objectoffield->array_options['options_xxxxxxxx1']+$objectoffield->array_options['options_xxxxxxxx2'] Simple subtraction


Afficher l'adresse d'un tiers

(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->socid) > 0)) ? $reloadedobj->address: ' '

Afficher le champ complémentaire d'un tiers

(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->socid) > 0)) ? $reloadedobj->array_options['options_xxxxxxxxx'] : '-1'

Afficher la balance d'un tiers

(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->rowid)) && ( $ret=$reloadedobj->getOutStandingBills())
) ? $ret['opened']: 666

Afficher le nombre de facture ouvertes d'un tiers

(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->rowid)) && ( $ret=$reloadedobj->getOutStandingBills())
) ? sizeof($ret['refsopened']): 666

Afficher le champ personnalisé d'un produit

(($reloadedobj = new Product($db)) && ($reloadedobj->fetch($objectoffield->fk_product))) ? $reloadedobj->array_options['options_xxxxxxxxx'] : 'Not found'

Afficher le stock réel d'un produit

(($reloadedobj = new Product($db)) && ($reloadedobj->fetch($objectoffield->fk_product))) ? $reloadedobj-> stock_reel : 'Not found'