Module Tiers (développeur)

= Fonction du module =

Le module tiers a pour vocation de permettre de gérer dans Dolibarr les entités suivantes:
 * Les tiers (sociétés, associations, ...)
 * Les contacts/adresses
 * Les informations bancaires de tiers

Une société représente un tiers moral ou physique (prospect, client, fournisseur). Le terme est mal choisi car il peut très bien s'agir d'un "particulier". Une société est caractérisée par des informations obligatoires comme le nom, pays et d'autres optionnelles comme le capital, identifiant professionnel, etc... Les contacts sont les personnes physiques d'une société. Dans le cas d'un particulier, les caractéristiques d'un contact sont les même que les caractéristiques de l'entité société.

= Entité Tiers =

Règles de gestion:
 * Une société peut avoir 1 à plusieurs contacts.
 * Une société a une caractéristique qui peut être prospect (Dans ce cas l'entité Société une fois créée peut aussi etre manipulé comme entité Prospect), client (Dans ce cas l'entité Société une fois créée peut aussi etre manipulé comme entité Client), aucun des deux ou les deux.
 * Une société a une caractéristique fournisseur qui peut etre non ou oui (Dans ce cas l'entité Société une fois créée peut aussi etre manipulé comme entité Fournisseur).
 * Il est possible de rattacher 1 à n commerciaux (Utiliateurs Dolibarr) à une société
 * A compléter...

Cycle de vie:
 * Une société peut être créée (Provoque appel du trigger COMPANY_CREATE)
 * Une société peut être modifiée (Provoque appel du trigger COMPANY_UPDATE)
 * Un contact peut être ajouté à la société
 * D'autres entités peuvent être créées sur cette société (commande, propal, facture, contrat, ...)
 * Une société peut être supprimée (Provoque appel du trigger COMPANY_DELETE)

= Entité Tiers Prospect = Un prospect est juste un tiers qui est défini comme prospect. Il y a une classe particulère héritant du Tiers pour manipuler cet entitié:

Cycle de vie:

Un prospect peut avoir plusieurs états :
 * Ne pas contacter(-1) ;
 * Non contacté (0) ;
 * A contacter (1) ;
 * Contact en cours (2) ;
 * Prospect contacté (3).

= Entité Contact =

Cycle de vie:
 * Un contact peut être créé (Provoque appel du trigger CONTACT_CREATE)
 * Un contact peut être modifié (Provoque appel du trigger CONTACT_UPDATE)
 * Un contact peut être supprimé (Provoque appel du trigger CONTACT_DELETE)

= Permissions =


 * ->societe->lire
 * ->societe->creer
 * ->societe->supprimer
 * ->societe->export
 * ->societe->client->voir
 * ->societe->contact->lire
 * ->societe->contact->creer
 * ->societe->contact->supprimer
 * ->societe->contact->export

= Tables SQL =
 * llx_societe Contient la liste des tiers
 * llx_socpeople Contient la liste des contacts de tiers