diff --git a/i18n/fr.po b/i18n/fr.po new file mode 100644 index 0000000000000000000000000000000000000000..1488c9cbfc11c4a5bb6d240e71bc9030b113eb2d --- /dev/null +++ b/i18n/fr.po @@ -0,0 +1,25 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * base +# +# Translators: +# OCA Transbot <transbot@odoo-community.org>, 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-06-22 01:12+0000\n" +"PO-Revision-Date: 2017-06-22 01:12+0000\n" +"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: base +#: model:ir.model.fields,field_description:base.field_res_partner__commercial_company_name +#: model:ir.model.fields,field_description:base.field_res_users__commercial_company_name +msgid "Company Name Entity" +msgstr "Nom de l'organisme" diff --git a/models/afac_partner_list.py b/models/afac_partner_list.py index f3020e265b89f0e7f5cbed5186ba0c8d68eb4b35..563c3115eb516afe5e3e8b9dff79ea0f6f83ec12 100644 --- a/models/afac_partner_list.py +++ b/models/afac_partner_list.py @@ -4,6 +4,22 @@ from odoo import fields, models +class AfacPartnerAgroforestryInvolvement(models.Model): + _name = "afac.partner.agroforestry.involvement" + _description = "Implication agroforesterie" + _order = "name" + + name = fields.Char(string="Nom", required=True) + + +class AfacPartnerReleaseReceipt(models.Model): + _name = "afac.partner.release.receipt" + _description = "Réception communiqué" + _order = "name" + + name = fields.Char(string="Nom", required=True) + + class AfacPartnerLegal(models.Model): _name = "afac.partner.legal" _description = "Statut Juridique du contact" diff --git a/models/afac_project.py b/models/afac_project.py index 1c2b682e01ace2990442cf42f82eb4d896b4baff..3e70ce69f7ba30df9a2d02f6630a0bb00219e58d 100644 --- a/models/afac_project.py +++ b/models/afac_project.py @@ -29,7 +29,7 @@ class AfacProject(models.Model): category_ids = fields.One2many( comodel_name="afac.project.category", inverse_name="project_id", - string="Etapes/Catégories", + string="Sous-projets", ) # ------------------------------------------------------ diff --git a/models/afac_project_category.py b/models/afac_project_category.py index 05ff31578a4643499a71c937c887daa7f353d36d..fb71abc804aa3287d9bd931c3e2cc3a6e4f27a89 100644 --- a/models/afac_project_category.py +++ b/models/afac_project_category.py @@ -6,7 +6,7 @@ from odoo import fields, models class AfacProjectCategory(models.Model): _name = "afac.project.category" - _description = "Etapes-Categories Projets AFAC" + _description = "Sous Projets AFAC" name = fields.Char("Nom", required=True) project_id = fields.Many2one(comodel_name="afac.project", string="Projet") diff --git a/models/afac_project_partner.py b/models/afac_project_partner.py index 3190bf942fc1ab1d1956a859faec09d97bed3812..c186893ee44bca8ef7e25bc6859b7e840ded6b15 100644 --- a/models/afac_project_partner.py +++ b/models/afac_project_partner.py @@ -31,7 +31,7 @@ class AfacProjectPartner(models.Model): column1="partner_project_id", column2="category_id", domain=_get_project_cat, - string="Listes/Catégories", + string="Sous-Projets", ) company_id = fields.Many2one( comodel_name="res.company", diff --git a/models/res_partner.py b/models/res_partner.py index aa62c162d3ea79d5379aa37f099311382d17aefd..2237e1ddb01ba29163d91b13d46243f401223712 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -1,8 +1,16 @@ # Copyright 2021 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +import logging +from collections import defaultdict + +import pyperclip + from odoo import api, fields, models +_logger = logging.getLogger(__name__) + +# ADDRESS_FIELDS = ('street', 'street2', 'zip', 'city') class ResPartner(models.Model): _inherit = "res.partner" @@ -10,7 +18,15 @@ class ResPartner(models.Model): # Company Fields short_name = fields.Char("Sigle/Nom abrégé") email2 = fields.Char("Email 2") - phone3 = fields.Char("Autre téléphone") + phone3 = fields.Char("Téléphone personnel") + release_receipt_id = fields.Many2one( + comodel_name="afac.partner.release.receipt", + string="Réception communiqué", + ) + agroforestry_involvement_id = fields.Many2one( + comodel_name="afac.partner.agroforestry.involvement", + string="Implication agroforesterie", + ) legal_status_id = fields.Many2one( comodel_name="afac.partner.legal", string="Statut Juridique", @@ -61,7 +77,7 @@ class ResPartner(models.Model): ) project_category_names = fields.Text( compute="_compute_project_category_names", - string="Listes/Catégories de projet", + string="Sous-projet", store=True, ) # Contact fields @@ -91,6 +107,8 @@ class ResPartner(models.Model): search="_search_is_my_region", ) + contact_address_simple = fields.Char( + compute="_compute_contact_address_simple", string="Adresse simplifiée") # ------------------------------------------------------ # SQL Constraints # ------------------------------------------------------ @@ -102,6 +120,27 @@ class ResPartner(models.Model): # ------------------------------------------------------ # Computed fields / Search Fields # ------------------------------------------------------ + @api.model + def _get_default_address_format_simple(self): + return "%(street)s\n%(street2)s\n%(city)s %(zip)s\n" + + @api.model + def _get_address_format_simple(self): + return self._get_default_address_format_simple() + + @api.depends(lambda self: self._formatting_address_fields()) + def _compute_contact_address_simple(self): + for partner in self: + partner.contact_address_simple = partner._display_address_simple() + + def _display_address_simple(self): + address_format = self._get_address_format_simple() + args = defaultdict(str, { + }) + for field in self._formatting_address_fields(): + args[field] = getattr(self, field) or '' + return address_format % args + @api.depends("child_ids", "child_ids.is_legal_representative") def _compute_legal_representative(self): for partner in self: @@ -220,6 +259,10 @@ class ResPartner(models.Model): # ------------------------------------------------------ # Actions # ------------------------------------------------------ + def copy_to_clipboard(self): + for record in self: + text_to_copy = (record.lastname or "") + " " + (record.firstname or "") + "\n" + (record.street or "") + "\n" + (record.street2 or "") + "\n" + (record.zip or "") + " " + (record.city or "") + "\n" + (record.parent_id.name or "") + "\n" + (record.mobile or "") + "\n" + (record.email or "") + pyperclip.copy(text_to_copy) # ------------------------------------------------------ # Business methods diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index 1546b98c5950b8d88e05de0689c2fb11a062db81..c096b87c5ebeec5c097b1a6d935f65ac91e862f0 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -3,6 +3,8 @@ id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink "access_afac_partner_college_group_user","afac_partner_college_group_user","model_afac_partner_college","base.group_user",1,0,0,0 "access_afac_partner_legal_group_user","afac_partner_legal_group_user","model_afac_partner_legal","base.group_user",1,0,0,0 "access_afac_partner_legal_detail_group_user","afac_partner_legal_detail_group_user","model_afac_partner_legal_detail","base.group_user",1,0,0,0 +"access_afac_partner_release_receipt_group_user","afac_partner_release_receipt_group_user","model_afac_partner_release_receipt","base.group_user",1,0,0,0 +"access_afac_partner_agroforestry_involvement_group_user","afac_partner_agroforestry_involvement_group_user","model_afac_partner_agroforestry_involvement","base.group_user",1,0,0,0 "access_afac_partner_thematic_group_user","afac_partner_thematic_group_user","model_afac_partner_thematic","base.group_user",1,0,0,0 "access_afac_partner_type_group_user","afac_partner_type_group_user","model_afac_partner_type","base.group_user",1,0,0,0 "access_afac_partner_mandate_group_user","afac_partner_mandate_group_user","model_afac_partner_mandate","base.group_user",1,0,0,0 @@ -13,6 +15,8 @@ id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink "access_afac_partner_activity_group_manager","afac_partner_activity_group_manager","model_afac_partner_activity","afac_partner.group_afac_list_manager",1,1,1,1 "access_afac_partner_college_group_manager","afac_partner_college_group_manager","model_afac_partner_college","afac_partner.group_afac_list_manager",1,1,1,1 "access_afac_partner_legal_group_manager","afac_partner_legal_group_manager","model_afac_partner_legal","afac_partner.group_afac_list_manager",1,1,1,1 +"access_afac_partner_release_receipt_group_manager","afac_partner_release_receipt_group_manager","model_afac_partner_release_receipt","afac_partner.group_afac_list_manager",1,1,1,1 +"access_afac_partner_agroforestry_involvement_group_manager","afac_partner_agroforestry_involvement_group_manager","model_afac_partner_agroforestry_involvement","afac_partner.group_afac_list_manager",1,1,1,1 "access_afac_partner_legal_detail_group_manager","afac_partner_legal_detail_group_manager","model_afac_partner_legal_detail","afac_partner.group_afac_list_manager",1,1,1,1 "access_afac_partner_thematic_group_manager","afac_partner_thematic_group_manager","model_afac_partner_thematic","afac_partner.group_afac_list_manager",1,1,1,1 "access_afac_partner_type_group_manager","afac_partner_type_group_manager","model_afac_partner_type","afac_partner.group_afac_list_manager",1,1,1,1 diff --git a/views/afac_partner_list.xml b/views/afac_partner_list.xml index 1f26c1856ab24f2b4566f4a27874db63f23f35d7..34d809e95a9644aaa4229be4fa12b3c0c86aad0b 100644 --- a/views/afac_partner_list.xml +++ b/views/afac_partner_list.xml @@ -1,6 +1,51 @@ <?xml version="1.0" encoding="utf-8" ?> <odoo> <data> + <!-- Réception communiqué --> + <record id="afac_partner_release_receipt_tree_view" model="ir.ui.view"> + <field name="name">afac.partner.release.receipt.tree</field> + <field name="model">afac.partner.release.receipt</field> + <field name="arch" type="xml"> + <tree string="Réception communiqué" editable="top"> + <field name="name" /> + </tree> + </field> + </record> + + <record id="afac_partner_release_receipt_search_view" model="ir.ui.view"> + <field name="name">afac.partner.release.receipt.search</field> + <field name="model">afac.partner.release.receipt</field> + <field name="arch" type="xml"> + <search string="Réception communiqué"> + <field name="name" /> + </search> + </field> + </record> + + <!-- Implication agroforesterie --> + <record id="afac_partner_agroforestry_involvement_tree_view" model="ir.ui.view"> + <field name="name">afac.partner.agroforestry.involvement.tree</field> + <field name="model">afac.partner.agroforestry.involvement</field> + <field name="arch" type="xml"> + <tree string="Implication agroforesterie" editable="top"> + <field name="name" /> + </tree> + </field> + </record> + + <record + id="afac_partner_agroforestry_involvement_search_view" + model="ir.ui.view" + > + <field name="name">afac.partner.agroforestry.involvement.search</field> + <field name="model">afac.partner.agroforestry.involvement</field> + <field name="arch" type="xml"> + <search string="Implication agroforesterie"> + <field name="name" /> + </search> + </field> + </record> + <!-- Statut Juridique --> <record id="afac_partner_legal_tree_view" model="ir.ui.view"> <field name="name">afac.partner.legal.tree</field> @@ -178,6 +223,24 @@ <!-- ACTIONS --> + <record + id="afac_partner_release_receipt_act_window" + model="ir.actions.act_window" + > + <field name="name">Réception communiqué</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">afac.partner.release.receipt</field> + <field name="view_mode">tree</field> + </record> + <record + id="afac_partner_agroforestry_involvement_act_window" + model="ir.actions.act_window" + > + <field name="name">Implication agroforesterie</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">afac.partner.agroforestry.involvement</field> + <field name="view_mode">tree</field> + </record> <record id="afac_partner_legal_act_window" model="ir.actions.act_window"> <field name="name">Statut Juridique</field> <field name="type">ir.actions.act_window</field> @@ -245,6 +308,18 @@ parent="menu_afac_list_root" action="afac_partner_region_act_window" /> + <menuitem + name="Réception communiqué" + id="menu_afac_partner_release_receipt" + parent="menu_afac_list_root" + action="afac_partner_release_receipt_act_window" + /> + <menuitem + name="Implication agroforesterie" + id="menu_afac_partner_agroforestry_involvement" + parent="menu_afac_list_root" + action="afac_partner_agroforestry_involvement_act_window" + /> <menuitem name="Statuts Juridiques" id="menu_afac_partner_legal" diff --git a/views/afac_project.xml b/views/afac_project.xml index 3785915cd57735ddcb89e9daf3d11420f981fc0b..d70c0c7cdb90dec0b8f5a000fabf6c0c5d556249 100644 --- a/views/afac_project.xml +++ b/views/afac_project.xml @@ -74,10 +74,7 @@ <!-- </tree>--> </field> </page> - <page - name="project_categories" - string="Liste des étapes/catégories" - > + <page name="project_categories" string="Sous-projet"> <field name="category_ids" context="{'default_project_id': active_id, 'default_company_id': company_id}" diff --git a/views/res_partner.xml b/views/res_partner.xml index 524d020fe6a3dd2f49fa6a604c175aee4300340d..67b292da482b5305a9bf6be3c48feee61f03631b 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -73,6 +73,16 @@ string="Type de structure" context="{'group_by': 'org_type_id'}" /> + <filter + name="group_release_receipt_id" + string="Réception communiqué" + context="{'group_by': 'release_receipt_id'}" + /> + <filter + name="group_agroforestry_involvement_id" + string="Implication agroforesterie" + context="{'group_by': 'agroforestry_involvement_id'}" + /> <filter name="group_legal_status_id" string="Statut Juridique" @@ -122,6 +132,20 @@ enable_counters="1" filters="1" /> + <field + name="release_receipt_id" + select="multi" + icon="fa-building" + enable_counters="1" + filters="1" + /> + <field + name="agroforestry_involvement_id" + select="multi" + icon="fa-building" + enable_counters="1" + filters="1" + /> <field name="legal_status_id" select="multi" @@ -201,19 +225,33 @@ name="project_category_ids" optional="show" widget="many2many_tags" - string="Listes/Catégories de projet" + string="Sous-projet" /> <field name="college_id" optional="hide" /> <field name="thematic_id" optional="hide" /> <field name="org_type_id" optional="hide" /> <field name="region_id" optional="hide" /> <field name="action_area" optional="hide" /> + <field name="release_receipt_id" optional="hide" /> + <field name="agroforestry_involvement_id" optional="hide" /> <field name="legal_status_id" optional="hide" /> <field name="legal_status_detail_id" optional="hide" /> <field name="legal_representative" optional="hide" /> <field name="project_ids" widget="many2many_tags" optional="hide" /> <field name="short_name" optional="hide" /> </xpath> + <field name="user_id" position="attributes"> + <attribute name="invisible">1</attribute> + </field> + <field name="vat" position="attributes"> + <attribute name="invisible">1</attribute> + </field> + <field name="state_id" position="attributes"> + <attribute name="invisible">1</attribute> + </field> + <field name="activity_ids" position="attributes"> + <attribute name="invisible">1</attribute> + </field> </field> </record> @@ -224,6 +262,17 @@ <field name="inherit_id" ref="base.view_partner_form" /> <field name="priority">100</field> <field name="arch" type="xml"> + <xpath expr="//sheet" position="before"> + <header> + <button + string="Copier les infos du contact" + name="copy_to_clipboard" + type="object" + class="oe_highlight" + attrs="{'invisible': [('parent_id', '=', False)]}" + /> + </header> + </xpath> <xpath expr="//div[@name='button_box']" position="after"> <div class="alert alert-warning" @@ -337,6 +386,18 @@ attrs="{'invisible': ['|', ('parent_id', '!=', False), ('is_company', '!=', False)]}" readonly="1" /> + <field + name="release_receipt_id" + options="{'no_open': True, 'no_create': True}" + attrs="{'invisible': [('parent_id', '=', False)]}" + widget="selection" + /> + <field + name="agroforestry_involvement_id" + options="{'no_open': True, 'no_create': True}" + attrs="{'invisible': [('parent_id', '=', False)]}" + widget="selection" + /> </xpath> <xpath expr="//field[@name='function']" position="before"> <field