Objets métiers
Objets métiers
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 à 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:
- htdocs/societe/class/societe.class.php pour les tiers
- htdocs/compta/facture/class/facture.class.php pour les factures clients
- htdocs/fourn/class/fournisseur.facture.class.php pour les factures fournisseurs
...
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()
- Lire (R pour Read): Utiliser la méthode fetch()
- Modifier (U pour Update): Utiliser la méthode update()
- Supprimer (D pour Delete): Utiliser la méthode delete()
Voir exemples plus bas...
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 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:
Dolibarr 3.1 et versions ultérieures :
$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) {
// ...
}
Avant Dolibarr 3.1 :
// This load the array linked_object with objects that link to this one
$object->load_object_linked($object->id, $object->element);
// To load array linked_object with objects that are linked by this one
$object->load_object_linked($object->id, $object->element);
// Then choose id with objects type you need
$org_order_array = $object->linked_object["commande"];
// Now use them
$thelinkedobjectid = $org_order_array[0];
// new order instance
$thelinkedobject = new Commande($object->db);
// load the object
$thelinkedobject->fetch($thelinkedobjectid);
Exemples
Exemple pour la création d'un tiers
Voici un exemple pour la création d'un tiers (société client par exemple):
Si on est dans le cas d'un script nouveau ou externe à Dolibarr, il est nécessaire de faire au début de son code, avant toute chose
include('/pathofdolibarrhtdocs/master.inc.php');
pour que l'environnement Dolibarr (objets $conf, $db, $lang et $user) soit créé. Si on veut que les actions (creation, mise à jour), soit associées dans le suivi à un utilisateur particulier, il est nécessaire de faire après l'include du master.inc.php
$user->fetch(0,'loginuser');
Ensuite, on peut manipuler nos actions métiers.
// On declare la classe que l'on va manipuler
include_once('/pathofdolibarrhtdocs/societe/class/societe.class.php');
// On cree une instance de l'objet à manipuler
$mycompany = new Societe($db);
// On renseigne ces caractéristiques
$mycompany->nom='Big Brother';
$mycompany->client=1;
// 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.
// Si on laisse commenté, Dolibarr mettra null dans les champs du user de création ou mise à jour.
// $user->fetch('loginuser');
// On invoque la creation
$id=$mycompany->create($user);
// Pour relire l'objet
$mycompany->fetch($id);
// Pour le mettre à jour
$mycompany->nom='Big Brother 2'
$mycompany->update($user);
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 de Dolibarr.