Interfaces from foreign systems toward Dolibarr: Difference between revisions

Jump to navigation Jump to search
m
no edit summary
mNo edit summary
mNo edit summary
Line 1: Line 1:
{{TemplateDocDevEn}}
{{TemplateDocDevEn}}
{{ToTranslate}}
{{ToTranslate}}
Il y a 2 méthodes pour permettre à une application extérieure d'insérer des données dans Dolibarr. Les 2 techniques possibles sont les suivantes:
There are 2 methods to allow an external application to insert data into Dolibarr. Les 2 techniques possibles sont les suivantes: The 2 possible techniques are:


= Insertion des données directement en base =
= Insert data directly into database =
Cette solution requiert de connaître le modèle physique et les valeurs autorisées des champs. Elle est risquée et devra être réécrite en cas de modification du format de base de Dolibarr.
This solution requires knowledge of the physical model and the allowed values of the fields. It is risky and should be rewritten if modified format based Dolibarr.


'''Avantages:''' Peut être réalisé dans n'importe quel langage.
'''Advantages:''' Can be made in any language.


'''Inconvénient:''' Cette technique est très fortement déconseillée. A la première montée de version de Dolibarr, cette méthode risque de ne plus fonctionner et devoir être réécrite.
'''Disadvantage:''' This technique is highly discouraged. At the first upgrade of Dolibarr version, this method can not work and need to be rewritten. Moreover, using this method, you override the business rules validation, which creates a risk of corrupting data. This method also needs to know the basis Dolibarr.  
De plus, en utilisant cette méthode, vous passer outre les règles de validation métier, ce qui crée un risque de corrompre les données. Cette méthode nécessite aussi de connaitre la base Dolibarr.


= Utilisation des classes PHP =
= Using PHP classes =
Il est possible d'utiliser les objets métiers de Dolibarr (Les fichiers xxx.class.php).
It is possible to use business objects Dolibarr (xxx.class.php files). Each of these files has provided a class of methods for:
Chacun de ces fichiers offre un classe munie de méthodes pour:
* recovery of an entity (the fetch method)
* la récupération d'une entité (la méthode fetch)
* insertion into database of an entity (the create method or insert)
* l'insertion en base d'une entité (la méthode create ou insert)
* updating an entity (the update method)
* la mise à jour d'une entité (la méthode update)
* deletion of an entity (the delete method) if applicable to the object
* la suppression d'une entité (la méthode delete) si applicable à l'objet
* various other methods specific to the entity manipulated.  
* d'autres méthodes diverses propre à l'entité manipulée.
Cette technique est préférable à la précédente.


'''Avantages:''' Elle offre l'avantage de passer à travers les couches de validations métiers des données. Le code d'interface ne doit normallement pas être réécrit en cas de montée de version de Dolibarr.
This technique is better than first one.


'''Inconvénients:''' Elle n'est exploitable qu'en langage PHP.
'''Advantages:''' It offers the advantage of passing through layers of data validation business. The interface code should normally not be rewritten when upgrading version Dolibarr.


'''Disadvantages:'' It is usable in PHP only.


Voici un exemple pour la création d'un tiers (société client par exemple):
Here is an example for the creation of a third party (eg customer company):


<pre>
<pre>
// On declare la classe que l'on va manipuler
// We declare the class we want to use
include_once('/pathofdolibarrhtdocs/societe.class.php');
include_once('/pathofdolibarrhtdocs/societe.class.php');


// On cree une instance de l'objet à manipuler
// We create an instance of object
$mycompany = new Societe($db);
$mycompany = new Societe($db);


// On renseigne ces caractéristiques
// On set properties
$mycompany->nom='Big Brother';
$mycompany->nom='Big Brother';
$mycompany->client=1;
$mycompany->client=1;


// Si on veut que l'action de creation soit associé a un utilisateur 'loginuser' particulier,
// If we want that creation is tagged as done by a particular user 'loginuser',
// il faut decommenter cette ligne pour charger les caractéristiques de cet utilisateur.
// you must uncomment this line to load all characteristics of this user.
// Si on laisse commenter, Dolibarr mettra null dans les champs du user de création ou mise a jour.
// If we keep the comment, Dolibarr will use null if fields that should store the create or update user.
// $user->fetch('loginuser');
// $user->fetch('loginuser');


// On invoque la creation
// On call method to create
$id=$mycompany->create($user);
$id=$mycompany->create($user);


// Pour charger l'objet
// This is to read/load an already created object
$mycompany->fetch($id);
$mycompany->fetch($id);


// Pour mettre a jour
// To update object
$mycompany->update($user);
$mycompany->update($user);
</pre>
</pre>


Rem: Si on est dans le cas d'un script externe à Dolibarr, il est nécessaire de faire au début,
Note: If we are inside an external script, you must add at the beginning of script, before the include of class we want to use:
avant le include de la classe manipulée
<pre>include('/pathofdolibarrhtdocs/master.inc.php');</pre>
<pre>include('/pathofdolibarrhtdocs/master.inc.php');</pre>
pour que les objets $db, $lang et $user soient créés.
This will create objects $db, $lang and $user.
Si on veut que les actions (creation, mise a jour), soit associées dans le suivi à un utilisateur particulier, il est nécessaire de faire avant
If we want that actions (create, update), are tagged with a particular user as the create/update user, uou must do before

Navigation menu