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):
# ------------------------------------------------------
@api.constrains("task_id", "project_id")
def _check_task_or_project(self):
if not self.task_id and not self.project_id:
raise ValidationError(
"Un porteur de projet doit être associé à une tâche ou un projet."
)
for pp in self:
if not pp.task_id and not pp.project_id:
raise ValidationError(
"Un porteur de projet doit être associé à une tâche ou un projet."
)
@api.depends("porteur_id")
def _compute_commune(self):
......
......@@ -8,37 +8,36 @@ class ProjectTask(models.Model):
_inherit = "project.task"
@api.model
def default_get(self, fields):
res = super(ProjectTask, self).default_get(fields)
def _default_formateur_id(self):
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"]
)
if default_project_id.exists().porteurs_projets_ids:
participant_ids = []
for porteur_project in default_project_id.porteurs_projets_ids:
vals = {
"porteur_id": porteur_project.porteur_id.id,
"lastname": porteur_project.lastname,
"firstname": porteur_project.firstname,
"commune": porteur_project.commune,
"mobile": porteur_project.mobile,
"fixe": porteur_project.fixe,
"email": porteur_project.email,
"eligible": porteur_project.eligible,
}
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
if project_id.exists().membre_ids:
participant_ids = project_id.porteurs_projets_ids.mapped(lambda p: (0, 0, {
"porteur_id": p.porteur_id.id,
"lastname": p.lastname,
"firstname": p.firstname,
"commune": p.commune,
"mobile": p.mobile,
"fixe": p.fixe,
"email": p.email,
"eligible": p.eligible,
}))
self.update({"participant_ids": participant_ids})
return participant_ids
user_id = fields.Many2one(
"res.users",
......@@ -59,6 +58,7 @@ class ProjectTask(models.Model):
("reference", "=", "prereference"),
],
ondelete="restrict",
default=_default_formateur_id,
)
duree_jr = fields.Selection(
[
......@@ -69,7 +69,10 @@ class ProjectTask(models.Model):
)
duree_hr = fields.Float("Durée (int)", compute="_compute_duree_hr", store=True)
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")
date_account = fields.Date("Date de la facture")
......
......@@ -21,26 +21,28 @@
<field name="inherit_id" ref="project.view_task_form2" />
<field name="arch" type="xml">
<xpath expr="//notebook" position="before">
<group>
<field name="participant_ids" widget="one2many">
<tree
string="Participants"
editable="top"
default_order='porteur_id'
>
<field name="porteur_id" />
<field name="lastname" />
<field name="firstname" />
<field name="commune" />
<field name="mobile" />
<field name="fixe" />
<field name="email" widget="email" />
<field name="h_theoriques" />
<field name="h_pratiques" />
<field name="eligible" />
</tree>
</field>
</group>
<label for="participant_ids" />
<field name="participant_ids"
widget="one2many"
domain="[('project_id', '=', context.get('active_id'))]"
>
<tree
string="Participants"
editable="top"
default_order='porteur_id'
>
<field name="porteur_id" />
<field name="lastname" />
<field name="firstname" />
<field name="commune" />
<field name="mobile" />
<field name="fixe" />
<field name="email" widget="email" />
<field name="h_theoriques" />
<field name="h_pratiques" />
<field name="eligible" />
</tree>
</field>
</xpath>
<xpath expr="//field[@name='user_id']" position="after">
<field name="formateur_id" />
......
......@@ -365,7 +365,7 @@
</div>
<div
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">
<label for="nb_entreprises" style="font-weight: bold;" />
......