From 5a09a28e1f26d853f8c4479e75c9a9193745d10d Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Mon, 12 Feb 2018 01:40:58 +0100 Subject: [PATCH 01/44] [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 7e625a29becb32c639d9226498f055636537063f Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Thu, 5 Apr 2018 20:24:12 +0200 Subject: [PATCH 02/44] [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 2f73600d3f94ef3ff3841ed8340bc88291f3ba94 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sat, 5 May 2018 04:01:48 +0200 Subject: [PATCH 03/44] 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 6439406aa90004a8296d335cc88919f63a5aec72 Mon Sep 17 00:00:00 2001 From: eLBati Date: Thu, 24 May 2018 16:38:06 +0200 Subject: [PATCH 04/44] 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 ca2ba5ecd377059331cb11e6c7eab2701d43a213 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Wed, 22 Aug 2018 09:31:50 +0000 Subject: [PATCH 05/44] [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 6a576b55cc161575bde351323513e673a43f2e0a Mon Sep 17 00:00:00 2001 From: OCA Git Bot Date: Thu, 23 Aug 2018 04:39:31 +0200 Subject: [PATCH 06/44] [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 4f5d78feec4ae897c604ee4c8ddd84ca6052c060 Mon Sep 17 00:00:00 2001 From: Rudolf Schnapka Date: Fri, 21 Sep 2018 11:28:43 +0000 Subject: [PATCH 07/44] 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 4ef8198b8bbd4e43c7d8b531c9cfee299be6fab6 Mon Sep 17 00:00:00 2001 From: ernesto Date: Mon, 4 Mar 2019 12:45:28 -0500 Subject: [PATCH 08/44] [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 b1ab0ef32905362880dba0e71ae0df6304cfa6b5 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Thu, 7 Mar 2019 16:39:28 +0000 Subject: [PATCH 09/44] [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 8ad57105c98b9d44043ee456be8ee446709e9ad2 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sun, 17 Mar 2019 12:48:13 +0000 Subject: [PATCH 10/44] 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 f31e11d7092683b4c2a40bab69e4a59b5787ecbe Mon Sep 17 00:00:00 2001 From: Lorenzo Battistini Date: Fri, 19 Jul 2019 06:28:41 +0000 Subject: [PATCH 11/44] 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 897ba6dd5bdaaa209369d160d03de2aeb8643b38 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 29 Jul 2019 02:43:01 +0000 Subject: [PATCH 12/44] [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