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
+
+
+
+
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
+
+
+
+
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
+
+
+
+
+
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.
+
+
+
+
+
+
+
+
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.
+
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. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
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
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
@@ -402,7 +402,7 @@
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.
@@ -428,7 +429,7 @@
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