Module Third Parties (developer)

= Feature = The Third Party module is used to manage the following objects:
 * Companies
 * Contacts/Addresses
 * Bank information of companies

A third party is a moral or physical entity (prospect, customer, supplier). This can be a company, foundation but also be a physical person. A third party is defined by mandatory information like name and country but also by optional information like capital, professional id, etc... Contacts/Addresses are physical persons of a company or generic addresses. For a physical person, properties of a contact has similar values than properties of contact.

= Element Third Party =

Business rules:
 * A third party can have 1 or more contacts/addresses.
 * A third party has a property to define if it's a prospect, a customer, none or both.
 * A third party has a property to define if it's a supplier or not.
 * You can attach one to n sales representative (Dolibarr users) to a third party.
 * To complete...

Life cycle:
 * A third party can be created (This call trigger COMPANY_CREATE)
 * A third party can be modified (This call trigger COMPANY_UPDATE)
 * A contact/address can be added to a third party.
 * Some elements can be created into this third party (order, commercial proposal, invoice, contract, ...)
 * A third party can be deleted (This call trigger COMPANY_DELETE)

= Element Third party Prospect = A prospect is just a third party that is a prospect. There is a particular class to manipulate such objects.

Life cycle:

A prospect has a status :
 * Do not contact (-1) ;
 * Not contacted (0) ;
 * To contact (1) ;
 * Contact in process (2) ;
 * Prospect contacted (3).

= Element Contact =

Life cycle:
 * A contact can be created (This call trigger CONTACT_CREATE)
 * A contact can be modified (This call trigger CONTACT_UPDATE)
 * A contact can be deleted (This call 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 Contains list of third parties (companies...)
 * llx_socpeople Contains list of third parties' contacts.