View form Mesurable : déplacement du 'State' dans le header
[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 class RoleMO(osv.Model):
15     """Role MO: différents types de MOE et MOA"""
16
17     _name = "cmmi.mo.role"
18
19     _description = "Rattachement des MOs et des roles."
20
21     _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
22
23     _types_mo = [("MOE", "MOE"), ("MOA", "MOA")]
24
25     _columns = {
26         "name": fields.char(string="Title", size=64, required=True),
27         "code": fields.char(string="Code", size=8, required=True),
28         "description": fields.text(string="Description"),
29         "statut": fields.selection(_statuts, string="Statut"),
30         "type_mo": fields.selection(_types_mo,
31                                     string="Type de MO",
32                                     required=True),
33         "mo_ids": fields.one2many("cmmi.mo", #TODO: à vérifier si pas de bugs
34                                   "role_mo_id",
35                                   string="MOs"),
36     }
37
38
39 class Mo(osv.Model):
40     _name = "cmmi.mo"
41
42     _description = "Table de reference des MOs."
43
44     _rangs = [("primaire", "Primaire"),
45               ("secondaire", "Secondaire"),
46               ("generique", "Générique")]
47
48     _columns = {
49         "name": fields.char(string="Title"),
50         "description": fields.text(string="Description"),
51         "rang": fields.selection(_rangs, string="Rang", required=True),
52         "role_mo_id": fields.many2one("cmmi.mo.role", string="Role"),
53 #        "charges": fields.one2many("cmmi.evolution.charge", # TODO: Faire l'association teammember MO plutôt que MO.
54 #                                   "mo_id",
55 #                                   string="Charges"),
56     }
57
58     _defaults = {
59         "rang": "primaire"}
60
61
62 class Moe(osv.Model):
63     _name = "cmmi.mo.moe"
64
65     _description = "Table de referencement des MOEs."
66
67     _inherit = "cmmi.mo"
68
69     _columns = {
70         "role_mo_id": fields.many2one("cmmi.mo.role",
71                                       string="Role",
72                                       domain=[("type_mo", "=", "MOE")]),
73         "projets": fields.one2many("cmmi.projet",
74                                    "moe_id",
75                                    string="Projets"),
76     }
77
78
79
80 class Moa(osv.Model):
81     _name = "cmmi.mo.moa"
82
83     _description = "Table de referencement des MOAs."
84
85     _inherit = "cmmi.mo"
86
87     _columns = {
88         "role_mo_id": fields.many2one("cmmi.mo.role",
89                                       string="Role",
90                                       domain=[("type_mo", "=", "MOA")]),
91         "projets": fields.one2many("cmmi.projet",
92                                    "moa_id",
93                                    string="Projets"),
94     }