From 26e0de27a940e9ef7857960b93a927b6f29997fc Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Mon, 12 Feb 2018 01:40:58 +0100 Subject: [PATCH 01/42] [ADD] sale_commission_pricelist: New module that assign commission to pricelist item --- sale_commission_pricelist/README.rst | 71 + sale_commission_pricelist/__init__.py | 3 + sale_commission_pricelist/__manifest__.py | 20 + sale_commission_pricelist/i18n/es.po | 38 + sale_commission_pricelist/models/__init__.py | 4 + .../models/product_pricelist.py | 15 + .../models/sale_order.py | 25 + .../static/description/icon.png | Bin 0 -> 19380 bytes .../static/description/icon.svg | 2842 +++++++++++++++++ sale_commission_pricelist/tests/__init__.py | 3 + .../tests/test_sale_commission_pricelist.py | 92 + .../views/product_pricelist_view.xml | 46 + 12 files changed, 3159 insertions(+) create mode 100644 sale_commission_pricelist/README.rst create mode 100644 sale_commission_pricelist/__init__.py create mode 100644 sale_commission_pricelist/__manifest__.py create mode 100644 sale_commission_pricelist/i18n/es.po create mode 100644 sale_commission_pricelist/models/__init__.py create mode 100644 sale_commission_pricelist/models/product_pricelist.py create mode 100644 sale_commission_pricelist/models/sale_order.py create mode 100644 sale_commission_pricelist/static/description/icon.png create mode 100644 sale_commission_pricelist/static/description/icon.svg create mode 100644 sale_commission_pricelist/tests/__init__.py create mode 100644 sale_commission_pricelist/tests/test_sale_commission_pricelist.py create mode 100644 sale_commission_pricelist/views/product_pricelist_view.xml diff --git a/sale_commission_pricelist/README.rst b/sale_commission_pricelist/README.rst new file mode 100644 index 000000000..064f756e4 --- /dev/null +++ b/sale_commission_pricelist/README.rst @@ -0,0 +1,71 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +============================== +Sales commissions by pricelist +============================== + +This module extends the functionality of sale_commission to allow you set a +commission to pricelist item. + +Usage +===== + +To use this module, you need to: + +#. Go to Sales -> Configuration -> Settings -> Pricing -> Sale Price and + activate: "Advanced pricing based on formulas (discounts, margins, + rounding)" +#. Go to Sales -> Configuration -> Price-list and edit an existing one or + create a new one +#. In the pricelist -> add a new item or open a new one +#. You will find the field commission in the pricelist item + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/165/10.0 + +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 smash it by providing detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* `Tecnativa `_: + * Carlos Dauden + +Do not contact contributors directly about support or help with technical issues. + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://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 https://odoo-community.org. + + +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 diff --git a/sale_commission_pricelist/__init__.py b/sale_commission_pricelist/__init__.py new file mode 100644 index 000000000..cde864bae --- /dev/null +++ b/sale_commission_pricelist/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/sale_commission_pricelist/__manifest__.py b/sale_commission_pricelist/__manifest__.py new file mode 100644 index 000000000..764c5256b --- /dev/null +++ b/sale_commission_pricelist/__manifest__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Carlos Dauden - Tecnativa +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + 'name': 'Sales commissions by pricelist', + 'version': '10.0.1.0.0', + 'author': 'Tecnativa, ' + 'Odoo Community Association (OCA)', + 'category': 'Sales', + 'website': 'https://github.com/OCA/commission', + 'license': 'AGPL-3', + 'depends': [ + 'sale_commission', + ], + 'data': [ + 'views/product_pricelist_view.xml', + ], + 'installable': True, +} diff --git a/sale_commission_pricelist/i18n/es.po b/sale_commission_pricelist/i18n/es.po new file mode 100644 index 000000000..d776d4592 --- /dev/null +++ b/sale_commission_pricelist/i18n/es.po @@ -0,0 +1,38 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_commission_pricelist +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-02-12 01:34+0100\n" +"PO-Revision-Date: 2018-02-12 01:35+0100\n" +"Last-Translator: Carlos Dauden \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: \n" +"X-Generator: Poedit 1.8.7.1\n" + +#. module: sale_commission_pricelist +#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item_commission_id +msgid "Commission" +msgstr "Comisión" + +#. module: sale_commission_pricelist +#: model:ir.model,name:sale_commission_pricelist.model_product_pricelist +msgid "Pricelist" +msgstr "Tarifa" + +#. module: sale_commission_pricelist +#: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item +msgid "Pricelist item" +msgstr "Elemento de la tarifa" + +#. module: sale_commission_pricelist +#: model:ir.model,name:sale_commission_pricelist.model_sale_order_line +msgid "Sales Order Line" +msgstr "Línea de pedido de venta" diff --git a/sale_commission_pricelist/models/__init__.py b/sale_commission_pricelist/models/__init__.py new file mode 100644 index 000000000..cc869e2aa --- /dev/null +++ b/sale_commission_pricelist/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import product_pricelist +from . import sale_order diff --git a/sale_commission_pricelist/models/product_pricelist.py b/sale_commission_pricelist/models/product_pricelist.py new file mode 100644 index 000000000..c45fe680a --- /dev/null +++ b/sale_commission_pricelist/models/product_pricelist.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Carlos Dauden - Tecnativa +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ProductPricelistItem(models.Model): + _inherit = 'product.pricelist.item' + + commission_id = fields.Many2one( + comodel_name='sale.commission', + string='Commission', + ondelete='restrict', + ) diff --git a/sale_commission_pricelist/models/sale_order.py b/sale_commission_pricelist/models/sale_order.py new file mode 100644 index 000000000..d73d083a4 --- /dev/null +++ b/sale_commission_pricelist/models/sale_order.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Carlos Dauden - Tecnativa +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, models + + +class SaleOrderLine(models.Model): + _inherit = 'sale.order.line' + + @api.onchange('product_id', 'product_uom_qty') + def _onchange_product_id_sale_commission_pricelist(self): + self.ensure_one() + if self.product_id and self.order_id.pricelist_id: + rule_id = self.order_id.pricelist_id.get_product_price_rule( + product=self.product_id, + quantity=self.product_uom_qty or 1.0, + partner=self.order_id.partner_id, + date=self.order_id.date_order, + uom_id=self.product_uom.id)[1] + rule = self.env['product.pricelist.item'].browse(rule_id) + if rule.commission_id: + self.agents.update({ + 'commission': rule.commission_id.id, + }) diff --git a/sale_commission_pricelist/static/description/icon.png b/sale_commission_pricelist/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ccf94f5cc40f116f5d61260fcf1c3418eb31218f GIT binary patch literal 19380 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $ + + + + + 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/sale_commission_pricelist/tests/__init__.py b/sale_commission_pricelist/tests/__init__.py new file mode 100644 index 000000000..b5c306061 --- /dev/null +++ b/sale_commission_pricelist/tests/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import test_sale_commission_pricelist diff --git a/sale_commission_pricelist/tests/test_sale_commission_pricelist.py b/sale_commission_pricelist/tests/test_sale_commission_pricelist.py new file mode 100644 index 000000000..b8140daea --- /dev/null +++ b/sale_commission_pricelist/tests/test_sale_commission_pricelist.py @@ -0,0 +1,92 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Carlos Dauden - Tecnativa +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo.tests.common import SavepointCase + + +class TestSaleCommissionPricelist(SavepointCase): + + @classmethod + def setUpClass(cls): + super(TestSaleCommissionPricelist, cls).setUpClass() + cls.product = cls.env['product.product'].create({ + 'name': 'Test Product 1', + 'list_price': 100, + }) + cls.product2 = cls.env['product.product'].create({ + 'name': 'Test Product 2', + 'list_price': 200, + }) + SaleCommission = cls.env['sale.commission'] + cls.commission_agent = SaleCommission.create({ + 'name': '0.5% commission', + 'fix_qty': 0.5, + }) + cls.commission_1 = SaleCommission.create({ + 'name': '1% commission', + 'fix_qty': 1.0, + }) + cls.commission_2 = SaleCommission.create({ + 'name': '2% commission', + 'fix_qty': 2.0, + }) + cls.pricelist = cls.env['product.pricelist'].create({ + 'name': 'Test commission pricelist', + 'item_ids': [ + (0, 0, { + 'name': '10% discount and commission on Test product 2', + 'applied_on': '1_product', + 'sequence': 1, + 'product_id': cls.product2.id, + 'compute_price': 'formula', + 'base': 'list_price', + 'price_discount': 20, + 'commission_id': cls.commission_2.id, + }), + (0, 0, { + 'name': '20% Discount and commission', + 'compute_price': 'percentage', + 'base': 'list_price', + 'percent_price': 10, + 'applied_on': '3_global', + 'commission_id': cls.commission_1.id, + }), + ] + }) + Partner = cls.env['res.partner'] + cls.agent = Partner.create({ + 'name': 'Test Agent', + 'agent': True, + 'commission': cls.commission_agent.id, + }) + cls.partner = Partner.create({ + 'name': 'Partner test', + 'customer': True, + 'supplier': False, + 'agents': [(6, 0, cls.agent.ids)], + }) + SaleOrder = cls.env['sale.order'] + cls.sale_order = SaleOrder.create({ + 'partner_id': cls.partner.id, + 'pricelist_id': cls.pricelist.id, + }) + SOLine = cls.env['sale.order.line'] + cls.so_line1 = SOLine.with_context(partner_id=cls.partner.id).create({ + 'order_id': cls.sale_order.id, + 'product_id': cls.product.id, + }) + for onchange_method in cls.so_line1._onchange_methods['product_id']: + onchange_method(cls.so_line1) + cls.so_line2 = SOLine.with_context(partner_id=cls.partner.id).create({ + 'order_id': cls.sale_order.id, + 'product_id': cls.product2.id, + }) + for onchange_method in cls.so_line2._onchange_methods['product_id']: + onchange_method(cls.so_line2) + + def test_sale_commission_pricelist(self): + self.assertEquals( + self.so_line1.agents[:1].commission, self.commission_1) + self.assertEquals( + self.so_line2.agents[:1].commission, self.commission_2) diff --git a/sale_commission_pricelist/views/product_pricelist_view.xml b/sale_commission_pricelist/views/product_pricelist_view.xml new file mode 100644 index 000000000..28ca6150f --- /dev/null +++ b/sale_commission_pricelist/views/product_pricelist_view.xml @@ -0,0 +1,46 @@ + + + + + + product.pricelist.item + + + + + + + + + + product.pricelist.item + + + + + + + + + + product.pricelist + + + + + + + + + + product.product + + + + + + + + + From 26fe3de0b64e3c47fd493c6dc311ee996ca73221 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 5 Apr 2018 20:24:12 +0200 Subject: [PATCH 02/42] [FIX] sale_commission_pricelist: Make this to work on button recompute --- .../models/sale_order.py | 41 +++++++++++++------ 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/sale_commission_pricelist/models/sale_order.py b/sale_commission_pricelist/models/sale_order.py index d73d083a4..b3d0c6e9e 100644 --- a/sale_commission_pricelist/models/sale_order.py +++ b/sale_commission_pricelist/models/sale_order.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright 2018 Carlos Dauden - Tecnativa +# Copyright 2018 Tecnativa - Carlos Dauden +# Copyright 2018 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import api, models @@ -8,18 +9,32 @@ class SaleOrderLine(models.Model): _inherit = 'sale.order.line' + def _get_commission_from_pricelist(self): + self.ensure_one() + if not self.product_id or not self.order_id.pricelist_id: + return False + rule_id = self.order_id.pricelist_id.get_product_price_rule( + product=self.product_id, + quantity=self.product_uom_qty or 1.0, + partner=self.order_id.partner_id, + date=self.order_id.date_order, + uom_id=self.product_uom.id)[1] + rule = self.env['product.pricelist.item'].browse(rule_id) + return rule.commission_id + @api.onchange('product_id', 'product_uom_qty') def _onchange_product_id_sale_commission_pricelist(self): + commission = self._get_commission_from_pricelist() + if commission: + self.agents.update({ + 'commission': commission.id, + }) + + def _prepare_agents_vals(self): self.ensure_one() - if self.product_id and self.order_id.pricelist_id: - rule_id = self.order_id.pricelist_id.get_product_price_rule( - product=self.product_id, - quantity=self.product_uom_qty or 1.0, - partner=self.order_id.partner_id, - date=self.order_id.date_order, - uom_id=self.product_uom.id)[1] - rule = self.env['product.pricelist.item'].browse(rule_id) - if rule.commission_id: - self.agents.update({ - 'commission': rule.commission_id.id, - }) + res = super(SaleOrderLine, self)._prepare_agents_vals() + commission = self._get_commission_from_pricelist() + if commission: + for vals in res: + vals['commission'] = commission.id + return res From bc8df8be2abbac2abe5acf3d6f81bdecddb36486 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sat, 5 May 2018 04:01:48 +0200 Subject: [PATCH 03/42] OCA Transbot updated translations from Transifex --- sale_commission_pricelist/i18n/es.po | 26 +++++++++------------ sale_commission_pricelist/i18n/fr.po | 34 ++++++++++++++++++++++++++++ sale_commission_pricelist/i18n/it.po | 34 ++++++++++++++++++++++++++++ sale_commission_pricelist/i18n/tr.po | 34 ++++++++++++++++++++++++++++ 4 files changed, 113 insertions(+), 15 deletions(-) create mode 100644 sale_commission_pricelist/i18n/fr.po create mode 100644 sale_commission_pricelist/i18n/it.po create mode 100644 sale_commission_pricelist/i18n/tr.po diff --git a/sale_commission_pricelist/i18n/es.po b/sale_commission_pricelist/i18n/es.po index d776d4592..b9e41e003 100644 --- a/sale_commission_pricelist/i18n/es.po +++ b/sale_commission_pricelist/i18n/es.po @@ -1,32 +1,28 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * sale_commission_pricelist -# +# * sale_commission_pricelist +# +# Translators: +# OCA Transbot , 2018 msgid "" msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-02-12 01:34+0100\n" -"PO-Revision-Date: 2018-02-12 01:35+0100\n" -"Last-Translator: Carlos Dauden \n" -"Language-Team: \n" -"Language: es\n" +"POT-Creation-Date: 2018-05-02 02:42+0000\n" +"PO-Revision-Date: 2018-05-02 02:42+0000\n" +"Last-Translator: OCA Transbot , 2018\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: \n" -"X-Generator: Poedit 1.8.7.1\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: sale_commission_pricelist #: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item_commission_id msgid "Commission" msgstr "Comisión" -#. module: sale_commission_pricelist -#: model:ir.model,name:sale_commission_pricelist.model_product_pricelist -msgid "Pricelist" -msgstr "Tarifa" - #. module: sale_commission_pricelist #: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item msgid "Pricelist item" diff --git a/sale_commission_pricelist/i18n/fr.po b/sale_commission_pricelist/i18n/fr.po new file mode 100644 index 000000000..e7f970d74 --- /dev/null +++ b/sale_commission_pricelist/i18n/fr.po @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_commission_pricelist +# +# Translators: +# Lixon Jean-Yves , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-05-02 02:42+0000\n" +"PO-Revision-Date: 2018-05-02 02:42+0000\n" +"Last-Translator: Lixon Jean-Yves , 2018\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: sale_commission_pricelist +#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item_commission_id +msgid "Commission" +msgstr "Commission" + +#. module: sale_commission_pricelist +#: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item +msgid "Pricelist item" +msgstr "" + +#. module: sale_commission_pricelist +#: model:ir.model,name:sale_commission_pricelist.model_sale_order_line +msgid "Sales Order Line" +msgstr "" diff --git a/sale_commission_pricelist/i18n/it.po b/sale_commission_pricelist/i18n/it.po new file mode 100644 index 000000000..b8481ee1b --- /dev/null +++ b/sale_commission_pricelist/i18n/it.po @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_commission_pricelist +# +# Translators: +# Lorenzo Battistini , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-05-05 02:07+0000\n" +"PO-Revision-Date: 2018-05-05 02:07+0000\n" +"Last-Translator: Lorenzo Battistini , 2018\n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: sale_commission_pricelist +#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item_commission_id +msgid "Commission" +msgstr "Commissione" + +#. module: sale_commission_pricelist +#: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item +msgid "Pricelist item" +msgstr "" + +#. module: sale_commission_pricelist +#: model:ir.model,name:sale_commission_pricelist.model_sale_order_line +msgid "Sales Order Line" +msgstr "Riga ordine di vendita" diff --git a/sale_commission_pricelist/i18n/tr.po b/sale_commission_pricelist/i18n/tr.po new file mode 100644 index 000000000..4999f59a3 --- /dev/null +++ b/sale_commission_pricelist/i18n/tr.po @@ -0,0 +1,34 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_commission_pricelist +# +# Translators: +# Ediz Duman , 2018 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-05-05 02:07+0000\n" +"PO-Revision-Date: 2018-05-05 02:07+0000\n" +"Last-Translator: Ediz Duman , 2018\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: sale_commission_pricelist +#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item_commission_id +msgid "Commission" +msgstr "Komisyon" + +#. module: sale_commission_pricelist +#: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item +msgid "Pricelist item" +msgstr "" + +#. module: sale_commission_pricelist +#: model:ir.model,name:sale_commission_pricelist.model_sale_order_line +msgid "Sales Order Line" +msgstr "Satış Sipariş Satırı" From a61503088484be0dc7ec7ad0763faebe1fe73ba4 Mon Sep 17 00:00:00 2001 From: eLBati Date: Thu, 24 May 2018 16:38:06 +0200 Subject: [PATCH 04/42] porting sale_commission_pricelist to 11.0 --- sale_commission_pricelist/README.rst | 68 ++++++++++++------- sale_commission_pricelist/__init__.py | 1 - sale_commission_pricelist/__manifest__.py | 3 +- sale_commission_pricelist/models/__init__.py | 1 - .../models/product_pricelist.py | 1 - .../models/sale_order.py | 1 - .../readme/CONTRIBUTORS.rst | 3 + .../readme/DESCRIPTION.rst | 4 ++ sale_commission_pricelist/readme/USAGE.rst | 9 +++ sale_commission_pricelist/tests/__init__.py | 1 - .../tests/test_sale_commission_pricelist.py | 6 +- 11 files changed, 61 insertions(+), 37 deletions(-) create mode 100644 sale_commission_pricelist/readme/CONTRIBUTORS.rst create mode 100644 sale_commission_pricelist/readme/DESCRIPTION.rst create mode 100644 sale_commission_pricelist/readme/USAGE.rst diff --git a/sale_commission_pricelist/README.rst b/sale_commission_pricelist/README.rst index 064f756e4..8c8fb3e09 100644 --- a/sale_commission_pricelist/README.rst +++ b/sale_commission_pricelist/README.rst @@ -1,14 +1,37 @@ -.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png - :target: https://www.gnu.org/licenses/agpl - :alt: License: AGPL-3 - ============================== Sales commissions by pricelist ============================== +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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/sale_commission_pricelist + :alt: OCA/commission +.. |badge4| 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| + This module extends the functionality of sale_commission to allow you set a commission to pricelist item. +The commission is applied when the pricelist rule is applied, that is after changing product or quantity of sale order line. + +**Table of contents** + +.. contents:: + :local: + Usage ===== @@ -22,50 +45,43 @@ To use this module, you need to: #. In the pricelist -> add a new item or open a new one #. You will find the field commission in the pricelist item -.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas - :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/165/10.0 - 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 smash it by providing detailed and welcomed feedback. +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 ======= -Images ------- +Authors +~~~~~~~ -* Odoo Community Association: `Icon `_. +* Tecnativa Contributors ------------- +~~~~~~~~~~~~ * `Tecnativa `_: * Carlos Dauden +* Lorenzo Battistini -Do not contact contributors directly about support or help with technical issues. +Maintainers +~~~~~~~~~~~ -Maintainer ----------- +This module is maintained by the OCA. .. image:: https://odoo-community.org/logo.png :alt: Odoo Community Association :target: https://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 https://odoo-community.org. - +This module is part of the `OCA/commission `_ project on GitHub. -.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html - :alt: License: AGPL-3 +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/sale_commission_pricelist/__init__.py b/sale_commission_pricelist/__init__.py index cde864bae..a9e337226 100644 --- a/sale_commission_pricelist/__init__.py +++ b/sale_commission_pricelist/__init__.py @@ -1,3 +1,2 @@ -# -*- coding: utf-8 -*- from . import models diff --git a/sale_commission_pricelist/__manifest__.py b/sale_commission_pricelist/__manifest__.py index 764c5256b..e99d907d8 100644 --- a/sale_commission_pricelist/__manifest__.py +++ b/sale_commission_pricelist/__manifest__.py @@ -1,10 +1,9 @@ -# -*- coding: utf-8 -*- # Copyright 2018 Carlos Dauden - Tecnativa # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { 'name': 'Sales commissions by pricelist', - 'version': '10.0.1.0.0', + 'version': '11.0.1.0.0', 'author': 'Tecnativa, ' 'Odoo Community Association (OCA)', 'category': 'Sales', diff --git a/sale_commission_pricelist/models/__init__.py b/sale_commission_pricelist/models/__init__.py index cc869e2aa..8bdcc2090 100644 --- a/sale_commission_pricelist/models/__init__.py +++ b/sale_commission_pricelist/models/__init__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from . import product_pricelist from . import sale_order diff --git a/sale_commission_pricelist/models/product_pricelist.py b/sale_commission_pricelist/models/product_pricelist.py index c45fe680a..309d15c5e 100644 --- a/sale_commission_pricelist/models/product_pricelist.py +++ b/sale_commission_pricelist/models/product_pricelist.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2018 Carlos Dauden - Tecnativa # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). diff --git a/sale_commission_pricelist/models/sale_order.py b/sale_commission_pricelist/models/sale_order.py index b3d0c6e9e..fbeb8ae63 100644 --- a/sale_commission_pricelist/models/sale_order.py +++ b/sale_commission_pricelist/models/sale_order.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2018 Tecnativa - Carlos Dauden # Copyright 2018 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). diff --git a/sale_commission_pricelist/readme/CONTRIBUTORS.rst b/sale_commission_pricelist/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..7abfad1f4 --- /dev/null +++ b/sale_commission_pricelist/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Tecnativa `_: + * Carlos Dauden +* Lorenzo Battistini diff --git a/sale_commission_pricelist/readme/DESCRIPTION.rst b/sale_commission_pricelist/readme/DESCRIPTION.rst new file mode 100644 index 000000000..7c200c310 --- /dev/null +++ b/sale_commission_pricelist/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +This module extends the functionality of sale_commission to allow you set a +commission to pricelist item. + +The commission is applied when the pricelist rule is applied, that is after changing product or quantity of sale order line. diff --git a/sale_commission_pricelist/readme/USAGE.rst b/sale_commission_pricelist/readme/USAGE.rst new file mode 100644 index 000000000..914835c79 --- /dev/null +++ b/sale_commission_pricelist/readme/USAGE.rst @@ -0,0 +1,9 @@ +To use this module, you need to: + +#. Go to Sales -> Configuration -> Settings -> Pricing -> Sale Price and + activate: "Advanced pricing based on formulas (discounts, margins, + rounding)" +#. Go to Sales -> Configuration -> Price-list and edit an existing one or + create a new one +#. In the pricelist -> add a new item or open a new one +#. You will find the field commission in the pricelist item diff --git a/sale_commission_pricelist/tests/__init__.py b/sale_commission_pricelist/tests/__init__.py index b5c306061..d14eda0f4 100644 --- a/sale_commission_pricelist/tests/__init__.py +++ b/sale_commission_pricelist/tests/__init__.py @@ -1,3 +1,2 @@ -# -*- coding: utf-8 -*- from . import test_sale_commission_pricelist diff --git a/sale_commission_pricelist/tests/test_sale_commission_pricelist.py b/sale_commission_pricelist/tests/test_sale_commission_pricelist.py index b8140daea..5e59bc5cc 100644 --- a/sale_commission_pricelist/tests/test_sale_commission_pricelist.py +++ b/sale_commission_pricelist/tests/test_sale_commission_pricelist.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Copyright 2018 Carlos Dauden - Tecnativa # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). @@ -37,7 +36,6 @@ def setUpClass(cls): (0, 0, { 'name': '10% discount and commission on Test product 2', 'applied_on': '1_product', - 'sequence': 1, 'product_id': cls.product2.id, 'compute_price': 'formula', 'base': 'list_price', @@ -86,7 +84,7 @@ def setUpClass(cls): onchange_method(cls.so_line2) def test_sale_commission_pricelist(self): - self.assertEquals( + self.assertEqual( self.so_line1.agents[:1].commission, self.commission_1) - self.assertEquals( + self.assertEqual( self.so_line2.agents[:1].commission, self.commission_2) From 4708b3cbcc09d5f1f7bdcd7d2e86d7be0271961a Mon Sep 17 00:00:00 2001 From: oca-travis Date: Wed, 22 Aug 2018 09:31:50 +0000 Subject: [PATCH 05/42] [UPD] Update sale_commission_pricelist.pot --- sale_commission_pricelist/i18n/es.po | 4 +-- sale_commission_pricelist/i18n/fr.po | 4 +-- sale_commission_pricelist/i18n/it.po | 4 +-- .../i18n/sale_commission_pricelist.pot | 30 +++++++++++++++++++ sale_commission_pricelist/i18n/tr.po | 4 +-- 5 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 sale_commission_pricelist/i18n/sale_commission_pricelist.pot diff --git a/sale_commission_pricelist/i18n/es.po b/sale_commission_pricelist/i18n/es.po index b9e41e003..5823833f3 100644 --- a/sale_commission_pricelist/i18n/es.po +++ b/sale_commission_pricelist/i18n/es.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * sale_commission_pricelist -# +# # Translators: # OCA Transbot , 2018 msgid "" @@ -12,10 +12,10 @@ msgstr "" "PO-Revision-Date: 2018-05-02 02:42+0000\n" "Last-Translator: OCA Transbot , 2018\n" "Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: sale_commission_pricelist diff --git a/sale_commission_pricelist/i18n/fr.po b/sale_commission_pricelist/i18n/fr.po index e7f970d74..952272b50 100644 --- a/sale_commission_pricelist/i18n/fr.po +++ b/sale_commission_pricelist/i18n/fr.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * sale_commission_pricelist -# +# # Translators: # Lixon Jean-Yves , 2018 msgid "" @@ -12,10 +12,10 @@ msgstr "" "PO-Revision-Date: 2018-05-02 02:42+0000\n" "Last-Translator: Lixon Jean-Yves , 2018\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" -"Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: sale_commission_pricelist diff --git a/sale_commission_pricelist/i18n/it.po b/sale_commission_pricelist/i18n/it.po index b8481ee1b..216284f50 100644 --- a/sale_commission_pricelist/i18n/it.po +++ b/sale_commission_pricelist/i18n/it.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * sale_commission_pricelist -# +# # Translators: # Lorenzo Battistini , 2018 msgid "" @@ -12,10 +12,10 @@ msgstr "" "PO-Revision-Date: 2018-05-05 02:07+0000\n" "Last-Translator: Lorenzo Battistini , 2018\n" "Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: sale_commission_pricelist diff --git a/sale_commission_pricelist/i18n/sale_commission_pricelist.pot b/sale_commission_pricelist/i18n/sale_commission_pricelist.pot new file mode 100644 index 000000000..70cf536a2 --- /dev/null +++ b/sale_commission_pricelist/i18n/sale_commission_pricelist.pot @@ -0,0 +1,30 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_commission_pricelist +# +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: sale_commission_pricelist +#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item_commission_id +msgid "Commission" +msgstr "" + +#. module: sale_commission_pricelist +#: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item +msgid "Pricelist item" +msgstr "" + +#. module: sale_commission_pricelist +#: model:ir.model,name:sale_commission_pricelist.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + diff --git a/sale_commission_pricelist/i18n/tr.po b/sale_commission_pricelist/i18n/tr.po index 4999f59a3..3131f2763 100644 --- a/sale_commission_pricelist/i18n/tr.po +++ b/sale_commission_pricelist/i18n/tr.po @@ -1,7 +1,7 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: # * sale_commission_pricelist -# +# # Translators: # Ediz Duman , 2018 msgid "" @@ -12,10 +12,10 @@ msgstr "" "PO-Revision-Date: 2018-05-05 02:07+0000\n" "Last-Translator: Ediz Duman , 2018\n" "Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" -"Language: tr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: sale_commission_pricelist From 784ee9c3026483a6896571c451a150c2637dc523 Mon Sep 17 00:00:00 2001 From: OCA Git Bot Date: Thu, 23 Aug 2018 04:39:31 +0200 Subject: [PATCH 06/42] [UPD] README.rst --- sale_commission_pricelist/README.rst | 10 +- .../static/description/index.html | 437 ++++++++++++++++++ 2 files changed, 444 insertions(+), 3 deletions(-) create mode 100644 sale_commission_pricelist/static/description/index.html diff --git a/sale_commission_pricelist/README.rst b/sale_commission_pricelist/README.rst index 8c8fb3e09..5dcf7e8ae 100644 --- a/sale_commission_pricelist/README.rst +++ b/sale_commission_pricelist/README.rst @@ -16,11 +16,14 @@ Sales commissions by pricelist .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fcommission-lightgray.png?logo=github :target: https://github.com/OCA/commission/tree/11.0/sale_commission_pricelist :alt: OCA/commission -.. |badge4| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png +.. |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-sale_commission_pricelist + :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| +|badge1| |badge2| |badge3| |badge4| |badge5| This module extends the functionality of sale_commission to allow you set a commission to pricelist item. @@ -50,7 +53,8 @@ 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. +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. diff --git a/sale_commission_pricelist/static/description/index.html b/sale_commission_pricelist/static/description/index.html new file mode 100644 index 000000000..8dabf9723 --- /dev/null +++ b/sale_commission_pricelist/static/description/index.html @@ -0,0 +1,437 @@ + + + + + + +Sales commissions by pricelist + + + +
+

Sales commissions by pricelist

+ + +

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

+

This module extends the functionality of sale_commission to allow you set a +commission to pricelist item.

+

The commission is applied when the pricelist rule is applied, that is after changing product or quantity of sale order line.

+

Table of contents

+ +
+

Usage

+

To use this module, you need to:

+
    +
  1. Go to Sales -> Configuration -> Settings -> Pricing -> Sale Price and +activate: “Advanced pricing based on formulas (discounts, margins, +rounding)”
  2. +
  3. Go to Sales -> Configuration -> Price-list and edit an existing one or +create a new one
  4. +
  5. In the pricelist -> add a new item or open a new one
  6. +
  7. You will find the field commission in the pricelist item
  8. +
+
+
+

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.

+
+
+
+ + From 0a5b4e9616e0901e36f5ec41656531ebae24825f Mon Sep 17 00:00:00 2001 From: Rudolf Schnapka Date: Fri, 21 Sep 2018 11:28:43 +0000 Subject: [PATCH 07/42] Added translation using Weblate (German) --- sale_commission_pricelist/i18n/de.po | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 sale_commission_pricelist/i18n/de.po diff --git a/sale_commission_pricelist/i18n/de.po b/sale_commission_pricelist/i18n/de.po new file mode 100644 index 000000000..a0d826a80 --- /dev/null +++ b/sale_commission_pricelist/i18n/de.po @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_commission_pricelist +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 11.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2018-09-21 11:29+0000\n" +"Last-Translator: Rudolf Schnapka \n" +"Language-Team: none\n" +"Language: de\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.1.1\n" + +#. module: sale_commission_pricelist +#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item_commission_id +msgid "Commission" +msgstr "Provision" + +#. module: sale_commission_pricelist +#: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item +msgid "Pricelist item" +msgstr "Preislistenposition" + +#. module: sale_commission_pricelist +#: model:ir.model,name:sale_commission_pricelist.model_sale_order_line +msgid "Sales Order Line" +msgstr "Verkaufsauftragsposition" From ec3d984b161b86c8eace9451c3e4a7a6efa9431a Mon Sep 17 00:00:00 2001 From: ernesto Date: Mon, 4 Mar 2019 12:45:28 -0500 Subject: [PATCH 08/42] [MIG] sale_commission_pricelist: Migration to 12.0 --- sale_commission_pricelist/README.rst | 19 ++++++----- sale_commission_pricelist/__manifest__.py | 4 +-- .../models/sale_order.py | 4 +-- .../readme/CONTRIBUTORS.rst | 1 + sale_commission_pricelist/readme/USAGE.rst | 8 ++--- .../static/description/index.html | 17 +++++----- .../tests/test_sale_commission_pricelist.py | 33 +++++++++++++++++++ 7 files changed, 61 insertions(+), 25 deletions(-) diff --git a/sale_commission_pricelist/README.rst b/sale_commission_pricelist/README.rst index 5dcf7e8ae..0357b85b2 100644 --- a/sale_commission_pricelist/README.rst +++ b/sale_commission_pricelist/README.rst @@ -14,13 +14,13 @@ Sales commissions by pricelist :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/sale_commission_pricelist + :target: https://github.com/OCA/commission/tree/12.0/sale_commission_pricelist :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-sale_commission_pricelist + :target: https://translation.odoo-community.org/projects/commission-12-0/commission-12-0-sale_commission_pricelist :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| @@ -40,10 +40,10 @@ Usage To use this module, you need to: -#. Go to Sales -> Configuration -> Settings -> Pricing -> Sale Price and - activate: "Advanced pricing based on formulas (discounts, margins, - rounding)" -#. Go to Sales -> Configuration -> Price-list and edit an existing one or +#. Go to Sales -> Configuration -> Settings -> Pricing -> Sale Price, + activate: "Multiple Sales Prices per Product" and select + *Prices computed from formulas (discounts, margins, roundings)* +#. Go to Sales -> Products -> Pricelists and edit an existing one or create a new one #. In the pricelist -> add a new item or open a new one #. You will find the field commission in the pricelist item @@ -54,7 +54,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. @@ -71,6 +71,7 @@ Contributors * `Tecnativa `_: * Carlos Dauden + * Ernesto Tejeda * Lorenzo Battistini Maintainers @@ -86,6 +87,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/sale_commission_pricelist/__manifest__.py b/sale_commission_pricelist/__manifest__.py index e99d907d8..a6ac48479 100644 --- a/sale_commission_pricelist/__manifest__.py +++ b/sale_commission_pricelist/__manifest__.py @@ -3,10 +3,10 @@ { 'name': 'Sales commissions by pricelist', - 'version': '11.0.1.0.0', + 'version': '12.0.1.0.0', 'author': 'Tecnativa, ' 'Odoo Community Association (OCA)', - 'category': 'Sales', + 'category': 'Sales Management', 'website': 'https://github.com/OCA/commission', 'license': 'AGPL-3', 'depends': [ diff --git a/sale_commission_pricelist/models/sale_order.py b/sale_commission_pricelist/models/sale_order.py index fbeb8ae63..06c2f02e7 100644 --- a/sale_commission_pricelist/models/sale_order.py +++ b/sale_commission_pricelist/models/sale_order.py @@ -11,7 +11,7 @@ class SaleOrderLine(models.Model): def _get_commission_from_pricelist(self): self.ensure_one() if not self.product_id or not self.order_id.pricelist_id: - return False + return False # pragma: no cover rule_id = self.order_id.pricelist_id.get_product_price_rule( product=self.product_id, quantity=self.product_uom_qty or 1.0, @@ -35,5 +35,5 @@ def _prepare_agents_vals(self): commission = self._get_commission_from_pricelist() if commission: for vals in res: - vals['commission'] = commission.id + vals[2]['commission'] = commission.id return res diff --git a/sale_commission_pricelist/readme/CONTRIBUTORS.rst b/sale_commission_pricelist/readme/CONTRIBUTORS.rst index 7abfad1f4..ecc8d2fe3 100644 --- a/sale_commission_pricelist/readme/CONTRIBUTORS.rst +++ b/sale_commission_pricelist/readme/CONTRIBUTORS.rst @@ -1,3 +1,4 @@ * `Tecnativa `_: * Carlos Dauden + * Ernesto Tejeda * Lorenzo Battistini diff --git a/sale_commission_pricelist/readme/USAGE.rst b/sale_commission_pricelist/readme/USAGE.rst index 914835c79..0e3f80630 100644 --- a/sale_commission_pricelist/readme/USAGE.rst +++ b/sale_commission_pricelist/readme/USAGE.rst @@ -1,9 +1,9 @@ To use this module, you need to: -#. Go to Sales -> Configuration -> Settings -> Pricing -> Sale Price and - activate: "Advanced pricing based on formulas (discounts, margins, - rounding)" -#. Go to Sales -> Configuration -> Price-list and edit an existing one or +#. Go to Sales -> Configuration -> Settings -> Pricing -> Sale Price, + activate: "Multiple Sales Prices per Product" and select + *Prices computed from formulas (discounts, margins, roundings)* +#. Go to Sales -> Products -> Pricelists and edit an existing one or create a new one #. In the pricelist -> add a new item or open a new one #. You will find the field commission in the pricelist item diff --git a/sale_commission_pricelist/static/description/index.html b/sale_commission_pricelist/static/description/index.html index 8dabf9723..ca61666e7 100644 --- a/sale_commission_pricelist/static/description/index.html +++ b/sale_commission_pricelist/static/description/index.html @@ -367,7 +367,7 @@

Sales commissions by pricelist

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module extends the functionality of sale_commission to allow you set a commission to pricelist item.

The commission is applied when the pricelist rule is applied, that is after changing product or quantity of sale order line.

@@ -388,10 +388,10 @@

Sales commissions by pricelist

Usage

To use this module, you need to:

    -
  1. Go to Sales -> Configuration -> Settings -> Pricing -> Sale Price and -activate: “Advanced pricing based on formulas (discounts, margins, -rounding)”
  2. -
  3. Go to Sales -> Configuration -> Price-list and edit an existing one or +
  4. Go to Sales -> Configuration -> Settings -> Pricing -> Sale Price, +activate: “Multiple Sales Prices per Product” and select +Prices computed from formulas (discounts, margins, roundings)
  5. +
  6. Go to Sales -> Products -> Pricelists and edit an existing one or create a new one
  7. In the pricelist -> add a new item or open a new one
  8. You will find the field commission in the pricelist item
  9. @@ -402,7 +402,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.

    @@ -417,7 +417,8 @@

    Authors

    Contributors

    @@ -428,7 +429,7 @@

    Maintainers

    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/sale_commission_pricelist/tests/test_sale_commission_pricelist.py b/sale_commission_pricelist/tests/test_sale_commission_pricelist.py index 5e59bc5cc..0fc68bbc1 100644 --- a/sale_commission_pricelist/tests/test_sale_commission_pricelist.py +++ b/sale_commission_pricelist/tests/test_sale_commission_pricelist.py @@ -88,3 +88,36 @@ def test_sale_commission_pricelist(self): self.so_line1.agents[:1].commission, self.commission_1) self.assertEqual( self.so_line2.agents[:1].commission, self.commission_2) + + def test_prepare_agents_vals(self): + commission_3 = self.env['sale.commission'].create({ + 'name': '3% commission', + 'fix_qty': 3.0, + }) + pricelist_3 = self.env['product.pricelist'].create({ + 'name': 'Test commission pricelist 3', + 'item_ids': [ + (0, 0, { + 'name': '30% discount and commission on Test product 2', + 'applied_on': '1_product', + 'product_id': self.product2.id, + 'compute_price': 'formula', + 'base': 'list_price', + 'price_discount': 30, + 'commission_id': commission_3.id, + }), + ] + }) + # Nothing changes + self.sale_order.pricelist_id = pricelist_3 + self.assertEqual( + self.so_line1.agents[:1].commission, self.commission_1) + self.assertEqual( + self.so_line2.agents[:1].commission, self.commission_2) + # After click on 'Recompute lines agents' button + # self.so_line1 and self.so_line1 change + self.sale_order.recompute_lines_agents() + self.assertEqual( + self.so_line1.agents[:1].commission, self.commission_agent) + self.assertEqual( + self.so_line2.agents[:1].commission, commission_3) From 2f34bc57812029f7b6be7959042d9e26d30db6e8 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Thu, 7 Mar 2019 16:39:28 +0000 Subject: [PATCH 09/42] [UPD] Update sale_commission_pricelist.pot --- .../i18n/sale_commission_pricelist.pot | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sale_commission_pricelist/i18n/sale_commission_pricelist.pot b/sale_commission_pricelist/i18n/sale_commission_pricelist.pot index 70cf536a2..047abe8d3 100644 --- a/sale_commission_pricelist/i18n/sale_commission_pricelist.pot +++ b/sale_commission_pricelist/i18n/sale_commission_pricelist.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" @@ -14,13 +14,13 @@ msgstr "" "Plural-Forms: \n" #. module: sale_commission_pricelist -#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item_commission_id +#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item__commission_id msgid "Commission" msgstr "" #. module: sale_commission_pricelist #: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item -msgid "Pricelist item" +msgid "Pricelist Item" msgstr "" #. module: sale_commission_pricelist From 80ad2a49fb14aac95143ec7ce756e77153d114c7 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 17 Mar 2019 12:48:13 +0000 Subject: [PATCH 10/42] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: commission-12.0/commission-12.0-sale_commission_pricelist Translate-URL: https://translation.odoo-community.org/projects/commission-12-0/commission-12-0-sale_commission_pricelist/ --- sale_commission_pricelist/i18n/de.po | 8 +++++--- sale_commission_pricelist/i18n/es.po | 6 ++++-- sale_commission_pricelist/i18n/fr.po | 4 ++-- sale_commission_pricelist/i18n/it.po | 4 ++-- sale_commission_pricelist/i18n/tr.po | 4 ++-- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/sale_commission_pricelist/i18n/de.po b/sale_commission_pricelist/i18n/de.po index a0d826a80..b86a50e69 100644 --- a/sale_commission_pricelist/i18n/de.po +++ b/sale_commission_pricelist/i18n/de.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * sale_commission_pricelist +# * sale_commission_pricelist # msgid "" msgstr "" @@ -17,13 +17,15 @@ msgstr "" "X-Generator: Weblate 3.1.1\n" #. module: sale_commission_pricelist -#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item_commission_id +#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item__commission_id msgid "Commission" msgstr "Provision" #. module: sale_commission_pricelist #: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item -msgid "Pricelist item" +#, fuzzy +#| msgid "Pricelist item" +msgid "Pricelist Item" msgstr "Preislistenposition" #. module: sale_commission_pricelist diff --git a/sale_commission_pricelist/i18n/es.po b/sale_commission_pricelist/i18n/es.po index 5823833f3..815a2ac5d 100644 --- a/sale_commission_pricelist/i18n/es.po +++ b/sale_commission_pricelist/i18n/es.po @@ -19,13 +19,15 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: sale_commission_pricelist -#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item_commission_id +#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item__commission_id msgid "Commission" msgstr "Comisión" #. module: sale_commission_pricelist #: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item -msgid "Pricelist item" +#, fuzzy +#| msgid "Pricelist item" +msgid "Pricelist Item" msgstr "Elemento de la tarifa" #. module: sale_commission_pricelist diff --git a/sale_commission_pricelist/i18n/fr.po b/sale_commission_pricelist/i18n/fr.po index 952272b50..e4114f840 100644 --- a/sale_commission_pricelist/i18n/fr.po +++ b/sale_commission_pricelist/i18n/fr.po @@ -19,13 +19,13 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: sale_commission_pricelist -#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item_commission_id +#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item__commission_id msgid "Commission" msgstr "Commission" #. module: sale_commission_pricelist #: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item -msgid "Pricelist item" +msgid "Pricelist Item" msgstr "" #. module: sale_commission_pricelist diff --git a/sale_commission_pricelist/i18n/it.po b/sale_commission_pricelist/i18n/it.po index 216284f50..c18d095a2 100644 --- a/sale_commission_pricelist/i18n/it.po +++ b/sale_commission_pricelist/i18n/it.po @@ -19,13 +19,13 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. module: sale_commission_pricelist -#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item_commission_id +#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item__commission_id msgid "Commission" msgstr "Commissione" #. module: sale_commission_pricelist #: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item -msgid "Pricelist item" +msgid "Pricelist Item" msgstr "" #. module: sale_commission_pricelist diff --git a/sale_commission_pricelist/i18n/tr.po b/sale_commission_pricelist/i18n/tr.po index 3131f2763..65d42d9d6 100644 --- a/sale_commission_pricelist/i18n/tr.po +++ b/sale_commission_pricelist/i18n/tr.po @@ -19,13 +19,13 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #. module: sale_commission_pricelist -#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item_commission_id +#: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item__commission_id msgid "Commission" msgstr "Komisyon" #. module: sale_commission_pricelist #: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item -msgid "Pricelist item" +msgid "Pricelist Item" msgstr "" #. module: sale_commission_pricelist From e73c2ec65fa567492b66827690473af7117d40fc Mon Sep 17 00:00:00 2001 From: Lorenzo Battistini Date: Fri, 19 Jul 2019 06:28:41 +0000 Subject: [PATCH 11/42] Translated using Weblate (Italian) Currently translated at 100.0% (3 of 3 strings) Translation: commission-12.0/commission-12.0-sale_commission_pricelist Translate-URL: https://translation.odoo-community.org/projects/commission-12-0/commission-12-0-sale_commission_pricelist/it/ --- sale_commission_pricelist/i18n/it.po | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sale_commission_pricelist/i18n/it.po b/sale_commission_pricelist/i18n/it.po index c18d095a2..170e842d8 100644 --- a/sale_commission_pricelist/i18n/it.po +++ b/sale_commission_pricelist/i18n/it.po @@ -9,14 +9,15 @@ msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-05-05 02:07+0000\n" -"PO-Revision-Date: 2018-05-05 02:07+0000\n" -"Last-Translator: Lorenzo Battistini , 2018\n" +"PO-Revision-Date: 2019-07-19 08:43+0000\n" +"Last-Translator: Lorenzo Battistini \n" "Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" "Language: it\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.7.1\n" #. module: sale_commission_pricelist #: model:ir.model.fields,field_description:sale_commission_pricelist.field_product_pricelist_item__commission_id @@ -26,7 +27,7 @@ msgstr "Commissione" #. module: sale_commission_pricelist #: model:ir.model,name:sale_commission_pricelist.model_product_pricelist_item msgid "Pricelist Item" -msgstr "" +msgstr "Articolo listino" #. module: sale_commission_pricelist #: model:ir.model,name:sale_commission_pricelist.model_sale_order_line From 756a8a31470868aeb8a9acf3f00ea9d560bfcf8f Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 29 Jul 2019 02:43:01 +0000 Subject: [PATCH 12/42] [UPD] README.rst --- sale_commission_pricelist/static/description/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sale_commission_pricelist/static/description/index.html b/sale_commission_pricelist/static/description/index.html index ca61666e7..06bcb8e95 100644 --- a/sale_commission_pricelist/static/description/index.html +++ b/sale_commission_pricelist/static/description/index.html @@ -3,7 +3,7 @@ - + Sales commissions by pricelist