From 3d325463e472728bf810bfedd4a61e5e3b5a86ec Mon Sep 17 00:00:00 2001 From: Ilyas Date: Wed, 12 Apr 2023 13:20:03 +0200 Subject: [PATCH 01/27] [ADD] sale_commission_product_criteria --- .../README.rst | 110 +++++ .../__init__.py | 1 + .../__manifest__.py | 21 + .../demo/sale_agent_demo.xml | 65 +++ .../i18n/sale_commission_product_criteria.pot | 412 ++++++++++++++++ .../models/__init__.py | 5 + .../models/account_move.py | 27 ++ .../models/commission.py | 267 +++++++++++ .../models/sale.py | 52 ++ .../models/sale_commission_line_mixin.py | 77 +++ .../models/settlement.py | 7 + .../readme/CONTRIBUTORS.rst | 3 + .../readme/DESCRIPTION.rst | 16 + .../readme/USAGE.rst | 7 + .../security/ir.model.access.csv | 2 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 446 ++++++++++++++++++ .../tests/__init__.py | 1 + .../test_sale_commission_product_criteria.py | 200 ++++++++ .../views/views.xml | 235 +++++++++ 20 files changed, 1954 insertions(+) create mode 100644 sale_commission_oca_product_criteria/README.rst create mode 100644 sale_commission_oca_product_criteria/__init__.py create mode 100644 sale_commission_oca_product_criteria/__manifest__.py create mode 100644 sale_commission_oca_product_criteria/demo/sale_agent_demo.xml create mode 100644 sale_commission_oca_product_criteria/i18n/sale_commission_product_criteria.pot create mode 100644 sale_commission_oca_product_criteria/models/__init__.py create mode 100644 sale_commission_oca_product_criteria/models/account_move.py create mode 100644 sale_commission_oca_product_criteria/models/commission.py create mode 100644 sale_commission_oca_product_criteria/models/sale.py create mode 100644 sale_commission_oca_product_criteria/models/sale_commission_line_mixin.py create mode 100644 sale_commission_oca_product_criteria/models/settlement.py create mode 100644 sale_commission_oca_product_criteria/readme/CONTRIBUTORS.rst create mode 100644 sale_commission_oca_product_criteria/readme/DESCRIPTION.rst create mode 100644 sale_commission_oca_product_criteria/readme/USAGE.rst create mode 100644 sale_commission_oca_product_criteria/security/ir.model.access.csv create mode 100644 sale_commission_oca_product_criteria/static/description/icon.png create mode 100644 sale_commission_oca_product_criteria/static/description/index.html create mode 100644 sale_commission_oca_product_criteria/tests/__init__.py create mode 100644 sale_commission_oca_product_criteria/tests/test_sale_commission_product_criteria.py create mode 100644 sale_commission_oca_product_criteria/views/views.xml diff --git a/sale_commission_oca_product_criteria/README.rst b/sale_commission_oca_product_criteria/README.rst new file mode 100644 index 000000000..74134b4b7 --- /dev/null +++ b/sale_commission_oca_product_criteria/README.rst @@ -0,0 +1,110 @@ +================================ +Sale Commission Product Criteria +================================ + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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/14.0/sale_commission_product_criteria + :alt: OCA/commission +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/commission-14-0/commission-14-0-sale_commission_product_criteria + :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/14.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module allows to set in the same Commission Type different commission rates according to the product on SO/invoice line. + +This is made possible since this module adds a new "Product criteria" type to Commission Type and applies commission rates with the same logic of sale pricelist items. + +For example, such a Commission Type can grant: + +10% on a specific Product A, +10$ on Product B, +4% on products in Category 1 and +5$ on all other products. + +In SO/invoice, system will apply different commissions based on variant/product/category or global, applied hierarchically. This means that for the example above, if product A is assigned to Category 1, commission assigned is 10%, as per variant/product/category/global rule application order. + +Furthermore, these commission type items can be accessed and created by a specific menu, to facilitate their management in environments with lots of records. + +The form for commission type item can be extended by future modules with further conditions to decide when to apply a specific item. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +To use features of this module, you need to: + +#. Go to Sales > Commission Management > Commission Types. +#. Create a Commission Type with type = "Product criteria". +#. Create multiple rules based on variant/product/category or global +#. These rules will be sorted according to the same logic of sale pricelist. +#. Rest flow is according to OCA sale_commission module. + +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 +~~~~~~~ + +* Ilyas +* Ooops404 + +Contributors +~~~~~~~~~~~~ + +* `Ooops404 `__: + + * Ilyas + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-ilyasProgrammer| image:: https://github.com/ilyasProgrammer.png?size=40px + :target: https://github.com/ilyasProgrammer + :alt: ilyasProgrammer + +Current `maintainer `__: + +|maintainer-ilyasProgrammer| + +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_oca_product_criteria/__init__.py b/sale_commission_oca_product_criteria/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/sale_commission_oca_product_criteria/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/sale_commission_oca_product_criteria/__manifest__.py b/sale_commission_oca_product_criteria/__manifest__.py new file mode 100644 index 000000000..b642ea1ff --- /dev/null +++ b/sale_commission_oca_product_criteria/__manifest__.py @@ -0,0 +1,21 @@ +# © 2023 ooops404 +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html +{ + "name": "Sale Commission Product Criteria", + "summary": "Advanced commissions rules", + "version": "14.0.1.0.1", + "author": "Ilyas, Ooops404, Odoo Community Association (OCA)", + "maintainers": ["ilyasProgrammer"], + "website": "https://github.com/OCA/commission", + "category": "Sales Management", + "license": "AGPL-3", + "depends": ["sale_commission", "web_domain_field"], + "data": [ + "views/views.xml", + "security/ir.model.access.csv", + ], + "demo": ["demo/sale_agent_demo.xml"], + "application": False, + "installable": True, + "auto_install": False, +} diff --git a/sale_commission_oca_product_criteria/demo/sale_agent_demo.xml b/sale_commission_oca_product_criteria/demo/sale_agent_demo.xml new file mode 100644 index 000000000..34d8fb019 --- /dev/null +++ b/sale_commission_oca_product_criteria/demo/sale_agent_demo.xml @@ -0,0 +1,65 @@ + + + + + Based on Rules + product + + + + + + sol + 3_global + fixed + 10 + + + + + + sol + 2_product_category + fixed + 20 + + + + + + + sol + 1_product + percentage + 5 + + + + + + + sol + 0_product_variant + percentage + 15 + + + + + Agent Rules + True + True + + + + + + + + diff --git a/sale_commission_oca_product_criteria/i18n/sale_commission_product_criteria.pot b/sale_commission_oca_product_criteria/i18n/sale_commission_product_criteria.pot new file mode 100644 index 000000000..e1eaf62f7 --- /dev/null +++ b/sale_commission_oca_product_criteria/i18n/sale_commission_product_criteria.pot @@ -0,0 +1,412 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_commission_product_criteria +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.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_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__active +msgid "Active" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_account_invoice_line_agent +msgid "Agent detail of commission line in invoice lines" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_sale_order_line_agent +msgid "Agent detail of commission line in order lines" +msgstr "" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__applied_on__3_global +#, python-format +msgid "All Products" +msgstr "" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Amount (%)" +msgstr "" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Amount (fixed)" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__based_on__sol +msgid "Any Sale Order Line" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_account_invoice_line_agent__applied_commission_id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_line_mixin__applied_commission_id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__applied_commission_id +msgid "Applied Commission" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_account_invoice_line_agent__applied_commission_item_id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__applied_commission_item_id +msgid "Applied Commission Item" +msgstr "" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Applied Disc. (%)" +msgstr "" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.sale_commission_form_lines_mod +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Applied On" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__applied_on +msgid "Apply On" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__based_on +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__based_on +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Based On" +msgstr "" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "Category: %s" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_account_invoice_line_agent__commission_id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_line_mixin__commission_id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__commission_id +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_search +msgid "Commission" +msgstr "" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_form_view +msgid "Commission Computation" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_commission_item +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_form_view +msgid "Commission Item" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,help:sale_commission_product_criteria.field_commission_item__applied_on +msgid "Commission Item applicable on selected option" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.actions.act_window,name:sale_commission_product_criteria.commission_item_action +#: model:ir.actions.act_window,name:sale_commission_product_criteria.commission_item_action_tree +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_search +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_tree_view +msgid "Commission Items" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__commission_id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__commission_type +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__commission_type +msgid "Commission Type" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.ui.menu,name:sale_commission_product_criteria.menu_sale_commissions_items +msgid "Commission Type Items" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_sale_commission +msgid "Commission in sales" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__company_id +msgid "Company" +msgstr "" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_form_view +msgid "Compute Price" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__create_uid +msgid "Created by" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__create_date +msgid "Created on" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__currency_id +msgid "Currency" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__discount +msgid "Discount (%)" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_account_invoice_line_agent__display_name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__display_name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission__display_name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_line_mixin__display_name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_settlement_line__display_name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line__display_name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__display_name +msgid "Display Name" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,help:sale_commission_product_criteria.field_commission_item__name +#: model:ir.model.fields,help:sale_commission_product_criteria.field_sale_order_line_agent__applied_on_name +msgid "Explicit rule name for this commission line." +msgstr "" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Final Amount" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__commission_type__fixed +msgid "Fixed" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__fixed_amount +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__fixed_amount +msgid "Fixed Amount" +msgstr "" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_search +msgid "Group By" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_account_invoice_line_agent__id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission__id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_line_mixin__id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_settlement_line__id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line__id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__id +msgid "ID" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission__item_ids +msgid "Item" +msgstr "" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.sale_commission_form_lines_mod +msgid "Items" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_account_invoice_line_agent____last_update +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item____last_update +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission____last_update +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_line_mixin____last_update +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_settlement_line____last_update +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line____last_update +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent____last_update +msgid "Last Modified on" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__write_date +msgid "Last Updated on" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_sale_commission_settlement_line +msgid "Line of a commission settlement" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_sale_commission_line_mixin +msgid "" +"Mixin model for having commission agent lines in any object inheriting from " +"this one" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__applied_on_name +msgid "Name" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__commission_type__percentage +msgid "Percentage" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__percent_amount +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__percent_amount +msgid "Percentage Amount" +msgstr "" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "Please specify the category for which this rule should be applied" +msgstr "" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "Please specify the product for which this rule should be applied" +msgstr "" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "" +"Please specify the product variant for which this rule should be applied" +msgstr "" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Price Type" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__pricelist_id +msgid "Pricelist" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__product_tmpl_id +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__applied_on__1_product +msgid "Product" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__categ_id +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__applied_on__2_product_category +msgid "Product Category" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__product_id +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__applied_on__0_product_variant +msgid "Product Variant" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__sale_commission__commission_type__product +msgid "Product criteria" +msgstr "" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "Product: %s" +msgstr "" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.sale_commission_form_lines_mod +msgid "Rules" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__sequence +msgid "Sequence" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,help:sale_commission_product_criteria.field_commission_item__categ_id +msgid "" +"Specify a product category if this rule only applies to products belonging " +"to this category or its children categories. Keep empty otherwise." +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,help:sale_commission_product_criteria.field_commission_item__product_id +msgid "" +"Specify a product if this rule only applies to one product. Keep empty " +"otherwise." +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,help:sale_commission_product_criteria.field_commission_item__product_tmpl_id +msgid "" +"Specify a template if this rule only applies to one product template. Keep " +"empty otherwise." +msgstr "" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "" +"There is done Sale Orders with this commission. Commission type change is " +"not allowed." +msgstr "" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "" +"There is posted Account Move Lines with this commission. Commission type " +"change is not allowed." +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission__commission_type +msgid "Type" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__use_pricelist +msgid "Use Pricelist" +msgstr "" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__commission_value +msgid "Value" +msgstr "" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "Variant: %s" +msgstr "" diff --git a/sale_commission_oca_product_criteria/models/__init__.py b/sale_commission_oca_product_criteria/models/__init__.py new file mode 100644 index 000000000..b14568ddb --- /dev/null +++ b/sale_commission_oca_product_criteria/models/__init__.py @@ -0,0 +1,5 @@ +from . import sale_commission_line_mixin +from . import commission +from . import sale +from . import account_move +from . import settlement diff --git a/sale_commission_oca_product_criteria/models/account_move.py b/sale_commission_oca_product_criteria/models/account_move.py new file mode 100644 index 000000000..39c31b5cc --- /dev/null +++ b/sale_commission_oca_product_criteria/models/account_move.py @@ -0,0 +1,27 @@ +# © 2023 ooops404 +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html +from odoo import api, fields, models + + +class AccountInvoiceLineAgent(models.Model): + _inherit = "account.invoice.line.agent" + + applied_commission_item_id = fields.Many2one("commission.item") + + @api.depends( + "object_id.price_subtotal", + "object_id.product_id.commission_free", + "commission_id", + ) + def _compute_amount(self): + for line in self: + if line.commission_id and line.commission_id.commission_type == "product": + inv_line = line.object_id + line.amount = line._get_single_commission_amount( + line.commission_id, + inv_line.price_subtotal, + inv_line.product_id, + inv_line.quantity, + ) + else: + super(AccountInvoiceLineAgent, line)._compute_amount() diff --git a/sale_commission_oca_product_criteria/models/commission.py b/sale_commission_oca_product_criteria/models/commission.py new file mode 100644 index 000000000..5f8dd9c71 --- /dev/null +++ b/sale_commission_oca_product_criteria/models/commission.py @@ -0,0 +1,267 @@ +# © 2023 ooops404 +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError +from odoo.tools import float_repr + + +class SaleCommission(models.Model): + _inherit = "sale.commission" + + commission_type = fields.Selection( + selection_add=[("product", "Product criteria")], + ondelete={"product": "set default"}, + ) + item_ids = fields.One2many("commission.item", "commission_id", copy=True) + + def action_unarchive(self): + res = super().action_unarchive() + items = ( + self.env["commission.item"] + .with_context(active_test=False) + .search([("commission_id", "=", self.id)]) + ) + if items: + items.write({"active": True}) + return res + + @api.onchange("commission_type") + def onchange_commission_type(self): + # Prevent commission_type change in certain cases + self.check_type_change_allowed_sale() + self.check_type_change_allowed_moves() + + def check_type_change_allowed_sale(self): + sola_ids = self.env["sale.order.line.agent"].search( + [("commission_id", "=", self._origin.id)] + ) + done_so_ids = sola_ids.filtered(lambda x: x.object_id.state in ["done", "sale"]) + if done_so_ids: + raise ValidationError( + _( + "There is done Sale Orders with this commission. " + "Commission type change is not allowed." + ) + ) + + def check_type_change_allowed_moves(self): + aila_ids = self.env["account.invoice.line.agent"].search( + [("commission_id", "=", self._origin.id)] + ) + done_move_ids = aila_ids.filtered( + lambda x: x.object_id.parent_state == "posted" + ) + if done_move_ids: + raise ValidationError( + _( + "There is posted Account Move Lines with this commission. " + "Commission type change is not allowed." + ) + ) + + +class CommissionItem(models.Model): + _name = "commission.item" + _description = "Commission Item" + _order = "applied_on, based_on, categ_id desc, id desc" + + sequence = fields.Integer(default=10) + active = fields.Boolean(default=True) + commission_id = fields.Many2one( + "sale.commission", + string="Commission Type", + domain=[("commission_type", "=", "product")], + required=True, + ) + use_pricelist = fields.Boolean() + pricelist_id = fields.Many2one("product.pricelist") + product_tmpl_id = fields.Many2one( + "product.template", + "Product", + ondelete="cascade", + check_company=True, + help="Specify a template if this rule only applies to one " + "product template. Keep empty otherwise.", + ) + product_id = fields.Many2one( + "product.product", + "Product Variant", + ondelete="cascade", + check_company=True, + help="Specify a product if this rule only applies " + "to one product. Keep empty otherwise.", + ) + categ_id = fields.Many2one( + "product.category", + "Product Category", + ondelete="cascade", + help="Specify a product category if this rule only applies to " + "products belonging to this category or its children categories. " + "Keep empty otherwise.", + ) + based_on = fields.Selection( + [("sol", "Any Sale Order Line")], + string="Based On", + required=True, + default="sol", + ) + applied_on = fields.Selection( + [ + ("3_global", "All Products"), + ("2_product_category", "Product Category"), + ("1_product", "Product"), + ("0_product_variant", "Product Variant"), + ], + "Apply On", + default="3_global", + required=True, + help="Commission Item applicable on selected option", + ) + commission_type = fields.Selection( + [("fixed", "Fixed"), ("percentage", "Percentage")], + index=True, + default="fixed", + required=True, + ) + fixed_amount = fields.Float("Fixed Amount", digits="Product Price") + percent_amount = fields.Float("Percentage Amount") + company_id = fields.Many2one( + "res.company", + "Company", + default=lambda self: self.env.company, + readonly=True, + ) + currency_id = fields.Many2one( + "res.currency", + related="company_id.currency_id", + readonly=True, + ) + name = fields.Char( + "Name", + compute="_compute_commission_item_name_value", + help="Explicit rule name for this commission line.", + ) + commission_value = fields.Char( + "Value", + compute="_compute_commission_item_name_value", + ) + + @api.depends( + "applied_on", + "categ_id", + "product_tmpl_id", + "product_id", + "commission_type", + "fixed_amount", + "percent_amount", + ) + def _compute_commission_item_name_value(self): + for item in self: + if item.categ_id and item.applied_on == "2_product_category": + item.name = _("Category: %s") % (item.categ_id.display_name) + elif item.product_tmpl_id and item.applied_on == "1_product": + item.name = _("Product: %s") % (item.product_tmpl_id.display_name) + elif item.product_id and item.applied_on == "0_product_variant": + item.name = _("Variant: %s") % ( + item.product_id.with_context( + display_default_code=False + ).display_name + ) + else: + item.name = _("All Products") + + if item.commission_type == "fixed": + decimal_places = self.env["decimal.precision"].precision_get( + "Product Price" + ) + if item.currency_id.position == "after": + item.commission_value = "%s %s" % ( + float_repr( + item.fixed_amount, + decimal_places, + ), + item.currency_id.symbol or "", + ) + else: + item.commission_value = "%s %s" % ( + item.currency_id.symbol or "", + float_repr( + item.fixed_amount, + decimal_places, + ), + ) + elif item.commission_type == "percentage": + item.commission_value = str(item.percent_amount) + " %" + + @api.constrains("product_id", "product_tmpl_id", "categ_id") + def _check_product_consistency(self): + for item in self: + if item.applied_on == "2_product_category" and not item.categ_id: + raise ValidationError( + _( + "Please specify the category for which this rule should " + "be applied" + ) + ) + elif item.applied_on == "1_product" and not item.product_tmpl_id: + raise ValidationError( + _( + "Please specify the product for which this rule should " + "be applied" + ) + ) + elif item.applied_on == "0_product_variant" and not item.product_id: + raise ValidationError( + _( + "Please specify the product variant for " + "which this rule should be applied" + ) + ) + + @api.onchange("product_id") + def _onchange_product_id(self): + has_product_id = self.filtered("product_id") + for item in has_product_id: + item.product_tmpl_id = item.product_id.product_tmpl_id + if self.env.context.get("default_applied_on", False) == "1_product": + # If a product variant is specified, apply on variants instead + # Reset if product variant is removed + has_product_id.update({"applied_on": "0_product_variant"}) + (self - has_product_id).update({"applied_on": "1_product"}) + + @api.onchange("product_tmpl_id") + def _onchange_product_tmpl_id(self): + has_tmpl_id = self.filtered("product_tmpl_id") + for item in has_tmpl_id: + if ( + item.product_id + and item.product_id.product_tmpl_id != item.product_tmpl_id + ): + item.product_id = None + + @api.model + def create(self, values): + values = self.validate_values(values) + return super(CommissionItem, self).create(values) + + def write(self, values): + values = self.validate_values(values) + res = super(CommissionItem, self).write(values) + self.invalidate_cache() + return res + + def validate_values(self, values): + if values.get("applied_on", False): + # Ensure item consistency for later searches. + applied_on = values["applied_on"] + if applied_on == "3_global": + values.update( + dict(product_id=None, product_tmpl_id=None, categ_id=None) + ) + elif applied_on == "2_product_category": + values.update(dict(product_id=None, product_tmpl_id=None)) + elif applied_on == "1_product": + values.update(dict(product_id=None, categ_id=None)) + elif applied_on == "0_product_variant": + values.update(dict(categ_id=None)) + return values diff --git a/sale_commission_oca_product_criteria/models/sale.py b/sale_commission_oca_product_criteria/models/sale.py new file mode 100644 index 000000000..452db8f26 --- /dev/null +++ b/sale_commission_oca_product_criteria/models/sale.py @@ -0,0 +1,52 @@ +# © 2023 ooops404 +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html +from odoo import api, fields, models + + +class SaleOrderLineAgent(models.Model): + _inherit = "sale.order.line.agent" + + discount = fields.Float(related="object_id.discount") + applied_commission_item_id = fields.Many2one("commission.item") + based_on = fields.Selection(related="applied_commission_item_id.based_on") + applied_on_name = fields.Char(related="applied_commission_item_id.name") + commission_type = fields.Selection( + related="applied_commission_item_id.commission_type" + ) + fixed_amount = fields.Float(related="applied_commission_item_id.fixed_amount") + percent_amount = fields.Float(related="applied_commission_item_id.percent_amount") + + @api.depends( + "object_id.price_subtotal", "object_id.product_id", "object_id.product_uom_qty" + ) + def _compute_amount(self): + for line in self: + if line.commission_id and line.commission_id.commission_type == "product": + order_line = line.object_id + line.amount = line._get_single_commission_amount( + line.commission_id, + order_line.price_subtotal, + order_line.product_id, + order_line.product_uom_qty, + ) + else: + super(SaleOrderLineAgent, line)._compute_amount() + + +class SaleOrderLine(models.Model): + _inherit = "sale.order.line" + + def _prepare_invoice_line(self, **optional_values): + vals = super()._prepare_invoice_line(**optional_values) + vals["agent_ids"] = [ + ( + 0, + 0, + { + "agent_id": x.agent_id.id, + "commission_id": x.commission_id.id, + }, + ) + for x in self.agent_ids + ] + return vals diff --git a/sale_commission_oca_product_criteria/models/sale_commission_line_mixin.py b/sale_commission_oca_product_criteria/models/sale_commission_line_mixin.py new file mode 100644 index 000000000..a7c43a1b6 --- /dev/null +++ b/sale_commission_oca_product_criteria/models/sale_commission_line_mixin.py @@ -0,0 +1,77 @@ +# © 2023 ooops404 +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html +from odoo import fields, models + + +class SaleCommissionLineMixin(models.AbstractModel): + _inherit = "sale.commission.line.mixin" + + applied_commission_id = fields.Many2one("sale.commission", readonly=True) + commission_id = fields.Many2one( + comodel_name="sale.commission", + ondelete="restrict", + required=False, + compute="_compute_commission_id", + store=True, + readonly=False, + copy=True, + ) + + def _get_commission_items(self, commission, product): + # Method replaced + categ_ids = {} + categ = product.categ_id + while categ: + categ_ids[categ.id] = True + categ = categ.parent_id + categ_ids = list(categ_ids) + # Select all suitable items. Order by best match + # (priority is: all/cat/subcat/product/variant). + self.env.cr.execute( + """ + SELECT + item.id + FROM + commission_item AS item + LEFT JOIN product_category AS categ ON item.categ_id = categ.id + WHERE + (item.product_tmpl_id IS NULL OR item.product_tmpl_id = any(%s)) + AND (item.product_id IS NULL OR item.product_id = any(%s)) + AND (item.categ_id IS NULL OR item.categ_id = any(%s)) + AND (item.commission_id = %s) + AND (item.active = TRUE) + ORDER BY + item.applied_on, categ.complete_name desc, item.id desc + """, + ( + product.product_tmpl_id.ids, + product.ids, + categ_ids, + commission._origin.id, # Added this + ), + ) + item_ids = [x[0] for x in self.env.cr.fetchall()] + return item_ids + + def _get_single_commission_amount(self, commission, subtotal, product, quantity): + self.ensure_one() + item_ids = self._get_commission_items(commission, product) + if not item_ids: + return 0.0 + commission_item = self.env["commission.item"].browse(item_ids[0]) + if commission.amount_base_type == "net_amount": + # If subtotal (sale_price * quantity) is less than + # standard_price * quantity, it means that we are selling at + # lower price than we bought, so set amount_base to 0 + subtotal = max([0, subtotal - product.standard_price * quantity]) + self.applied_commission_item_id = commission_item + # if self.agent_id.use_multi_type_commissions: + self.applied_commission_id = commission_item.commission_id + if commission_item.commission_type == "fixed": + return commission_item.fixed_amount + elif commission_item.commission_type == "percentage": + return subtotal * (commission_item.percent_amount / 100.0) + + def _get_discount_value(self, commission_item): + # Will be overridden + return self.object_id.discount diff --git a/sale_commission_oca_product_criteria/models/settlement.py b/sale_commission_oca_product_criteria/models/settlement.py new file mode 100644 index 000000000..ea1688f6b --- /dev/null +++ b/sale_commission_oca_product_criteria/models/settlement.py @@ -0,0 +1,7 @@ +# © 2023 ooops404 +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html +from odoo import models + + +class SettlementLine(models.Model): + _inherit = "sale.commission.settlement.line" diff --git a/sale_commission_oca_product_criteria/readme/CONTRIBUTORS.rst b/sale_commission_oca_product_criteria/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..c29a9c72e --- /dev/null +++ b/sale_commission_oca_product_criteria/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Ooops404 `__: + + * Ilyas diff --git a/sale_commission_oca_product_criteria/readme/DESCRIPTION.rst b/sale_commission_oca_product_criteria/readme/DESCRIPTION.rst new file mode 100644 index 000000000..c4a10d9e4 --- /dev/null +++ b/sale_commission_oca_product_criteria/readme/DESCRIPTION.rst @@ -0,0 +1,16 @@ +This module allows to set in the same Commission Type different commission rates according to the product on SO/invoice line. + +This is made possible since this module adds a new "Product criteria" type to Commission Type and applies commission rates with the same logic of sale pricelist items. + +For example, such a Commission Type can grant: + +10% on a specific Product A, +10$ on Product B, +4% on products in Category 1 and +5$ on all other products. + +In SO/invoice, system will apply different commissions based on variant/product/category or global, applied hierarchically. This means that for the example above, if product A is assigned to Category 1, commission assigned is 10%, as per variant/product/category/global rule application order. + +Furthermore, these commission type items can be accessed and created by a specific menu, to facilitate their management in environments with lots of records. + +The form for commission type item can be extended by future modules with further conditions to decide when to apply a specific item. diff --git a/sale_commission_oca_product_criteria/readme/USAGE.rst b/sale_commission_oca_product_criteria/readme/USAGE.rst new file mode 100644 index 000000000..9c5f76b87 --- /dev/null +++ b/sale_commission_oca_product_criteria/readme/USAGE.rst @@ -0,0 +1,7 @@ +To use features of this module, you need to: + +#. Go to Sales > Commission Management > Commission Types. +#. Create a Commission Type with type = "Product criteria". +#. Create multiple rules based on variant/product/category or global +#. These rules will be sorted according to the same logic of sale pricelist. +#. Rest flow is according to OCA sale_commission module. diff --git a/sale_commission_oca_product_criteria/security/ir.model.access.csv b/sale_commission_oca_product_criteria/security/ir.model.access.csv new file mode 100644 index 000000000..bb0d742a2 --- /dev/null +++ b/sale_commission_oca_product_criteria/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_commission_item_manager,access_commission_item_manager,model_commission_item,sales_team.group_sale_manager,1,1,1,1 diff --git a/sale_commission_oca_product_criteria/static/description/icon.png b/sale_commission_oca_product_criteria/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/sale_commission_oca_product_criteria/static/description/index.html b/sale_commission_oca_product_criteria/static/description/index.html new file mode 100644 index 000000000..cd13b63a9 --- /dev/null +++ b/sale_commission_oca_product_criteria/static/description/index.html @@ -0,0 +1,446 @@ + + + + + + +Sale Commission Product Criteria + + + +
+

Sale Commission Product Criteria

+ + +

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

+

This module allows to set in the same Commission Type different commission rates according to the product on SO/invoice line.

+

This is made possible since this module adds a new “Product criteria” type to Commission Type and applies commission rates with the same logic of sale pricelist items.

+

For example, such a Commission Type can grant:

+

10% on a specific Product A, +10$ on Product B, +4% on products in Category 1 and +5$ on all other products.

+

In SO/invoice, system will apply different commissions based on variant/product/category or global, applied hierarchically. This means that for the example above, if product A is assigned to Category 1, commission assigned is 10%, as per variant/product/category/global rule application order.

+

Furthermore, these commission type items can be accessed and created by a specific menu, to facilitate their management in environments with lots of records.

+

The form for commission type item can be extended by future modules with further conditions to decide when to apply a specific item.

+

Table of contents

+ +
+

Usage

+

To use features of this module, you need to:

+
    +
  1. Go to Sales > Commission Management > Commission Types.
  2. +
  3. Create a Commission Type with type = “Product criteria”.
  4. +
  5. Create multiple rules based on variant/product/category or global
  6. +
  7. These rules will be sorted according to the same logic of sale pricelist.
  8. +
  9. Rest flow is according to OCA sale_commission module.
  10. +
+
+
+

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

+
    +
  • Ilyas
  • +
  • Ooops404
  • +
+
+ +
+

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.

+

Current maintainer:

+

ilyasProgrammer

+

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_oca_product_criteria/tests/__init__.py b/sale_commission_oca_product_criteria/tests/__init__.py new file mode 100644 index 000000000..9a20f675a --- /dev/null +++ b/sale_commission_oca_product_criteria/tests/__init__.py @@ -0,0 +1 @@ +from . import test_sale_commission_product_criteria diff --git a/sale_commission_oca_product_criteria/tests/test_sale_commission_product_criteria.py b/sale_commission_oca_product_criteria/tests/test_sale_commission_product_criteria.py new file mode 100644 index 000000000..128e6118e --- /dev/null +++ b/sale_commission_oca_product_criteria/tests/test_sale_commission_product_criteria.py @@ -0,0 +1,200 @@ +# © 2023 ooops404 +# License AGPL-3 - See https://www.gnu.org/licenses/agpl-3.0.html + + +from odoo.exceptions import ValidationError +from odoo.tests.common import SavepointCase + + +class TestSaleCommission(SavepointCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.commission_model = cls.env["sale.commission"] + cls.company = cls.env.ref("base.main_company") + cls.res_partner_model = cls.env["res.partner"] + cls.partner = cls.env.ref("base.res_partner_12") + cls.partner2 = cls.env.ref("base.res_partner_10") + cls.sale_order_model = cls.env["sale.order"] + cls.advance_inv_model = cls.env["sale.advance.payment.inv"] + cls.settle_model = cls.env["sale.commission.settlement"] + cls.make_settle_model = cls.env["sale.commission.make.settle"] + cls.make_inv_model = cls.env["sale.commission.make.invoice"] + cls.product_1 = cls.env.ref("product.product_product_1") + cls.product_4 = cls.env.ref("product.product_product_4") + cls.product_5 = cls.env.ref("product.product_product_5") + cls.product_6 = cls.env.ref("product.product_product_6") + cls.product_1.write({"invoice_policy": "order"}) + cls.product_4.write({"invoice_policy": "order"}) + cls.product_5.write({"invoice_policy": "order"}) + cls.product_6.write({"commission_free": True}) + cls.product_template_4 = cls.env.ref( + "product.product_product_4_product_template" + ) + cls.product_template_4.write({"invoice_policy": "order"}) + cls.journal = cls.env["account.journal"].search( + [("type", "=", "purchase")], limit=1 + ) + cls.rules_commission_id = cls.env.ref( + "sale_commission_product_criteria.demo_commission_rules" + ) + cls.com_item_1 = cls.env.ref( + "sale_commission_product_criteria.demo_commission_rules_item_1" + ) + cls.com_item_2 = cls.env.ref( + "sale_commission_product_criteria.demo_commission_rules_item_2" + ) + cls.com_item_3 = cls.env.ref( + "sale_commission_product_criteria.demo_commission_rules_item_3" + ) + cls.com_item_4 = cls.env.ref( + "sale_commission_product_criteria.demo_commission_rules_item_4" + ) + + def test_sale_commission_product_criteria_items(self): + # items names + self.com_item_1._compute_commission_item_name_value() + self.com_item_1.currency_id.position = "after" + self.com_item_1._compute_commission_item_name_value() + self.assertEqual(self.com_item_1.name, "All Products") + self.com_item_1.write({"applied_on": "3_global"}) + self.com_item_2._compute_commission_item_name_value() + self.assertEqual( + self.com_item_2.name, "Category: All / Saleable / Office Furniture" + ) + self.com_item_2.write({"applied_on": "2_product_category"}) + self.com_item_3._compute_commission_item_name_value() + self.assertEqual(self.com_item_3.name, "Product: Customizable Desk (CONFIG)") + self.com_item_3.write({"applied_on": "1_product"}) + self.com_item_4._compute_commission_item_name_value() + self.assertEqual( + self.com_item_4.name, "Variant: Customizable Desk (CONFIG) (Steel, White)" + ) + self.com_item_4.write({"applied_on": "0_product_variant"}) + + # 3_global + so_1 = self._create_sale_order(self.product_1, self.partner) + so_1.recompute_lines_agents() + self.assertEqual(so_1.partner_agent_ids.name, "Agent Rules") + self.assertEqual(so_1.order_line.agent_ids.amount, 10) + so_1.action_confirm() + invoice = self._invoice_sale_order(so_1) + invoice.recompute_lines_agents() + invoice.action_post() + + # 2_product_category + so = self._create_sale_order(self.product_5, self.partner) + so.recompute_lines_agents() + self.assertEqual(so.partner_agent_ids.name, "Agent Rules") + self.assertEqual(so.order_line.agent_ids.amount, 20) + so.action_confirm() + invoice = self._invoice_sale_order(so) + invoice.recompute_lines_agents() + + # 1_product 5 % + pp4 = self.product_template_4.product_variant_id + so = self._create_sale_order(pp4, self.partner) + so.recompute_lines_agents() + self.assertEqual(so.partner_agent_ids.name, "Agent Rules") + self.assertEqual(so.order_line.agent_ids.amount, 50) + so.action_confirm() + invoice = self._invoice_sale_order(so) + invoice.recompute_lines_agents() + + # 0_product_variant 15 % + so = self._create_sale_order(self.product_4, self.partner) + so.recompute_lines_agents() + self.assertEqual(so.partner_agent_ids.name, "Agent Rules") + self.assertEqual(so.order_line.agent_ids.amount, 150) + so.action_confirm() + invoice = self._invoice_sale_order(so) + invoice.recompute_lines_agents() + + # Commission free product + so = self._create_sale_order(self.product_6, self.partner) + so.recompute_lines_agents() + + # Type != product + so = self._create_sale_order(self.product_4, self.partner2) + so.recompute_lines_agents() + + # net amount + self.rules_commission_id.amount_base_type = "net_amount" + so = self._create_sale_order(self.product_4, self.partner) + so.order_line.agent_ids._compute_amount() + + # archive + self.rules_commission_id.action_archive() + self.rules_commission_id.action_unarchive() + + # copy + new_rule = self.rules_commission_id.copy() + self.assertEqual(len(new_rule.item_ids), len(self.rules_commission_id.item_ids)) + + # change commission_type + self.rules_commission_id.commission_type = "fixed" + with self.assertRaises(ValidationError): + self.rules_commission_id.check_type_change_allowed_moves() + with self.assertRaises(ValidationError): + self.rules_commission_id.check_type_change_allowed_sale() + + # no rule found + self.env.ref( + "sale_commission_product_criteria.demo_commission_rules_item_1" + ).unlink() + so = self._create_sale_order(self.product_1, self.partner) + so.order_line.agent_ids._compute_amount() + + # _check_product_consistency + with self.assertRaises(ValidationError): + self.com_item_2.categ_id = False + with self.assertRaises(ValidationError): + self.com_item_3.product_tmpl_id = False + with self.assertRaises(ValidationError): + self.com_item_4.product_id = False + + # _onchange_product_id + self.com_item_4.product_id = self.product_1 + self.com_item_4._onchange_product_id() + self.com_item_4.with_context( + default_applied_on="1_product" + )._onchange_product_id() + self.com_item_4.product_tmpl_id = self.product_template_4 + self.com_item_4._onchange_product_id() + self.com_item_4.product_tmpl_id = self.product_template_4 + with self.assertRaises(ValidationError): + self.com_item_4._onchange_product_tmpl_id() + + def _create_sale_order(self, product, partner): + return self.sale_order_model.create( + { + "partner_id": partner.id, + "order_line": [ + ( + 0, + 0, + { + "name": product.name, + "product_id": product.id, + "product_uom_qty": 1.0, + "product_uom": product.uom_id.id, + "price_unit": 1000, + }, + ) + ], + } + ) + + def _invoice_sale_order(self, sale_order, date=None): + old_invoices = sale_order.invoice_ids + wizard = self.advance_inv_model.create({"advance_payment_method": "delivered"}) + wizard.with_context( + { + "active_model": "sale.order", + "active_ids": [sale_order.id], + "active_id": sale_order.id, + } + ).create_invoices() + invoice = sale_order.invoice_ids - old_invoices + invoice.flush() + return invoice diff --git a/sale_commission_oca_product_criteria/views/views.xml b/sale_commission_oca_product_criteria/views/views.xml new file mode 100644 index 000000000..e1ae96d44 --- /dev/null +++ b/sale_commission_oca_product_criteria/views/views.xml @@ -0,0 +1,235 @@ + + + + + sale.agent.order.inherit.form.sale_commission_product_criteria.mod + sale.order + + + + + + + + + sale.commission.form.view.inherit + sale.commission + + + + {'invisible': [('commission_type', '=', 'product')]} + +
+ + + + + + + + + + +
+
+
+ + + sale.order.line.agent.mod + sale.order.line.agent + + + + + 1 + + + + + + + + + + + + + + + + + + + commission.item.form + commission.item + +
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + commission.item.tree + commission.item + + + + + + + + + + + + + + commission.item.search.view + commission.item + + + + + + + + + + + + Commission Items + ir.actions.act_window + commission.item + tree,form + + {"hide_commission_id":1, 'search_default_group_by_commission': 1,} + + + + + Commission Items + ir.actions.act_window + commission.item + tree,form + + {"hide_commission_id":0, 'search_default_group_by_commission': 1,} + + + + + +
From c149100e6fbed2e73e02c302ba97c50f8103e9db Mon Sep 17 00:00:00 2001 From: Francesco Foresti Date: Wed, 24 May 2023 09:03:42 +0000 Subject: [PATCH 02/27] Added translation using Weblate (Italian) --- .../i18n/it.po | 430 ++++++++++++++++++ 1 file changed, 430 insertions(+) create mode 100644 sale_commission_oca_product_criteria/i18n/it.po diff --git a/sale_commission_oca_product_criteria/i18n/it.po b/sale_commission_oca_product_criteria/i18n/it.po new file mode 100644 index 000000000..cb2e59cd4 --- /dev/null +++ b/sale_commission_oca_product_criteria/i18n/it.po @@ -0,0 +1,430 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_commission_product_criteria +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2023-05-24 12:10+0000\n" +"Last-Translator: Francesco Foresti \n" +"Language-Team: none\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" +"X-Generator: Weblate 4.17\n" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__active +msgid "Active" +msgstr "Attivo" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_account_invoice_line_agent +msgid "Agent detail of commission line in invoice lines" +msgstr "Dettaglio riga provvigione agente nelle righe fattura" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_sale_order_line_agent +msgid "Agent detail of commission line in order lines" +msgstr "Dettaglio riga provvigione agente nelle righe ordine" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__applied_on__3_global +#, python-format +msgid "All Products" +msgstr "Tutti i prodotti" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Amount (%)" +msgstr "Importo (%)" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Amount (fixed)" +msgstr "Importo (fisso)" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__based_on__sol +msgid "Any Sale Order Line" +msgstr "Qualsiasi riga ordine di vendita" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_account_invoice_line_agent__applied_commission_id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_line_mixin__applied_commission_id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__applied_commission_id +msgid "Applied Commission" +msgstr "Provvigione applicata" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_account_invoice_line_agent__applied_commission_item_id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__applied_commission_item_id +msgid "Applied Commission Item" +msgstr "Riga provvigione applicata" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Applied Disc. (%)" +msgstr "Sc. applicato (%)" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.sale_commission_form_lines_mod +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Applied On" +msgstr "Applicato a" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__applied_on +msgid "Apply On" +msgstr "Applica a" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__based_on +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__based_on +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Based On" +msgstr "Basato su" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "Category: %s" +msgstr "Categoria: %s" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_account_invoice_line_agent__commission_id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_line_mixin__commission_id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__commission_id +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_search +msgid "Commission" +msgstr "Provvigione" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_form_view +msgid "Commission Computation" +msgstr "Calcolo provvigione" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_commission_item +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_form_view +msgid "Commission Item" +msgstr "Riga provvigione" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,help:sale_commission_product_criteria.field_commission_item__applied_on +msgid "Commission Item applicable on selected option" +msgstr "Riga provvigione applicabile all'opzione selezionata" + +#. module: sale_commission_product_criteria +#: model:ir.actions.act_window,name:sale_commission_product_criteria.commission_item_action +#: model:ir.actions.act_window,name:sale_commission_product_criteria.commission_item_action_tree +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_search +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_tree_view +msgid "Commission Items" +msgstr "Righe provvigione" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__commission_id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__commission_type +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__commission_type +msgid "Commission Type" +msgstr "Tipo di provvigione" + +#. module: sale_commission_product_criteria +#: model:ir.ui.menu,name:sale_commission_product_criteria.menu_sale_commissions_items +msgid "Commission Type Items" +msgstr "Righe tipi di provvigione" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_sale_commission +msgid "Commission in sales" +msgstr "Provvigione nelle vendite" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__company_id +msgid "Company" +msgstr "Azienda" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_form_view +msgid "Compute Price" +msgstr "Calcola prezzo" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__create_uid +msgid "Created by" +msgstr "Creato da" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__create_date +msgid "Created on" +msgstr "Creato il" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__currency_id +msgid "Currency" +msgstr "Valuta" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__discount +msgid "Discount (%)" +msgstr "Sconto (%)" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_account_invoice_line_agent__display_name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__display_name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission__display_name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_line_mixin__display_name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_settlement_line__display_name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line__display_name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__display_name +msgid "Display Name" +msgstr "Nome visualizzato" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,help:sale_commission_product_criteria.field_commission_item__name +#: model:ir.model.fields,help:sale_commission_product_criteria.field_sale_order_line_agent__applied_on_name +msgid "Explicit rule name for this commission line." +msgstr "Nome esplicito regola per questa riga provvigione." + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Final Amount" +msgstr "Importo finale" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__commission_type__fixed +msgid "Fixed" +msgstr "Fisso" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__fixed_amount +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__fixed_amount +msgid "Fixed Amount" +msgstr "Importo fisso" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.commission_item_search +msgid "Group By" +msgstr "Raggruppa per" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_account_invoice_line_agent__id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission__id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_line_mixin__id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_settlement_line__id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line__id +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__id +msgid "ID" +msgstr "ID" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission__item_ids +msgid "Item" +msgstr "Riga" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.sale_commission_form_lines_mod +msgid "Items" +msgstr "Righe" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_account_invoice_line_agent____last_update +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item____last_update +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission____last_update +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_line_mixin____last_update +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission_settlement_line____last_update +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line____last_update +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent____last_update +msgid "Last Modified on" +msgstr "Ultima modifica il" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__write_uid +msgid "Last Updated by" +msgstr "Ultimo aggiornamento di" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__write_date +msgid "Last Updated on" +msgstr "Ultimo aggiornamento il" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_sale_commission_settlement_line +msgid "Line of a commission settlement" +msgstr "Riga di regolazione provvigione" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_sale_commission_line_mixin +msgid "" +"Mixin model for having commission agent lines in any object inheriting from " +"this one" +msgstr "" +"Modello mixin per avere righe di provvigione agente in qualsiasi oggetto che " +"erediti dall'attuale" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__name +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__applied_on_name +msgid "Name" +msgstr "Nome" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__commission_type__percentage +msgid "Percentage" +msgstr "Percentuale" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__percent_amount +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_order_line_agent__percent_amount +msgid "Percentage Amount" +msgstr "Importo percentuale" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "Please specify the category for which this rule should be applied" +msgstr "Specifica la categoria per la quale questa regola deve essere applicata" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "Please specify the product for which this rule should be applied" +msgstr "Specifica il prodotto per la quale questa regola deve essere applicata" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "" +"Please specify the product variant for which this rule should be applied" +msgstr "" +"Specifica la variante prodotto per la quale questa regola deve essere " +"applicata" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.view_sale_order_line_tree_mod +msgid "Price Type" +msgstr "Tipo prezzo" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__pricelist_id +msgid "Pricelist" +msgstr "Listino prezzi" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__product_tmpl_id +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__applied_on__1_product +msgid "Product" +msgstr "Prodotto" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__categ_id +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__applied_on__2_product_category +msgid "Product Category" +msgstr "Categoria prodotto" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__product_id +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__applied_on__0_product_variant +msgid "Product Variant" +msgstr "Variante prodotto" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__sale_commission__commission_type__product +msgid "Product criteria" +msgstr "Criteri prodotto" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "Product: %s" +msgstr "Prodotto: %s" + +#. module: sale_commission_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_product_criteria.sale_commission_form_lines_mod +msgid "Rules" +msgstr "Regole" + +#. module: sale_commission_product_criteria +#: model:ir.model,name:sale_commission_product_criteria.model_sale_order_line +msgid "Sales Order Line" +msgstr "Riga ordine di vendita" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__sequence +msgid "Sequence" +msgstr "Sequenza" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,help:sale_commission_product_criteria.field_commission_item__categ_id +msgid "" +"Specify a product category if this rule only applies to products belonging " +"to this category or its children categories. Keep empty otherwise." +msgstr "" +"Specifica una categoria prodotto se questa regola si applica solo ai " +"prodotti appartenenti a questa categoria o alle sue categorie figlie, " +"altrimenti lascia vuoto." + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,help:sale_commission_product_criteria.field_commission_item__product_id +msgid "" +"Specify a product if this rule only applies to one product. Keep empty " +"otherwise." +msgstr "" +"Specifica un prodotto se questa regola si applica solo ad un prodotto, " +"altrimenti lascia vuoto." + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,help:sale_commission_product_criteria.field_commission_item__product_tmpl_id +msgid "" +"Specify a template if this rule only applies to one product template. Keep " +"empty otherwise." +msgstr "" +"Specifica un modello prodotto se questa regola si applica solo ad un modello " +"prodotto, altrimenti lascia vuoto." + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "" +"There is done Sale Orders with this commission. Commission type change is " +"not allowed." +msgstr "" +"Esistono ordini di vendita che usano questo tipo di provvigione. Non è " +"possibile modificare il tipo." + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "" +"There is posted Account Move Lines with this commission. Commission type " +"change is not allowed." +msgstr "" +"Esistono righe fattura che usano questo tipo di provvigione. Non è possibile " +"modificare il tipo." + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_sale_commission__commission_type +msgid "Type" +msgstr "Tipo" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__use_pricelist +msgid "Use Pricelist" +msgstr "Usa listino prezzi" + +#. module: sale_commission_product_criteria +#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__commission_value +msgid "Value" +msgstr "Valore" + +#. module: sale_commission_product_criteria +#: code:addons/sale_commission_product_criteria/models/commission.py:0 +#, python-format +msgid "Variant: %s" +msgstr "Variante: %s" From d7e18a1dfebff627c3fd9a7b10e8f75aaf3cade2 Mon Sep 17 00:00:00 2001 From: Ilyas Date: Thu, 22 Jun 2023 16:31:51 +0200 Subject: [PATCH 03/27] [FIX] sale_commission_product_criteria: removed pricelist_id feild. --- .../__manifest__.py | 2 +- .../i18n/it.po | 19 ++++++++----------- .../i18n/sale_commission_product_criteria.pot | 10 ---------- .../models/commission.py | 2 -- .../views/views.xml | 2 -- 5 files changed, 9 insertions(+), 26 deletions(-) diff --git a/sale_commission_oca_product_criteria/__manifest__.py b/sale_commission_oca_product_criteria/__manifest__.py index b642ea1ff..129cf7db1 100644 --- a/sale_commission_oca_product_criteria/__manifest__.py +++ b/sale_commission_oca_product_criteria/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale Commission Product Criteria", "summary": "Advanced commissions rules", - "version": "14.0.1.0.1", + "version": "14.0.1.0.2", "author": "Ilyas, Ooops404, Odoo Community Association (OCA)", "maintainers": ["ilyasProgrammer"], "website": "https://github.com/OCA/commission", diff --git a/sale_commission_oca_product_criteria/i18n/it.po b/sale_commission_oca_product_criteria/i18n/it.po index cb2e59cd4..68496f24e 100644 --- a/sale_commission_oca_product_criteria/i18n/it.po +++ b/sale_commission_oca_product_criteria/i18n/it.po @@ -289,7 +289,8 @@ msgstr "Importo percentuale" #: code:addons/sale_commission_product_criteria/models/commission.py:0 #, python-format msgid "Please specify the category for which this rule should be applied" -msgstr "Specifica la categoria per la quale questa regola deve essere applicata" +msgstr "" +"Specifica la categoria per la quale questa regola deve essere applicata" #. module: sale_commission_product_criteria #: code:addons/sale_commission_product_criteria/models/commission.py:0 @@ -311,11 +312,6 @@ msgstr "" msgid "Price Type" msgstr "Tipo prezzo" -#. module: sale_commission_product_criteria -#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__pricelist_id -msgid "Pricelist" -msgstr "Listino prezzi" - #. module: sale_commission_product_criteria #: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__product_tmpl_id #: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__applied_on__1_product @@ -413,11 +409,6 @@ msgstr "" msgid "Type" msgstr "Tipo" -#. module: sale_commission_product_criteria -#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__use_pricelist -msgid "Use Pricelist" -msgstr "Usa listino prezzi" - #. module: sale_commission_product_criteria #: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__commission_value msgid "Value" @@ -428,3 +419,9 @@ msgstr "Valore" #, python-format msgid "Variant: %s" msgstr "Variante: %s" + +#~ msgid "Pricelist" +#~ msgstr "Listino prezzi" + +#~ msgid "Use Pricelist" +#~ msgstr "Usa listino prezzi" diff --git a/sale_commission_oca_product_criteria/i18n/sale_commission_product_criteria.pot b/sale_commission_oca_product_criteria/i18n/sale_commission_product_criteria.pot index e1eaf62f7..707b4241b 100644 --- a/sale_commission_oca_product_criteria/i18n/sale_commission_product_criteria.pot +++ b/sale_commission_oca_product_criteria/i18n/sale_commission_product_criteria.pot @@ -304,11 +304,6 @@ msgstr "" msgid "Price Type" msgstr "" -#. module: sale_commission_product_criteria -#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__pricelist_id -msgid "Pricelist" -msgstr "" - #. module: sale_commission_product_criteria #: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__product_tmpl_id #: model:ir.model.fields.selection,name:sale_commission_product_criteria.selection__commission_item__applied_on__1_product @@ -395,11 +390,6 @@ msgstr "" msgid "Type" msgstr "" -#. module: sale_commission_product_criteria -#: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__use_pricelist -msgid "Use Pricelist" -msgstr "" - #. module: sale_commission_product_criteria #: model:ir.model.fields,field_description:sale_commission_product_criteria.field_commission_item__commission_value msgid "Value" diff --git a/sale_commission_oca_product_criteria/models/commission.py b/sale_commission_oca_product_criteria/models/commission.py index 5f8dd9c71..b43e87979 100644 --- a/sale_commission_oca_product_criteria/models/commission.py +++ b/sale_commission_oca_product_criteria/models/commission.py @@ -73,8 +73,6 @@ class CommissionItem(models.Model): domain=[("commission_type", "=", "product")], required=True, ) - use_pricelist = fields.Boolean() - pricelist_id = fields.Many2one("product.pricelist") product_tmpl_id = fields.Many2one( "product.template", "Product", diff --git a/sale_commission_oca_product_criteria/views/views.xml b/sale_commission_oca_product_criteria/views/views.xml index e1ae96d44..a03d6e5ee 100644 --- a/sale_commission_oca_product_criteria/views/views.xml +++ b/sale_commission_oca_product_criteria/views/views.xml @@ -103,7 +103,6 @@ /> - - From 25d651a32912944220b7f1f08d26b5a5826ef586 Mon Sep 17 00:00:00 2001 From: Ilyas Date: Wed, 5 Jul 2023 11:03:58 +0200 Subject: [PATCH 04/27] [IMP] sale_commission_product_criteria: added commission items search fields --- sale_commission_oca_product_criteria/__manifest__.py | 2 +- sale_commission_oca_product_criteria/views/views.xml | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/sale_commission_oca_product_criteria/__manifest__.py b/sale_commission_oca_product_criteria/__manifest__.py index 129cf7db1..e2a22d705 100644 --- a/sale_commission_oca_product_criteria/__manifest__.py +++ b/sale_commission_oca_product_criteria/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale Commission Product Criteria", "summary": "Advanced commissions rules", - "version": "14.0.1.0.2", + "version": "14.0.1.0.3", "author": "Ilyas, Ooops404, Odoo Community Association (OCA)", "maintainers": ["ilyasProgrammer"], "website": "https://github.com/OCA/commission", diff --git a/sale_commission_oca_product_criteria/views/views.xml b/sale_commission_oca_product_criteria/views/views.xml index a03d6e5ee..b40929b20 100644 --- a/sale_commission_oca_product_criteria/views/views.xml +++ b/sale_commission_oca_product_criteria/views/views.xml @@ -184,6 +184,9 @@ + + + Date: Tue, 15 Aug 2023 10:18:20 +0200 Subject: [PATCH 05/27] [IMP] sale_commission_product_criteria: no need to order items by id --- sale_commission_oca_product_criteria/__manifest__.py | 2 +- .../models/sale_commission_line_mixin.py | 2 +- sale_commission_oca_product_criteria/views/views.xml | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/sale_commission_oca_product_criteria/__manifest__.py b/sale_commission_oca_product_criteria/__manifest__.py index e2a22d705..4ebf96322 100644 --- a/sale_commission_oca_product_criteria/__manifest__.py +++ b/sale_commission_oca_product_criteria/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale Commission Product Criteria", "summary": "Advanced commissions rules", - "version": "14.0.1.0.3", + "version": "14.0.1.1.0", "author": "Ilyas, Ooops404, Odoo Community Association (OCA)", "maintainers": ["ilyasProgrammer"], "website": "https://github.com/OCA/commission", diff --git a/sale_commission_oca_product_criteria/models/sale_commission_line_mixin.py b/sale_commission_oca_product_criteria/models/sale_commission_line_mixin.py index a7c43a1b6..5f97b5859 100644 --- a/sale_commission_oca_product_criteria/models/sale_commission_line_mixin.py +++ b/sale_commission_oca_product_criteria/models/sale_commission_line_mixin.py @@ -41,7 +41,7 @@ def _get_commission_items(self, commission, product): AND (item.commission_id = %s) AND (item.active = TRUE) ORDER BY - item.applied_on, categ.complete_name desc, item.id desc + item.applied_on, categ.complete_name desc """, ( product.product_tmpl_id.ids, diff --git a/sale_commission_oca_product_criteria/views/views.xml b/sale_commission_oca_product_criteria/views/views.xml index b40929b20..7f7673066 100644 --- a/sale_commission_oca_product_criteria/views/views.xml +++ b/sale_commission_oca_product_criteria/views/views.xml @@ -99,7 +99,6 @@ name="commission_id" invisible="context.get('hide_commission_id')" options="{'no_create': True, 'no_open': 1}" - domain="[('commission_type', '=', 'product')]" /> From 2459e351190e6e1e09df53a60e2de9a36bccb186 Mon Sep 17 00:00:00 2001 From: Ilyas Date: Tue, 22 Aug 2023 16:24:30 +0700 Subject: [PATCH 06/27] [IMP] sale_commission_product_criteria: correct sorting in SQL --- .../README.rst | 15 ++++--- .../__manifest__.py | 2 +- .../models/sale_commission_line_mixin.py | 2 +- .../static/description/index.html | 40 ++++++++++--------- 4 files changed, 32 insertions(+), 27 deletions(-) diff --git a/sale_commission_oca_product_criteria/README.rst b/sale_commission_oca_product_criteria/README.rst index 74134b4b7..47d931f50 100644 --- a/sale_commission_oca_product_criteria/README.rst +++ b/sale_commission_oca_product_criteria/README.rst @@ -2,10 +2,13 @@ Sale Commission Product Criteria ================================ -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:97ee88194e36ff800080fd49f0c1f40de43dcc41d56865262c169f525125d960 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Sale Commission Product Criteria .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/commission-14-0/commission-14-0-sale_commission_product_criteria :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/14.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/commission&target_branch=14.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| This module allows to set in the same Commission Type different commission rates according to the product on SO/invoice line. @@ -63,7 +66,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 +If you spotted it first, help us to smash 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_oca_product_criteria/__manifest__.py b/sale_commission_oca_product_criteria/__manifest__.py index 4ebf96322..4ba14d4f9 100644 --- a/sale_commission_oca_product_criteria/__manifest__.py +++ b/sale_commission_oca_product_criteria/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Sale Commission Product Criteria", "summary": "Advanced commissions rules", - "version": "14.0.1.1.0", + "version": "14.0.1.1.1", "author": "Ilyas, Ooops404, Odoo Community Association (OCA)", "maintainers": ["ilyasProgrammer"], "website": "https://github.com/OCA/commission", diff --git a/sale_commission_oca_product_criteria/models/sale_commission_line_mixin.py b/sale_commission_oca_product_criteria/models/sale_commission_line_mixin.py index 5f97b5859..cdea718f9 100644 --- a/sale_commission_oca_product_criteria/models/sale_commission_line_mixin.py +++ b/sale_commission_oca_product_criteria/models/sale_commission_line_mixin.py @@ -41,7 +41,7 @@ def _get_commission_items(self, commission, product): AND (item.commission_id = %s) AND (item.active = TRUE) ORDER BY - item.applied_on, categ.complete_name desc + item.applied_on, item.based_on, categ.complete_name desc """, ( product.product_tmpl_id.ids, diff --git a/sale_commission_oca_product_criteria/static/description/index.html b/sale_commission_oca_product_criteria/static/description/index.html index cd13b63a9..2c322c42e 100644 --- a/sale_commission_oca_product_criteria/static/description/index.html +++ b/sale_commission_oca_product_criteria/static/description/index.html @@ -1,20 +1,20 @@ - + - + Sale Commission Product Criteria -
-

Sale Commission Product Criteria

+
+ + +Odoo Community Association + +
+

Sale Commission Product Criteria

-

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

+

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

This module allows to set in the same Commission Type different commission rates according to the product on SO/invoice line.

This is made possible since this module adds a new “Product criteria” @@ -402,7 +407,7 @@

Sale Commission Product Criteria

-

Usage

+

Usage

To use features of this module, you need to:

  1. Go to Commissions > Configuration > Commission Types.
  2. @@ -414,7 +419,7 @@

    Usage

-

Bug Tracker

+

Bug Tracker

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

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • Ilyas
  • Ooops404
-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -464,5 +469,6 @@

Maintainers

+
From aa62fc96b696ee4faa484c8901e0df15d6e3205b Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 8 Apr 2026 10:42:58 +0000 Subject: [PATCH 24/27] Translated using Weblate (Italian) Currently translated at 100.0% (63 of 63 strings) Translation: commission-18.0/commission-18.0-sale_commission_oca_product_criteria Translate-URL: https://translation.odoo-community.org/projects/commission-18-0/commission-18-0-sale_commission_oca_product_criteria/it/ --- sale_commission_oca_product_criteria/i18n/it.po | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/sale_commission_oca_product_criteria/i18n/it.po b/sale_commission_oca_product_criteria/i18n/it.po index 96264644a..1e7c0d592 100644 --- a/sale_commission_oca_product_criteria/i18n/it.po +++ b/sale_commission_oca_product_criteria/i18n/it.po @@ -6,6 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2026-04-08 12:45+0000\n" "Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" @@ -13,7 +14,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.10.2\n" +"X-Generator: Weblate 5.15.2\n" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__active @@ -176,7 +177,7 @@ msgstr "Nome visualizzato" #. module: sale_commission_oca_product_criteria #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_order_agent_form_inherit_sale_commission_oca_product_criteria_mod msgid "Edit agents" -msgstr "" +msgstr "Modifica agenti" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_commission_item__name @@ -326,6 +327,12 @@ msgid "" "* 'By sections': percentage varies depending amount intervals. You can fill " "intervals and percentages in the section \"Rate definition\"." msgstr "" +"Selezionare il tipo di percentuale della provvigione:\n" +"* 'Percentuale fissa': tutte le provvigioni sono calcolate con una " +"percentuale fissa. Si può impostare la percentuale nel campo \"Percentuale " +"fissa\".\n" +"* 'Per sezioni': la percentuale varia per intervalli dell'importo. Si può " +"impostare gli intervalli nella sezione \"Definizione provvigioni\"." #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__sequence From c6079e82d56fc4d42908ac940acd081568885dd5 Mon Sep 17 00:00:00 2001 From: "Rodrigo A. Madureira" Date: Mon, 13 Apr 2026 13:23:59 +0000 Subject: [PATCH 25/27] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (63 of 63 strings) Translation: commission-18.0/commission-18.0-sale_commission_oca_product_criteria Translate-URL: https://translation.odoo-community.org/projects/commission-18-0/commission-18-0-sale_commission_oca_product_criteria/pt_BR/ --- .../i18n/pt_BR.po | 134 +++++++++++------- 1 file changed, 79 insertions(+), 55 deletions(-) diff --git a/sale_commission_oca_product_criteria/i18n/pt_BR.po b/sale_commission_oca_product_criteria/i18n/pt_BR.po index 75320663a..59c950cf1 100644 --- a/sale_commission_oca_product_criteria/i18n/pt_BR.po +++ b/sale_commission_oca_product_criteria/i18n/pt_BR.po @@ -6,92 +6,95 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2026-04-13 15:45+0000\n" +"Last-Translator: \"Rodrigo A. Madureira\" \n" "Language-Team: none\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.15.2\n" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__active msgid "Active" -msgstr "" +msgstr "Ativo" #. module: sale_commission_oca_product_criteria #: model:ir.model,name:sale_commission_oca_product_criteria.model_account_invoice_line_agent msgid "Agent detail of commission line in invoice lines" msgstr "" +"Detalhes do vendedor referentes à linha de comissão nas linhas da fatura" #. module: sale_commission_oca_product_criteria #: model:ir.model,name:sale_commission_oca_product_criteria.model_sale_order_line_agent msgid "Agent detail of commission line in order lines" -msgstr "" +msgstr "Detalhes do vendedor na linha de comissão das linhas de pedido" #. module: sale_commission_oca_product_criteria #. odoo-python #: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 #: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__applied_on__3_global msgid "All Products" -msgstr "" +msgstr "Todos Produtos" #. module: sale_commission_oca_product_criteria #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod msgid "Amount (%)" -msgstr "" +msgstr "Valor (%)" #. module: sale_commission_oca_product_criteria #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod msgid "Amount (fixed)" -msgstr "" +msgstr "Valor (fixado)" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__based_on__sol msgid "Any Sale Order Line" -msgstr "" +msgstr "Qualquer linha do Pedido de Venda" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_account_invoice_line_agent__applied_commission_id #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_line_mixin__applied_commission_id #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__applied_commission_id msgid "Applied Commission" -msgstr "" +msgstr "Aplicado Comissão" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_account_invoice_line_agent__applied_commission_item_id #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__applied_commission_item_id msgid "Applied Commission Item" -msgstr "" +msgstr "Aplicado ao item de comissão" #. module: sale_commission_oca_product_criteria #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod msgid "Applied Disc. (%)" -msgstr "" +msgstr "Desconto Aplicado (%)" #. module: sale_commission_oca_product_criteria #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.sale_commission_form_lines_mod #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod msgid "Applied On" -msgstr "" +msgstr "Aplicado em" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__applied_on msgid "Apply On" -msgstr "" +msgstr "Aplicado Em" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__based_on #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__based_on #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod msgid "Based On" -msgstr "" +msgstr "Baseado em" #. module: sale_commission_oca_product_criteria #. odoo-python #: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 msgid "Category: %(name)s" -msgstr "" +msgstr "Categoria:%(names)s" #. module: sale_commission_oca_product_criteria #: model:ir.model,name:sale_commission_oca_product_criteria.model_commission @@ -101,128 +104,128 @@ msgstr "" #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__commission_id #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.commission_item_search msgid "Commission" -msgstr "" +msgstr "Comissão" #. module: sale_commission_oca_product_criteria #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.commission_item_form_view msgid "Commission Computation" -msgstr "" +msgstr "Cálculo da Comissão" #. module: sale_commission_oca_product_criteria #: model:ir.model,name:sale_commission_oca_product_criteria.model_commission_item #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.commission_item_form_view msgid "Commission Item" -msgstr "" +msgstr "Item de Comissão" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_commission_item__applied_on msgid "Commission Item applicable on selected option" -msgstr "" +msgstr "O item de comissão aplica-se à opção selecionada" #. module: sale_commission_oca_product_criteria #: model:ir.actions.act_window,name:sale_commission_oca_product_criteria.commission_item_action #: model:ir.actions.act_window,name:sale_commission_oca_product_criteria.commission_item_action_tree #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.commission_item_search msgid "Commission Items" -msgstr "" +msgstr "Itens de Comissão" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__commission_type #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__commission_type msgid "Commission Type" -msgstr "" +msgstr "Tipo de Comissão" #. module: sale_commission_oca_product_criteria #: model:ir.ui.menu,name:sale_commission_oca_product_criteria.menu_sale_commissions_items msgid "Commission Type Items" -msgstr "" +msgstr "Itens do tipo comissão" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__company_id msgid "Company" -msgstr "" +msgstr "Organização" #. module: sale_commission_oca_product_criteria #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.commission_item_form_view msgid "Compute Price" -msgstr "" +msgstr "Preço Calculado" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__create_uid msgid "Created by" -msgstr "" +msgstr "Criado Por" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__create_date msgid "Created on" -msgstr "" +msgstr "Criado Em" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__currency_id msgid "Currency" -msgstr "" +msgstr "Moeda" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__discount msgid "Discount (%)" -msgstr "" +msgstr "Desconto(%)" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__display_name msgid "Display Name" -msgstr "" +msgstr "Nome em Exibição" #. module: sale_commission_oca_product_criteria #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_order_agent_form_inherit_sale_commission_oca_product_criteria_mod msgid "Edit agents" -msgstr "" +msgstr "Editar representantes" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_commission_item__name #: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_sale_order_line_agent__applied_on_name msgid "Explicit rule name for this commission line." -msgstr "" +msgstr "Nome explícito da regra para esta linha de comissão." #. module: sale_commission_oca_product_criteria #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod msgid "Final Amount" -msgstr "" +msgstr "Valor Final" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__commission_type__fixed msgid "Fixed" -msgstr "" +msgstr "Corrigido" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__fixed_amount #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__fixed_amount msgid "Fixed Amount" -msgstr "" +msgstr "Valor Fixado" #. module: sale_commission_oca_product_criteria #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.commission_item_search msgid "Group By" -msgstr "" +msgstr "Agrupado por" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__id msgid "ID" -msgstr "" +msgstr "ID" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission__item_ids msgid "Item" -msgstr "" +msgstr "Item" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__write_uid msgid "Last Updated by" -msgstr "" +msgstr "Última Atualização por" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__write_date msgid "Last Updated on" -msgstr "" +msgstr "Última Modificação em" #. module: sale_commission_oca_product_criteria #: model:ir.model,name:sale_commission_oca_product_criteria.model_commission_line_mixin @@ -230,35 +233,37 @@ msgid "" "Mixin model for having commission agent lines in any object inheriting from " "this one" msgstr "" +"Modelo Mixin para incluir linhas de vendedores comissionados em qualquer " +"objeto que herde deste" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__name #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__applied_on_name msgid "Name" -msgstr "" +msgstr "Nome" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__commission_type__percentage msgid "Percentage" -msgstr "" +msgstr "Porcentagem" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__percent_amount #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__percent_amount msgid "Percentage Amount" -msgstr "" +msgstr "Valor Percentual" #. module: sale_commission_oca_product_criteria #. odoo-python #: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 msgid "Please specify the category for which this rule should be applied" -msgstr "" +msgstr "Por favor, especifique a categoria à qual esta regra deve ser aplicada" #. module: sale_commission_oca_product_criteria #. odoo-python #: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 msgid "Please specify the product for which this rule should be applied" -msgstr "" +msgstr "Por favor, especifique o produto ao qual esta regra deve ser aplicada" #. module: sale_commission_oca_product_criteria #. odoo-python @@ -266,50 +271,52 @@ msgstr "" msgid "" "Please specify the product variant for which this rule should be applied" msgstr "" +"Por favor, especifique a variante do produto à qual esta regra deve ser " +"aplicada" #. module: sale_commission_oca_product_criteria #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod msgid "Price Type" -msgstr "" +msgstr "Tipo de Preço" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__product_tmpl_id #: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__applied_on__1_product msgid "Product" -msgstr "" +msgstr "Produto" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__categ_id #: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__applied_on__2_product_category msgid "Product Category" -msgstr "" +msgstr "Categoria de produto" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__product_id #: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__applied_on__0_product_variant msgid "Product Variant" -msgstr "" +msgstr "Variantes de Produto" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission__commission_type__product msgid "Product criteria" -msgstr "" +msgstr "Critério do Produto" #. module: sale_commission_oca_product_criteria #. odoo-python #: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 msgid "Product: %(name)s" -msgstr "" +msgstr "Produto: %(name)s" #. module: sale_commission_oca_product_criteria #: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.sale_commission_form_lines_mod msgid "Rules" -msgstr "" +msgstr "Regras" #. module: sale_commission_oca_product_criteria #: model:ir.model,name:sale_commission_oca_product_criteria.model_sale_order_line msgid "Sales Order Line" -msgstr "" +msgstr "Linhas do pedido de vendas" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_commission__commission_type @@ -320,11 +327,17 @@ msgid "" "* 'By sections': percentage varies depending amount intervals. You can fill " "intervals and percentages in the section \"Rate definition\"." msgstr "" +"Selecione o tipo de porcentagem da comissão:\n" +"* 'Percentagem fixa': todas as comissões são calculadas com uma percentagem " +"fixa. Você pode preencher o percentual no campo \"Porcentagem fixa\"\n" +"* 'Por seções': o percentual varia dependendo dos intervalos de valores. " +"Você pode preencher intervalos e porcentagens na seção \"Definição de " +"taxas\"." #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__sequence msgid "Sequence" -msgstr "" +msgstr "Seqüência" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_commission_item__categ_id @@ -332,6 +345,9 @@ msgid "" "Specify a product category if this rule only applies to products belonging " "to this category or its children categories. Keep empty otherwise." msgstr "" +"Especifique uma categoria de produto se esta regra se aplicar apenas a " +"produtos pertencentes a essa categoria ou às suas subcategorias. Caso " +"contrário, deixe em branco." #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_commission_item__product_id @@ -339,6 +355,8 @@ msgid "" "Specify a product if this rule only applies to one product. Keep empty " "otherwise." msgstr "" +"Especifique um produto se esta regra se aplicar apenas a um produto. Caso " +"contrário, deixe em branco." #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_commission_item__product_tmpl_id @@ -346,6 +364,8 @@ msgid "" "Specify a template if this rule only applies to one product template. Keep " "empty otherwise." msgstr "" +"Especifique um modelo se esta regra se aplicar apenas a um modelo de " +"produto. Caso contrário, deixe em branco." #. module: sale_commission_oca_product_criteria #. odoo-python @@ -354,6 +374,8 @@ msgid "" "There is done Sale Orders with this commission. Commission type change is " "not allowed." msgstr "" +"Foram realizadas pedidos de venda com esta comissão. Não é permitida a " +"alteração do tipo de comissão." #. module: sale_commission_oca_product_criteria #. odoo-python @@ -362,19 +384,21 @@ msgid "" "There is posted Account Move Lines with this commission. Commission type " "change is not allowed." msgstr "" +"Existem linhas de transferência de conta disponíveis para esta comissão. Não " +"é permitida a alteração do tipo de comissão." #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission__commission_type msgid "Type" -msgstr "" +msgstr "Tipo" #. module: sale_commission_oca_product_criteria #: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__commission_value msgid "Value" -msgstr "" +msgstr "Valor" #. module: sale_commission_oca_product_criteria #. odoo-python #: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 msgid "Variant: %(name)s" -msgstr "" +msgstr "Variante: %(name)s" From 1755985e25f945e11c957c689c753c12451c1705 Mon Sep 17 00:00:00 2001 From: Mohamed Essam Salem Date: Sun, 17 May 2026 11:31:56 +0000 Subject: [PATCH 26/27] Added translation using Weblate (Arabic) --- .../i18n/ar.po | 380 ++++++++++++++++++ 1 file changed, 380 insertions(+) create mode 100644 sale_commission_oca_product_criteria/i18n/ar.po diff --git a/sale_commission_oca_product_criteria/i18n/ar.po b/sale_commission_oca_product_criteria/i18n/ar.po new file mode 100644 index 000000000..059a7ad29 --- /dev/null +++ b/sale_commission_oca_product_criteria/i18n/ar.po @@ -0,0 +1,380 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * sale_commission_oca_product_criteria +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__active +msgid "Active" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model,name:sale_commission_oca_product_criteria.model_account_invoice_line_agent +msgid "Agent detail of commission line in invoice lines" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model,name:sale_commission_oca_product_criteria.model_sale_order_line_agent +msgid "Agent detail of commission line in order lines" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#. odoo-python +#: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 +#: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__applied_on__3_global +msgid "All Products" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod +msgid "Amount (%)" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod +msgid "Amount (fixed)" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__based_on__sol +msgid "Any Sale Order Line" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_account_invoice_line_agent__applied_commission_id +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_line_mixin__applied_commission_id +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__applied_commission_id +msgid "Applied Commission" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_account_invoice_line_agent__applied_commission_item_id +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__applied_commission_item_id +msgid "Applied Commission Item" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod +msgid "Applied Disc. (%)" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.sale_commission_form_lines_mod +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod +msgid "Applied On" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__applied_on +msgid "Apply On" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__based_on +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__based_on +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod +msgid "Based On" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#. odoo-python +#: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 +msgid "Category: %(name)s" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model,name:sale_commission_oca_product_criteria.model_commission +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_account_invoice_line_agent__commission_id +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__commission_id +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_line_mixin__commission_id +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__commission_id +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.commission_item_search +msgid "Commission" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.commission_item_form_view +msgid "Commission Computation" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model,name:sale_commission_oca_product_criteria.model_commission_item +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.commission_item_form_view +msgid "Commission Item" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_commission_item__applied_on +msgid "Commission Item applicable on selected option" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.actions.act_window,name:sale_commission_oca_product_criteria.commission_item_action +#: model:ir.actions.act_window,name:sale_commission_oca_product_criteria.commission_item_action_tree +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.commission_item_search +msgid "Commission Items" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__commission_type +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__commission_type +msgid "Commission Type" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.ui.menu,name:sale_commission_oca_product_criteria.menu_sale_commissions_items +msgid "Commission Type Items" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__company_id +msgid "Company" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.commission_item_form_view +msgid "Compute Price" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__create_uid +msgid "Created by" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__create_date +msgid "Created on" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__currency_id +msgid "Currency" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__discount +msgid "Discount (%)" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__display_name +msgid "Display Name" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_order_agent_form_inherit_sale_commission_oca_product_criteria_mod +msgid "Edit agents" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_commission_item__name +#: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_sale_order_line_agent__applied_on_name +msgid "Explicit rule name for this commission line." +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod +msgid "Final Amount" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__commission_type__fixed +msgid "Fixed" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__fixed_amount +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__fixed_amount +msgid "Fixed Amount" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.commission_item_search +msgid "Group By" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__id +msgid "ID" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission__item_ids +msgid "Item" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__write_date +msgid "Last Updated on" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model,name:sale_commission_oca_product_criteria.model_commission_line_mixin +msgid "" +"Mixin model for having commission agent lines in any object inheriting from " +"this one" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__name +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__applied_on_name +msgid "Name" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__commission_type__percentage +msgid "Percentage" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__percent_amount +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_sale_order_line_agent__percent_amount +msgid "Percentage Amount" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#. odoo-python +#: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 +msgid "Please specify the category for which this rule should be applied" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#. odoo-python +#: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 +msgid "Please specify the product for which this rule should be applied" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#. odoo-python +#: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 +msgid "" +"Please specify the product variant for which this rule should be applied" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.view_sale_order_line_tree_mod +msgid "Price Type" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__product_tmpl_id +#: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__applied_on__1_product +msgid "Product" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__categ_id +#: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__applied_on__2_product_category +msgid "Product Category" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__product_id +#: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission_item__applied_on__0_product_variant +msgid "Product Variant" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields.selection,name:sale_commission_oca_product_criteria.selection__commission__commission_type__product +msgid "Product criteria" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#. odoo-python +#: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 +msgid "Product: %(name)s" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.sale_commission_form_lines_mod +msgid "Rules" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model,name:sale_commission_oca_product_criteria.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_commission__commission_type +msgid "" +"Select the percentage type of the commission:\n" +"* 'Fixed percentage': all commissions are computed with a fixed percentage. You can fill the percentage in the field \"Fixed percentage\".\n" +"* 'By sections': percentage varies depending amount intervals. You can fill intervals and percentages in the section \"Rate definition\"." +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__sequence +msgid "Sequence" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_commission_item__categ_id +msgid "" +"Specify a product category if this rule only applies to products belonging " +"to this category or its children categories. Keep empty otherwise." +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_commission_item__product_id +msgid "" +"Specify a product if this rule only applies to one product. Keep empty " +"otherwise." +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,help:sale_commission_oca_product_criteria.field_commission_item__product_tmpl_id +msgid "" +"Specify a template if this rule only applies to one product template. Keep " +"empty otherwise." +msgstr "" + +#. module: sale_commission_oca_product_criteria +#. odoo-python +#: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 +msgid "" +"There is done Sale Orders with this commission. Commission type change is " +"not allowed." +msgstr "" + +#. module: sale_commission_oca_product_criteria +#. odoo-python +#: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 +msgid "" +"There is posted Account Move Lines with this commission. Commission type " +"change is not allowed." +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission__commission_type +msgid "Type" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#: model:ir.model.fields,field_description:sale_commission_oca_product_criteria.field_commission_item__commission_value +#: model_terms:ir.ui.view,arch_db:sale_commission_oca_product_criteria.report_settlement_document +msgid "Value" +msgstr "" + +#. module: sale_commission_oca_product_criteria +#. odoo-python +#: code:addons/sale_commission_oca_product_criteria/models/commission.py:0 +msgid "Variant: %(name)s" +msgstr "" From 09bde436d6337a5a026f0c83307896c365df4f70 Mon Sep 17 00:00:00 2001 From: Javier Fabra Garcia Date: Fri, 3 Jul 2026 08:34:08 +0200 Subject: [PATCH 27/27] [19.0][MIG] sale_commission_oca_product_criteria: Migration to 19.0 --- .../.claude-flow/data/pending-insights.jsonl | 3 +++ .../__manifest__.py | 2 +- .../tests/test_sale_commission_product_criteria.py | 2 +- .../views/views.xml | 14 +++++++------- 4 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 sale_commission_oca_product_criteria/.claude-flow/data/pending-insights.jsonl diff --git a/sale_commission_oca_product_criteria/.claude-flow/data/pending-insights.jsonl b/sale_commission_oca_product_criteria/.claude-flow/data/pending-insights.jsonl new file mode 100644 index 000000000..cd9ef37b5 --- /dev/null +++ b/sale_commission_oca_product_criteria/.claude-flow/data/pending-insights.jsonl @@ -0,0 +1,3 @@ +{"type":"edit","file":"/home/javi/odoo19/home/odoo/commission/sale_commission_oca_product_criteria/__manifest__.py","timestamp":1782991508529,"sessionId":null} +{"type":"edit","file":"/home/javi/odoo19/home/odoo/commission/sale_commission_oca_product_criteria/views/views.xml","timestamp":1782991509468,"sessionId":null} +{"type":"edit","file":"/home/javi/odoo19/home/odoo/commission/sale_commission_oca_product_criteria/tests/test_sale_commission_product_criteria.py","timestamp":1782991510713,"sessionId":null} diff --git a/sale_commission_oca_product_criteria/__manifest__.py b/sale_commission_oca_product_criteria/__manifest__.py index 3ea674608..3e69592ea 100644 --- a/sale_commission_oca_product_criteria/__manifest__.py +++ b/sale_commission_oca_product_criteria/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Sale Commission Product Criteria", "summary": "Advanced commissions rules", - "version": "18.0.1.0.0", + "version": "19.0.1.0.0", "author": "Ilyas, Ooops404, Odoo Community Association (OCA)", "maintainers": ["ilyasProgrammer", "aleuffre", "renda-dev", "PicchiSeba"], "website": "https://github.com/OCA/commission", diff --git a/sale_commission_oca_product_criteria/tests/test_sale_commission_product_criteria.py b/sale_commission_oca_product_criteria/tests/test_sale_commission_product_criteria.py index 2821d1979..932049aed 100644 --- a/sale_commission_oca_product_criteria/tests/test_sale_commission_product_criteria.py +++ b/sale_commission_oca_product_criteria/tests/test_sale_commission_product_criteria.py @@ -91,7 +91,7 @@ def _create_sale_order_no_co(self, product, partner): "name": product.name, "product_id": product.id, "product_uom_qty": 1.0, - "product_uom": product.uom_id.id, + "product_uom_id": product.uom_id.id, "price_unit": 1000, }, ) diff --git a/sale_commission_oca_product_criteria/views/views.xml b/sale_commission_oca_product_criteria/views/views.xml index 9a0b73587..3a548025e 100644 --- a/sale_commission_oca_product_criteria/views/views.xml +++ b/sale_commission_oca_product_criteria/views/views.xml @@ -73,15 +73,15 @@ 1
- - - - - + + + + + - + @@ -184,7 +184,7 @@ - +