5 from openerp.osv import osv, fields
8 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 "team_members": fields.many2many("projet.teammember",
23 "projet_projet_teammember_rel",
25 string="Team Members"),
26 "modules": fields.one2many("projet.module",
29 "chantiers": fields.one2many("projet.chantier",
32 "paliers": fields.one2many("projet.palier",
35 "phases": fields.one2many("projet.phase",
38 "evolutions":fields.one2many("projet.evolution",
41 "moe_id": fields.many2one("projet.moe", string="MoE", required=True),
42 "moa_id": fields.many2one("projet.moa", string="MoA", required=True),
46 class Evolution(osv.Model):
47 _name = "projet.evolution"
49 _priorites = [("incontournable", "Incontournable"),
50 ("necessaire", "Nécéssaire"),
53 _statuts = [("cree", "Crée"), ("encours", "En cours"),
54 ("termine", "Terminé"), ("abandonne", "Abandonné"),
55 ("suspendu", "Suspendu")]
58 "pid": fields.integer(string="PID"),
59 "name": fields.char(string="Title", size=64, required=True),
60 "description": fields.text(string="Description"),
61 "objectif": fields.text(string="Objectif"),
62 "commentaire": fields.text(string="Commentaire"),
63 "keywords": fields.text(string="Mots clés"),
64 "priorite": fields.selection(_priorites, string="Priorité"),
65 "statut": fields.selection(_statuts, string="Statut"),
66 "charges": fields.one2many("projet.charge",
69 "module_id": fields.many2one("projet.module",
71 "chantier_id": fields.many2one("projet.chantier",
73 "palier_id": fields.many2one("projet.palier",
75 "phase_id": fields.many2one("projet.phase",
77 "projet_id": fields.many2one("projet.projet",
82 class Structure(osv.Model):
83 _name = "projet.structure"
85 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
88 "name": fields.char(string="Title", size=64, required=True),
89 "code": fields.char(string="Code", size=8, required=True),
90 "description": fields.text(string="Description"),
91 "parent_id": fields.many2one("projet.structure", string="Parent_id"),
92 "statut": fields.selection(_statuts, string="Statut"),
93 "role_mo_id":fields.many2one("projet.role_mo", string="Role MO"),
94 "projets": fields.many2many("projet.projet",
95 "projet_projet_structure_rel",
101 class Role_MO(osv.Model):
102 _name = "projet.role_mo"
104 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
108 "name": fields.char(string="Title", size=64, required=True),
109 "code": fields.char(string="Code", size=8, required=True),
110 "description": fields.text(string="Description"),
111 "statut": fields.selection(_statuts, string="Statut"),
112 "structures": fields.one2many("projet.structure",
115 "mo_ids": fields.one2many("projet.mo",
120 class Module(osv.Model):
121 _name = "projet.module"
124 "name": fields.char(string="Title", size=64, required=True),
125 "description": fields.text(string="Description"),
126 "projet_id": fields.many2one("projet.projet",
129 "evolutions": fields.one2many("projet.evolution",
135 class Domaine(osv.Model):
136 _name = "projet.domaine"
138 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
141 "name": fields.char(string="Title", size=64, required=True),
142 "code": fields.char(string="Code", size=8),
143 "description": fields.text(string="Description"),
144 "ordre": fields.integer(string="Ordre"),
145 "parent_id": fields.many2one("projet.domaine", string="Parent_id"),
146 "statut": fields.selection(_statuts, string="Statut"),
147 "projets": fields.many2many("projet.projet",
148 "projet_projet_structure_rel",
154 class Teammember(osv.Model):
155 _name = "projet.teammember"
157 _inherit = "res.partner"
160 "projets": fields.many2many("projet.projet",
161 "projet_projet_teammember_rel",
164 "charges": fields.one2many("projet.projet",
170 class Type_Phase(osv.Model):
171 _name = "projet.type_phase"
173 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
176 "name": fields.char(string="Title", size=64, required=True),
177 "description": fields.text(string="Description"),
178 "statut": fields.selection(_statuts, string="Statut"),
182 class Phase(osv.Model):
183 _name = "projet.phase"
185 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
189 "name": fields.char(string="Title", size=64, required=True),
190 "description": fields.text(string="Description"),
191 "statut": fields.selection(_statuts, string="Statut"),
192 "type_phase_id": fields.many2one("projet.type_phase", string="Type phase"),
193 "projet_id": fields.many2one("projet.projet",
196 "charges": fields.one2many("projet.charge",
199 "evolutions": fields.one2many("projet.evolution",
201 string="Evolutions"),
202 "palier_id": fields.many2one("projet.palier",
206 #TODO trouver un nom a cette chose
207 class qqch(osv.Model):
208 _name = "projet.qqch"
210 _statuts = [("cree", "Crée"), ("encours", "En cours"),
211 ("termine", "Terminé"), ("abandonne", "Abandonné"),
212 ("suspendu", "Suspendu"), ("generique", "Générique")]
215 "name": fields.char(string="Title", size=64, required=True),
216 "description": fields.text(string="Description"),
217 "commentaire": fields.text(string="Commentaire"),
218 "statut": fields.selection(_statuts, string="Statut"),
219 "version": fields.char(string="Version", size=16),
220 "date_jalon": fields.date(sring="Jalon"),
221 "date_init_deb": fields.date(sring="Date initiale début"),
222 "date_init_fin": fields.date(sring="Date initiale de fin"),
223 "date_plan_deb": fields.date(string="Date plannifiée début"),
224 "date_plan_fin": fields.date(string="Date plannifiée de fin"),
225 "date_reel_deb": fields.date(string="Data réelle début"),
226 "date_reel_fin": fields.date(string="Data réelle fin"),
231 "date_init_deb_before_date_init_fin",
232 "CHECK(date_init_deb<> date_init_fin)",
233 "The date_init_deb should be previous date_init_fin",
236 "date_plan_deb_before_date_plan_fin",
237 "CHECK(date_plan_deb <> date_plan_fin)",
238 "The date_plan_deb should be previous date_plan_fin",
241 "date_reel_deb_before_date_reel_fin",
242 "CHECK(date_reel_deb<> date_reel_fin)",
243 "The date_reel_deb should be previous date_reel_fin",
248 class Chantier(osv.Model):
249 _name = "projet.chantier"
251 _inherit = "projet.qqch"
254 "projet_id": fields.many2one("projet.projet",
257 "evolutions": fields.one2many("projet.evolution",
259 string="Evolutions"),
263 class Palier(osv.Model):
264 _name = "projet.palier"
266 _types_palier = [("normal", "Normal"), ("exceptionnel", "Exceptionnel"),
267 ("correctif", "Correctif"), ("autre", "Autre")]
269 _inherit = "projet.qqch"
272 "type_palier": fields.selection(_types_palier, string="Type"),
273 "projet_id": fields.many2one("projet.projet",
276 "evolutions": fields.one2many("projet.evolution",
278 string="Evolutions"),
279 "phases": fields.one2many("projet.phase",
285 class Charge(osv.Model):
286 _name = "projet.charge"
289 "name": fields.char(string="Title", size=64, required=True),
290 "description": fields.text(string="Description"),
291 "teammember_id": fields.many2one("projet.teammember",
292 string="Team Member",
294 "phase_id": fields.many2one("projet.phase",
297 "evolution_id": fields.many2one("projet.evolution",
300 "mo_id": fields.many2one("projet.mo",
307 _choses = [("primaire", "Primaire"),
308 ("secondaire", "Secondaire"),
309 ("generique", "Générique")]
312 "name": fields.char(string="Title"),
313 "description": fields.text(string="Description"),
314 "chose": fields.selection(_choses, string="Chose", required=True),
315 "role_mo_id": fields.many2one("projet.role_mo", string="Role"),
316 "charges": fields.one2many("projet.charge",
322 "chose": "generique"}
325 class moe(osv.Model):
327 _inherit = "projet.mo"
330 "projets": fields.one2many("projet.projet",
336 class moa(osv.Model):
338 _inherit = "projet.mo"
341 "projets": fields.one2many("projet.projet",