Wednesday, December 2, 2009

Création d'un module (partie 2)

Toutes les données OpenERP sont accessibles à travers des "objets". Par exemple,
il y a un objet res.partner qui accéde aux données du partenaire , un objet account.invoice concernant les données factures, etc... .
Pour définir un nouvel objet, on doit définir une nouvelle classe dans Python puis l'instantier. Cette classe doit hériter de la classe osv module osv.Le fichier: addons/module_name/module_name.py :

1- class object_name(osv.osv):
2- _name = "module_name.object_name"
3- _columns = {
4- 'field_name': fields.field_type('Libellé du champs', ...),
5- 'other_field_name' : fields.other_field_type(...),
6- }
7- object_name()

Exemple :

1- class res_partner_address(osv.osv):
2- _name = 'res.partner'
3- _columns = {
4- 'name': fields.char('Name', size=128, required=True, select=True),
5- 'date': fields.date('Date'),
6- 'ref': fields.char('Code', size=64),
7- }
8- res_partner()




* Deux sont obligatoires(_name et _columns), le reste est optionel.

Les noms des champs doivent respecter les normes suivantes :
- Tout doit etre minuscule.
- Pas d'espace.
- Pas de caractéres spéciaux.

* Types simples de champs :

- Boolean : un booléen (true, false).
* Syntax : fields.boolean('Nom du champ' [, Parametres Optionels]),
- Integer :
* Syntax : fields.integer('Nom du champ' [, Parametres Optionels]),
- float :
* Le paramètre digits est optionnel.
Exemple : 'credit_limit': fields.float(string='Credit Limit', digits=(12,6))
- char :
* Paramétre size
Exemple : 'ref': fields.char('Code', size=64),
- text : champs texte de longueur illimité.
* Syntax : fields.text('Nom du champ' [, Parametres Optionels]),
- date : Une date.
* Syntax : fields.date('Nom du champ' [, Parametres Optionels]),
- datetime : Pemet de stocker une date et l'heure de la journée dans le même champs.
* Syntax : fields.datetime('Nom du champ' [, Parametres Optionels]),

** Voici un petit exemple d'un module standard qui vous aidera à mieux comprendre comment ça marche :) :

Créer le dossier budget dans \server\bin\addons
● Créer le fichier __init__.py dans le dossier
budget
Ce fichier contiendra l'instruction suivante:
import budget
● Cette instruction permet d'importer le module
budget
● Créer le fichier __terp__.py dans le dossier
budget qui correspond au fichier config de module :


1- {
2- "name": "Budget",
3- "version": "0.1",
4- "author" : "iGenius",
5- "depends": ['base',],
6- "init_xml": [],
7- "update_xml": [],
8- "active": False,
9- "installable": True,
9- }


Créer le fichier budget.py dans le dossier budget :
● Ce fichier contiendra toutes les classes du module .
● On commence par une classe permettant de gérer les comptes des budgets :


1- class budget_account(osv.osv):
2- _name = "budget.account"
3- _description = "Budget Account"
4- _columns = {
5- 'name': fields.char('Intitule du compte', size=128, ),
6- 'code_economique': fields.char('Code economique', size=10, ),
7- 'chapitre': fields.char('Chapitre', size=10, ),
8- 'article': fields.char('Article', size=10, ),
9- }
10- budget_account()





Après avoir mis à jour la liste des modules, on doit trouver nouveau module ajouté dans la liste des modules non installés .


On l'installe et voilà !! Notre module est prêt à l'emploi :) .




3 comments:

  1. Bonjour

    dans mon ERP je ne trouve pas tous la liste d’administrateur comment je procède pour ajouter mon module.

    merci

    ReplyDelete
  2. This comment has been removed by the author.

    ReplyDelete
  3. Bonjour,

    Peut-tu m'envoyer la source du module budget STP.

    ReplyDelete