Changes

→‎Lien entre Objets métiers: Exemple mis à jour pour les versions plus récentes de Dolibarr où load_object_linked est remplacé par fetchObjectLinked
Line 1: Line 1:  +
<!-- BEGIN interlang links -->
 +
<!-- Do NOT edit this section
 +
    Links below are automatically managed by PolyglotBot
 +
    You can edit links on the English source page : Business_Objects -->
 +
[[en:Business_Objects]]
 +
[[es:Objetos_de_negociado]]
 +
[[zh:业务对象]]
 +
<!-- END interlang links -->
 +
 
{{TemplateDocDev}}
 
{{TemplateDocDev}}
   Line 4: Line 13:  
Tous les objets métiers sont définis par une classe PHP qui hérite de la classe CommonObject (définie dans le fichier commonobject.class.php).
 
Tous les objets métiers sont définis par une classe PHP qui hérite de la classe CommonObject (définie dans le fichier commonobject.class.php).
   −
Pour trouver la classe qui correspond à l'objet métier qui vous interessent, parcourez l'arborescence de fichiers de Dolibarr, les classes se trouvent dans un sous répertoire class d'un répertoire en rapport avec l'objet.
+
Pour trouver la classe qui correspond à l'objet métier qui vous interessent, parcourez l'arborescence de fichiers de Dolibarr à la recherche des fichier  '''*/class/*.class.php'''. En effet, toutes les classes se trouvent dans un sous répertoire class d'un répertoire en rapport avec l'objet.
 
Par exemple:
 
Par exemple:
 
* htdocs/societe/class/societe.class.php  pour les tiers
 
* htdocs/societe/class/societe.class.php  pour les tiers
Line 11: Line 20:  
...
 
...
   −
Chaque objet métiers possède les 4 méthodes CRUD à utiliser pour réaliser vos lectures ou mise à jours:
+
Chaque classe métier possède les 4 méthodes CRUD à utiliser pour réaliser vos lectures ou mises à jours en base:
 
* Créer (C pour Create): Utiliser la méthode create()
 
* Créer (C pour Create): Utiliser la méthode create()
 
* Lire (R pour Read): Utiliser la méthode fetch()
 
* Lire (R pour Read): Utiliser la méthode fetch()
Line 20: Line 29:     
= Lien entre Objets métiers =
 
= Lien entre Objets métiers =
Certains objets métiers sont liés les uns aux autres. Ceci est fait dans Dolibarr via la [[Table llx_element_element]]. Mais vousn'avez pas à lire cette table pour récupérer les objets liés à un autre.
+
Certains objets métiers sont liés les uns aux autres. Ceci est fait dans Dolibarr via la [[Table llx_element_element]]. Mais vous n'avez pas à lire cette table pour récupérer les objets liés à un autre.
voici la portion de code qui montre comment faire cela:
+
Voici la portion de code qui montre comment faire cela:
 +
 
 +
Dolibarr 3.1 et versions ultérieures :
 +
<source lang="php">
 +
$commande = new Commande($db);
 +
$commande->fetch($commande_id);
 +
 
 +
 
 +
// on veut récupérer des factures à partir d’une commande dont on connaît l’ID
 +
$result = $commande->fetchObjectLinked($commande->id, 'commande', null, 'facture');
 +
if ($result <= 0) {
 +
    // erreur
 +
}
 +
 
 +
// important : les tableaux créés sont associatifs : leurs clés sont des rowid de llx_element_element.
 +
 
 +
 
 +
// FAUX (renverra NULL):
 +
$facture_id = $commande->linkedObjectsIds['facture'][0]
 +
 
 +
// CORRECT:
 +
$facture_id = array_values($commande->linkedObjectsIds['facture'])[0]
 +
 
 +
// MIEUX (permet de gérer le cas où il y aurait plus d’une facture) :
 +
foreach ($commande->linkedObjectsIds['facture'] as $element_element_id => $facture_id) {
 +
    // ...
 +
}
 +
</source>
 +
 
 +
Avant Dolibarr 3.1 :
 
<source lang="php">
 
<source lang="php">
 
// This load the array linked_object with objects that link to this one
 
// This load the array linked_object with objects that link to this one
Line 56: Line 94:  
</source>
 
</source>
   −
Ensuite, on peut manipuler réaliser nos actions métiers.
+
Ensuite, on peut manipuler nos actions métiers.
    
<source lang="php">
 
<source lang="php">
Line 71: Line 109:  
// Si on veut que l'action de création soit associé a un utilisateur 'loginuser' particulier,
 
// Si on veut que l'action de création soit associé a un utilisateur 'loginuser' particulier,
 
// il faut decommenter cette ligne pour charger les caractéristiques de cet utilisateur.
 
// il faut decommenter cette ligne pour charger les caractéristiques de cet utilisateur.
// Si on laisse commenter, Dolibarr mettra null dans les champs du user de création ou mise a jour.
+
// Si on laisse commenté, Dolibarr mettra null dans les champs du user de création ou mise à jour.
 
// $user->fetch('loginuser');
 
// $user->fetch('loginuser');
 
   
 
   
Line 77: Line 115:  
$id=$mycompany->create($user);
 
$id=$mycompany->create($user);
 
   
 
   
// Pour charger l'objet
+
// Pour relire l'objet
 
$mycompany->fetch($id);
 
$mycompany->fetch($id);
 
   
 
   
// Pour mettre a jour
+
// Pour le mettre à jour
 +
$mycompany->nom='Big Brother 2'
 
$mycompany->update($user);
 
$mycompany->update($user);
 
</source>
 
</source>
    
== Autres exemples ==
 
== Autres exemples ==
Vous trouverez d'autres exemples de manipulation d'objet Dolibarr (Création, Lecture, Modification, Suppression) dans le répertoire dev/samples du snapshot CVS de Dolibarr.
+
Vous trouverez d'autres exemples de manipulation d'objet Dolibarr (Création, Lecture, Modification, Suppression) dans le répertoire dev/samples du snapshot de Dolibarr.