Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • lefilament/adefpat/adefpat_project
1 result
Show changes
Commits on Source (3)
...@@ -936,10 +936,11 @@ class AdefpatPorteursProjets(models.Model): ...@@ -936,10 +936,11 @@ class AdefpatPorteursProjets(models.Model):
# ------------------------------------------------------ # ------------------------------------------------------
@api.constrains("task_id", "project_id") @api.constrains("task_id", "project_id")
def _check_task_or_project(self): def _check_task_or_project(self):
if not self.task_id and not self.project_id: for pp in self:
raise ValidationError( if not pp.task_id and not pp.project_id:
"Un porteur de projet doit être associé à une tâche ou un projet." raise ValidationError(
) "Un porteur de projet doit être associé à une tâche ou un projet."
)
@api.depends("porteur_id") @api.depends("porteur_id")
def _compute_commune(self): def _compute_commune(self):
......
...@@ -8,37 +8,36 @@ class ProjectTask(models.Model): ...@@ -8,37 +8,36 @@ class ProjectTask(models.Model):
_inherit = "project.task" _inherit = "project.task"
@api.model @api.model
def default_get(self, fields): def _default_formateur_id(self):
res = super(ProjectTask, self).default_get(fields)
if "default_project_id" in self.env.context: if "default_project_id" in self.env.context:
default_project_id = self.env["project.project"].browse( cout_id = self.env["adefpat.project.cout"].search(
[
("project_id", "=", self.env.context["default_project_id"]),
("partner_id", "!=", False),
],
limit=1,
)
return cout_id.partner_id.id
@api.model
def _default_participant_ids(self):
if "default_project_id" in self.env.context:
project_id = self.env["project.project"].browse(
self.env.context["default_project_id"] self.env.context["default_project_id"]
) )
if default_project_id.exists().porteurs_projets_ids: if project_id.exists().membre_ids:
participant_ids = [] participant_ids = project_id.porteurs_projets_ids.mapped(lambda p: (0, 0, {
for porteur_project in default_project_id.porteurs_projets_ids: "porteur_id": p.porteur_id.id,
vals = { "lastname": p.lastname,
"porteur_id": porteur_project.porteur_id.id, "firstname": p.firstname,
"lastname": porteur_project.lastname, "commune": p.commune,
"firstname": porteur_project.firstname, "mobile": p.mobile,
"commune": porteur_project.commune, "fixe": p.fixe,
"mobile": porteur_project.mobile, "email": p.email,
"fixe": porteur_project.fixe, "eligible": p.eligible,
"email": porteur_project.email, }))
"eligible": porteur_project.eligible, self.update({"participant_ids": participant_ids})
} return participant_ids
participant_ids.append((0, 0, vals))
res.update({"participant_ids": participant_ids})
cout_id = self.env["adefpat.project.cout"].search(
[
("project_id", "=", default_project_id.id),
("partner_id", "!=", False),
],
limit=1,
)
if cout_id:
res.update({"formateur_id": cout_id.partner_id.id})
return res
user_id = fields.Many2one( user_id = fields.Many2one(
"res.users", "res.users",
...@@ -59,6 +58,7 @@ class ProjectTask(models.Model): ...@@ -59,6 +58,7 @@ class ProjectTask(models.Model):
("reference", "=", "prereference"), ("reference", "=", "prereference"),
], ],
ondelete="restrict", ondelete="restrict",
default=_default_formateur_id,
) )
duree_jr = fields.Selection( duree_jr = fields.Selection(
[ [
...@@ -69,7 +69,10 @@ class ProjectTask(models.Model): ...@@ -69,7 +69,10 @@ class ProjectTask(models.Model):
) )
duree_hr = fields.Float("Durée (int)", compute="_compute_duree_hr", store=True) duree_hr = fields.Float("Durée (int)", compute="_compute_duree_hr", store=True)
participant_ids = fields.One2many( participant_ids = fields.One2many(
"res.partner.porteur.project", "task_id", string="Participants" comodel_name="res.partner.porteur.project",
inverse_name="task_id",
string="Participants",
default=_default_participant_ids,
) )
cout_seance = fields.Float("Coût de la séance", compute="_compute_cout_seance") cout_seance = fields.Float("Coût de la séance", compute="_compute_cout_seance")
date_account = fields.Date("Date de la facture") date_account = fields.Date("Date de la facture")
......
...@@ -21,26 +21,28 @@ ...@@ -21,26 +21,28 @@
<field name="inherit_id" ref="project.view_task_form2" /> <field name="inherit_id" ref="project.view_task_form2" />
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//notebook" position="before"> <xpath expr="//notebook" position="before">
<group> <label for="participant_ids" />
<field name="participant_ids" widget="one2many"> <field name="participant_ids"
<tree widget="one2many"
string="Participants" domain="[('project_id', '=', context.get('active_id'))]"
editable="top" >
default_order='porteur_id' <tree
> string="Participants"
<field name="porteur_id" /> editable="top"
<field name="lastname" /> default_order='porteur_id'
<field name="firstname" /> >
<field name="commune" /> <field name="porteur_id" />
<field name="mobile" /> <field name="lastname" />
<field name="fixe" /> <field name="firstname" />
<field name="email" widget="email" /> <field name="commune" />
<field name="h_theoriques" /> <field name="mobile" />
<field name="h_pratiques" /> <field name="fixe" />
<field name="eligible" /> <field name="email" widget="email" />
</tree> <field name="h_theoriques" />
</field> <field name="h_pratiques" />
</group> <field name="eligible" />
</tree>
</field>
</xpath> </xpath>
<xpath expr="//field[@name='user_id']" position="after"> <xpath expr="//field[@name='user_id']" position="after">
<field name="formateur_id" /> <field name="formateur_id" />
......
...@@ -365,7 +365,7 @@ ...@@ -365,7 +365,7 @@
</div> </div>
<div <div
class="row" class="row"
attrs="{'invisible': [('type_accompagnement', 'not in', ('interentreprises','territoriaux'))], 'required': [('type_accompagnement', 'not in', ('interentreprises','territoriaux'))]}" attrs="{'invisible': [('type_accompagnement', '!=', 'interentreprises')], 'required': [('type_accompagnement', '!=', 'interentreprises')]}"
> >
<div class="col-7 border-right"> <div class="col-7 border-right">
<label for="nb_entreprises" style="font-weight: bold;" /> <label for="nb_entreprises" style="font-weight: bold;" />
......