From 7c89d4ecdfa8980db4b8e2795cb66cb3464efbe9 Mon Sep 17 00:00:00 2001 From: Hugo Trentesaux <hugo@le-filament.com> Date: Tue, 8 Apr 2025 17:33:50 +0200 Subject: [PATCH] wip --- __manifest__.py | 3 ++- models/res_partner.py | 32 +++++++++++++++++++++++++++++++- views/res_partner.xml | 39 +++++++++++++++++++++++++++++---------- 3 files changed, 62 insertions(+), 12 deletions(-) diff --git a/__manifest__.py b/__manifest__.py index 483441a..02fb90e 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -5,7 +5,8 @@ "website": "https://le-filament.com", "version": "18.0.1.0.0", "license": "AGPL-3", - "depends": [], + "depends": ["l10n_fr_state", "l10n_fr_department", + "l10n_fr_department_oversea"], "data": [ "security/ir.model.access.csv", # datas diff --git a/models/res_partner.py b/models/res_partner.py index 47c43b3..75c0149 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -8,12 +8,36 @@ from odoo.exceptions import ValidationError class ResPartner(models.Model): _inherit = "res.partner" - # ------------------------------------------------------ # Fields declaration # ------------------------------------------------------ is_cooperative = fields.Boolean("Est une coopérative") + is_member_cgscop = fields.Boolean("Est adhérent à la CG SCOP") + size_group = fields.Selection( + [("1-5", "1 à 5"), ("5-15", "5 à 15"), ("15-50", "15 à 50"), + ("50-100", "50 à 100"), ("+100", "plus de 100")], + string="Tranche d'effectif") + + siret = fields.Char(index=True, tracking=True, copy=False) + siren = fields.Char( + string="SIREN", + compute="_compute_siren", + store=True, + readonly=False, + copy=False, + tracking=True + ) + + # overwrite state to compute it based on department which itself is computed from zip + state_id = fields.Many2one("res.country.state", string='State', + ondelete='restrict', + domain="[('country_id', '=?', country_id)]", + related="country_department_id.state_id", + ) + + # relations ----- + ur_id = fields.Many2one( comodel_name="union.regionale", string="Union Régionale", @@ -33,6 +57,12 @@ class ResPartner(models.Model): # Computed fields / Search Fields # ------------------------------------------------------ + @api.depends("siret") + def _compute_siren(self): + for partner in self: + if partner.siret: + partner.siren = partner.siret.replace(" ", "")[0:9] + # ------------------------------------------------------ # Onchange / Constraints # ------------------------------------------------------ diff --git a/views/res_partner.xml b/views/res_partner.xml index a4d4353..3124f43 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -3,12 +3,12 @@ License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> <odoo> <!-- View --> + <!-- Form --> - <record id="view_partner_form" model="ir.ui.view"> - <field name="name">res.partner.form</field> + <record id="view_partner_form_inherit" model="ir.ui.view"> + <field name="name">res.partner.form.inherit</field> <field name="model">res.partner</field> <field name="inherit_id" ref="base.view_partner_form"/> - <field name="mode">primary</field> <field name="arch" type="xml"> <xpath expr="//h1" position="before"> <span invisible="not is_company"> @@ -16,6 +16,28 @@ <field name="is_cooperative"/> </span> </xpath> + <xpath expr="//h1" position="after"> + <group invisible="not is_company"> + <group> + <field name="ur_id" invisible="not is_cooperative"/> + <field name="size_group"/> + </group> + </group> + </xpath> + <xpath expr="//field[@name='vat']" position="after"> + <field name="siret" readonly="1" widget="CopyClipboardChar"/> + <field name="siren" readonly="1" widget="CopyClipboardChar"/> + </xpath> + <xpath expr="//page[@name='contact_addresses']" position="before"> + <page + name="company" + string="Company" + invisible="not is_company" + > + <group> + </group> + </page> + </xpath> </field> </record> @@ -24,10 +46,11 @@ <field name="name">res.partner.list</field> <field name="model">res.partner</field> <field name="inherit_id" ref="base.view_partner_tree"/> - <field name="mode">primary</field> <field name="arch" type="xml"> <xpath expr="//field[@name='complete_name']" position="after"> <field name="ur_id" optional="hide"/> + <field name="state_id" optional="hide"/> + <field name="country_department_id" optional="hide"/> </xpath> </field> </record> @@ -37,7 +60,6 @@ <field name="name">res.partner.search</field> <field name="model">res.partner</field> <field name="inherit_id" ref="base.view_res_partner_filter"/> - <field name="mode">primary</field> <field name="arch" type="xml"> <!-- Search --> <xpath expr="//field[@name='name']" position="after"> @@ -58,11 +80,8 @@ <!-- </xpath>--> <!-- Group --> <xpath expr="//filter[@name='salesperson']" position="before"> - <!-- <filter--> - <!-- string="A jour des cotisations"--> - <!-- name="group_ur_id"--> - <!-- context="{'group_by': 'ur_id'}"--> - <!-- />--> + <filter string="Région" name="group_state_id" + context="{'group_by': 'state_id'}"/> </xpath> </field> </record> -- GitLab