Ajout d'un champ charge_reel dans palier
[OpenERP/cmmi.git] / mo.py
1 #-*- coding: utf8 -*-
2 '''
3 Ce module contient tout ce qui est nécessaire pour qualifier une MO
4
5 On distingue deux grands rôles qui sont les MOE et les MOA :
6
7 MOE = Maîtrise d'oeuvre (ceuf qui font)
8 MOA = Maîtrise d'ouvrage (ceux qui demandent et contrôlent)
9 '''
10
11 from openerp.osv import osv, fields
12
13
14 # ================================= ROLE MO ================================= #
15 class RoleMO(osv.Model):
16     """Role MO: différents types de MOE et MOA"""
17
18     _name = "cmmi.mo.role"
19
20     _description = "Rattachement des MOs et des roles."
21
22     _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
23
24     _types_mo = [("MOE", "MOE"), ("MOA", "MOA")]
25
26     _columns = {
27         "name": fields.char(string="Title", size=64, required=True),
28         "code": fields.char(string="Code", size=8, required=True),
29         "description": fields.text(string="Description"),
30         "statut": fields.selection(_statuts, string="Statut"),
31         "type_mo": fields.selection(_types_mo,
32                                     string="Type de MO",
33                                     required=True),
34         "mo_ids": fields.one2many("cmmi.mo", #TODO: à vérifier si pas de bugs
35                                   "role_mo_id",
36                                   string="MOs"),
37     }
38
39
40 # ==================================== MO =================================== #
41 class Mo(osv.Model):
42     _name = "cmmi.mo"
43
44     _description = "Table de reference des MOs."
45
46     _rangs = [("primaire", "Primaire"),
47               ("secondaire", "Secondaire"),
48               ("generique", "Générique")]
49
50     _columns = {
51         "name": fields.char(string="Title"),
52         "description": fields.text(string="Description"),
53         "rang": fields.selection(_rangs, string="Rang", required=True),
54         "role_mo_id": fields.many2one("cmmi.mo.role", string="Role"),
55 #        "charges": fields.one2many("cmmi.evolution.charge", # TODO: Faire l'association teammember MO plutôt que MO.
56 #                                   "mo_id",
57 #                                   string="Charges"),
58     }
59
60     _defaults = {
61         "rang": "primaire"}
62
63
64
65 # =================================== MOE =================================== #
66 class Moe(osv.Model):
67     _name = "cmmi.mo.moe"
68
69     _description = "Table de referencement des MOEs."
70
71     _inherit = "cmmi.mo"
72
73     _columns = {
74         "role_mo_id": fields.many2one("cmmi.mo.role",
75                                       string="Role",
76                                       domain=[("type_mo", "=", "MOE")]),
77         "projets": fields.one2many("cmmi.projet",
78                                    "moe_id",
79                                    string="Projets"),
80     }
81
82
83
84 # =================================== MOA =================================== #
85 class Moa(osv.Model):
86     _name = "cmmi.mo.moa"
87
88     _description = "Table de referencement des MOAs."
89
90     _inherit = "cmmi.mo"
91
92     _columns = {
93         "role_mo_id": fields.many2one("cmmi.mo.role",
94                                       string="Role",
95                                       domain=[("type_mo", "=", "MOA")]),
96         "projets": fields.one2many("cmmi.projet",
97                                    "moa_id",
98                                    string="Projets"),
99     }