5 from openerp.osv import osv, fields
8 class Projet(osv.Model):
10 _name = "projet.projet"
13 "name": fields.char(string="Title", size=64, required=True),
14 "description": fields.text(string="Description"),
15 "domaines": fields.many2many("projet.domaine",
16 "projet_projet_domaine_rel",
19 "structures": fields.many2many("projet.structure",
20 "projet_projet_structure_rel",
23 "structures_moe": fields.many2many("projet.structure",
24 "projet_projet_structure_rel",
27 domain=[('role_mo_id.type_mo', '=', "MOE")]),
28 "structures_moa": fields.many2many("projet.structure",
29 "projet_projet_structure_rel",
32 domain=[('role_mo_id.type_mo', '=', "MOA")]),
33 "team_members": fields.many2many("projet.teammember",
34 "projet_projet_teammember_rel",
36 string="Team Members"),
37 "modules": fields.one2many("projet.module",
40 "chantiers": fields.one2many("projet.chantier",
43 "paliers": fields.one2many("projet.palier",
46 "phases": fields.one2many("projet.phase",
49 "evolutions":fields.one2many("projet.evolution",
52 "moe_id": fields.many2one("projet.moe", string="MoE", required=True),
53 "moa_id": fields.many2one("projet.moa", string="MoA", required=True),
57 class Evolution(osv.Model):
58 _name = "projet.evolution"
60 _priorites = [("incontournable", "Incontournable"),
61 ("necessaire", "Nécéssaire"),
64 _statuts = [("cree", "Crée"), ("encours", "En cours"),
65 ("termine", "Terminé"), ("abandonne", "Abandonné"),
66 ("suspendu", "Suspendu")]
69 "pid": fields.integer(string="PID"),
70 "name": fields.char(string="Title", size=64, required=True),
71 "description": fields.text(string="Description"),
72 "objectif": fields.text(string="Objectif"),
73 "commentaire": fields.text(string="Commentaire"),
74 "keywords": fields.text(string="Mots clés"),
75 "priorite": fields.selection(_priorites, string="Priorité"),
76 "statut": fields.selection(_statuts, string="Statut"),
77 "charges": fields.one2many("projet.charge",
80 "module_id": fields.many2one("projet.module",
82 "chantier_id": fields.many2one("projet.chantier",
84 "palier_id": fields.many2one("projet.palier",
86 "phase_id": fields.many2one("projet.phase",
88 "projet_id": fields.many2one("projet.projet",
93 class Structure(osv.Model):
95 _name = "projet.structure"
97 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
100 "name": fields.char(string="Title", size=64, required=True),
101 "code": fields.char(string="Code", size=8, required=True),
102 "description": fields.text(string="Description"),
103 "parent_id": fields.many2one("projet.structure", string="Parent_id"),
104 "statut": fields.selection(_statuts, string="Statut"),
105 "role_mo_id":fields.many2one("projet.role_mo", string="Role MO"),
106 "projets": fields.many2many("projet.projet",
107 "projet_projet_structure_rel",
113 class Role_MO(osv.Model):
114 _name = "projet.role_mo"
116 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
118 _types_mo = [("MOE", "MOE"), ("MOA", "MOA")]
121 "name": fields.char(string="Title", size=64, required=True),
122 "code": fields.char(string="Code", size=8, required=True),
123 "description": fields.text(string="Description"),
124 "statut": fields.selection(_statuts, string="Statut"),
125 "type_mo": fields.selection(_types_mo, string="Type de MO", required=True),
126 "structures": fields.one2many("projet.structure",
129 "mo_ids": fields.one2many("projet.mo",
134 class Module(osv.Model):
135 _name = "projet.module"
138 "name": fields.char(string="Title", size=64, required=True),
139 "description": fields.text(string="Description"),
140 "projet_id": fields.many2one("projet.projet",
143 "evolutions": fields.one2many("projet.evolution",
149 class Domaine(osv.Model):
150 _name = "projet.domaine"
152 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
155 "name": fields.char(string="Title", size=64, required=True),
156 "code": fields.char(string="Code", size=8),
157 "description": fields.text(string="Description"),
158 "ordre": fields.integer(string="Ordre"),
159 "parent_id": fields.many2one("projet.domaine", string="Parent_id"),
160 "statut": fields.selection(_statuts, string="Statut"),
161 "projets": fields.many2many("projet.projet",
162 "projet_projet_structure_rel",
168 class Teammember(osv.Model):
169 _name = "projet.teammember"
171 _inherit = "res.partner"
174 "projets": fields.many2many("projet.projet",
175 "projet_projet_teammember_rel",
178 "charges": fields.one2many("projet.projet",
184 class Type_Phase(osv.Model):
185 _name = "projet.type_phase"
187 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
190 "name": fields.char(string="Title", size=64, required=True),
191 "description": fields.text(string="Description"),
192 "statut": fields.selection(_statuts, string="Statut"),
196 class Phase(osv.Model):
197 _name = "projet.phase"
199 _statuts = [("actif", "Actif"), ("inactif", "Inactif")]
203 "name": fields.char(string="Title", size=64, required=True),
204 "description": fields.text(string="Description"),
205 "statut": fields.selection(_statuts, string="Statut"),
206 "type_phase_id": fields.many2one("projet.type_phase",
207 string="Type phase"),
208 "projet_id": fields.many2one("projet.projet",
211 "charges": fields.one2many("projet.charge",
214 "evolutions": fields.one2many("projet.evolution",
216 string="Evolutions"),
217 "palier_id": fields.many2one("projet.palier",
221 #TODO trouver un nom a cette chose
222 class qqch(osv.Model):
223 _name = "projet.qqch"
225 _statuts = [("cree", "Crée"), ("encours", "En cours"),
226 ("termine", "Terminé"), ("abandonne", "Abandonné"),
227 ("suspendu", "Suspendu"), ("generique", "Générique")]
230 "name": fields.char(string="Title", size=64, required=True),
231 "description": fields.text(string="Description"),
232 "commentaire": fields.text(string="Commentaire"),
233 "statut": fields.selection(_statuts, string="Statut"),
234 "version": fields.char(string="Version", size=16),
235 "date_jalon": fields.date(sring="Jalon"),
236 "date_init_deb": fields.date(sring="Date initiale début"),
237 "date_init_fin": fields.date(sring="Date initiale de fin"),
238 "date_plan_deb": fields.date(string="Date plannifiée début"),
239 "date_plan_fin": fields.date(string="Date plannifiée de fin"),
240 "date_reel_deb": fields.date(string="Data réelle début"),
241 "date_reel_fin": fields.date(string="Data réelle fin"),
246 "date_init_deb_before_date_init_fin",
247 "CHECK(date_init_deb<> date_init_fin)",
248 "The date_init_deb should be previous date_init_fin",
251 "date_plan_deb_before_date_plan_fin",
252 "CHECK(date_plan_deb <> date_plan_fin)",
253 "The date_plan_deb should be previous date_plan_fin",
256 "date_reel_deb_before_date_reel_fin",
257 "CHECK(date_reel_deb<> date_reel_fin)",
258 "The date_reel_deb should be previous date_reel_fin",
263 class Chantier(osv.Model):
264 _name = "projet.chantier"
266 _inherit = "projet.qqch"
269 "projet_id": fields.many2one("projet.projet",
272 "evolutions": fields.one2many("projet.evolution",
274 string="Evolutions"),
278 class Palier(osv.Model):
279 _name = "projet.palier"
281 _types_palier = [("normal", "Normal"), ("exceptionnel", "Exceptionnel"),
282 ("correctif", "Correctif"), ("autre", "Autre")]
284 _inherit = "projet.qqch"
287 "type_palier": fields.selection(_types_palier, string="Type"),
288 "projet_id": fields.many2one("projet.projet",
291 "evolutions": fields.one2many("projet.evolution",
293 string="Evolutions"),
294 "phases": fields.one2many("projet.phase",
300 class Charge(osv.Model):
301 _name = "projet.charge"
304 "name": fields.char(string="Title", size=64, required=True),
305 "description": fields.text(string="Description"),
306 "teammember_id": fields.many2one("projet.teammember",
307 string="Team Member",
309 "phase_id": fields.many2one("projet.phase",
312 "evolution_id": fields.many2one("projet.evolution",
315 "mo_id": fields.many2one("projet.mo",
322 _choses = [("primaire", "Primaire"),
323 ("secondaire", "Secondaire"),
324 ("generique", "Générique")]
327 "name": fields.char(string="Title"),
328 "description": fields.text(string="Description"),
329 "chose": fields.selection(_choses, string="Chose", required=True),
330 "role_mo_id": fields.many2one("projet.role_mo", string="Role"),
331 "charges": fields.one2many("projet.charge",
337 "chose": "generique"}
340 class moe(osv.Model):
342 _inherit = "projet.mo"
345 "projets": fields.one2many("projet.projet",
351 class moa(osv.Model):
353 _inherit = "projet.mo"
356 "projets": fields.one2many("projet.projet",