From b4c6609c6f8ca6e9649905dbcfed2a451009eeb7 Mon Sep 17 00:00:00 2001 From: campos Date: Tue, 17 Feb 2015 18:34:53 +0100 Subject: [PATCH 01/25] [ADD] . --- hr_commission_oca/README.rst | 4 +++ hr_commission_oca/__init__.py | 20 +++++++++++ hr_commission_oca/__openerp__.py | 37 +++++++++++++++++++++ hr_commission_oca/i18n/hr_commission.pot | 32 ++++++++++++++++++ hr_commission_oca/models/__init__.py | 20 +++++++++++ hr_commission_oca/models/sale_agent.py | 12 +++++++ hr_commission_oca/views/sale_agent_view.xml | 16 +++++++++ 7 files changed, 141 insertions(+) create mode 100644 hr_commission_oca/README.rst create mode 100644 hr_commission_oca/__init__.py create mode 100644 hr_commission_oca/__openerp__.py create mode 100644 hr_commission_oca/i18n/hr_commission.pot create mode 100644 hr_commission_oca/models/__init__.py create mode 100644 hr_commission_oca/models/sale_agent.py create mode 100644 hr_commission_oca/views/sale_agent_view.xml diff --git a/hr_commission_oca/README.rst b/hr_commission_oca/README.rst new file mode 100644 index 000000000..ee5a32704 --- /dev/null +++ b/hr_commission_oca/README.rst @@ -0,0 +1,4 @@ +HR Commission +================== + +This module links sale_commision with hr module. diff --git a/hr_commission_oca/__init__.py b/hr_commission_oca/__init__.py new file mode 100644 index 000000000..2053d71ba --- /dev/null +++ b/hr_commission_oca/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## +from . import models diff --git a/hr_commission_oca/__openerp__.py b/hr_commission_oca/__openerp__.py new file mode 100644 index 000000000..d26c81c2d --- /dev/null +++ b/hr_commission_oca/__openerp__.py @@ -0,0 +1,37 @@ + +# -*- encoding: utf-8 -*- +############################################################################## +# 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +############################################################################## + +{ + 'name': 'HR commission', + 'version': '1.0', + 'author': 'Pexego', + "category": "Generic Modules/Sales & Purchases", + 'depends': ['sale_commission', 'hr'], + 'contributors': [ + "Davide Corio ", + "Joao Alfredo Gama Batista ", + "Sandy Carter ", + "Giorgio Borelli ", + "Daniel Campos ", + "Pedro M. Baeza ", + "Ana Juaristi "], + "data": ["views/sale_agent_view.xml"], + "active": True, + "installable": True, + "auto_install": True, +} diff --git a/hr_commission_oca/i18n/hr_commission.pot b/hr_commission_oca/i18n/hr_commission.pot new file mode 100644 index 000000000..7fd9c9202 --- /dev/null +++ b/hr_commission_oca/i18n/hr_commission.pot @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_commission +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-17 16:05+0000\n" +"PO-Revision-Date: 2015-02-17 16:05+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: hr_commission +#: help:sale.agent,employee_id:0 +msgid "Employee associated to agent, is necessary for set an employee to settle commissions in wage." +msgstr "" + +#. module: hr_commission +#: field:sale.agent,employee_id:0 +msgid "Employee id" +msgstr "" + +#. module: hr_commission +#: model:ir.model,name:hr_commission.model_sale_agent +msgid "Sale agent" +msgstr "" + diff --git a/hr_commission_oca/models/__init__.py b/hr_commission_oca/models/__init__.py new file mode 100644 index 000000000..b552d0bdc --- /dev/null +++ b/hr_commission_oca/models/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## + +from . import sale_agent diff --git a/hr_commission_oca/models/sale_agent.py b/hr_commission_oca/models/sale_agent.py new file mode 100644 index 000000000..abc1504ca --- /dev/null +++ b/hr_commission_oca/models/sale_agent.py @@ -0,0 +1,12 @@ + +from openerp import models, fields + + +class sale_agent(models.Model): + _inherit = "sale.agent" + + employee_id = fields.Many2one( + "hr.employee", + help="Employee associated to agent, is necessary for set an employee " + "to settle commissions in wage." + ) diff --git a/hr_commission_oca/views/sale_agent_view.xml b/hr_commission_oca/views/sale_agent_view.xml new file mode 100644 index 000000000..2bdda0066 --- /dev/null +++ b/hr_commission_oca/views/sale_agent_view.xml @@ -0,0 +1,16 @@ + + + + + saleagent.info.form.hr + sale.agent + + + + + + + + + From 224e9a4f03052ef24585983544d61471d9c6f377 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 19 Feb 2015 10:12:38 +0100 Subject: [PATCH 02/25] [IMP] *_commission: Total refactorization of the modules --- hr_commission_oca/README.rst | 47 +- hr_commission_oca/__openerp__.py | 30 +- hr_commission_oca/i18n/es.po | 37 + hr_commission_oca/i18n/hr_commission.pot | 32 - hr_commission_oca/models/__init__.py | 2 +- hr_commission_oca/models/res_partner.py | 55 + hr_commission_oca/models/sale_agent.py | 12 - hr_commission_oca/static/description/icon.png | Bin 0 -> 23824 bytes hr_commission_oca/static/description/icon.svg | 2965 +++++++++++++++++ hr_commission_oca/views/res_partner_view.xml | 18 + hr_commission_oca/views/sale_agent_view.xml | 16 - 11 files changed, 3137 insertions(+), 77 deletions(-) create mode 100644 hr_commission_oca/i18n/es.po delete mode 100644 hr_commission_oca/i18n/hr_commission.pot create mode 100644 hr_commission_oca/models/res_partner.py delete mode 100644 hr_commission_oca/models/sale_agent.py create mode 100644 hr_commission_oca/static/description/icon.png create mode 100644 hr_commission_oca/static/description/icon.svg create mode 100644 hr_commission_oca/views/res_partner_view.xml delete mode 100644 hr_commission_oca/views/sale_agent_view.xml diff --git a/hr_commission_oca/README.rst b/hr_commission_oca/README.rst index ee5a32704..851c9f07a 100644 --- a/hr_commission_oca/README.rst +++ b/hr_commission_oca/README.rst @@ -1,4 +1,47 @@ -HR Commission +Commissions in HR ================== -This module links sale_commision with hr module. +This module links sale_commission with hr module. For now, it only adds another +type of agent whose commissions are not invoiced in the corresponding wizard. + +Known issues / Roadmap +====================== +* Add demo data. +* Restore all 6.1 functionality about linking with wages. + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed feedback +`here `_. + + +Credits +======= + +Contributors +------------ +* Pedro M. Baeza + +Icon +---- +* http://commons.wikimedia.org/wiki/File:Percent_18e.svg +* https://openclipart.org/detail/43969/pile-of-golden-coins-by-j_alves + +Maintainer +---------- + +.. image:: http://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: http://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. diff --git a/hr_commission_oca/__openerp__.py b/hr_commission_oca/__openerp__.py index d26c81c2d..faee4b54f 100644 --- a/hr_commission_oca/__openerp__.py +++ b/hr_commission_oca/__openerp__.py @@ -1,6 +1,8 @@ - # -*- encoding: utf-8 -*- ############################################################################## +# +# Copyright (C) 2015 Pedro M. Baeza () +# # 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 @@ -17,21 +19,21 @@ ############################################################################## { - 'name': 'HR commission', - 'version': '1.0', - 'author': 'Pexego', - "category": "Generic Modules/Sales & Purchases", - 'depends': ['sale_commission', 'hr'], + 'name': 'HR commissions', + 'version': '8.0.1.0.0', + 'author': 'Serv. Tecnol. Avanzados - Pedro M. Baeza', + "category": "Human Resources", + 'depends': [ + 'sale_commission', + 'hr' + ], + 'license': 'AGPL-3', 'contributors': [ - "Davide Corio ", - "Joao Alfredo Gama Batista ", - "Sandy Carter ", - "Giorgio Borelli ", - "Daniel Campos ", "Pedro M. Baeza ", - "Ana Juaristi "], - "data": ["views/sale_agent_view.xml"], - "active": True, + ], + "data": [ + "views/res_partner_view.xml", + ], "installable": True, "auto_install": True, } diff --git a/hr_commission_oca/i18n/es.po b/hr_commission_oca/i18n/es.po new file mode 100644 index 000000000..028f75299 --- /dev/null +++ b/hr_commission_oca/i18n/es.po @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_commission +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-19 08:46+0000\n" +"PO-Revision-Date: 2015-02-19 08:46+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: hr_commission +#: code:addons/hr_commission/models/res_partner.py:47 +#, python-format +msgid "There must one (and only one) employee linked to this partner. To do this, go to 'Human Resources' and check 'Employees'" +msgstr "Debe haber un (y s??lo un) empleado enlazado a esta empresa. Para hacer esto, vaya a 'Recursos humanos' y compruebe la secci??n 'Empleados'" + +#. module: hr_commission +#: field:res.partner,users:0 +msgid "Users" +msgstr "Usuarios" + +#. module: hr_commission +#: field:res.partner,employee:0 +msgid "Employee" +msgstr "Empleado" + +#. module: sale_commission +#: selection:res.partner,agent_type:0 +msgid "Salesman (employee)" +msgstr "Comercial (empleado)" diff --git a/hr_commission_oca/i18n/hr_commission.pot b/hr_commission_oca/i18n/hr_commission.pot deleted file mode 100644 index 7fd9c9202..000000000 --- a/hr_commission_oca/i18n/hr_commission.pot +++ /dev/null @@ -1,32 +0,0 @@ -# Translation of Odoo Server. -# This file contains the translation of the following modules: -# * hr_commission -# -msgid "" -msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-02-17 16:05+0000\n" -"PO-Revision-Date: 2015-02-17 16:05+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: hr_commission -#: help:sale.agent,employee_id:0 -msgid "Employee associated to agent, is necessary for set an employee to settle commissions in wage." -msgstr "" - -#. module: hr_commission -#: field:sale.agent,employee_id:0 -msgid "Employee id" -msgstr "" - -#. module: hr_commission -#: model:ir.model,name:hr_commission.model_sale_agent -msgid "Sale agent" -msgstr "" - diff --git a/hr_commission_oca/models/__init__.py b/hr_commission_oca/models/__init__.py index b552d0bdc..39e41f93f 100644 --- a/hr_commission_oca/models/__init__.py +++ b/hr_commission_oca/models/__init__.py @@ -17,4 +17,4 @@ # ############################################################################## -from . import sale_agent +from . import res_partner diff --git a/hr_commission_oca/models/res_partner.py b/hr_commission_oca/models/res_partner.py new file mode 100644 index 000000000..347b8f1e7 --- /dev/null +++ b/hr_commission_oca/models/res_partner.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2015 Avanzosc () +# Copyright (C) 2015 Pedro M. Baeza () +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp import models, fields, api, exceptions, _ + + +class ResPartner(models.Model): + """Add some fields related to commissions""" + _inherit = "res.partner" + + agent_type = fields.Selection( + selection_add=[("salesman", "Salesman (employee)")]) + employee = fields.Many2one( + comodel_name="hr.employee", compute="_get_employee") + users = fields.One2many(comodel_name="res.users", + inverse_name="partner_id") + + @api.one + @api.depends('users') + def _get_employee(self): + self.employee = False + if len(self.users) == 1 and len(self.users[0].employee_ids) == 1: + self.employee = self.users[0].employee_ids[0] + + @api.constrains('agent_type', 'employee') + def _check_employee(self): + if self.agent_type == 'salesman' and not self.employee: + raise exceptions.ValidationError( + _("There must one (and only one) employee linked to this " + "partner. To do this, go to 'Human Resources' and check " + "'Employees'")) + + @api.onchange('agent_type') + def onchange_agent_type(self): + if self.agent_type == 'salesman': + self.supplier = False + return super(ResPartner, self).onchange_agent_type() diff --git a/hr_commission_oca/models/sale_agent.py b/hr_commission_oca/models/sale_agent.py deleted file mode 100644 index abc1504ca..000000000 --- a/hr_commission_oca/models/sale_agent.py +++ /dev/null @@ -1,12 +0,0 @@ - -from openerp import models, fields - - -class sale_agent(models.Model): - _inherit = "sale.agent" - - employee_id = fields.Many2one( - "hr.employee", - help="Employee associated to agent, is necessary for set an employee " - "to settle commissions in wage." - ) diff --git a/hr_commission_oca/static/description/icon.png b/hr_commission_oca/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..50f6af42ceacde597a656754b699ac23eb109038 GIT binary patch literal 23824 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 v$xkXg-~a#F` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + Openclipart + + + Pile of Golden Coins + 2010-04-09T03:27:45 + A pile of hypothetical golden coins, drawn in Inkscape. + https://openclipart.org/detail/43969/pile-of-golden-coins-by-j_alves + + + J_Alves + + + + + coin + currency + gold + money + thaler + + + + + + + + + + + diff --git a/hr_commission_oca/views/res_partner_view.xml b/hr_commission_oca/views/res_partner_view.xml new file mode 100644 index 000000000..04237bed7 --- /dev/null +++ b/hr_commission_oca/views/res_partner_view.xml @@ -0,0 +1,18 @@ + + + + + + res.partner.form.agent.hr + res.partner + + + + + + + + + + diff --git a/hr_commission_oca/views/sale_agent_view.xml b/hr_commission_oca/views/sale_agent_view.xml deleted file mode 100644 index 2bdda0066..000000000 --- a/hr_commission_oca/views/sale_agent_view.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - saleagent.info.form.hr - sale.agent - - - - - - - - - From 894262bf363aacee04060d21371b075116e260d9 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Mon, 6 Aug 2018 12:17:35 +0200 Subject: [PATCH 03/25] [MIG] hr_commission: Migration to 11.0 --- hr_commission_oca/README.rst | 71 ++- hr_commission_oca/__init__.py | 19 - hr_commission_oca/__manifest__.py | 19 + hr_commission_oca/__openerp__.py | 39 -- hr_commission_oca/i18n/es.po | 44 +- hr_commission_oca/i18n/hr_commission.pot | 39 ++ hr_commission_oca/models/__init__.py | 20 +- hr_commission_oca/models/hr_employee.py | 19 + hr_commission_oca/models/res_partner.py | 58 +-- hr_commission_oca/readme/CONTRIBUTORS.rst | 3 + hr_commission_oca/readme/DESCRIPTION.rst | 2 + hr_commission_oca/readme/ROADMAP.rst | 2 + .../static/description/index.html | 431 ++++++++++++++++++ hr_commission_oca/tests/__init__.py | 1 + hr_commission_oca/tests/test_hr_commission.py | 33 ++ hr_commission_oca/views/res_partner_view.xml | 26 +- 16 files changed, 661 insertions(+), 165 deletions(-) create mode 100644 hr_commission_oca/__manifest__.py delete mode 100644 hr_commission_oca/__openerp__.py create mode 100644 hr_commission_oca/i18n/hr_commission.pot create mode 100644 hr_commission_oca/models/hr_employee.py create mode 100644 hr_commission_oca/readme/CONTRIBUTORS.rst create mode 100644 hr_commission_oca/readme/DESCRIPTION.rst create mode 100644 hr_commission_oca/readme/ROADMAP.rst create mode 100644 hr_commission_oca/static/description/index.html create mode 100644 hr_commission_oca/tests/__init__.py create mode 100644 hr_commission_oca/tests/test_hr_commission.py diff --git a/hr_commission_oca/README.rst b/hr_commission_oca/README.rst index 851c9f07a..91aea289f 100644 --- a/hr_commission_oca/README.rst +++ b/hr_commission_oca/README.rst @@ -1,47 +1,82 @@ -Commissions in HR -================== +============== +HR commissions +============== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcommission-lightgray.png?logo=github + :target: https://github.com/OCA/commission/tree/11.0/hr_commission + :alt: OCA/commission +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/commission-11-0/commission-11-0-hr_commission + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/165/11.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| This module links sale_commission with hr module. For now, it only adds another type of agent whose commissions are not invoiced in the corresponding wizard. +**Table of contents** + +.. contents:: + :local: + Known issues / Roadmap ====================== -* Add demo data. -* Restore all 6.1 functionality about linking with wages. +* Add demo data. +* Link settlements with wages. Bug Tracker =========== Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed feedback -`here `_. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. +Do not contact contributors directly about support or help with technical issues. Credits ======= +Authors +~~~~~~~ + +* Tecnativa + Contributors ------------- -* Pedro M. Baeza +~~~~~~~~~~~~ -Icon ----- -* http://commons.wikimedia.org/wiki/File:Percent_18e.svg -* https://openclipart.org/detail/43969/pile-of-golden-coins-by-j_alves +* `Tecnativa `_ -Maintainer ----------- + * Pedro M. Baeza -.. image:: http://odoo-community.org/logo.png - :alt: Odoo Community Association - :target: http://odoo-community.org +Maintainers +~~~~~~~~~~~ This module is maintained by the OCA. +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -To contribute to this module, please visit http://odoo-community.org. +This module is part of the `OCA/commission `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_commission_oca/__init__.py b/hr_commission_oca/__init__.py index 2053d71ba..0650744f6 100644 --- a/hr_commission_oca/__init__.py +++ b/hr_commission_oca/__init__.py @@ -1,20 +1 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU 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 General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -############################################################################## from . import models diff --git a/hr_commission_oca/__manifest__.py b/hr_commission_oca/__manifest__.py new file mode 100644 index 000000000..4f8e8f23d --- /dev/null +++ b/hr_commission_oca/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright 2015-2018 Tecnativa - Pedro M. Baeza +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html + +{ + 'name': 'HR commissions', + 'version': '11.0.1.0.0', + 'author': 'Tecnativa,' + 'Odoo Community Association (OCA)', + "category": "Commissions", + 'depends': [ + 'sale_commission', + 'hr' + ], + 'license': 'AGPL-3', + "data": [ + "views/res_partner_view.xml", + ], + "installable": True, +} diff --git a/hr_commission_oca/__openerp__.py b/hr_commission_oca/__openerp__.py deleted file mode 100644 index faee4b54f..000000000 --- a/hr_commission_oca/__openerp__.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- encoding: utf-8 -*- -############################################################################## -# -# Copyright (C) 2015 Pedro M. Baeza () -# -# 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 General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -############################################################################## - -{ - 'name': 'HR commissions', - 'version': '8.0.1.0.0', - 'author': 'Serv. Tecnol. Avanzados - Pedro M. Baeza', - "category": "Human Resources", - 'depends': [ - 'sale_commission', - 'hr' - ], - 'license': 'AGPL-3', - 'contributors': [ - "Pedro M. Baeza ", - ], - "data": [ - "views/res_partner_view.xml", - ], - "installable": True, - "auto_install": True, -} diff --git a/hr_commission_oca/i18n/es.po b/hr_commission_oca/i18n/es.po index 028f75299..66f2ce195 100644 --- a/hr_commission_oca/i18n/es.po +++ b/hr_commission_oca/i18n/es.po @@ -1,37 +1,45 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * hr_commission +# * hr_commission # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" +"Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-02-19 08:46+0000\n" -"PO-Revision-Date: 2015-02-19 08:46+0000\n" +"POT-Creation-Date: 2018-08-07 11:26+0000\n" +"PO-Revision-Date: 2018-08-07 11:26+0000\n" "Last-Translator: <>\n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" #. module: hr_commission -#: code:addons/hr_commission/models/res_partner.py:47 -#, python-format -msgid "There must one (and only one) employee linked to this partner. To do this, go to 'Human Resources' and check 'Employees'" -msgstr "Debe haber un (y s??lo un) empleado enlazado a esta empresa. Para hacer esto, vaya a 'Recursos humanos' y compruebe la secci??n 'Empleados'" - -#. module: hr_commission -#: field:res.partner,users:0 -msgid "Users" -msgstr "Usuarios" +#: model:ir.model,name:hr_commission.model_res_partner +msgid "Contact" +msgstr "Contacto" #. module: hr_commission -#: field:res.partner,employee:0 +#: model:ir.model,name:hr_commission.model_hr_employee +#: model:ir.model.fields,field_description:hr_commission.field_res_partner_employee_id +#: model:ir.model.fields,field_description:hr_commission.field_res_users_employee_id msgid "Employee" msgstr "Empleado" -#. module: sale_commission -#: selection:res.partner,agent_type:0 -msgid "Salesman (employee)" -msgstr "Comercial (empleado)" +#. module: hr_commission +#: code:addons/hr_commission/models/res_partner.py:30 +#, python-format +msgid "" +"There must one (and only one) employee linked to this partner. To do this, " +"go to 'Human Resources' and check 'Employees'" +msgstr "" +"Debe haber un (y s??lo un) empleado enlazado a esta empresa. Para hacer esto, " +"vaya a 'Recursos humanos' y compruebe la secci??n 'Empleados'" + +#. module: hr_commission +#: code:addons/hr_commission/models/hr_employee.py:16 +#, python-format +msgid "You can't remove the user, as it's linked to a commission agent." +msgstr "No puede eliminar el usuario, ya que est?? enlazado a un comisionista." diff --git a/hr_commission_oca/i18n/hr_commission.pot b/hr_commission_oca/i18n/hr_commission.pot new file mode 100644 index 000000000..1c999b319 --- /dev/null +++ b/hr_commission_oca/i18n/hr_commission.pot @@ -0,0 +1,39 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_commission +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \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: hr_commission +#: model:ir.model,name:hr_commission.model_res_partner +msgid "Contact" +msgstr "" + +#. module: hr_commission +#: model:ir.model,name:hr_commission.model_hr_employee +#: model:ir.model.fields,field_description:hr_commission.field_res_partner_employee_id +#: model:ir.model.fields,field_description:hr_commission.field_res_users_employee_id +msgid "Employee" +msgstr "" + +#. module: hr_commission +#: code:addons/hr_commission/models/res_partner.py:30 +#, python-format +msgid "There must one (and only one) employee linked to this partner. To do this, go to 'Human Resources' and check 'Employees'" +msgstr "" + +#. module: hr_commission +#: code:addons/hr_commission/models/hr_employee.py:16 +#, python-format +msgid "You can't remove the user, as it's linked to a commission agent." +msgstr "" + diff --git a/hr_commission_oca/models/__init__.py b/hr_commission_oca/models/__init__.py index 39e41f93f..625892201 100644 --- a/hr_commission_oca/models/__init__.py +++ b/hr_commission_oca/models/__init__.py @@ -1,20 +1,2 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU 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 General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -############################################################################## - +from . import hr_employee from . import res_partner diff --git a/hr_commission_oca/models/hr_employee.py b/hr_commission_oca/models/hr_employee.py new file mode 100644 index 000000000..819175de9 --- /dev/null +++ b/hr_commission_oca/models/hr_employee.py @@ -0,0 +1,19 @@ +# Copyright 2018 Tecnativa - Pedro M. Baeza +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html + +from odoo import _, exceptions, models + + +class HrEmployee(models.Model): + _inherit = "hr.employee" + + def write(self, vals): + """Check if there's an agent linked to that employee.""" + if 'user_id' in vals and not vals['user_id']: + for emp in self: + if emp.user_id.partner_id.agent_type == 'salesman': + raise exceptions.ValidationError( + _("You can't remove the user, as it's linked to " + "a commission agent.") + ) + return super().write(vals) diff --git a/hr_commission_oca/models/res_partner.py b/hr_commission_oca/models/res_partner.py index 347b8f1e7..f9e462c7e 100644 --- a/hr_commission_oca/models/res_partner.py +++ b/hr_commission_oca/models/res_partner.py @@ -1,55 +1,37 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2015 Avanzosc () -# Copyright (C) 2015 Pedro M. Baeza () -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU 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 General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -############################################################################## -from openerp import models, fields, api, exceptions, _ +# Copyright 2015-2018 Tecnativa - Pedro M. Baeza +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html + +from odoo import _, api, fields, exceptions, models class ResPartner(models.Model): - """Add some fields related to commissions""" _inherit = "res.partner" agent_type = fields.Selection( - selection_add=[("salesman", "Salesman (employee)")]) - employee = fields.Many2one( - comodel_name="hr.employee", compute="_get_employee") - users = fields.One2many(comodel_name="res.users", - inverse_name="partner_id") + selection_add=[("salesman", "Salesman (employee)")], + ) + employee_id = fields.Many2one( + comodel_name="hr.employee", + compute="_compute_employee_id", + compute_sudo=True, + ) - @api.one - @api.depends('users') - def _get_employee(self): - self.employee = False - if len(self.users) == 1 and len(self.users[0].employee_ids) == 1: - self.employee = self.users[0].employee_ids[0] + @api.depends('user_ids') + def _compute_employee_id(self): + for partner in self: + if (len(partner.user_ids) == 1 and + len(partner.user_ids[0].employee_ids) == 1): + partner.employee_id = partner.user_ids[0].employee_ids[0] - @api.constrains('agent_type', 'employee') + @api.constrains('agent_type') def _check_employee(self): - if self.agent_type == 'salesman' and not self.employee: + if self.agent_type == 'salesman' and not self.employee_id: raise exceptions.ValidationError( _("There must one (and only one) employee linked to this " "partner. To do this, go to 'Human Resources' and check " "'Employees'")) @api.onchange('agent_type') - def onchange_agent_type(self): + def onchange_agent_type_hr_commission(self): if self.agent_type == 'salesman': self.supplier = False - return super(ResPartner, self).onchange_agent_type() diff --git a/hr_commission_oca/readme/CONTRIBUTORS.rst b/hr_commission_oca/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..526b471bb --- /dev/null +++ b/hr_commission_oca/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Tecnativa `_ + + * Pedro M. Baeza diff --git a/hr_commission_oca/readme/DESCRIPTION.rst b/hr_commission_oca/readme/DESCRIPTION.rst new file mode 100644 index 000000000..bc88dfe7d --- /dev/null +++ b/hr_commission_oca/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module links sale_commission with hr module. For now, it only adds another +type of agent whose commissions are not invoiced in the corresponding wizard. diff --git a/hr_commission_oca/readme/ROADMAP.rst b/hr_commission_oca/readme/ROADMAP.rst new file mode 100644 index 000000000..5a24916f4 --- /dev/null +++ b/hr_commission_oca/readme/ROADMAP.rst @@ -0,0 +1,2 @@ +* Add demo data. +* Link settlements with wages. diff --git a/hr_commission_oca/static/description/index.html b/hr_commission_oca/static/description/index.html new file mode 100644 index 000000000..91b320d8d --- /dev/null +++ b/hr_commission_oca/static/description/index.html @@ -0,0 +1,431 @@ + + + + + + +HR commissions + + + +
+

HR commissions

+ + +

Beta License: AGPL-3 OCA/commission Translate me on Weblate Try me on Runbot

+

This module links sale_commission with hr module. For now, it only adds another +type of agent whose commissions are not invoiced in the corresponding wizard.

+

Table of contents

+ +
+

Known issues / Roadmap

+
    +
  • Add demo data.
  • +
  • Link settlements with wages.
  • +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Tecnativa
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/commission project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/hr_commission_oca/tests/__init__.py b/hr_commission_oca/tests/__init__.py new file mode 100644 index 000000000..c8eaa6127 --- /dev/null +++ b/hr_commission_oca/tests/__init__.py @@ -0,0 +1 @@ +from . import test_hr_commission diff --git a/hr_commission_oca/tests/test_hr_commission.py b/hr_commission_oca/tests/test_hr_commission.py new file mode 100644 index 000000000..f0e3e169e --- /dev/null +++ b/hr_commission_oca/tests/test_hr_commission.py @@ -0,0 +1,33 @@ +# Copyright 2018 Tecnativa - Pedro M. Baeza +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html + +from odoo import exceptions +from odoo.tests import common + + +class TestHrCommission(common.TransactionCase): + def setUp(self): + super().setUp() + self.employee = self.env['hr.employee'].create({ + 'name': 'Test employee', + }) + self.user = self.env['res.users'].create({ + 'name': 'Test user', + 'login': 'test_hr_commission@example.org', + }) + self.partner = self.user.partner_id + + def test_hr_commission(self): + self.assertFalse(self.partner.employee_id) + with self.assertRaises(exceptions.ValidationError): + self.partner.agent_type = 'salesman' + self.employee.user_id = self.user.id + self.assertEqual(self.partner.employee_id, self.employee) + # This shouldn't trigger exception now + self.partner.agent_type = 'salesman' + self.partner.supplier = True + self.partner.onchange_agent_type_hr_commission() + self.assertFalse(self.partner.supplier) + # Check that un-assigning user in employee, it raises the constraint + with self.assertRaises(exceptions.ValidationError): + self.employee.user_id = False diff --git a/hr_commission_oca/views/res_partner_view.xml b/hr_commission_oca/views/res_partner_view.xml index 04237bed7..07c23beb6 100644 --- a/hr_commission_oca/views/res_partner_view.xml +++ b/hr_commission_oca/views/res_partner_view.xml @@ -1,18 +1,16 @@ - - + - - res.partner.form.agent.hr - res.partner - - - - - + + res.partner + + + + - + + - - + From 271ddb3b91d7e2cf8683eb7d0d6b830a8f991473 Mon Sep 17 00:00:00 2001 From: kong Date: Mon, 1 Jul 2019 09:59:43 +0700 Subject: [PATCH 04/25] [12.0][MIG] hr_commission --- hr_commission_oca/README.rst | 12 ++-- hr_commission_oca/__manifest__.py | 2 +- hr_commission_oca/i18n/es.po | 35 ++++++++-- hr_commission_oca/i18n/hr_commission.pot | 28 ++++++-- hr_commission_oca/i18n/pt_BR.po | 64 +++++++++++++++++++ hr_commission_oca/models/res_partner.py | 1 + hr_commission_oca/readme/CONTRIBUTORS.rst | 2 + .../static/description/index.html | 9 +-- 8 files changed, 132 insertions(+), 21 deletions(-) create mode 100644 hr_commission_oca/i18n/pt_BR.po diff --git a/hr_commission_oca/README.rst b/hr_commission_oca/README.rst index 91aea289f..8352f939c 100644 --- a/hr_commission_oca/README.rst +++ b/hr_commission_oca/README.rst @@ -14,13 +14,13 @@ HR commissions :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcommission-lightgray.png?logo=github - :target: https://github.com/OCA/commission/tree/11.0/hr_commission + :target: https://github.com/OCA/commission/tree/12.0/hr_commission :alt: OCA/commission .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/commission-11-0/commission-11-0-hr_commission + :target: https://translation.odoo-community.org/projects/commission-12-0/commission-12-0-hr_commission :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/165/11.0 + :target: https://runbot.odoo-community.org/runbot/165/12.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -45,7 +45,7 @@ Bug Tracker Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -64,6 +64,8 @@ Contributors * Pedro M. Baeza +* Rattapong C. + Maintainers ~~~~~~~~~~~ @@ -77,6 +79,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. -This module is part of the `OCA/commission `_ project on GitHub. +This module is part of the `OCA/commission `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/hr_commission_oca/__manifest__.py b/hr_commission_oca/__manifest__.py index 4f8e8f23d..dc20b9b6e 100644 --- a/hr_commission_oca/__manifest__.py +++ b/hr_commission_oca/__manifest__.py @@ -3,7 +3,7 @@ { 'name': 'HR commissions', - 'version': '11.0.1.0.0', + 'version': '12.0.1.0.0', 'author': 'Tecnativa,' 'Odoo Community Association (OCA)', "category": "Commissions", diff --git a/hr_commission_oca/i18n/es.po b/hr_commission_oca/i18n/es.po index 66f2ce195..94772808a 100644 --- a/hr_commission_oca/i18n/es.po +++ b/hr_commission_oca/i18n/es.po @@ -7,14 +7,15 @@ msgstr "" "Project-Id-Version: Odoo Server 11.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-08-07 11:26+0000\n" -"PO-Revision-Date: 2018-08-07 11:26+0000\n" -"Last-Translator: <>\n" +"PO-Revision-Date: 2020-03-06 20:13+0000\n" +"Last-Translator: Dept. T??cnico \n" "Language-Team: \n" -"Language: \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.10\n" #. module: hr_commission #: model:ir.model,name:hr_commission.model_res_partner @@ -23,13 +24,27 @@ msgstr "Contacto" #. module: hr_commission #: model:ir.model,name:hr_commission.model_hr_employee -#: model:ir.model.fields,field_description:hr_commission.field_res_partner_employee_id -#: model:ir.model.fields,field_description:hr_commission.field_res_users_employee_id msgid "Employee" msgstr "Empleado" #. module: hr_commission -#: code:addons/hr_commission/models/res_partner.py:30 +#: model:ir.model.fields,field_description:hr_commission.field_res_partner__employee_id +#: model:ir.model.fields,field_description:hr_commission.field_res_users__employee_id +msgid "Employee." +msgstr "Empleado." + +#. module: hr_commission +#: selection:res.partner,agent_type:0 +msgid "External agent" +msgstr "" + +#. module: hr_commission +#: selection:res.partner,agent_type:0 +msgid "Salesman (employee)" +msgstr "" + +#. module: hr_commission +#: code:addons/hr_commission/models/res_partner.py:31 #, python-format msgid "" "There must one (and only one) employee linked to this partner. To do this, " @@ -38,6 +53,12 @@ msgstr "" "Debe haber un (y s??lo un) empleado enlazado a esta empresa. Para hacer esto, " "vaya a 'Recursos humanos' y compruebe la secci??n 'Empleados'" +#. module: hr_commission +#: model:ir.model.fields,field_description:hr_commission.field_res_partner__agent_type +#: model:ir.model.fields,field_description:hr_commission.field_res_users__agent_type +msgid "Type" +msgstr "" + #. module: hr_commission #: code:addons/hr_commission/models/hr_employee.py:16 #, python-format diff --git a/hr_commission_oca/i18n/hr_commission.pot b/hr_commission_oca/i18n/hr_commission.pot index 1c999b319..fa216c677 100644 --- a/hr_commission_oca/i18n/hr_commission.pot +++ b/hr_commission_oca/i18n/hr_commission.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 11.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: <>\n" "Language-Team: \n" @@ -20,17 +20,37 @@ msgstr "" #. module: hr_commission #: model:ir.model,name:hr_commission.model_hr_employee -#: model:ir.model.fields,field_description:hr_commission.field_res_partner_employee_id -#: model:ir.model.fields,field_description:hr_commission.field_res_users_employee_id msgid "Employee" msgstr "" #. module: hr_commission -#: code:addons/hr_commission/models/res_partner.py:30 +#: model:ir.model.fields,field_description:hr_commission.field_res_partner__employee_id +#: model:ir.model.fields,field_description:hr_commission.field_res_users__employee_id +msgid "Employee." +msgstr "" + +#. module: hr_commission +#: selection:res.partner,agent_type:0 +msgid "External agent" +msgstr "" + +#. module: hr_commission +#: selection:res.partner,agent_type:0 +msgid "Salesman (employee)" +msgstr "" + +#. module: hr_commission +#: code:addons/hr_commission/models/res_partner.py:31 #, python-format msgid "There must one (and only one) employee linked to this partner. To do this, go to 'Human Resources' and check 'Employees'" msgstr "" +#. module: hr_commission +#: model:ir.model.fields,field_description:hr_commission.field_res_partner__agent_type +#: model:ir.model.fields,field_description:hr_commission.field_res_users__agent_type +msgid "Type" +msgstr "" + #. module: hr_commission #: code:addons/hr_commission/models/hr_employee.py:16 #, python-format diff --git a/hr_commission_oca/i18n/pt_BR.po b/hr_commission_oca/i18n/pt_BR.po new file mode 100644 index 000000000..e9990993b --- /dev/null +++ b/hr_commission_oca/i18n/pt_BR.po @@ -0,0 +1,64 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * hr_commission +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2020-02-20 16:53+0000\n" +"Last-Translator: Marcel Savegnago \n" +"Language-Team: none\n" +"Language: pt_BR\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" +"X-Generator: Weblate 3.10\n" + +#. module: hr_commission +#: model:ir.model,name:hr_commission.model_res_partner +msgid "Contact" +msgstr "Contato" + +#. module: hr_commission +#: model:ir.model,name:hr_commission.model_hr_employee +msgid "Employee" +msgstr "Funcionario" + +#. module: hr_commission +#: model:ir.model.fields,field_description:hr_commission.field_res_partner__employee_id +#: model:ir.model.fields,field_description:hr_commission.field_res_users__employee_id +msgid "Employee." +msgstr "Funcionario." + +#. module: hr_commission +#: selection:res.partner,agent_type:0 +msgid "External agent" +msgstr "Agente externo" + +#. module: hr_commission +#: selection:res.partner,agent_type:0 +msgid "Salesman (employee)" +msgstr "Vendedor (funcion??rio)" + +#. module: hr_commission +#: code:addons/hr_commission/models/res_partner.py:31 +#, python-format +msgid "There must one (and only one) employee linked to this partner. To do this, go to 'Human Resources' and check 'Employees'" +msgstr "" +"Deve haver um (e apenas um) funcion??rio ligado a este parceiro. Para fazer " +"isso, v?? para 'Recursos Humanos' e verifique 'Funcion??rios'" + +#. module: hr_commission +#: model:ir.model.fields,field_description:hr_commission.field_res_partner__agent_type +#: model:ir.model.fields,field_description:hr_commission.field_res_users__agent_type +msgid "Type" +msgstr "Tipo" + +#. module: hr_commission +#: code:addons/hr_commission/models/hr_employee.py:16 +#, python-format +msgid "You can't remove the user, as it's linked to a commission agent." +msgstr "" +"Voc?? n??o pode remover o usu??rio, pois est?? ligado a um agente da comiss??o." diff --git a/hr_commission_oca/models/res_partner.py b/hr_commission_oca/models/res_partner.py index f9e462c7e..69b18c40b 100644 --- a/hr_commission_oca/models/res_partner.py +++ b/hr_commission_oca/models/res_partner.py @@ -11,6 +11,7 @@ class ResPartner(models.Model): selection_add=[("salesman", "Salesman (employee)")], ) employee_id = fields.Many2one( + string="Employee.", comodel_name="hr.employee", compute="_compute_employee_id", compute_sudo=True, diff --git a/hr_commission_oca/readme/CONTRIBUTORS.rst b/hr_commission_oca/readme/CONTRIBUTORS.rst index 526b471bb..4b4cb4ed6 100644 --- a/hr_commission_oca/readme/CONTRIBUTORS.rst +++ b/hr_commission_oca/readme/CONTRIBUTORS.rst @@ -1,3 +1,5 @@ * `Tecnativa `_ * Pedro M. Baeza + +* Rattapong C. diff --git a/hr_commission_oca/static/description/index.html b/hr_commission_oca/static/description/index.html index 91b320d8d..61e038e4c 100644 --- a/hr_commission_oca/static/description/index.html +++ b/hr_commission_oca/static/description/index.html @@ -3,7 +3,7 @@ - + HR commissions -
-

HR commissions

+
+ + +Odoo Community Association + +
+

HR commissions OCA

-

Beta License: AGPL-3 OCA/commission Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/commission Translate me on Weblate Try me on Runboat

This module links sale_commission with hr module. For now, it only adds another type of agent whose commissions are not invoiced in the corresponding wizard.

@@ -389,35 +395,36 @@

HR commissions

-

Known issues / Roadmap

+

Known issues / Roadmap

  • Add demo data.
  • Link settlements with wages.
-

Bug Tracker

+

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

+feedback.

Do not contact contributors directly about support or help with technical issues.

-

Credits

+

Credits

-

Authors

+

Authors

  • Tecnativa
-

Contributors

+

Contributors

-

Maintainers

+

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

-

This module is part of the OCA/commission project on GitHub.

+

This module is part of the OCA/commission project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
diff --git a/hr_commission_oca/tests/test_hr_commission.py b/hr_commission_oca/tests/test_hr_commission.py index 5a105121c..9f3677a2c 100644 --- a/hr_commission_oca/tests/test_hr_commission.py +++ b/hr_commission_oca/tests/test_hr_commission.py @@ -2,8 +2,9 @@ # License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html from odoo import exceptions +from odoo.tests import new_test_user -from odoo.addons.commission.tests.test_commission import TestCommissionBase +from odoo.addons.commission_oca.tests.test_commission import TestCommissionBase class TestHrCommission(TestCommissionBase): @@ -11,8 +12,8 @@ class TestHrCommission(TestCommissionBase): def setUpClass(cls): super().setUpClass() cls.employee = cls.env["hr.employee"].create({"name": "Test employee"}) - cls.user = cls.env["res.users"].create( - {"name": "Test user", "login": "test_hr_commission@example.org"} + cls.user = new_test_user( + cls.env, name="Test user", login="test_hr_commission@example.org" ) cls.partner = cls.user.partner_id diff --git a/hr_commission_oca/views/res_partner_view.xml b/hr_commission_oca/views/res_partner_view.xml index 32a21f488..87663ca90 100644 --- a/hr_commission_oca/views/res_partner_view.xml +++ b/hr_commission_oca/views/res_partner_view.xml @@ -2,7 +2,7 @@ res.partner - + diff --git a/hr_commission_oca/views/sale_commission_settlement_views.xml b/hr_commission_oca/views/sale_commission_settlement_views.xml index 4301a5521..034edf51b 100644 --- a/hr_commission_oca/views/sale_commission_settlement_views.xml +++ b/hr_commission_oca/views/sale_commission_settlement_views.xml @@ -3,7 +3,7 @@ Settlements - Add "Mark as invoiced" button commission.settlement - +