From cc71138b3884c709c152f215f8f423a369810421 Mon Sep 17 00:00:00 2001 From: RemiFr82 Date: Sun, 26 May 2024 16:35:55 +0200 Subject: [PATCH] [IMP] ffck_commons partner fields + [I18N] --- ffck_commons/__init__.py | 2 + ffck_commons/__manifest__.py | 3 +- ffck_commons/data/ffck_structure_type.xml | 7 +- ffck_commons/data/res_partner.xml | 26 ++- ffck_commons/i18n/fr.po | 201 +++++++++++++++++++++ ffck_commons/models/__init__.py | 2 + ffck_commons/models/ffck_structure_type.py | 2 +- ffck_commons/models/res_partner.py | 52 +++--- ffck_commons/security/ir.model.access.csv | 3 + ffck_commons/security/ir_rule.xml | 19 ++ ffck_commons/security/res_groups.xml | 15 ++ ffck_commons/views/res_partner.xml | 33 ++-- 12 files changed, 310 insertions(+), 55 deletions(-) create mode 100644 ffck_commons/i18n/fr.po create mode 100644 ffck_commons/security/ir.model.access.csv create mode 100644 ffck_commons/security/ir_rule.xml create mode 100644 ffck_commons/security/res_groups.xml diff --git a/ffck_commons/__init__.py b/ffck_commons/__init__.py index e69de29..a0fdc10 100644 --- a/ffck_commons/__init__.py +++ b/ffck_commons/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import models diff --git a/ffck_commons/__manifest__.py b/ffck_commons/__manifest__.py index fd79159..3cd42b9 100644 --- a/ffck_commons/__manifest__.py +++ b/ffck_commons/__manifest__.py @@ -11,6 +11,7 @@ "category": "Technical", "depends": [ "base", + "l10n_fr_association", "partner_contact_email2", "partner_contact_phones2", "partner_firstname", @@ -26,7 +27,7 @@ "data/ffck_structure_type.xml", "data/res_partner.xml", # Security - # 'security/res_groups.xml', + "security/ir.model.access.csv", # Views "views/res_partner.xml", # Wizards diff --git a/ffck_commons/data/ffck_structure_type.xml b/ffck_commons/data/ffck_structure_type.xml index ecdc02c..b7f80c8 100644 --- a/ffck_commons/data/ffck_structure_type.xml +++ b/ffck_commons/data/ffck_structure_type.xml @@ -12,38 +12,43 @@ CRCK CRCK reg + CDCK CDCK dep + Affiliate member CLUB loc + Type A agreed member AGRA loc + Type B agreed member AGRB loc + Conventioned member CONV loc + - \ No newline at end of file diff --git a/ffck_commons/data/res_partner.xml b/ffck_commons/data/res_partner.xml index 3d90a2a..7a02642 100644 --- a/ffck_commons/data/res_partner.xml +++ b/ffck_commons/data/res_partner.xml @@ -2,18 +2,26 @@ - + Fédération Française Canoë-Kayak et Sports de Pagaie - - - - + + Stade nautique olympique d’Ile-de-France + Route de Torcy + 77360 + VAIRES SUR MARNE - - - - + FR08785724378 + +33 1 45 11 08 50 + ffck@ffck.org + https://ffck.org + FFCK + W941001049 + 78572437800050 + + 0 + nat + diff --git a/ffck_commons/i18n/fr.po b/ffck_commons/i18n/fr.po new file mode 100644 index 0000000..4a63bea --- /dev/null +++ b/ffck_commons/i18n/fr.po @@ -0,0 +1,201 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * ffck_commons +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0-20230613\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-26 13:55+0000\n" +"PO-Revision-Date: 2024-05-26 13:55+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_ffck_structure_type__active +msgid "Active" +msgstr "Actif" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_res_partner__cdck_partner_id +#: model:ir.model.fields,field_description:ffck_commons.field_res_users__cdck_partner_id +msgid "CDCK partner" +msgstr "CDCK" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_res_partner__crck_partner_id +#: model:ir.model.fields,field_description:ffck_commons.field_res_users__crck_partner_id +msgid "CRCK partner" +msgstr "CRCK" + +#. module: ffck_commons +#: model:ir.model,name:ffck_commons.model_res_partner +msgid "Contact" +msgstr "" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_ffck_structure_type__create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_ffck_structure_type__create_date +msgid "Created on" +msgstr "Créé le" + +#. module: ffck_commons +#: model:ir.model.fields.selection,name:ffck_commons.selection__ffck_structure_type__scale__dep +#: model:ir.model.fields.selection,name:ffck_commons.selection__res_partner__partner_scale__dep +msgid "Departmental" +msgstr "Départementale" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_ffck_structure_type__display_name +msgid "Display Name" +msgstr "Nom d'affichage" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_res_partner__ffck_partner_code +#: model:ir.model.fields,field_description:ffck_commons.field_res_users__ffck_partner_code +#: model_terms:ir.ui.view,arch_db:ffck_commons.view_partner_form_inherit_base +msgid "FFCK" +msgstr "" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_res_partner__cdck_partner_code +#: model:ir.model.fields,field_description:ffck_commons.field_res_partner__crck_partner_code +#: model:ir.model.fields,field_description:ffck_commons.field_res_partner__partner_code +#: model:ir.model.fields,field_description:ffck_commons.field_res_users__cdck_partner_code +#: model:ir.model.fields,field_description:ffck_commons.field_res_users__crck_partner_code +#: model:ir.model.fields,field_description:ffck_commons.field_res_users__partner_code +msgid "FFCK code" +msgstr "Code FFCK" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_res_partner__ffck_network +#: model:ir.model.fields,field_description:ffck_commons.field_res_users__ffck_network +msgid "FFCK network" +msgstr "Réseau FFCK" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_res_partner__ffck_partner_id +#: model:ir.model.fields,field_description:ffck_commons.field_res_users__ffck_partner_id +msgid "FFCK partner" +msgstr "FFCK" + +#. module: ffck_commons +#: model:ir.model,name:ffck_commons.model_ffck_structure_type +msgid "FFCK structure type" +msgstr "Type de structure" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_ffck_structure_type__id +msgid "ID" +msgstr "" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_ffck_structure_type____last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_ffck_structure_type__write_uid +msgid "Last Updated by" +msgstr "Dernière modification par" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_ffck_structure_type__write_date +msgid "Last Updated on" +msgstr "Dernière mise à jour le" + +#. module: ffck_commons +#: model_terms:ir.ui.view,arch_db:ffck_commons.view_partner_form_inherit_base +msgid "License code" +msgstr "N° de licence" + +#. module: ffck_commons +#: model:ir.model.fields.selection,name:ffck_commons.selection__ffck_structure_type__scale__lic +#: model:ir.model.fields.selection,name:ffck_commons.selection__res_partner__partner_scale__lic +msgid "Licensee" +msgstr "Licencié" + +#. module: ffck_commons +#: model_terms:ir.ui.view,arch_db:ffck_commons.view_partner_form_inherit_base +msgid "Licensee information" +msgstr "Informations licencié" + +#. module: ffck_commons +#: model:ir.model.fields.selection,name:ffck_commons.selection__ffck_structure_type__scale__loc +#: model:ir.model.fields.selection,name:ffck_commons.selection__res_partner__partner_scale__loc +msgid "Local" +msgstr "Locale" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_ffck_structure_type__name +msgid "Name" +msgstr "Nom" + +#. module: ffck_commons +#: model:ir.model.fields.selection,name:ffck_commons.selection__ffck_structure_type__scale__nat +#: model:ir.model.fields.selection,name:ffck_commons.selection__res_partner__partner_scale__nat +msgid "National" +msgstr "Nationale" + +#. module: ffck_commons +#: model_terms:ir.ui.view,arch_db:ffck_commons.view_partner_form_inherit_base +msgid "Network" +msgstr "Réseau fédéral" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_ffck_structure_type__parent_id +msgid "Parent" +msgstr "" + +#. module: ffck_commons +#: model:ir.model.fields.selection,name:ffck_commons.selection__ffck_structure_type__scale__reg +#: model:ir.model.fields.selection,name:ffck_commons.selection__res_partner__partner_scale__reg +msgid "Regional" +msgstr "Régionale" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_ffck_structure_type__scale +#: model:ir.model.fields,field_description:ffck_commons.field_res_partner__partner_scale +#: model:ir.model.fields,field_description:ffck_commons.field_res_users__partner_scale +msgid "Scale" +msgstr "Échelle" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_ffck_structure_type__short +msgid "Short" +msgstr "Initiales" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_res_partner__first_membership_date +#: model:ir.model.fields,field_description:ffck_commons.field_res_users__first_membership_date +msgid "Structure 1st membership" +msgstr "Première adhésion" + +#. module: ffck_commons +#: model_terms:ir.ui.view,arch_db:ffck_commons.view_partner_form_inherit_base +msgid "Structure code" +msgstr "Code structure" + +#. module: ffck_commons +#: model_terms:ir.ui.view,arch_db:ffck_commons.view_partner_form_inherit_base +msgid "Structure dates" +msgstr "Dates de la structure" + +#. module: ffck_commons +#: model_terms:ir.ui.view,arch_db:ffck_commons.view_partner_form_inherit_base +msgid "Structure information" +msgstr "Infos de la structure" + +#. module: ffck_commons +#: model:ir.model.fields,field_description:ffck_commons.field_res_partner__ffck_structure_type_id +#: model:ir.model.fields,field_description:ffck_commons.field_res_users__ffck_structure_type_id +msgid "Structure type" +msgstr "Type de structure" diff --git a/ffck_commons/models/__init__.py b/ffck_commons/models/__init__.py index 91fed54..86cfff5 100644 --- a/ffck_commons/models/__init__.py +++ b/ffck_commons/models/__init__.py @@ -1 +1,3 @@ +# -*- coding: utf-8 -*- +from . import ffck_structure_type from . import res_partner diff --git a/ffck_commons/models/ffck_structure_type.py b/ffck_commons/models/ffck_structure_type.py index d9a6847..7dfa950 100644 --- a/ffck_commons/models/ffck_structure_type.py +++ b/ffck_commons/models/ffck_structure_type.py @@ -11,4 +11,4 @@ class FfckStructureType(models.Model): short = fields.Char("Short", required=True, index=True) scale = fields.Selection(SCALES, string="Scale", required=True) active = fields.Boolean(string="Active", default=True) - parent_id = fields.Many2one("ffck.structure.type", string="parent") + parent_id = fields.Many2one(comodel_name="ffck.structure.type", string="Parent") diff --git a/ffck_commons/models/res_partner.py b/ffck_commons/models/res_partner.py index 298c1fa..27a8828 100644 --- a/ffck_commons/models/res_partner.py +++ b/ffck_commons/models/res_partner.py @@ -1,17 +1,5 @@ # -*- coding: utf-8 -*- from odoo import models, fields, api -from odoo.osv.expression import OR, AND - -# STRUCTURE_TYPES = [ -# ('ffck', 'Federal'), -# ('crck', 'Region'), -# ('cdck', 'Department'), -# ('club', 'Affiliate'), -# ('agra', 'Agreement A'), -# ('agrb', 'Agreement B'), -# ('conv', 'Convention'), -# ('asso', 'Associated'), -# ] SCALES = [ ("nat", "National"), @@ -27,7 +15,7 @@ class ResPartner(models.Model): @api.model def _get_ffck_partner(self): - ffck = self.env.ref("ffck_commons.ffck_partner") + ffck = self.env.ref("ffck_commons.res_partner_ffck", raise_if_not_found=False) main = self.env.ref("base.main_partner") if main.ref == "FFCK": if ffck.active: @@ -37,8 +25,6 @@ class ResPartner(models.Model): return ffck # Partner fields - structure_create_date = fields.Date("Structure creation") - # FFCK fields ffck_network = fields.Boolean(string="FFCK network") first_membership_date = fields.Date("Structure 1st membership") # Structure typing @@ -46,29 +32,35 @@ class ResPartner(models.Model): selection=SCALES, string="Scale", ) - ffck_type_id = fields.Many2one( + ffck_structure_type_id = fields.Many2one( comodel_name="ffck.structure.type", string="Structure type" ) - # structure_type = fields.Selection( - # selection=STRUCTURE_TYPES, - # string="Structure", - # ) + partner_code = fields.Char(string="FFCK code", size=6, index=True) + # partner_code_editable = fields.Boolean(string="FFCK code editable", compute="_can_edit_partner_code") + # FFCK ffck_partner_id = fields.Many2one( "res.partner", string="FFCK partner", default=_get_ffck_partner, ondelete="restrict", ) - ffck_code = fields.Char(string="FFCK", default="0", readonly=True) + ffck_partner_code = fields.Char(string="FFCK", default="0", readonly=True) + # CRCK crck_partner_id = fields.Many2one( - "res.partner", string="CRCK partner", index=True, ondelete="restrict" + "res.partner", + string="CRCK partner", + index=True, + ondelete="restrict", ) - crck_code = fields.Char(related="crck_partner_id.partner_code", store=True) + crck_partner_code = fields.Char(related="crck_partner_id.partner_code", store=True) + # CDCK cdck_partner_id = fields.Many2one( - "res.partner", string="CDCK partner", index=True, ondelete="restrict" + "res.partner", + string="CDCK partner", + index=True, + ondelete="restrict", ) - cdck_code = fields.Char(related="cdck_partner_id.partner_code", store=True) - partner_code = fields.Char(string="FFCK code", size=6, index=True, readonly=True) + cdck_partner_code = fields.Char(related="cdck_partner_id.partner_code", store=True) @api.model def name_search(self, name="", args=None, operator="ilike", limit=100): @@ -112,7 +104,7 @@ class ResPartner(models.Model): # ONCHANGES - @api.onchange("partner_code") + @api.onchange("partner_code", "company_type", "ffck_network") def onchange_partner_code(self): if self.ffck_network and self.company_type == "individual": code = self.partner_code @@ -121,11 +113,11 @@ class ResPartner(models.Model): elif len(code) > 6: self.update({"partner_code": code[:-6]}) - @api.onchange("company_type", "partner_scale", "ffck_type_id") + @api.onchange("company_type", "partner_scale", "ffck_structure_type_id") def onchange_comp_type(self): if self.company_type == "individual": self.update({"partner_scale": "lic"}) elif self.partner_scale == "lic": self.update({"partner_scale": False}) - elif self.ffck_type_id: - self.update({"partner_scale": self.ffck_type_id.scale}) + elif self.ffck_structure_type_id: + self.update({"partner_scale": self.ffck_structure_type_id.scale}) diff --git a/ffck_commons/security/ir.model.access.csv b/ffck_commons/security/ir.model.access.csv new file mode 100644 index 0000000..d0d5d35 --- /dev/null +++ b/ffck_commons/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_ir_model_all,All ffck.structure.type,ffck_commons.model_ffck_structure_type,,1,0,0,0 +access_ir_model_group_partner_manager,Partner manager ffck.structure.type,ffck_commons.model_ffck_structure_type,base.group_partner_manager,1,1,1,0 \ No newline at end of file diff --git a/ffck_commons/security/ir_rule.xml b/ffck_commons/security/ir_rule.xml new file mode 100644 index 0000000..c5d0d52 --- /dev/null +++ b/ffck_commons/security/ir_rule.xml @@ -0,0 +1,19 @@ + + + + + + + + + + \ No newline at end of file diff --git a/ffck_commons/security/res_groups.xml b/ffck_commons/security/res_groups.xml new file mode 100644 index 0000000..86dbb2c --- /dev/null +++ b/ffck_commons/security/res_groups.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/ffck_commons/views/res_partner.xml b/ffck_commons/views/res_partner.xml index c3d3713..96036a3 100644 --- a/ffck_commons/views/res_partner.xml +++ b/ffck_commons/views/res_partner.xml @@ -6,31 +6,38 @@ res.partner - +

- - +

+ + - + + attrs="{'invisible':[('is_company','=',True)]}" /> - - - + attrs="{'invisible':[('is_company','=',False)]}" /> + - + - + -