From 60fa937f3cf369a6a041db7171066dd650b45944 Mon Sep 17 00:00:00 2001 From: benjamin <benjamin@le-filament.com> Date: Thu, 6 Jun 2024 10:47:17 +0200 Subject: [PATCH] [UPD] partner staff management --- __manifest__.py | 2 +- models/res_partner.py | 6 +--- views/scop_config_views.xml | 7 +++++ views/scop_partner_staff.xml | 59 +++++++++++++++++++++++++++++++++++- wizard/scop_deces_wizard.py | 2 +- wizard/scop_deces_wizard.xml | 13 ++++++++ 6 files changed, 81 insertions(+), 8 deletions(-) diff --git a/__manifest__.py b/__manifest__.py index 1684a32..6355642 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -56,9 +56,9 @@ "views/res_users.xml", "views/res_partner.xml", "views/res_partner_cooperative.xml", + "views/scop_partner_staff.xml", "views/scop_config_views.xml", "views/scop_config_lists_views.xml", - "views/scop_partner_staff.xml", "views/scop_period_views.xml", "views/scop_federation_activity.xml", ], diff --git a/models/res_partner.py b/models/res_partner.py index a125d1a..b3b4416 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -1120,11 +1120,7 @@ class ScopPartner(models.Model): ) def _compute_last_effective(self): for partner in self: - lm = partner.staff_ids.search( - [["partner_id", "=", partner.id], ["staff_count", ">", 0]], - limit=1, - order="effective_date desc", - ) + lm = partner.staff_ids.sorted(key="effective_date", reverse=True) if lm: partner.staff_last = lm[0].staff_count partner.staff_shareholder_last = lm[0].staff_shareholder_count diff --git a/views/scop_config_views.xml b/views/scop_config_views.xml index 8dee85f..d71c8b2 100644 --- a/views/scop_config_views.xml +++ b/views/scop_config_views.xml @@ -526,6 +526,13 @@ groups="base.group_no_one" /> + <menuitem + id="menu_res_partner_staff" + parent="contacts.res_partner_menu_config" + action="action_view_res_partner_staff" + sequence="10" + groups="group_cg_administrative" + /> <menuitem id="menu_res_partner_segment1" parent="contacts.res_partner_menu_config" diff --git a/views/scop_partner_staff.xml b/views/scop_partner_staff.xml index bbb39a9..02cffd8 100644 --- a/views/scop_partner_staff.xml +++ b/views/scop_partner_staff.xml @@ -3,7 +3,7 @@ License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> <odoo> <data> - + <!-- Form view --> <record id="scop_partner_staff_form_view" model="ir.ui.view"> <field name="name">scop.partner.staff.form</field> <field name="model">scop.partner.staff</field> @@ -63,5 +63,62 @@ </field> </record> + <!-- Tree view --> + <record id="scop_partner_staff_tree_view" model="ir.ui.view"> + <field name="name">scop.partner.staff.tree</field> + <field name="model">scop.partner.staff</field> + <field name="arch" type="xml"> + <tree string="Effectifs"> + <field + name="partner_id" + options="{'no_create': True, 'no_open': True}" + readonly="1" + /> + <field name="partner_city" optional="show" /> + <field name="partner_siret" optional="show" /> + <field name="user_id" readonly="1" /> + <field name="type_entry" /> + <field + name="effective_date" + attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription', 'membership'))]}" + /> + <field name="cooperative_form_id" invisible="1" /> + <field name="is_partner_in_tracked_naf" invisible="1" /> + <field + name="staff_count" + attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription', 'membership'))]}" + /> + <field + name="staff_shareholder_count" + attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription', 'membership'))]}" + /> + <field + name="staff_shareholder_total" + attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription', 'membership'))]}" + /> + <field + name="staff_average" + attrs="{'readonly':[('type_entry','in',('questionnaire', 'questionnaire_inscription', 'membership'))], 'required':[('is_partner_in_tracked_naf', '=', True)]}" + /> + + <field name="staff_men" optional="hide" /> + <field name="staff_women" optional="hide" /> + <field name="staff_shareholder_men" optional="hide" /> + <field name="staff_shareholder_women" optional="hide" /> + <field name="comment" optional="hide" /> + </tree> + </field> + </record> + + <record + id="action_view_res_partner_staff" + model="ir.actions.act_window" + > + <field name="name">Effectifs</field> + <field name="res_model">scop.partner.staff</field> + <field name="view_mode">tree,form</field> + <field name="help">Affiche et gère la liste des effectifs.</field> + </record> + </data> </odoo> diff --git a/wizard/scop_deces_wizard.py b/wizard/scop_deces_wizard.py index d047691..533c5ad 100644 --- a/wizard/scop_deces_wizard.py +++ b/wizard/scop_deces_wizard.py @@ -59,7 +59,7 @@ class ScopDecesWizard(models.TransientModel): else: raise ValidationError( _( - "La date de fin doit être postèrieure à la date de " + "La date de fin doit être postérieure à la date de " + "début de la dernière période: " ) + str(last_period.start) diff --git a/wizard/scop_deces_wizard.xml b/wizard/scop_deces_wizard.xml index 6dac189..7e78f3e 100644 --- a/wizard/scop_deces_wizard.xml +++ b/wizard/scop_deces_wizard.xml @@ -6,6 +6,19 @@ <field name="model">scop.deces.wizard</field> <field name="arch" type="xml"> <form string="Décès"> + <div class="alert alert-warning" role="alert"> + <strong>Attention :</strong> la validation de cette action va déclencher les actions suivantes : + <ul> + <li>clôture de la dernière ligne de l'historique (décès)</li> + <li>modification du statut de la coopérative (coop décédée)</li> + <li>affectation d'une date de décès et d'un motif de décès</li> + <li>clôture de la dernière période d'adhésion (mort économique)</li> + <li>modification du statut d'adhésion (radié)</li> + <li>expiration des mandats bancaires</li> + <li>modification du mode de paiement des factures et cotisations en cours (virement)</li> + <li>modification du mode de paiement par défaut de la coopérative (virement)</li> + </ul> + </div> <group name="period" string="Décès / Mise en sommeil"> <field name="end" /> <field -- GitLab