diff --git a/models/res_partner.py b/models/res_partner.py index 8a6d79a35a571c12c0af8936a40fc37bfe3d523b..23f11317ab1f721cc0c92f96887acbe6f0363587 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -4,13 +4,10 @@ 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" @@ -109,6 +106,7 @@ class ResPartner(models.Model): contact_address_simple = fields.Char( compute="_compute_contact_address_simple", string="Adresse simplifiée") + fields_to_copy_to_clipboard = fields.Char("Champs à copier", compute="_compute_copy_to_clipboard", ) # ------------------------------------------------------ # SQL Constraints # ------------------------------------------------------ @@ -120,6 +118,13 @@ class ResPartner(models.Model): # ------------------------------------------------------ # Computed fields / Search Fields # ------------------------------------------------------ + def _compute_copy_to_clipboard(self): + for record in self: + res = (record.lastname or "") + " " + (record.firstname or "") + "\n" + (record.street or "") + "\n" + (record.street2 or "") + "\n" + (record.street3 or "") + "\n" + (record.zip or "") + " " + (record.city or "") + "\n" + (record.parent_id.name or "") + "\n" + (record.mobile or "") + "\n" + (record.email or "") + while "\n\n" in res: + res = res.replace("\n\n", "\n") + record.fields_to_copy_to_clipboard = res.lstrip() + @api.model def _get_default_address_format_simple(self): return "%(street)s\n%(street2)s\n%(street3)s\n%(city)s %(zip)s" @@ -262,10 +267,6 @@ 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/views/res_partner.xml b/views/res_partner.xml index 3c71ed399e59f6c22c36ed2751cb4d341b60215c..b39cfdb455f6beaa5787567bfca3b4f08c72a2b6 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -262,17 +262,6 @@ <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" @@ -350,6 +339,11 @@ <group name="alert" class="oe_edit_only"> <field name="alert" /> </group> + <group> + <div> + <field name="fields_to_copy_to_clipboard" widget="CopyClipboardChar" options="{'string': 'Copier les données'}"/> + </div> + </group> </xpath> <!-- Person -->