diff --git a/models/mucs_contract.py b/models/mucs_contract.py index bcd89e2952e608c2d2f72795e79b5c5e51de79fd..9f8640d3c84ed9c779b3863e90174b99b3223ba0 100644 --- a/models/mucs_contract.py +++ b/models/mucs_contract.py @@ -11,12 +11,9 @@ class Contract(models.Model): name = fields.Char(compute="_compute_name") date_start = fields.Date("Début du contrat", required=True) date_end = fields.Date("Fin du contrat") - number = fields.Char("Numéro de contrat", required=True) - # On attend d'avoir des données - # product_id = fields.Many2one("Type de couverture") - type = fields.Char("Type de couverture") # will be computed on product_id + code = fields.Char("Code contrat") + is_portabilite = fields.Boolean("Portabilité") member_count = fields.Integer("Effectifs adhérents") - maybe_member_count = fields.Integer("Potentiel adhérents") # relations partner_id = fields.Many2one(comodel_name="res.partner", required=True) @@ -36,7 +33,7 @@ class Contract(models.Model): # ------------------------------------------------------ def _compute_name(self): for contract in self: - contract.name = f"{contract.number} - {contract.partner_id.name}" + contract.name = f"{contract.code} - {contract.partner_id.name}" # ------------------------------------------------------ # Onchange / Constraints diff --git a/models/res_partner.py b/models/res_partner.py index 7538d3f3c3e8b02a9a7e46c1e6fcfb74e4126625..acb095b3f2f1b8cb4c184fbca0b72c41e9d44618 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -37,8 +37,9 @@ class ResPartner(models.Model): readonly=False, copy=False, tracking=True, + index=True, ) - num_orga = fields.Char("Numéro orga") + num_orga = fields.Char("Numéro orga", index=True) social_object = fields.Text("Objet Social") activity_desc = fields.Text("Description de l'activité") @@ -127,10 +128,27 @@ class ResPartner(models.Model): support_count = fields.Integer( "Nombre d'événements de gestion", compute="_compute_support_count", store=True ) + + # contracts contract_count = fields.Integer( "Nombre de contrats", compute="_compute_contract_count", store=True ) + member_count = fields.Integer( + "Effectif adhérent", + compute="_compute_member_count", + store=True, + help="L'effectif adhérent est la somme des effectifs " + "des contrats en cours hors portabilité.", + ) + maybe_member_count = fields.Integer( + "Potentiel adhérents", + compute="_compute_maybe_member_count", + store=True, + help="L'effectif potentiel est la différence entre " + "l'effectif communiqué et l'effectif adhérent.", + ) + # dates date_last_support = fields.Date( "Date du dernier support", compute="_compute_date_last_support", store=True ) @@ -176,6 +194,21 @@ class ResPartner(models.Model): for i in self: i.contract_count = len(i.contract_ids) + @api.depends("contract_ids", "contract_ids.member_count") + def _compute_member_count(self): + for i in self: + i.member_count = sum( + i.contract_ids.filtered( + lambda c: not c.date_end and not c.is_portabilite + ).mapped("member_count") + ) + + @api.depends("company_size", "member_count") + def _compute_maybe_member_count(self): + for i in self: + if i.company_size and i.member_count: + i.maybe_member_count = i.company_size - i.member_count + @api.depends("support_ids", "support_ids.date") def _compute_date_last_support(self): for i in self: diff --git a/views/mucs_contract.xml b/views/mucs_contract.xml index 8d88749e4ce3a66c0bd0193f1ae4b329deec0fd6..dbaf8667cc6a65f353dfaecba66e2f55284efab3 100644 --- a/views/mucs_contract.xml +++ b/views/mucs_contract.xml @@ -9,15 +9,20 @@ <field name="arch" type="xml"> <search> <field name="partner_id" /> - <field name="number" /> + <field name="code" /> <filter name="date_start" date="date_start" string="Début de contrat" /> <filter name="date_end" date="date_end" string="Fin de contrat" /> <group expand="0" name="group_by" string="Group By"> <filter - name="group_type" + name="filter_portabilite" + string="Portabilité" + domain="[('is_portabilite', '=', False)]" + /> + <filter + name="group_code" string="Type" domain="[]" - context="{'group_by' : 'type'}" + context="{'group_by' : 'code'}" /> <filter name="group_partner_id" @@ -38,9 +43,9 @@ <form> <group> <group> - <field name="number" /> + <field name="code" /> <field name="partner_id" /> - <field name="type" /> + <field name="is_portabilite" /> </group> <group> <field name="date_start" /> @@ -48,7 +53,6 @@ </group> <group> <field name="member_count" /> - <field name="maybe_member_count" /> </group> </group> </form> @@ -61,11 +65,10 @@ <field name="model">mucs.contract</field> <field name="arch" type="xml"> <list> - <field name="number" /> <field name="partner_id" /> - <field name="type" /> + <field name="code" /> + <field name="is_portabilite" /> <field name="member_count" /> - <field name="maybe_member_count" /> <field name="date_start" /> <field name="date_end" /> <field name="write_date" optional="hide" /> diff --git a/views/res_partner.xml b/views/res_partner.xml index cf9318191de6b5cf3dda2e33e97ba4eeaccf7cf6..052b6fe614e94855a0bc5575fd34e9d6391b6b59 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -101,7 +101,10 @@ name="cooperative_form_id" invisible="not is_cooperative" /> - <field name="date_coop"/> + <field + name="date_coop" + invisible="not is_cooperative" + /> <field name="date_registration"/> <field name="date_dissolution"/> </group> @@ -131,6 +134,10 @@ <field name="is_member_mutex" /> <field name="type_rma_aid" /> </group> + <group> + <field name="member_count" /> + <field name="maybe_member_count" /> + </group> </group> <separator /> <group> @@ -146,12 +153,11 @@ <group string="Contrats"> <field name="contract_ids" nolabel="1"> <list> - <field name="number" /> - <field name="type" /> + <field name="code" /> + <field name="is_portabilite" /> <field name="member_count" /> - <field name="maybe_member_count" /> - <field name="date_start" optional="hide" /> - <field name="date_end" optional="hide" /> + <field name="date_start" optional="show" /> + <field name="date_end" optional="show" /> <field name="write_date" optional="hide" /> <field name="write_uid" optional="hide" /> </list> @@ -411,7 +417,7 @@ <!-- Action --> <record id="contacts.action_contacts" model="ir.actions.act_window"> - <field name="domain">[('is_cooperative', '!=', True)]</field> + <field name="domain">[('is_company', '!=', True)]</field> </record> <record id="coop_partner_action" model="ir.actions.act_window"> @@ -421,7 +427,7 @@ <field name="view_mode">list,pivot,graph,form</field> <field name="view_id" ref="mucs_coop_partner_tree"/> <field name="search_view_id" ref="mucs_coop_partner_search" /> - <field name="domain">[('is_cooperative', '=', True)]</field> + <field name="domain">[('is_company', '=', True)]</field> <field name="path">coop</field> <field name="context"> {