5 from openerp.osv import osv, fields
7 class Projet(osv.Model):
9 _name = "projet.projet"
12 "name": fields.char(string="Title", size=64, required=True),
13 "description": fields.text(string="Description"),
14 "domaines": fields.many2many("projet.domaine",
15 "projet_projet_domaine_rel",
18 "structures": fields.many2many("projet.structure",
19 "projet_projet_structure_rel",
22 "structures_moe": fields.many2many("projet.structure",
23 "projet_projet_structure_rel",
26 domain=[('role_mo_id.type_mo', '=', "MOE")]),
27 "structures_moa": fields.many2many("projet.structure",
28 "projet_projet_structure_rel",
31 domain=[('role_mo_id.type_mo', '=', "MOA")]),
32 "team_members": fields.many2many("projet.teammember",
33 "projet_projet_teammember_rel",
35 string="Team Members"),
36 "modules": fields.one2many("projet.module",
39 "chantiers": fields.one2many("projet.chantier",
42 "paliers": fields.one2many("projet.palier",
45 "phases": fields.one2many("projet.phase",
48 "evolutions":fields.one2many("projet.evolution",
51 "moe_id": fields.many2one("projet.moe", string="MoE", required=True),
52 "moa_id": fields.many2one("projet.moa", string="MoA", required=True),
53 "main_domain": fields.many2one("projet.domaine",
54 string="Domaine principal"),
55 "main_structure": fields.many2one("projet.structure",
56 string="Structure principale"),
60 class Evolution(osv.Model):
61 _name = "projet.evolution"
63 _priorites = [("incontournable", "Incontournable"),
64 ("necessaire", "Nécéssaire"),
67 _statuts = [("cree", "Crée"), ("encours", "En cours"),
68 ("termine", "Terminé"), ("abandonne", "Abandonné"),
69 ("suspendu", "Suspendu")]
72 "pid": fields.integer(string="PID"),
73 "name": fields.char(string="Title", size=64, required=True),
74 "description": fields.text(string="Description"),
75 "objectif": fields.text(string="Objectif"),
76 "commentaire": fields.text(string="Commentaire"),
77 "keywords": fields.text(string="Mots clés"),
78 "priorite": fields.selection(_priorites, string="Priorité"),
79 "statut": fields.selection(_statuts, string="Statut"),
80 "charges": fields.one2many("projet.charge",
83 "module_id": fields.many2one("projet.module",
85 "chantier_id": fields.many2one("projet.chantier",
87 "palier_id": fields.many2one("projet.palier",
89 "phase_id": fields.many2one("projet.phase",
91 "projet_id": fields.many2one("projet.projet",
96 class Structure(osv.Model):
98 _name = "projet.structure"
100 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
103 "name": fields.char(string="Title", size=64, required=True),
104 "code": fields.char(string="Code", size=8, required=True),
105 "description": fields.text(string="Description"),
106 "parent_id": fields.many2one("projet.structure", string="Parent_id"),
107 "statut": fields.selection(_statuts, string="Statut"),
108 "role_mo_id":fields.many2one("projet.role_mo", string="Role MO"),
109 "projets": fields.many2many("projet.projet",
110 "projet_projet_structure_rel",
116 class Module(osv.Model):
117 _name = "projet.module"
120 "name": fields.char(string="Title", size=64, required=True),
121 "description": fields.text(string="Description"),
122 "projet_id": fields.many2one("projet.projet",
125 "evolutions": fields.one2many("projet.evolution",
131 class Domaine(osv.Model):
132 _name = "projet.domaine"
134 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
137 "name": fields.char(string="Title", size=64, required=True),
138 "code": fields.char(string="Code", size=8),
139 "description": fields.text(string="Description"),
140 "ordre": fields.integer(string="Ordre"),
141 "parent_id": fields.many2one("projet.domaine", string="Parent_id"),
142 "statut": fields.selection(_statuts, string="Statut"),
143 "projets": fields.many2many("projet.projet",
144 "projet_projet_structure_rel",
152 class Teammember(osv.Model):
153 _name = "projet.teammember"
155 _inherit = "res.partner"
158 "projets": fields.many2many("projet.projet",
159 "projet_projet_teammember_rel",
162 "charges": fields.one2many("projet.projet",
168 class Type_Phase(osv.Model):
169 _name = "projet.type_phase"
171 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
174 "name": fields.char(string="Title", size=64, required=True),
175 "description": fields.text(string="Description"),
176 "statut": fields.selection(_statuts, string="Statut"),
180 class Phase(osv.Model):
181 _name = "projet.phase"
183 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
187 "name": fields.char(string="Title", size=64, required=True),
188 "description": fields.text(string="Description"),
189 "statut": fields.selection(_statuts, string="Statut"),
190 "type_phase_id": fields.many2one("projet.type_phase",
191 string="Type phase"),
192 "projet_id": fields.many2one("projet.projet",
195 "charges": fields.one2many("projet.charge",
198 "evolutions": fields.one2many("projet.evolution",
200 string="Evolutions"),
201 "palier_id": fields.many2one("projet.palier",
205 class mesurable(osv.Model):
206 _name = "projet.mesurable"
208 _statuts = [("cree", "Crée"), ("encours", "En cours"),
209 ("termine", "Terminé"), ("abandonne", "Abandonné"),
210 ("suspendu", "Suspendu"), ("generique", "Générique")]
213 "name": fields.char(string="Title", size=64, required=True),
214 "description": fields.text(string="Description"),
215 "commentaire": fields.text(string="Commentaire"),
216 "statut": fields.selection(_statuts, string="Statut"),
217 "version": fields.char(string="Version", size=16),
218 "date_jalon": fields.date(string="Jalon"),
219 "date_init_deb": fields.date(string="Date initiale début"),
220 "date_init_fin": fields.date(string="Date initiale de fin"),
221 "date_plan_deb": fields.date(string="Date plannifiée début"),
222 "date_plan_fin": fields.date(string="Date plannifiée de fin"),
223 "date_reel_deb": fields.date(string="Data réelle début"),
224 "date_reel_fin": fields.date(string="Data réelle fin"),
229 "date_init_deb_before_date_init_fin",
230 "CHECK(date_init_deb<> date_init_fin)",
231 "The date_init_deb should be previous date_init_fin",
234 "date_plan_deb_before_date_plan_fin",
235 "CHECK(date_plan_deb <> date_plan_fin)",
236 "The date_plan_deb should be previous date_plan_fin",
239 "date_reel_deb_before_date_reel_fin",
240 "CHECK(date_reel_deb<> date_reel_fin)",
241 "The date_reel_deb should be previous date_reel_fin",
246 class Chantier(osv.Model):
247 _name = "projet.chantier"
249 _inherit = "projet.mesurable"
252 "projet_id": fields.many2one("projet.projet",
255 "evolutions": fields.one2many("projet.evolution",
257 string="Evolutions"),
261 class Palier(osv.Model):
262 _name = "projet.palier"
264 _types_palier = [("normal", "Normal"), ("exceptionnel", "Exceptionnel"),
265 ("correctif", "Correctif"), ("autre", "Autre")]
267 _inherit = "projet.mesurable"
270 "type_palier": fields.selection(_types_palier, string="Type"),
271 "projet_id": fields.many2one("projet.projet",
274 "evolutions": fields.one2many("projet.evolution",
276 string="Evolutions"),
277 "phases": fields.one2many("projet.phase",
283 class Charge(osv.Model):
284 _name = "projet.charge"
287 "name": fields.char(string="Title", size=64, required=True),
288 "description": fields.text(string="Description"),
289 "teammember_id": fields.many2one("projet.teammember",
290 string="Team Member",
292 "phase_id": fields.many2one("projet.phase",
295 "evolution_id": fields.many2one("projet.evolution",
298 "mo_id": fields.many2one("projet.mo",