From dc0b8fa3d127e5e89fb414423f2f898eeb1de2f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=C3=B1aut=20Alberdi?= Date: Thu, 30 Jul 2026 09:01:11 +0200 Subject: [PATCH 1/2] [18.0][MIG] acysos_hlc_partner: Migration to 18.0 --- acysos_hlc_partner/README.rst | 27 ++++++ acysos_hlc_partner/__init__.py | 22 +++++ acysos_hlc_partner/__manifest__.py | 38 ++++++++ .../i18n/acysos_hlc_partner.pot | 87 ++++++++++++++++++ acysos_hlc_partner/i18n/es.po | 88 +++++++++++++++++++ acysos_hlc_partner/models/__init__.py | 1 + acysos_hlc_partner/models/res_partner.py | 20 +++++ acysos_hlc_partner/reports/__init__.py | 1 + .../reports/account_invoice_report.py | 36 ++++++++ .../security/ir.model.access.csv | 2 + acysos_hlc_partner/views/partner_views.xml | 69 +++++++++++++++ 11 files changed, 391 insertions(+) create mode 100644 acysos_hlc_partner/README.rst create mode 100644 acysos_hlc_partner/__init__.py create mode 100644 acysos_hlc_partner/__manifest__.py create mode 100644 acysos_hlc_partner/i18n/acysos_hlc_partner.pot create mode 100644 acysos_hlc_partner/i18n/es.po create mode 100644 acysos_hlc_partner/models/__init__.py create mode 100644 acysos_hlc_partner/models/res_partner.py create mode 100644 acysos_hlc_partner/reports/__init__.py create mode 100644 acysos_hlc_partner/reports/account_invoice_report.py create mode 100644 acysos_hlc_partner/security/ir.model.access.csv create mode 100644 acysos_hlc_partner/views/partner_views.xml diff --git a/acysos_hlc_partner/README.rst b/acysos_hlc_partner/README.rst new file mode 100644 index 00000000..7e9f9757 --- /dev/null +++ b/acysos_hlc_partner/README.rst @@ -0,0 +1,27 @@ +=========== +HLC Partner +=========== + +This module adds HLC partner segmentation fields and reporting support. + +Features +======== + +* Adds partner segments. +* Adds a segment field on contacts. +* Adds segment grouping on contact searches. +* Adds segment and current salesperson fields to the invoice report. + +Credits +======= + +Authors +------- + +* Acysos S.L. +* AvanzOSC + +Contributors +------------ + +* Leonidas Pezo diff --git a/acysos_hlc_partner/__init__.py b/acysos_hlc_partner/__init__.py new file mode 100644 index 00000000..0810b8df --- /dev/null +++ b/acysos_hlc_partner/__init__.py @@ -0,0 +1,22 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# @authors: Leonidas Pezo +# Copyright (C) 2018 Acysos S.L. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +from . import models +from . import reports diff --git a/acysos_hlc_partner/__manifest__.py b/acysos_hlc_partner/__manifest__.py new file mode 100644 index 00000000..cd90d890 --- /dev/null +++ b/acysos_hlc_partner/__manifest__.py @@ -0,0 +1,38 @@ +# -*- encoding: utf-8 -*- +############################################################################## +# +# @authors: Leonidas Pezo +# Copyright (C) 2019 Acysos S.L. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## +{ + "name": "HLC Partner", + "version": "18.0.1.0.0", + "author": "Acysos S.L., AvanzOSC", + "website": "https://bitbucket.org/hlc_avanzosc/hlc/", + "contributors": ["Leonidas Pezo "], + "category": "", + "license": "AGPL-3", + "depends": [ + "account", + "contacts", + ], + "data": [ + "security/ir.model.access.csv", + "views/partner_views.xml", + ], + "installable": True, +} diff --git a/acysos_hlc_partner/i18n/acysos_hlc_partner.pot b/acysos_hlc_partner/i18n/acysos_hlc_partner.pot new file mode 100644 index 00000000..b8d79919 --- /dev/null +++ b/acysos_hlc_partner/i18n/acysos_hlc_partner.pot @@ -0,0 +1,87 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * acysos_hlc_partner +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-23 00:00+0000\n" +"PO-Revision-Date: 2026-07-23 00:00+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: acysos_hlc_partner +#: model:ir.model,name:acysos_hlc_partner.model_res_partner +msgid "Contact" +msgstr "" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__create_uid +msgid "Created by" +msgstr "" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__create_date +msgid "Created on" +msgstr "" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_account_invoice_report__current_user_id +msgid "Current Salesperson" +msgstr "" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__display_name +msgid "Display Name" +msgstr "" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_res_partner__ext_id +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_res_users__ext_id +msgid "External id" +msgstr "" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__id +msgid "ID" +msgstr "" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__write_date +msgid "Last Updated on" +msgstr "" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__name +msgid "Name" +msgstr "" + +#. module: acysos_hlc_partner +#: model:ir.model,name:acysos_hlc_partner.model_partner_segment +#: model_terms:ir.ui.view,arch_db:acysos_hlc_partner.partner_segment_view_form +msgid "Partner Segment" +msgstr "" + +#. module: acysos_hlc_partner +#: model:ir.actions.act_window,name:acysos_hlc_partner.partner_segment_action +#: model:ir.ui.menu,name:acysos_hlc_partner.partner_segment_menu_act +msgid "Partner Segments" +msgstr "" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_account_invoice_report__hlc_segment_id +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_res_partner__hlc_segment_id +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_res_users__hlc_segment_id +#: model_terms:ir.ui.view,arch_db:acysos_hlc_partner.res_partner_view_search +msgid "Segment" +msgstr "" diff --git a/acysos_hlc_partner/i18n/es.po b/acysos_hlc_partner/i18n/es.po new file mode 100644 index 00000000..039bd9d0 --- /dev/null +++ b/acysos_hlc_partner/i18n/es.po @@ -0,0 +1,88 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * acysos_hlc_partner +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-07-23 00:00+0000\n" +"PO-Revision-Date: 2026-07-23 00:00+0000\n" +"Last-Translator: AvanzOSC\n" +"Language-Team: Spanish\n" +"Language: es\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: acysos_hlc_partner +#: model:ir.model,name:acysos_hlc_partner.model_res_partner +msgid "Contact" +msgstr "Contacto" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_account_invoice_report__current_user_id +msgid "Current Salesperson" +msgstr "Comercial actual" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_res_partner__ext_id +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_res_users__ext_id +msgid "External id" +msgstr "ID externo" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__id +msgid "ID" +msgstr "ID" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__write_uid +msgid "Last Updated by" +msgstr "Última actualización por" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__write_date +msgid "Last Updated on" +msgstr "Última actualización el" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_partner_segment__name +msgid "Name" +msgstr "Nombre" + +#. module: acysos_hlc_partner +#: model:ir.model,name:acysos_hlc_partner.model_partner_segment +#: model_terms:ir.ui.view,arch_db:acysos_hlc_partner.partner_segment_view_form +msgid "Partner Segment" +msgstr "Segmento de cliente" + +#. module: acysos_hlc_partner +#: model:ir.actions.act_window,name:acysos_hlc_partner.partner_segment_action +#: model:ir.ui.menu,name:acysos_hlc_partner.partner_segment_menu_act +msgid "Partner Segments" +msgstr "Segmentos de clientes" + +#. module: acysos_hlc_partner +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_account_invoice_report__hlc_segment_id +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_res_partner__hlc_segment_id +#: model:ir.model.fields,field_description:acysos_hlc_partner.field_res_users__hlc_segment_id +#: model_terms:ir.ui.view,arch_db:acysos_hlc_partner.res_partner_view_search +msgid "Segment" +msgstr "Segmento" diff --git a/acysos_hlc_partner/models/__init__.py b/acysos_hlc_partner/models/__init__.py new file mode 100644 index 00000000..4c588861 --- /dev/null +++ b/acysos_hlc_partner/models/__init__.py @@ -0,0 +1 @@ +from . import res_partner \ No newline at end of file diff --git a/acysos_hlc_partner/models/res_partner.py b/acysos_hlc_partner/models/res_partner.py new file mode 100644 index 00000000..2b4ef8b3 --- /dev/null +++ b/acysos_hlc_partner/models/res_partner.py @@ -0,0 +1,20 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + +from odoo import fields, models + + +class PartnerSegment(models.Model): + _name = "partner.segment" + _description = "Partner Segment" + + name = fields.Char(required=True) + + +class ResPartner(models.Model): + _inherit = "res.partner" + + ext_id = fields.Char(string="External id") + hlc_segment_id = fields.Many2one( + comodel_name="partner.segment", + string="Segment", + ) diff --git a/acysos_hlc_partner/reports/__init__.py b/acysos_hlc_partner/reports/__init__.py new file mode 100644 index 00000000..52e62702 --- /dev/null +++ b/acysos_hlc_partner/reports/__init__.py @@ -0,0 +1 @@ +from . import account_invoice_report diff --git a/acysos_hlc_partner/reports/account_invoice_report.py b/acysos_hlc_partner/reports/account_invoice_report.py new file mode 100644 index 00000000..23ac5497 --- /dev/null +++ b/acysos_hlc_partner/reports/account_invoice_report.py @@ -0,0 +1,36 @@ +# Copyright 2022 Oihane Crucelaegui - AvanzOSC +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models +from odoo.tools import SQL + + +class AccountInvoiceReport(models.Model): + _inherit = "account.invoice.report" + + current_user_id = fields.Many2one( + comodel_name="res.users", + string="Current Salesperson", + readonly=True, + ) + hlc_segment_id = fields.Many2one( + comodel_name="partner.segment", + string="Segment", + readonly=True, + ) + + @api.model + def _select(self) -> SQL: + return SQL( + "%s, move_partner.user_id AS current_user_id, " + "move_partner.hlc_segment_id AS hlc_segment_id", + super()._select(), + ) + + @api.model + def _from(self) -> SQL: + return SQL( + "%s LEFT JOIN res_partner move_partner " + "ON move_partner.id = move.partner_id", + super()._from(), + ) diff --git a/acysos_hlc_partner/security/ir.model.access.csv b/acysos_hlc_partner/security/ir.model.access.csv new file mode 100644 index 00000000..3dcfa26c --- /dev/null +++ b/acysos_hlc_partner/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_partner_segment_user,partner.segment.user,model_partner_segment,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/acysos_hlc_partner/views/partner_views.xml b/acysos_hlc_partner/views/partner_views.xml new file mode 100644 index 00000000..7e364067 --- /dev/null +++ b/acysos_hlc_partner/views/partner_views.xml @@ -0,0 +1,69 @@ + + + + + res.partner.inherit.view.form + res.partner + + + + + + + + + + res.partner + + + + + + + + + + partner.segment.view.form + partner.segment + +
+ + + + + +
+
+
+ + + partner.segment.view.tree + partner.segment + + + + + + + + + Partner Segments + ir.actions.act_window + partner.segment + list,form + +

+ +

+ +

+
+
+ + + +
From 9473602f4d4b3102c65ce0379f087b0609c04253 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?E=C3=B1aut=20Alberdi?= Date: Thu, 30 Jul 2026 09:02:12 +0200 Subject: [PATCH 2/2] [IMP] : pre-commit auto fixes --- acysos_hlc_partner/__init__.py | 1 - acysos_hlc_partner/__manifest__.py | 3 +- acysos_hlc_partner/models/__init__.py | 2 +- acysos_hlc_partner/pyproject.toml | 3 + .../security/ir.model.access.csv | 2 +- acysos_hlc_partner/views/partner_views.xml | 138 +++++++++--------- 6 files changed, 78 insertions(+), 71 deletions(-) create mode 100644 acysos_hlc_partner/pyproject.toml diff --git a/acysos_hlc_partner/__init__.py b/acysos_hlc_partner/__init__.py index 0810b8df..3ab5dcbe 100644 --- a/acysos_hlc_partner/__init__.py +++ b/acysos_hlc_partner/__init__.py @@ -1,4 +1,3 @@ -# -*- encoding: utf-8 -*- ############################################################################## # # @authors: Leonidas Pezo diff --git a/acysos_hlc_partner/__manifest__.py b/acysos_hlc_partner/__manifest__.py index cd90d890..4445b913 100644 --- a/acysos_hlc_partner/__manifest__.py +++ b/acysos_hlc_partner/__manifest__.py @@ -1,4 +1,3 @@ -# -*- encoding: utf-8 -*- ############################################################################## # # @authors: Leonidas Pezo @@ -22,7 +21,7 @@ "name": "HLC Partner", "version": "18.0.1.0.0", "author": "Acysos S.L., AvanzOSC", - "website": "https://bitbucket.org/hlc_avanzosc/hlc/", + "website": "https://github.com/avanzosc/custom-addons", "contributors": ["Leonidas Pezo "], "category": "", "license": "AGPL-3", diff --git a/acysos_hlc_partner/models/__init__.py b/acysos_hlc_partner/models/__init__.py index 4c588861..91fed54d 100644 --- a/acysos_hlc_partner/models/__init__.py +++ b/acysos_hlc_partner/models/__init__.py @@ -1 +1 @@ -from . import res_partner \ No newline at end of file +from . import res_partner diff --git a/acysos_hlc_partner/pyproject.toml b/acysos_hlc_partner/pyproject.toml new file mode 100644 index 00000000..4231d0cc --- /dev/null +++ b/acysos_hlc_partner/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/acysos_hlc_partner/security/ir.model.access.csv b/acysos_hlc_partner/security/ir.model.access.csv index 3dcfa26c..71bca098 100644 --- a/acysos_hlc_partner/security/ir.model.access.csv +++ b/acysos_hlc_partner/security/ir.model.access.csv @@ -1,2 +1,2 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_partner_segment_user,partner.segment.user,model_partner_segment,base.group_user,1,1,1,1 \ No newline at end of file +access_partner_segment_user,partner.segment.user,model_partner_segment,base.group_user,1,1,1,1 diff --git a/acysos_hlc_partner/views/partner_views.xml b/acysos_hlc_partner/views/partner_views.xml index 7e364067..ac11d20b 100644 --- a/acysos_hlc_partner/views/partner_views.xml +++ b/acysos_hlc_partner/views/partner_views.xml @@ -1,69 +1,75 @@ - + - - - res.partner.inherit.view.form - res.partner - - - - - - - - - - res.partner - - - - - - - - - - partner.segment.view.form - partner.segment - -
- - - - - -
-
-
- - - partner.segment.view.tree - partner.segment - - - - - - - - - Partner Segments - ir.actions.act_window - partner.segment - list,form - -

- -

- -

-
-
- - + + + res.partner.inherit.view.form + res.partner + + + + + + + + + res.partner + + + + + + + + + + partner.segment.view.form + partner.segment + +
+ + + + + +
+
+
+ + + partner.segment.view.tree + partner.segment + + + + + + + + + Partner Segments + ir.actions.act_window + partner.segment + list,form + +

+ +

+

+ +

+
+
+ +