diff --git a/models/sale_project.py b/models/sale_project.py index 31d3f5553afe8305aa342a318d4331c55d4e9e83..9edc026416bf92388003aa5792453582e8a732cb 100644 --- a/models/sale_project.py +++ b/models/sale_project.py @@ -53,13 +53,14 @@ class SaleProject(models.Model): tracking=1, default=_get_default_admin_state_id, ) - sale_project_suivi_ids = fields.One2many( + sale_project_suivi_ids = fields.Many2many( comodel_name="sale.project.suivi", - inverse_name="sale_project_id", - string="Suivi étape", - related="admin_state_id.sale_project_suivi_ids", - tracking=2, + string="Suivi étape", tracking=2, ) + is_sale_project_suivi_empty = fields.Boolean( + string='Pas de suivi pour cette étape', + compute='_compute_is_sale_project_suivi_empty', + required=False) sale_project_advancement_ids = fields.Many2many( comodel_name="sale.project.advancement", string="Avancement", tracking=3 @@ -114,7 +115,19 @@ class SaleProject(models.Model): @api.depends('intervention_ids') def _compute_intervention_counter(self): for res in self: - res.intervention_counter = self.env['sale.intervention'].search_count([('project_id', '=', self.id)]) + res.intervention_counter = \ + self.env['sale.intervention'].search_count( + [('project_id', '=', self.id)]) + + def _compute_is_sale_project_suivi_empty(self): + for r in self: + sale_project_suivi_count = \ + self.env['sale.project.suivi'].search_count( + [('sale_project_admin_state_id', + '=', self.admin_state_id.id)]) + r.is_sale_project_suivi_empty = True \ + if sale_project_suivi_count == 0 else False + # ------------------------------------------------------ # Onchange / Constraints # ------------------------------------------------------ @@ -178,9 +191,9 @@ class SaleProjectSuivi(models.Model): _name = "sale.project.suivi" _description = "Suivi étape" + sale_project_admin_state_id = fields.Many2one( + string="Étape", comodel_name="sale.project.admin.state", required=True) name = fields.Char(string="Suivi étape", required=True) - sale_project_admin_state_id = fields.Many2one("sale.project.admin.state") - sale_project_id = fields.Many2one("sale.project") class SaleProjectAdvancement(models.Model): @@ -211,7 +224,7 @@ class SaleProjectAdminState(models.Model): sale_project_suivi_ids = fields.One2many( comodel_name="sale.project.suivi", inverse_name="sale_project_admin_state_id", - string="Suivis", + string="Suivi des étapes", ) @api.model diff --git a/views/sale_order_view.xml b/views/sale_order_view.xml index 7a4d70916435769618ba1c30691030e596e3c1b4..1b9c15e472d7cb4bd87a9f57df3112a19e931cb5 100644 --- a/views/sale_order_view.xml +++ b/views/sale_order_view.xml @@ -79,10 +79,22 @@ </field> </record> + <!-- List View Suivi des étapes--> + <record id="sale_project_suivi_view_list" model="ir.ui.view"> + <field name="name">Suivi des étapes</field> + <field name="model">sale.project.suivi</field> + <field name="arch" type="xml"> + <tree editable="top"> + <field name="sale_project_admin_state_id" options='{"no_open": True, "no_create": True}'/> + <field name="name" /> + </tree> + </field> + </record> + <record model="ir.actions.act_window" id="sale_project_suivi_act_window"> <field name="name">Suivi des étapes</field> <field name="res_model">sale.project.suivi</field> - <field name="view_mode">tree,form</field> + <field name="view_mode">tree</field> </record> <record model="ir.actions.act_window" id="sale_project_advancement_act_window"> diff --git a/views/sale_project_admin_state_views.xml b/views/sale_project_admin_state_views.xml index 815365d0c2f2a5d7de8fce9b7d26cbfddabf3fab..91f7757aafabe95231edc0ea57026c03d217ec4d 100644 --- a/views/sale_project_admin_state_views.xml +++ b/views/sale_project_admin_state_views.xml @@ -18,7 +18,7 @@ <group> <group> <field name="name" /> - <field name="sale_project_suivi_ids" widget="many2many_tags" /> + <field name="sale_project_suivi_ids" widget="many2many_tags" context="{'default_sale_project_admin_state_id': active_id}"/> <field name="sequence"/> </group> <group> diff --git a/views/sale_project_view.xml b/views/sale_project_view.xml index 90b2e754790c40062a264eb8e14ef691c8eb5214..483c66c067f255f7166b8c9ed41a66451b0b3b9b 100644 --- a/views/sale_project_view.xml +++ b/views/sale_project_view.xml @@ -25,10 +25,6 @@ icon="fa-pagelines" /> </div> - <field - name="sale_project_suivi_ids" - widget="many2many_checkboxes" - /> <field name="sale_order_id" invisible="True" /> <group name="required_infos" string="Projet"> @@ -44,10 +40,21 @@ </group> </group> <group> - <field - name="sale_project_advancement_ids" - widget="many2many_checkboxes" - /> + <group> + <field + name="sale_project_advancement_ids" + widget="many2many_checkboxes" + /> + </group> + <group> + <field name="is_sale_project_suivi_empty" invisible="1"/> + <field + name="sale_project_suivi_ids" + widget="many2many_checkboxes" + domain="[('sale_project_admin_state_id', '=', admin_state_id)]" + attrs="{'invisible': [('is_sale_project_suivi_empty','=', True)]}" + /> + </group> </group> <group name="interventions" class="oe_read_only"> <field name="intervention_ids" mode="tree" style="pointer-events: none;" @@ -142,9 +149,9 @@ <field name="search_view_id" ref="sale_project_search" /> <field name="context">{'search_default_group_by_order': True}</field> <field name="help" type="html"> - <p class="o_view_nocontent_empty_folder"> - Aucun projet trouvé. Créez un nouveau projet depuis un devis. - </p> + <p class="o_view_nocontent_empty_folder"> + Aucun projet trouvé. Créez un nouveau projet depuis un devis. + </p> </field> </record>