From f834fe1401392a8f5a435131a2ce9d89530efc1a Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Mon, 17 Oct 2022 15:10:00 +0200 Subject: [PATCH 01/13] [ADD] new 16.0 module pos_discount_all --- pos_discount_all/README.rst | 0 pos_discount_all/__init__.py | 1 + pos_discount_all/__manifest__.py | 33 ++++++ pos_discount_all/demo/product_product.xml | 15 +++ pos_discount_all/demo/res_groups.xml | 15 +++ pos_discount_all/models/__init__.py | 2 + pos_discount_all/models/pos_session.py | 14 +++ pos_discount_all/models/product_template.py | 19 ++++ pos_discount_all/readme/CONFIGURE.rst | 5 + pos_discount_all/readme/CONTRIBUTORS.rst | 1 + pos_discount_all/readme/CREDITS.rst | 3 + pos_discount_all/readme/DESCRIPTION.rst | 14 +++ pos_discount_all/readme/DEVELOP.rst | 21 ++++ pos_discount_all/readme/USAGE.rst | 14 +++ .../static/description/order_summary.png | Bin 0 -> 49284 bytes .../static/description/pos_receipt.png | Bin 0 -> 41028 bytes .../description/product_template_form.png | Bin 0 -> 85076 bytes pos_discount_all/static/src/js/models.js | 101 ++++++++++++++++++ .../static/src/xml/OrderSummary.xml | 29 +++++ pos_discount_all/tests/__init__.py | 1 + pos_discount_all/tests/test_module.py | 61 +++++++++++ .../tests/tours/PosDiscountAllTour.tour.js | 78 ++++++++++++++ .../views/view_product_template.xml | 20 ++++ 23 files changed, 447 insertions(+) create mode 100644 pos_discount_all/README.rst create mode 100644 pos_discount_all/__init__.py create mode 100644 pos_discount_all/__manifest__.py create mode 100644 pos_discount_all/demo/product_product.xml create mode 100644 pos_discount_all/demo/res_groups.xml create mode 100644 pos_discount_all/models/__init__.py create mode 100644 pos_discount_all/models/pos_session.py create mode 100644 pos_discount_all/models/product_template.py create mode 100644 pos_discount_all/readme/CONFIGURE.rst create mode 100644 pos_discount_all/readme/CONTRIBUTORS.rst create mode 100644 pos_discount_all/readme/CREDITS.rst create mode 100644 pos_discount_all/readme/DESCRIPTION.rst create mode 100644 pos_discount_all/readme/DEVELOP.rst create mode 100644 pos_discount_all/readme/USAGE.rst create mode 100644 pos_discount_all/static/description/order_summary.png create mode 100644 pos_discount_all/static/description/pos_receipt.png create mode 100644 pos_discount_all/static/description/product_template_form.png create mode 100644 pos_discount_all/static/src/js/models.js create mode 100644 pos_discount_all/static/src/xml/OrderSummary.xml create mode 100644 pos_discount_all/tests/__init__.py create mode 100644 pos_discount_all/tests/test_module.py create mode 100644 pos_discount_all/tests/tours/PosDiscountAllTour.tour.js create mode 100644 pos_discount_all/views/view_product_template.xml diff --git a/pos_discount_all/README.rst b/pos_discount_all/README.rst new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pos_discount_all/__init__.py b/pos_discount_all/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/pos_discount_all/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/pos_discount_all/__manifest__.py b/pos_discount_all/__manifest__.py new file mode 100644 index 0000000000..72037267de --- /dev/null +++ b/pos_discount_all/__manifest__.py @@ -0,0 +1,33 @@ +# Copyright (C) 2022-Today GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +{ + "name": "Point of Sale - Display All Discounts", + "summary": "Display discount amount on PoS cashier screen and print it on ticket" + "calculated from the difference between a sale with default pricelist", + "version": "16.0.1.0.0", + "category": "Point of Sale", + "maintainers": ["legalsylvain"], + "author": "GRAP,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/pos", + "license": "AGPL-3", + "depends": ["point_of_sale"], + "data": [ + "views/view_product_template.xml", + ], + "assets": { + "point_of_sale.assets": [ + "pos_discount_all/static/src/js/models.js", + "pos_discount_all/static/src/xml/OrderSummary.xml", + ], + "web.assets_tests": [ + "pos_discount_all/tests/tours/PosDiscountAllTour.tour.js", + ], + }, + "demo": [ + "demo/product_product.xml", + "demo/res_groups.xml", + ], + "installable": True, +} diff --git a/pos_discount_all/demo/product_product.xml b/pos_discount_all/demo/product_product.xml new file mode 100644 index 0000000000..86697da759 --- /dev/null +++ b/pos_discount_all/demo/product_product.xml @@ -0,0 +1,15 @@ + + + + + Discount Product + + -1.0 + + + + diff --git a/pos_discount_all/demo/res_groups.xml b/pos_discount_all/demo/res_groups.xml new file mode 100644 index 0000000000..1c861012b5 --- /dev/null +++ b/pos_discount_all/demo/res_groups.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/pos_discount_all/models/__init__.py b/pos_discount_all/models/__init__.py new file mode 100644 index 0000000000..a34c01c8a5 --- /dev/null +++ b/pos_discount_all/models/__init__.py @@ -0,0 +1,2 @@ +from . import pos_session +from . import product_template diff --git a/pos_discount_all/models/pos_session.py b/pos_discount_all/models/pos_session.py new file mode 100644 index 0000000000..385e97295b --- /dev/null +++ b/pos_discount_all/models/pos_session.py @@ -0,0 +1,14 @@ +# Copyright (C) 2022-Today GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import models + + +class PosSession(models.Model): + _inherit = "pos.session" + + def _loader_params_product_product(self): + res = super()._loader_params_product_product() + res["search_params"]["fields"].append("is_discount") + return res diff --git a/pos_discount_all/models/product_template.py b/pos_discount_all/models/product_template.py new file mode 100644 index 0000000000..3ada2184e0 --- /dev/null +++ b/pos_discount_all/models/product_template.py @@ -0,0 +1,19 @@ +# Copyright (C) 2022-Today GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + +from odoo import fields, models + + +class ProductTemplate(models.Model): + _inherit = "product.template" + + is_discount = fields.Boolean( + string="Is a Discount", + help="Check this box if you use this product to realize" + " discount on sale. If check the sale lines will be" + " ignored when computing the amount without discount." + " If you use 'Pos Discount' Odoo module, you should" + " check this box for the product you configured" + " as the 'Discount Product' on your PoS config.", + ) diff --git a/pos_discount_all/readme/CONFIGURE.rst b/pos_discount_all/readme/CONFIGURE.rst new file mode 100644 index 0000000000..db2960b07c --- /dev/null +++ b/pos_discount_all/readme/CONFIGURE.rst @@ -0,0 +1,5 @@ +* Go to "Point of Sale > Products" +* Create or edit your discount products +* Check the box "Is a Discount" + +.. image:: ../static/description/product_template_form.png diff --git a/pos_discount_all/readme/CONTRIBUTORS.rst b/pos_discount_all/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000000..ae6f43a86d --- /dev/null +++ b/pos_discount_all/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Sylvain LE GAL (https://twitter.com/legalsylvain) diff --git a/pos_discount_all/readme/CREDITS.rst b/pos_discount_all/readme/CREDITS.rst new file mode 100644 index 0000000000..4c3758b92a --- /dev/null +++ b/pos_discount_all/readme/CREDITS.rst @@ -0,0 +1,3 @@ +The development of this module has been financially supported by: + +* UGESS, Union Nationale des Groupements des épiceries Sociales et Solidaires (https://ugess.org/) diff --git a/pos_discount_all/readme/DESCRIPTION.rst b/pos_discount_all/readme/DESCRIPTION.rst new file mode 100644 index 0000000000..297f6bc8e3 --- /dev/null +++ b/pos_discount_all/readme/DESCRIPTION.rst @@ -0,0 +1,14 @@ +This module extends the functionality of point of sale module, to +display on the PoS ticket, the amount of the discount applied for this sale. +Contrary to the logic of Odoo and the OCA +(https://github.com/OCA/sale-workflow/tree/14.0/sale_discount_display_amount) +the amount of the discount is the difference between the theoretical sale with the default price list and the actual sale amount. +So it take into accounts: + +- explicit discount set on pos.order.line. (as for odoo ``sale`` module) +- fixed price set on pos.order.line +- discount generated by specific pricelist + +Also the module ignores in the computation of undiscounted amount lines, the +lines with a 'Discount Product'. +(see the configure section.) diff --git a/pos_discount_all/readme/DEVELOP.rst b/pos_discount_all/readme/DEVELOP.rst new file mode 100644 index 0000000000..899a6d20fe --- /dev/null +++ b/pos_discount_all/readme/DEVELOP.rst @@ -0,0 +1,21 @@ +**Note** + +In the javascript file, we could write + +.. code-block:: javascript + + const PosDiscountAllOrder = () => + class extends Order { + } + +However, this code doesn't work if ``pos_sale`` module is installed. For that +reason we code the declaration as Odoo does, and add eslint exception. + + +.. code-block:: javascript + + // eslint-disable-next-line no-shadow + const PosDiscountAllOrder = (Order) => + // eslint-disable-next-line no-shadow + class PosDiscountAllOrder extends Order { + } diff --git a/pos_discount_all/readme/USAGE.rst b/pos_discount_all/readme/USAGE.rst new file mode 100644 index 0000000000..7df5890d56 --- /dev/null +++ b/pos_discount_all/readme/USAGE.rst @@ -0,0 +1,14 @@ +Open your point of Sale + +Make an order. for exemple, +- select the product 'Conference chair (39.40$)' +- select the pricelist -10% +- add a discount of 1$ + +The total discount is 1$ + 10% * 39.40 = 4.94$ + +.. image:: ../static/description/order_summary.png + +Note, the discount displayed on the ticket is updated, to take into account all the discount. + +.. image:: ../static/description/pos_receipt.png diff --git a/pos_discount_all/static/description/order_summary.png b/pos_discount_all/static/description/order_summary.png new file mode 100644 index 0000000000000000000000000000000000000000..69c8e54b8f8ee514a6996c39e067b1069462833a GIT binary patch literal 49284 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%0AbTb=bK;-+X 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

In8~R8+twxn07Cw&_HhxYnEftD6z;z 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 literal 0 HcmV?d00001 diff --git a/pos_discount_all/static/description/product_template_form.png b/pos_discount_all/static/description/product_template_form.png new file mode 100644 index 0000000000000000000000000000000000000000..7703dace2eda82a86090b2289bca7e540c950454 GIT binary patch literal 85076 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

D4itw62A~dfjSwiEwdohZJ1X4peq*SI^1C3MmoK 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 BhTs4I literal 0 HcmV?d00001 diff --git a/pos_discount_all/static/src/js/models.js b/pos_discount_all/static/src/js/models.js new file mode 100644 index 0000000000..6f057eb3f3 --- /dev/null +++ b/pos_discount_all/static/src/js/models.js @@ -0,0 +1,101 @@ +/* + Copyright (C) 2022-Today GRAP (http://www.grap.coop) + @author Sylvain LE GAL (https://twitter.com/legalsylvain) + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +*/ + +odoo.define("pos_discount_all.models", function (require) { + "use strict"; + + const {Order, Orderline} = require("point_of_sale.models"); + const Registries = require("point_of_sale.Registries"); + const {round_precision: round_pr} = require("web.utils"); + + // eslint-disable-next-line no-shadow + const PosDiscountAllOrder = (Order) => + // eslint-disable-next-line no-shadow + class PosDiscountAllOrder extends Order { + // eslint-disable-line no-shadow + // @override + _get_ignored_product_ids_total_discount() { + const productIds = super._get_ignored_product_ids_total_discount( + ...arguments + ); + _.map(this.pos.db.product_by_id, function (product) { + if (product.is_discount) { + productIds.push(product.id); + } + }); + return productIds; + } + + get_total_with_tax_without_any_discount() { + return round_pr( + this.orderlines.reduce(function (sum, orderLine) { + return ( + sum + + orderLine.get_total_without_any_discount().total_included + ); + }, 0), + this.pos.currency.rounding + ); + } + + get_discount_amount_with_tax_without_any_discount() { + return round_pr( + this.get_total_with_tax_without_any_discount() - + this.get_total_with_tax(), + this.pos.currency.rounding + ); + } + + export_for_printing() { + var receipt = super.export_for_printing(...arguments); + receipt.total_discount = + this.get_discount_amount_with_tax_without_any_discount(); + return receipt; + } + }; + + Registries.Model.extend(Order, PosDiscountAllOrder); + + // eslint-disable-next-line no-shadow + const PosDiscountAllOrderLine = (Orderline) => + // eslint-disable-next-line no-shadow + class PosDiscountAllOrderLine extends Orderline { + // eslint-disable-line no-shadow + get_total_without_any_discount() { + var product = this.get_product(); + const ignored_product_ids = + this.order._get_ignored_product_ids_total_discount(); + if (ignored_product_ids.includes(product.id)) { + return { + total_excluded: 0.0, + total_included: 0.0, + }; + } + var price_unit_without_any_discount = product.get_price( + this.pos.default_pricelist, + this.get_quantity() + ); + var taxes_ids = this.tax_ids || product.taxes_id; + taxes_ids = _.filter(taxes_ids, (t) => t in this.pos.taxes_by_id); + var product_taxes = this.pos.get_taxes_after_fp( + taxes_ids, + this.order.fiscal_position + ); + var all_taxes_without_any_discount = this.compute_all( + product_taxes, + price_unit_without_any_discount, + this.get_quantity(), + this.pos.currency.rounding + ); + return { + total_excluded: all_taxes_without_any_discount.total_excluded, + total_included: all_taxes_without_any_discount.total_included, + }; + } + }; + + Registries.Model.extend(Orderline, PosDiscountAllOrderLine); +}); diff --git a/pos_discount_all/static/src/xml/OrderSummary.xml b/pos_discount_all/static/src/xml/OrderSummary.xml new file mode 100644 index 0000000000..f9b5570a13 --- /dev/null +++ b/pos_discount_all/static/src/xml/OrderSummary.xml @@ -0,0 +1,29 @@ + + + + + + + +

+ + + + diff --git a/pos_discount_all/tests/__init__.py b/pos_discount_all/tests/__init__.py new file mode 100644 index 0000000000..d9b96c4fa5 --- /dev/null +++ b/pos_discount_all/tests/__init__.py @@ -0,0 +1 @@ +from . import test_module diff --git a/pos_discount_all/tests/test_module.py b/pos_discount_all/tests/test_module.py new file mode 100644 index 0000000000..bd0df25bad --- /dev/null +++ b/pos_discount_all/tests/test_module.py @@ -0,0 +1,61 @@ +# Copyright (C) 2022-Today GRAP (http://www.grap.coop) +# @author Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html + + +from odoo.tests import tagged + +from odoo.addons.point_of_sale.tests.test_frontend import TestPointOfSaleHttpCommon + + +@tagged("post_install", "-at_install") +class TestUi(TestPointOfSaleHttpCommon): + def test_pos_discount_all(self): + + pricelist = self.env["product.pricelist"].create( + { + "name": "Pricelist -10%", + } + ) + self.env["product.pricelist.item"].create( + { + "pricelist_id": pricelist.id, + "name": "Pricelist Item -10%", + "applied_on": "3_global", + "compute_price": "percentage", + "percent_price": 10, + } + ) + self.main_pos_config.write( + { + "use_pricelist": True, + "available_pricelist_ids": [(4, pricelist.id)], + } + ) + + self.env["product.product"].create( + { + "name": "Generic Product", + "available_in_pos": True, + "list_price": 10.0, + "taxes_id": False, + } + ) + + self.env["product.product"].create( + { + "name": "Discount Product", + "is_discount": True, + "available_in_pos": True, + "list_price": -1.0, + "taxes_id": False, + } + ) + + self.main_pos_config.open_ui() + + self.start_tour( + f"/pos/ui?config_id={self.main_pos_config.id}", + "PosDiscountAllTour", + login="accountman", + ) diff --git a/pos_discount_all/tests/tours/PosDiscountAllTour.tour.js b/pos_discount_all/tests/tours/PosDiscountAllTour.tour.js new file mode 100644 index 0000000000..25c6ee6cd7 --- /dev/null +++ b/pos_discount_all/tests/tours/PosDiscountAllTour.tour.js @@ -0,0 +1,78 @@ +/* + Copyright (C) 2022-Today GRAP (http://www.grap.coop) + @author Sylvain LE GAL (https://twitter.com/legalsylvain) + License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +*/ +/* eslint-disable no-empty-function */ +odoo.define("pos_discount_all.tour.PosDiscountAllTour", function (require) { + "use strict"; + + const Tour = require("web_tour.tour"); + + var steps = [ + { + content: "Test pos_discount_all: Waiting for loading to finish", + trigger: "body:not(:has(.loader))", + run: () => {}, + }, + { + content: "Test pos_discount_all: Close Opening cashbox popup", + trigger: "div.opening-cash-control .button:contains('Open session')", + }, + { + content: "Test pos_discount_all: Leave category displayed by default", + trigger: ".breadcrumb-home", + run: () => {}, + }, + { + content: "Test pos_discount_all: Order a 'Discount Product' (price -1.0)", + trigger: ".product-list .product-name:contains('Discount Product')", + }, + { + content: "Test pos_discount_all: Check correct amount of discount value", + trigger: ".discount-amount:contains('1.0')", + }, + { + content: "Test pos_discount_all: Order one 'Generic Product' (price 10.0)", + trigger: ".product-list .product-name:contains('Generic Product')", + }, + { + content: "Test pos_discount_all: Change to price mode", + trigger: ".numpad button:contains('Price')", + }, + { + content: + "Test pos_discount_all: manually override the unit price of 'Generic Product' (price 5.0)", + trigger: ".numpad button.input-button:visible:contains('5')", + }, + { + content: "Test pos_discount_all: Check correct amount of discount value", + trigger: ".discount-amount:contains('6.0')", + }, + { + content: "Test pos_discount_all: open Pricelist popUp", + trigger: ".control-button.o_pricelist_button", + }, + { + content: "Test pos_discount_all: select 'Pricelist -10%' pricelist", + trigger: ".selection-item:contains('Pricelist -10%')", + }, + { + content: "Test pos_discount_all: Check correct amount of discount value", + trigger: ".discount-amount:contains('5.90')", + }, + { + content: "Test pos_discount_all: Close the Point of Sale frontend", + trigger: ".header-button", + }, + { + content: "Test pos_discount_all: Confirm closing the frontend", + trigger: ".header-button", + run: () => {}, + }, + ]; + + Tour.register("PosDiscountAllTour", {test: true, url: "/pos/ui"}, steps); +}); + +/* */ diff --git a/pos_discount_all/views/view_product_template.xml b/pos_discount_all/views/view_product_template.xml new file mode 100644 index 0000000000..97e51ebf89 --- /dev/null +++ b/pos_discount_all/views/view_product_template.xml @@ -0,0 +1,20 @@ + + + + + product.template + + + + + + + + + + From 0bb58d42044b46626a8a1f3a774b64f0cc9cad5f Mon Sep 17 00:00:00 2001 From: oca-ci Date: Sun, 17 Sep 2023 15:47:50 +0000 Subject: [PATCH 02/13] [UPD] Update pos_discount_all.pot --- pos_discount_all/i18n/pos_discount_all.pot | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 pos_discount_all/i18n/pos_discount_all.pot diff --git a/pos_discount_all/i18n/pos_discount_all.pot b/pos_discount_all/i18n/pos_discount_all.pot new file mode 100644 index 0000000000..89897aa130 --- /dev/null +++ b/pos_discount_all/i18n/pos_discount_all.pot @@ -0,0 +1,52 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_discount_all +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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: pos_discount_all +#: model:ir.model.fields,help:pos_discount_all.field_product_product__is_discount +#: model:ir.model.fields,help:pos_discount_all.field_product_template__is_discount +msgid "" +"Check this box if you use this product to realize discount on sale. If check" +" the sale lines will be ignored when computing the amount without discount. " +"If you use 'Pos Discount' Odoo module, you should check this box for the " +"product you configured as the 'Discount Product' on your PoS config." +msgstr "" + +#. module: pos_discount_all +#. odoo-javascript +#: code:addons/pos_discount_all/static/src/xml/OrderSummary.xml:0 +#, python-format +msgid "Discount Amount:" +msgstr "" + +#. module: pos_discount_all +#: model:product.template,name:pos_discount_all.product_discount_product_template +msgid "Discount Product" +msgstr "" + +#. module: pos_discount_all +#: model:ir.model.fields,field_description:pos_discount_all.field_product_product__is_discount +#: model:ir.model.fields,field_description:pos_discount_all.field_product_template__is_discount +msgid "Is a Discount" +msgstr "" + +#. module: pos_discount_all +#: model:ir.model,name:pos_discount_all.model_pos_session +msgid "Point of Sale Session" +msgstr "" + +#. module: pos_discount_all +#: model:ir.model,name:pos_discount_all.model_product_template +msgid "Product" +msgstr "" From a6cc814cbfe4ecb8d64ae6cbcb2d0b4d7d7fd37f Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Sun, 17 Sep 2023 15:52:25 +0000 Subject: [PATCH 03/13] oca-github-bot post-merge updates --- pos_discount_all/README.rst | 156 ++++++ pos_discount_all/__manifest__.py | 2 +- pos_discount_all/static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 487 ++++++++++++++++++ 4 files changed, 644 insertions(+), 1 deletion(-) create mode 100644 pos_discount_all/static/description/icon.png create mode 100644 pos_discount_all/static/description/index.html diff --git a/pos_discount_all/README.rst b/pos_discount_all/README.rst index e69de29bb2..ee5d380319 100644 --- a/pos_discount_all/README.rst +++ b/pos_discount_all/README.rst @@ -0,0 +1,156 @@ +===================================== +Point of Sale - Display All Discounts +===================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:29e859f159e20beb7c3ca10008b29d3e608f2de14125fc3aae7aee8c965c47a5 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fpos-lightgray.png?logo=github + :target: https://github.com/OCA/pos/tree/16.0/pos_discount_all + :alt: OCA/pos +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_discount_all + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/pos&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the functionality of point of sale module, to +display on the PoS ticket, the amount of the discount applied for this sale. +Contrary to the logic of Odoo and the OCA +(https://github.com/OCA/sale-workflow/tree/14.0/sale_discount_display_amount) +the amount of the discount is the difference between the theoretical sale with the default price list and the actual sale amount. +So it take into accounts: + +- explicit discount set on pos.order.line. (as for odoo ``sale`` module) +- fixed price set on pos.order.line +- discount generated by specific pricelist + +Also the module ignores in the computation of undiscounted amount lines, the +lines with a 'Discount Product'. +(see the configure section.) + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +* Go to "Point of Sale > Products" +* Create or edit your discount products +* Check the box "Is a Discount" + +.. image:: https://raw.githubusercontent.com/OCA/pos/16.0/pos_discount_all/static/description/product_template_form.png + +Usage +===== + +Open your point of Sale + +Make an order. for exemple, +- select the product 'Conference chair (39.40$)' +- select the pricelist -10% +- add a discount of 1$ + +The total discount is 1$ + 10% * 39.40 = 4.94$ + +.. image:: https://raw.githubusercontent.com/OCA/pos/16.0/pos_discount_all/static/description/order_summary.png + +Note, the discount displayed on the ticket is updated, to take into account all the discount. + +.. image:: https://raw.githubusercontent.com/OCA/pos/16.0/pos_discount_all/static/description/pos_receipt.png + +Development +=========== + +**Note** + +In the javascript file, we could write + +.. code-block:: javascript + + const PosDiscountAllOrder = () => + class extends Order { + } + +However, this code doesn't work if ``pos_sale`` module is installed. For that +reason we code the declaration as Odoo does, and add eslint exception. + + +.. code-block:: javascript + + // eslint-disable-next-line no-shadow + const PosDiscountAllOrder = (Order) => + // eslint-disable-next-line no-shadow + class PosDiscountAllOrder extends Order { + } + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* GRAP + +Contributors +~~~~~~~~~~~~ + +* Sylvain LE GAL (https://twitter.com/legalsylvain) + +Other credits +~~~~~~~~~~~~~ + +The development of this module has been financially supported by: + +* UGESS, Union Nationale des Groupements des épiceries Sociales et Solidaires (https://ugess.org/) + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-legalsylvain| image:: https://github.com/legalsylvain.png?size=40px + :target: https://github.com/legalsylvain + :alt: legalsylvain + +Current `maintainer `__: + +|maintainer-legalsylvain| + +This module is part of the `OCA/pos `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/pos_discount_all/__manifest__.py b/pos_discount_all/__manifest__.py index 72037267de..1885dabf5e 100644 --- a/pos_discount_all/__manifest__.py +++ b/pos_discount_all/__manifest__.py @@ -6,7 +6,7 @@ "name": "Point of Sale - Display All Discounts", "summary": "Display discount amount on PoS cashier screen and print it on ticket" "calculated from the difference between a sale with default pricelist", - "version": "16.0.1.0.0", + "version": "16.0.1.0.1", "category": "Point of Sale", "maintainers": ["legalsylvain"], "author": "GRAP,Odoo Community Association (OCA)", diff --git a/pos_discount_all/static/description/icon.png b/pos_discount_all/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/pos_discount_all/static/description/index.html b/pos_discount_all/static/description/index.html new file mode 100644 index 0000000000..6ce44de003 --- /dev/null +++ b/pos_discount_all/static/description/index.html @@ -0,0 +1,487 @@ + + + + + + +Point of Sale - Display All Discounts + + + + + + From 27a6222ab90fc655e05ea4767c1e8466684e0557 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Mon, 25 Sep 2023 22:03:40 +0200 Subject: [PATCH 04/13] [FIX] pos_discount_all : make test compatible with pos_minimize_menu --- pos_discount_all/tests/test_module.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pos_discount_all/tests/test_module.py b/pos_discount_all/tests/test_module.py index bd0df25bad..1b18c35969 100644 --- a/pos_discount_all/tests/test_module.py +++ b/pos_discount_all/tests/test_module.py @@ -33,6 +33,10 @@ def test_pos_discount_all(self): } ) + # Make the test compatible with pos_minimize_menu + if "iface_important_buttons" in self.main_pos_config._fields: + self.main_pos_config.iface_important_buttons = "SetPricelistButton" + self.env["product.product"].create( { "name": "Generic Product", From 2c824ee0ff7a49d5b53d045d1fe51509d8cdf41a Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 27 Sep 2023 07:16:04 +0000 Subject: [PATCH 05/13] Added translation using Weblate (Italian) --- pos_discount_all/i18n/it.po | 53 +++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 pos_discount_all/i18n/it.po diff --git a/pos_discount_all/i18n/it.po b/pos_discount_all/i18n/it.po new file mode 100644 index 0000000000..6bbaac25fa --- /dev/null +++ b/pos_discount_all/i18n/it.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_discount_all +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\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" + +#. module: pos_discount_all +#: model:ir.model.fields,help:pos_discount_all.field_product_product__is_discount +#: model:ir.model.fields,help:pos_discount_all.field_product_template__is_discount +msgid "" +"Check this box if you use this product to realize discount on sale. If check" +" the sale lines will be ignored when computing the amount without discount. " +"If you use 'Pos Discount' Odoo module, you should check this box for the " +"product you configured as the 'Discount Product' on your PoS config." +msgstr "" + +#. module: pos_discount_all +#. odoo-javascript +#: code:addons/pos_discount_all/static/src/xml/OrderSummary.xml:0 +#, python-format +msgid "Discount Amount:" +msgstr "" + +#. module: pos_discount_all +#: model:product.template,name:pos_discount_all.product_discount_product_template +msgid "Discount Product" +msgstr "" + +#. module: pos_discount_all +#: model:ir.model.fields,field_description:pos_discount_all.field_product_product__is_discount +#: model:ir.model.fields,field_description:pos_discount_all.field_product_template__is_discount +msgid "Is a Discount" +msgstr "" + +#. module: pos_discount_all +#: model:ir.model,name:pos_discount_all.model_pos_session +msgid "Point of Sale Session" +msgstr "" + +#. module: pos_discount_all +#: model:ir.model,name:pos_discount_all.model_product_template +msgid "Product" +msgstr "" From 2ee2990e0db5fbb9d510f7c8bf05ca6daef52a00 Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 27 Sep 2023 07:16:31 +0000 Subject: [PATCH 06/13] Translated using Weblate (Italian) Currently translated at 100.0% (6 of 6 strings) Translation: pos-16.0/pos-16.0-pos_discount_all Translate-URL: https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_discount_all/it/ --- pos_discount_all/i18n/it.po | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/pos_discount_all/i18n/it.po b/pos_discount_all/i18n/it.po index 6bbaac25fa..d92a3ac341 100644 --- a/pos_discount_all/i18n/it.po +++ b/pos_discount_all/i18n/it.po @@ -6,13 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2023-10-09 03:34+0000\n" +"Last-Translator: mymage \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: pos_discount_all #: model:ir.model.fields,help:pos_discount_all.field_product_product__is_discount @@ -23,31 +25,36 @@ msgid "" "If you use 'Pos Discount' Odoo module, you should check this box for the " "product you configured as the 'Discount Product' on your PoS config." msgstr "" +"Spuntare questa opzione se si usa questo prodotto come sconto nelle vendite. " +"Se selezionata la riga di vendita verrà ignorata nel calcolare il valore " +"senza sconto. Se si usa il modulo Odoo 'Sconto POS', bisogna spuntare questa " +"opzione per il prodotto configurato come 'Prodotto sconto' nella " +"configurazione POS." #. module: pos_discount_all #. odoo-javascript #: code:addons/pos_discount_all/static/src/xml/OrderSummary.xml:0 #, python-format msgid "Discount Amount:" -msgstr "" +msgstr "Importo sconto:" #. module: pos_discount_all #: model:product.template,name:pos_discount_all.product_discount_product_template msgid "Discount Product" -msgstr "" +msgstr "Prodotto scontato" #. module: pos_discount_all #: model:ir.model.fields,field_description:pos_discount_all.field_product_product__is_discount #: model:ir.model.fields,field_description:pos_discount_all.field_product_template__is_discount msgid "Is a Discount" -msgstr "" +msgstr "È uno sconto" #. module: pos_discount_all #: model:ir.model,name:pos_discount_all.model_pos_session msgid "Point of Sale Session" -msgstr "" +msgstr "Sessione punto vendita" #. module: pos_discount_all #: model:ir.model,name:pos_discount_all.model_product_template msgid "Product" -msgstr "" +msgstr "Prodotto" From 902912c210f0c1fb05ecbfd69c567303626f60e0 Mon Sep 17 00:00:00 2001 From: Weblate Date: Mon, 9 Oct 2023 18:21:14 +0000 Subject: [PATCH 07/13] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: pos-16.0/pos-16.0-pos_discount_all Translate-URL: https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_discount_all/ --- pos_discount_all/i18n/it.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pos_discount_all/i18n/it.po b/pos_discount_all/i18n/it.po index d92a3ac341..da8f2c3ebd 100644 --- a/pos_discount_all/i18n/it.po +++ b/pos_discount_all/i18n/it.po @@ -20,8 +20,8 @@ msgstr "" #: model:ir.model.fields,help:pos_discount_all.field_product_product__is_discount #: model:ir.model.fields,help:pos_discount_all.field_product_template__is_discount msgid "" -"Check this box if you use this product to realize discount on sale. If check" -" the sale lines will be ignored when computing the amount without discount. " +"Check this box if you use this product to realize discount on sale. If check " +"the sale lines will be ignored when computing the amount without discount. " "If you use 'Pos Discount' Odoo module, you should check this box for the " "product you configured as the 'Discount Product' on your PoS config." msgstr "" From 6cb37fbe85150590f79e1c3a1ddb22bf6b8fa110 Mon Sep 17 00:00:00 2001 From: LESTRAT21 Date: Fri, 10 Nov 2023 10:44:01 +0000 Subject: [PATCH 08/13] Added translation using Weblate (French) --- pos_discount_all/i18n/fr.po | 53 +++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 pos_discount_all/i18n/fr.po diff --git a/pos_discount_all/i18n/fr.po b/pos_discount_all/i18n/fr.po new file mode 100644 index 0000000000..9f7226eba9 --- /dev/null +++ b/pos_discount_all/i18n/fr.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_discount_all +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: fr\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" + +#. module: pos_discount_all +#: model:ir.model.fields,help:pos_discount_all.field_product_product__is_discount +#: model:ir.model.fields,help:pos_discount_all.field_product_template__is_discount +msgid "" +"Check this box if you use this product to realize discount on sale. If check" +" the sale lines will be ignored when computing the amount without discount. " +"If you use 'Pos Discount' Odoo module, you should check this box for the " +"product you configured as the 'Discount Product' on your PoS config." +msgstr "" + +#. module: pos_discount_all +#. odoo-javascript +#: code:addons/pos_discount_all/static/src/xml/OrderSummary.xml:0 +#, python-format +msgid "Discount Amount:" +msgstr "" + +#. module: pos_discount_all +#: model:product.template,name:pos_discount_all.product_discount_product_template +msgid "Discount Product" +msgstr "" + +#. module: pos_discount_all +#: model:ir.model.fields,field_description:pos_discount_all.field_product_product__is_discount +#: model:ir.model.fields,field_description:pos_discount_all.field_product_template__is_discount +msgid "Is a Discount" +msgstr "" + +#. module: pos_discount_all +#: model:ir.model,name:pos_discount_all.model_pos_session +msgid "Point of Sale Session" +msgstr "" + +#. module: pos_discount_all +#: model:ir.model,name:pos_discount_all.model_product_template +msgid "Product" +msgstr "" From 7dd73760419486a57b901f6720fc37e0409d096b Mon Sep 17 00:00:00 2001 From: LESTRAT21 Date: Fri, 10 Nov 2023 10:46:34 +0000 Subject: [PATCH 09/13] Translated using Weblate (French) Currently translated at 83.3% (5 of 6 strings) Translation: pos-16.0/pos-16.0-pos_discount_all Translate-URL: https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_discount_all/fr/ --- pos_discount_all/i18n/fr.po | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pos_discount_all/i18n/fr.po b/pos_discount_all/i18n/fr.po index 9f7226eba9..44a3008462 100644 --- a/pos_discount_all/i18n/fr.po +++ b/pos_discount_all/i18n/fr.po @@ -6,13 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2023-11-10 12:38+0000\n" +"Last-Translator: LESTRAT21 \n" "Language-Team: none\n" "Language: fr\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: pos_discount_all #: model:ir.model.fields,help:pos_discount_all.field_product_product__is_discount @@ -29,25 +31,25 @@ msgstr "" #: code:addons/pos_discount_all/static/src/xml/OrderSummary.xml:0 #, python-format msgid "Discount Amount:" -msgstr "" +msgstr "Montant de la réduction :" #. module: pos_discount_all #: model:product.template,name:pos_discount_all.product_discount_product_template msgid "Discount Product" -msgstr "" +msgstr "Réduction appliquée" #. module: pos_discount_all #: model:ir.model.fields,field_description:pos_discount_all.field_product_product__is_discount #: model:ir.model.fields,field_description:pos_discount_all.field_product_template__is_discount msgid "Is a Discount" -msgstr "" +msgstr "Est une réduction" #. module: pos_discount_all #: model:ir.model,name:pos_discount_all.model_pos_session msgid "Point of Sale Session" -msgstr "" +msgstr "Session de caisse" #. module: pos_discount_all #: model:ir.model,name:pos_discount_all.model_product_template msgid "Product" -msgstr "" +msgstr "Produit" From ef7bfc459ef04c9011274a54ecd00e7451775058 Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Sun, 11 Feb 2024 16:13:36 +0000 Subject: [PATCH 10/13] Added translation using Weblate (Spanish) --- pos_discount_all/i18n/es.po | 53 +++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 pos_discount_all/i18n/es.po diff --git a/pos_discount_all/i18n/es.po b/pos_discount_all/i18n/es.po new file mode 100644 index 0000000000..3ab9138867 --- /dev/null +++ b/pos_discount_all/i18n/es.po @@ -0,0 +1,53 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_discount_all +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es\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" + +#. module: pos_discount_all +#: model:ir.model.fields,help:pos_discount_all.field_product_product__is_discount +#: model:ir.model.fields,help:pos_discount_all.field_product_template__is_discount +msgid "" +"Check this box if you use this product to realize discount on sale. If check" +" the sale lines will be ignored when computing the amount without discount. " +"If you use 'Pos Discount' Odoo module, you should check this box for the " +"product you configured as the 'Discount Product' on your PoS config." +msgstr "" + +#. module: pos_discount_all +#. odoo-javascript +#: code:addons/pos_discount_all/static/src/xml/OrderSummary.xml:0 +#, python-format +msgid "Discount Amount:" +msgstr "" + +#. module: pos_discount_all +#: model:product.template,name:pos_discount_all.product_discount_product_template +msgid "Discount Product" +msgstr "" + +#. module: pos_discount_all +#: model:ir.model.fields,field_description:pos_discount_all.field_product_product__is_discount +#: model:ir.model.fields,field_description:pos_discount_all.field_product_template__is_discount +msgid "Is a Discount" +msgstr "" + +#. module: pos_discount_all +#: model:ir.model,name:pos_discount_all.model_pos_session +msgid "Point of Sale Session" +msgstr "" + +#. module: pos_discount_all +#: model:ir.model,name:pos_discount_all.model_product_template +msgid "Product" +msgstr "" From acb314be2843e263618d0bbb8296426a6cb6411b Mon Sep 17 00:00:00 2001 From: Ivorra78 Date: Sun, 11 Feb 2024 16:16:04 +0000 Subject: [PATCH 11/13] Translated using Weblate (Spanish) Currently translated at 100.0% (6 of 6 strings) Translation: pos-16.0/pos-16.0-pos_discount_all Translate-URL: https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_discount_all/es/ --- pos_discount_all/i18n/es.po | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/pos_discount_all/i18n/es.po b/pos_discount_all/i18n/es.po index 3ab9138867..560fb88577 100644 --- a/pos_discount_all/i18n/es.po +++ b/pos_discount_all/i18n/es.po @@ -6,13 +6,15 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2024-02-11 18:34+0000\n" +"Last-Translator: Ivorra78 \n" "Language-Team: none\n" "Language: es\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: pos_discount_all #: model:ir.model.fields,help:pos_discount_all.field_product_product__is_discount @@ -23,31 +25,36 @@ msgid "" "If you use 'Pos Discount' Odoo module, you should check this box for the " "product you configured as the 'Discount Product' on your PoS config." msgstr "" +"Marque esta casilla si utiliza este producto para realizar descuentos en " +"rebajas. Si marca las lineas de venta seran ignoradas cuando se calcule la " +"cantidad sin descuento. Si utiliza 'Pos Descuento' módulo de Odoo, debe " +"marcar esta casilla para el producto que ha configurado como el 'Producto de " +"descuento' en su configuración PoS." #. module: pos_discount_all #. odoo-javascript #: code:addons/pos_discount_all/static/src/xml/OrderSummary.xml:0 #, python-format msgid "Discount Amount:" -msgstr "" +msgstr "Importe del Descuento:" #. module: pos_discount_all #: model:product.template,name:pos_discount_all.product_discount_product_template msgid "Discount Product" -msgstr "" +msgstr "Producto con Descuento" #. module: pos_discount_all #: model:ir.model.fields,field_description:pos_discount_all.field_product_product__is_discount #: model:ir.model.fields,field_description:pos_discount_all.field_product_template__is_discount msgid "Is a Discount" -msgstr "" +msgstr "Es un Descuento" #. module: pos_discount_all #: model:ir.model,name:pos_discount_all.model_pos_session msgid "Point of Sale Session" -msgstr "" +msgstr "Sesión del Punto de Venta" #. module: pos_discount_all #: model:ir.model,name:pos_discount_all.model_product_template msgid "Product" -msgstr "" +msgstr "Producto" From 8c8fbcdbeb78775f98127874027b5d69f1cf6922 Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Fri, 20 Dec 2024 09:07:56 +0100 Subject: [PATCH 12/13] [IMP] pos_discount_all: pre-commit auto fixes --- pos_discount_all/README.rst | 100 ++++++++++-------- pos_discount_all/pyproject.toml | 3 + pos_discount_all/readme/CONFIGURE.md | 6 ++ pos_discount_all/readme/CONFIGURE.rst | 5 - pos_discount_all/readme/CONTRIBUTORS.md | 1 + pos_discount_all/readme/CONTRIBUTORS.rst | 1 - pos_discount_all/readme/CREDITS.md | 4 + pos_discount_all/readme/CREDITS.rst | 3 - pos_discount_all/readme/DESCRIPTION.md | 14 +++ pos_discount_all/readme/DESCRIPTION.rst | 14 --- pos_discount_all/readme/DEVELOP.md | 21 ++++ pos_discount_all/readme/DEVELOP.rst | 21 ---- pos_discount_all/readme/USAGE.md | 13 +++ pos_discount_all/readme/USAGE.rst | 14 --- .../static/description/index.html | 60 ++++++----- pos_discount_all/tests/test_module.py | 1 - 16 files changed, 147 insertions(+), 134 deletions(-) create mode 100644 pos_discount_all/pyproject.toml create mode 100644 pos_discount_all/readme/CONFIGURE.md delete mode 100644 pos_discount_all/readme/CONFIGURE.rst create mode 100644 pos_discount_all/readme/CONTRIBUTORS.md delete mode 100644 pos_discount_all/readme/CONTRIBUTORS.rst create mode 100644 pos_discount_all/readme/CREDITS.md delete mode 100644 pos_discount_all/readme/CREDITS.rst create mode 100644 pos_discount_all/readme/DESCRIPTION.md delete mode 100644 pos_discount_all/readme/DESCRIPTION.rst create mode 100644 pos_discount_all/readme/DEVELOP.md delete mode 100644 pos_discount_all/readme/DEVELOP.rst create mode 100644 pos_discount_all/readme/USAGE.md delete mode 100644 pos_discount_all/readme/USAGE.rst diff --git a/pos_discount_all/README.rst b/pos_discount_all/README.rst index ee5d380319..247157c4a4 100644 --- a/pos_discount_all/README.rst +++ b/pos_discount_all/README.rst @@ -7,7 +7,7 @@ Point of Sale - Display All Discounts !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:29e859f159e20beb7c3ca10008b29d3e608f2de14125fc3aae7aee8c965c47a5 + !! source digest: sha256:84b6138a5545bb409c1d80a250a656a31103fe38808b1356cdd68e8e0b3b5233 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -17,31 +17,32 @@ Point of Sale - Display All Discounts :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github - :target: https://github.com/OCA/pos/tree/16.0/pos_discount_all + :target: https://github.com/OCA/pos/tree/17.0/pos_discount_all :alt: OCA/pos .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/pos-16-0/pos-16-0-pos_discount_all + :target: https://translation.odoo-community.org/projects/pos-17-0/pos-17-0-pos_discount_all :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png - :target: https://runboat.odoo-community.org/builds?repo=OCA/pos&target_branch=16.0 + :target: https://runboat.odoo-community.org/builds?repo=OCA/pos&target_branch=17.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| This module extends the functionality of point of sale module, to -display on the PoS ticket, the amount of the discount applied for this sale. -Contrary to the logic of Odoo and the OCA +display on the PoS ticket, the amount of the discount applied for this +sale. Contrary to the logic of Odoo and the OCA (https://github.com/OCA/sale-workflow/tree/14.0/sale_discount_display_amount) -the amount of the discount is the difference between the theoretical sale with the default price list and the actual sale amount. -So it take into accounts: +the amount of the discount is the difference between the theoretical +sale with the default price list and the actual sale amount. So it take +into accounts: -- explicit discount set on pos.order.line. (as for odoo ``sale`` module) -- fixed price set on pos.order.line -- discount generated by specific pricelist +- explicit discount set on pos.order.line. (as for odoo ``sale`` + module) +- fixed price set on pos.order.line +- discount generated by specific pricelist -Also the module ignores in the computation of undiscounted amount lines, the -lines with a 'Discount Product'. -(see the configure section.) +Also the module ignores in the computation of undiscounted amount lines, +the lines with a 'Discount Product'. (see the configure section.) **Table of contents** @@ -51,29 +52,33 @@ lines with a 'Discount Product'. Configuration ============= -* Go to "Point of Sale > Products" -* Create or edit your discount products -* Check the box "Is a Discount" +- Go to "Point of Sale > Products" +- Create or edit your discount products +- Check the box "Is a Discount" -.. image:: https://raw.githubusercontent.com/OCA/pos/16.0/pos_discount_all/static/description/product_template_form.png +|image_template_form| + +.. |image_template_form| image:: https://raw.githubusercontent.com/OCA/pos/17.0/pos_discount_all/static/description/product_template_form.png Usage ===== Open your point of Sale -Make an order. for exemple, -- select the product 'Conference chair (39.40$)' -- select the pricelist -10% -- add a discount of 1$ +Make an order. for exemple, - select the product 'Conference chair +(39.40$)' - select the pricelist -10% - add a discount of 1$ + +The total discount is 1$ + 10% \* 39.40 = 4.94$ -The total discount is 1$ + 10% * 39.40 = 4.94$ +|image_summary| -.. image:: https://raw.githubusercontent.com/OCA/pos/16.0/pos_discount_all/static/description/order_summary.png +Note, the discount displayed on the ticket is updated, to take into +account all the discount. -Note, the discount displayed on the ticket is updated, to take into account all the discount. +|image_receipt| -.. image:: https://raw.githubusercontent.com/OCA/pos/16.0/pos_discount_all/static/description/pos_receipt.png +.. |image_summary| image:: https://raw.githubusercontent.com/OCA/pos/17.0/pos_discount_all/static/description/order_summary.png +.. |image_receipt| image:: https://raw.githubusercontent.com/OCA/pos/17.0/pos_discount_all/static/description/pos_receipt.png Development =========== @@ -82,23 +87,23 @@ Development In the javascript file, we could write -.. code-block:: javascript - - const PosDiscountAllOrder = () => - class extends Order { - } +.. code:: javascript -However, this code doesn't work if ``pos_sale`` module is installed. For that -reason we code the declaration as Odoo does, and add eslint exception. + const PosDiscountAllOrder = () => + class extends Order { + } +However, this code doesn't work if ``pos_sale`` module is installed. For +that reason we code the declaration as Odoo does, and add eslint +exception. -.. code-block:: javascript +.. code:: javascript - // eslint-disable-next-line no-shadow - const PosDiscountAllOrder = (Order) => - // eslint-disable-next-line no-shadow - class PosDiscountAllOrder extends Order { - } + // eslint-disable-next-line no-shadow + const PosDiscountAllOrder = (Order) => + // eslint-disable-next-line no-shadow + class PosDiscountAllOrder extends Order { + } Bug Tracker =========== @@ -106,7 +111,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 to smash it by providing a detailed and welcomed -`feedback `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -114,24 +119,25 @@ Credits ======= Authors -~~~~~~~ +------- * GRAP Contributors -~~~~~~~~~~~~ +------------ -* Sylvain LE GAL (https://twitter.com/legalsylvain) +- Sylvain LE GAL (https://twitter.com/legalsylvain) Other credits -~~~~~~~~~~~~~ +------------- The development of this module has been financially supported by: -* UGESS, Union Nationale des Groupements des épiceries Sociales et Solidaires (https://ugess.org/) +- UGESS, Union Nationale des Groupements des épiceries Sociales et + Solidaires (https://ugess.org/) Maintainers -~~~~~~~~~~~ +----------- This module is maintained by the OCA. @@ -151,6 +157,6 @@ Current `maintainer `__: |maintainer-legalsylvain| -This module is part of the `OCA/pos `_ project on GitHub. +This module is part of the `OCA/pos `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/pos_discount_all/pyproject.toml b/pos_discount_all/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/pos_discount_all/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/pos_discount_all/readme/CONFIGURE.md b/pos_discount_all/readme/CONFIGURE.md new file mode 100644 index 0000000000..983cab83bb --- /dev/null +++ b/pos_discount_all/readme/CONFIGURE.md @@ -0,0 +1,6 @@ +- Go to "Point of Sale \> Products" +- Create or edit your discount products +- Check the box "Is a Discount" + + +![image_template_form](../static/description/product_template_form.png) diff --git a/pos_discount_all/readme/CONFIGURE.rst b/pos_discount_all/readme/CONFIGURE.rst deleted file mode 100644 index db2960b07c..0000000000 --- a/pos_discount_all/readme/CONFIGURE.rst +++ /dev/null @@ -1,5 +0,0 @@ -* Go to "Point of Sale > Products" -* Create or edit your discount products -* Check the box "Is a Discount" - -.. image:: ../static/description/product_template_form.png diff --git a/pos_discount_all/readme/CONTRIBUTORS.md b/pos_discount_all/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..18c1c87e0f --- /dev/null +++ b/pos_discount_all/readme/CONTRIBUTORS.md @@ -0,0 +1 @@ +- Sylvain LE GAL () diff --git a/pos_discount_all/readme/CONTRIBUTORS.rst b/pos_discount_all/readme/CONTRIBUTORS.rst deleted file mode 100644 index ae6f43a86d..0000000000 --- a/pos_discount_all/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1 +0,0 @@ -* Sylvain LE GAL (https://twitter.com/legalsylvain) diff --git a/pos_discount_all/readme/CREDITS.md b/pos_discount_all/readme/CREDITS.md new file mode 100644 index 0000000000..4f833c6217 --- /dev/null +++ b/pos_discount_all/readme/CREDITS.md @@ -0,0 +1,4 @@ +The development of this module has been financially supported by: + +- UGESS, Union Nationale des Groupements des épiceries Sociales et + Solidaires () diff --git a/pos_discount_all/readme/CREDITS.rst b/pos_discount_all/readme/CREDITS.rst deleted file mode 100644 index 4c3758b92a..0000000000 --- a/pos_discount_all/readme/CREDITS.rst +++ /dev/null @@ -1,3 +0,0 @@ -The development of this module has been financially supported by: - -* UGESS, Union Nationale des Groupements des épiceries Sociales et Solidaires (https://ugess.org/) diff --git a/pos_discount_all/readme/DESCRIPTION.md b/pos_discount_all/readme/DESCRIPTION.md new file mode 100644 index 0000000000..1971572f33 --- /dev/null +++ b/pos_discount_all/readme/DESCRIPTION.md @@ -0,0 +1,14 @@ +This module extends the functionality of point of sale module, to +display on the PoS ticket, the amount of the discount applied for this +sale. Contrary to the logic of Odoo and the OCA +() +the amount of the discount is the difference between the theoretical +sale with the default price list and the actual sale amount. So it take +into accounts: + +- explicit discount set on pos.order.line. (as for odoo `sale` module) +- fixed price set on pos.order.line +- discount generated by specific pricelist + +Also the module ignores in the computation of undiscounted amount lines, +the lines with a 'Discount Product'. (see the configure section.) diff --git a/pos_discount_all/readme/DESCRIPTION.rst b/pos_discount_all/readme/DESCRIPTION.rst deleted file mode 100644 index 297f6bc8e3..0000000000 --- a/pos_discount_all/readme/DESCRIPTION.rst +++ /dev/null @@ -1,14 +0,0 @@ -This module extends the functionality of point of sale module, to -display on the PoS ticket, the amount of the discount applied for this sale. -Contrary to the logic of Odoo and the OCA -(https://github.com/OCA/sale-workflow/tree/14.0/sale_discount_display_amount) -the amount of the discount is the difference between the theoretical sale with the default price list and the actual sale amount. -So it take into accounts: - -- explicit discount set on pos.order.line. (as for odoo ``sale`` module) -- fixed price set on pos.order.line -- discount generated by specific pricelist - -Also the module ignores in the computation of undiscounted amount lines, the -lines with a 'Discount Product'. -(see the configure section.) diff --git a/pos_discount_all/readme/DEVELOP.md b/pos_discount_all/readme/DEVELOP.md new file mode 100644 index 0000000000..ec9e8cf556 --- /dev/null +++ b/pos_discount_all/readme/DEVELOP.md @@ -0,0 +1,21 @@ +**Note** + +In the javascript file, we could write + +``` javascript +const PosDiscountAllOrder = () => + class extends Order { + } +``` + +However, this code doesn't work if `pos_sale` module is installed. For +that reason we code the declaration as Odoo does, and add eslint +exception. + +``` javascript +// eslint-disable-next-line no-shadow +const PosDiscountAllOrder = (Order) => + // eslint-disable-next-line no-shadow + class PosDiscountAllOrder extends Order { + } +``` diff --git a/pos_discount_all/readme/DEVELOP.rst b/pos_discount_all/readme/DEVELOP.rst deleted file mode 100644 index 899a6d20fe..0000000000 --- a/pos_discount_all/readme/DEVELOP.rst +++ /dev/null @@ -1,21 +0,0 @@ -**Note** - -In the javascript file, we could write - -.. code-block:: javascript - - const PosDiscountAllOrder = () => - class extends Order { - } - -However, this code doesn't work if ``pos_sale`` module is installed. For that -reason we code the declaration as Odoo does, and add eslint exception. - - -.. code-block:: javascript - - // eslint-disable-next-line no-shadow - const PosDiscountAllOrder = (Order) => - // eslint-disable-next-line no-shadow - class PosDiscountAllOrder extends Order { - } diff --git a/pos_discount_all/readme/USAGE.md b/pos_discount_all/readme/USAGE.md new file mode 100644 index 0000000000..31f80e4f5e --- /dev/null +++ b/pos_discount_all/readme/USAGE.md @@ -0,0 +1,13 @@ +Open your point of Sale + +Make an order. for exemple, - select the product 'Conference chair +(39.40\$)' - select the pricelist -10% - add a discount of 1\$ + +The total discount is 1\$ + 10% \* 39.40 = 4.94\$ + +![image_summary](../static/description/order_summary.png) + +Note, the discount displayed on the ticket is updated, to take into +account all the discount. + +![image_receipt](../static/description/pos_receipt.png) diff --git a/pos_discount_all/readme/USAGE.rst b/pos_discount_all/readme/USAGE.rst deleted file mode 100644 index 7df5890d56..0000000000 --- a/pos_discount_all/readme/USAGE.rst +++ /dev/null @@ -1,14 +0,0 @@ -Open your point of Sale - -Make an order. for exemple, -- select the product 'Conference chair (39.40$)' -- select the pricelist -10% -- add a discount of 1$ - -The total discount is 1$ + 10% * 39.40 = 4.94$ - -.. image:: ../static/description/order_summary.png - -Note, the discount displayed on the ticket is updated, to take into account all the discount. - -.. image:: ../static/description/pos_receipt.png diff --git a/pos_discount_all/static/description/index.html b/pos_discount_all/static/description/index.html index 6ce44de003..1c35fbc8d2 100644 --- a/pos_discount_all/static/description/index.html +++ b/pos_discount_all/static/description/index.html @@ -1,4 +1,3 @@ - @@ -9,10 +8,11 @@ /* :Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $ +:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. +Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. @@ -275,7 +275,7 @@ margin-left: 2em ; margin-right: 2em } -pre.code .ln { color: grey; } /* line numbers */ +pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } @@ -301,7 +301,7 @@ span.pre { white-space: pre } -span.problematic { +span.problematic, pre.problematic { color: red } span.section-subtitle { @@ -367,23 +367,24 @@

Point of Sale - Display All Discounts

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:29e859f159e20beb7c3ca10008b29d3e608f2de14125fc3aae7aee8c965c47a5 +!! source digest: sha256:84b6138a5545bb409c1d80a250a656a31103fe38808b1356cdd68e8e0b3b5233 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

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

+

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

This module extends the functionality of point of sale module, to -display on the PoS ticket, the amount of the discount applied for this sale. -Contrary to the logic of Odoo and the OCA +display on the PoS ticket, the amount of the discount applied for this +sale. Contrary to the logic of Odoo and the OCA (https://github.com/OCA/sale-workflow/tree/14.0/sale_discount_display_amount) -the amount of the discount is the difference between the theoretical sale with the default price list and the actual sale amount. -So it take into accounts:

+the amount of the discount is the difference between the theoretical +sale with the default price list and the actual sale amount. So it take +into accounts:

    -
  • explicit discount set on pos.order.line. (as for odoo sale module)
  • +
  • explicit discount set on pos.order.line. (as for odoo sale +module)
  • fixed price set on pos.order.line
  • discount generated by specific pricelist
-

Also the module ignores in the computation of undiscounted amount lines, the -lines with a ‘Discount Product’. -(see the configure section.)

+

Also the module ignores in the computation of undiscounted amount lines, +the lines with a ‘Discount Product’. (see the configure section.)

Table of contents

    @@ -407,19 +408,18 @@

    Configuration

  • Create or edit your discount products
  • Check the box “Is a Discount”
-https://raw.githubusercontent.com/OCA/pos/16.0/pos_discount_all/static/description/product_template_form.png +

image_template_form

Usage

Open your point of Sale

-

Make an order. for exemple, -- select the product ‘Conference chair (39.40$)’ -- select the pricelist -10% -- add a discount of 1$

+

Make an order. for exemple, - select the product ‘Conference chair +(39.40$)’ - select the pricelist -10% - add a discount of 1$

The total discount is 1$ + 10% * 39.40 = 4.94$

-https://raw.githubusercontent.com/OCA/pos/16.0/pos_discount_all/static/description/order_summary.png -

Note, the discount displayed on the ticket is updated, to take into account all the discount.

-https://raw.githubusercontent.com/OCA/pos/16.0/pos_discount_all/static/description/pos_receipt.png +

image_summary

+

Note, the discount displayed on the ticket is updated, to take into +account all the discount.

+

image_receipt

Development

@@ -430,8 +430,9 @@

Development

class extends Order { } -

However, this code doesn’t work if pos_sale module is installed. For that -reason we code the declaration as Odoo does, and add eslint exception.

+

However, this code doesn’t work if pos_sale module is installed. For +that reason we code the declaration as Odoo does, and add eslint +exception.

 // eslint-disable-next-line no-shadow
 const PosDiscountAllOrder = (Order) =>
@@ -445,7 +446,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 to smash it by providing a detailed and welcomed -feedback.

+feedback.

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

@@ -466,19 +467,22 @@

Contributors

Other credits

The development of this module has been financially supported by:

    -
  • UGESS, Union Nationale des Groupements des épiceries Sociales et Solidaires (https://ugess.org/)
  • +
  • UGESS, Union Nationale des Groupements des épiceries Sociales et +Solidaires (https://ugess.org/)

Maintainers

This module is maintained by the OCA.

-Odoo Community Association + +Odoo Community Association +

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

Current maintainer:

legalsylvain

-

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

+

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

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

diff --git a/pos_discount_all/tests/test_module.py b/pos_discount_all/tests/test_module.py index 1b18c35969..e05a4bb7ab 100644 --- a/pos_discount_all/tests/test_module.py +++ b/pos_discount_all/tests/test_module.py @@ -11,7 +11,6 @@ @tagged("post_install", "-at_install") class TestUi(TestPointOfSaleHttpCommon): def test_pos_discount_all(self): - pricelist = self.env["product.pricelist"].create( { "name": "Pricelist -10%", From 3c24748133d2d32e17652e5146877fe1397ddcbc Mon Sep 17 00:00:00 2001 From: Antoni Marroig Campomar Date: Fri, 20 Dec 2024 13:31:26 +0100 Subject: [PATCH 13/13] [MIG] pos_discount_all: Migration to 17.0 --- pos_discount_all/README.rst | 3 + pos_discount_all/__manifest__.py | 12 +-- pos_discount_all/readme/CONTRIBUTORS.md | 3 + .../static/description/index.html | 4 + pos_discount_all/static/src/js/models.esm.js | 78 ++++++++++++++ pos_discount_all/static/src/js/models.js | 101 ------------------ .../static/src/js/order_widget.esm.js | 19 ++++ .../tests/tours/PosDiscountAllTour.tour.js | 27 ++--- .../{OrderSummary.xml => order_widget.xml} | 12 +-- 9 files changed, 126 insertions(+), 133 deletions(-) create mode 100644 pos_discount_all/static/src/js/models.esm.js delete mode 100644 pos_discount_all/static/src/js/models.js create mode 100644 pos_discount_all/static/src/js/order_widget.esm.js rename pos_discount_all/{ => static/src}/tests/tours/PosDiscountAllTour.tour.js (77%) rename pos_discount_all/static/src/xml/{OrderSummary.xml => order_widget.xml} (63%) diff --git a/pos_discount_all/README.rst b/pos_discount_all/README.rst index 247157c4a4..9298fae57c 100644 --- a/pos_discount_all/README.rst +++ b/pos_discount_all/README.rst @@ -127,6 +127,9 @@ Contributors ------------ - Sylvain LE GAL (https://twitter.com/legalsylvain) +- `APSL-Nagarro `__: + + - Antoni Marroig Other credits ------------- diff --git a/pos_discount_all/__manifest__.py b/pos_discount_all/__manifest__.py index 1885dabf5e..4d87e83520 100644 --- a/pos_discount_all/__manifest__.py +++ b/pos_discount_all/__manifest__.py @@ -6,7 +6,7 @@ "name": "Point of Sale - Display All Discounts", "summary": "Display discount amount on PoS cashier screen and print it on ticket" "calculated from the difference between a sale with default pricelist", - "version": "16.0.1.0.1", + "version": "17.0.1.0.0", "category": "Point of Sale", "maintainers": ["legalsylvain"], "author": "GRAP,Odoo Community Association (OCA)", @@ -17,12 +17,12 @@ "views/view_product_template.xml", ], "assets": { - "point_of_sale.assets": [ - "pos_discount_all/static/src/js/models.js", - "pos_discount_all/static/src/xml/OrderSummary.xml", + "point_of_sale._assets_pos": [ + "pos_discount_all/static/src/js/models.esm.js", + "pos_discount_all/static/src/js/order_widget.esm.js", ], - "web.assets_tests": [ - "pos_discount_all/tests/tours/PosDiscountAllTour.tour.js", + "web.assets_backend": [ + "pos_discount_all/static/src/tests/tours/PosDiscountAllTour.tour.js", ], }, "demo": [ diff --git a/pos_discount_all/readme/CONTRIBUTORS.md b/pos_discount_all/readme/CONTRIBUTORS.md index 18c1c87e0f..7d73f9395c 100644 --- a/pos_discount_all/readme/CONTRIBUTORS.md +++ b/pos_discount_all/readme/CONTRIBUTORS.md @@ -1 +1,4 @@ - Sylvain LE GAL () +- [APSL-Nagarro](): + - Antoni Marroig \<\> + \ No newline at end of file diff --git a/pos_discount_all/static/description/index.html b/pos_discount_all/static/description/index.html index 1c35fbc8d2..abca04941d 100644 --- a/pos_discount_all/static/description/index.html +++ b/pos_discount_all/static/description/index.html @@ -461,6 +461,10 @@

Authors

Contributors

diff --git a/pos_discount_all/static/src/js/models.esm.js b/pos_discount_all/static/src/js/models.esm.js new file mode 100644 index 0000000000..1adb5abfe2 --- /dev/null +++ b/pos_discount_all/static/src/js/models.esm.js @@ -0,0 +1,78 @@ +/** @odoo-module */ + +/* + Copyright (C) 2022-Today GRAP (http://www.grap.coop) + @author Sylvain LE GAL (https://twitter.com/legalsylvain) + Copyright 2024 (APSL-Nagarro) - Antoni Marroig + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +*/ + +import {Order, Orderline} from "@point_of_sale/app/store/models"; +import {patch} from "@web/core/utils/patch"; +import {roundPrecision as round_pr} from "@web/core/utils/numbers"; + +patch(Order.prototype, { + _get_ignored_product_ids_total_discount() { + const productIds = super._get_ignored_product_ids_total_discount(...arguments); + for (const product in this.pos.db.product_by_id) { + if (product.is_discount) { + productIds.push(product.id); + } + } + return productIds; + }, + get_total_with_tax_without_any_discount() { + return round_pr( + this.orderlines.reduce(function (sum, orderLine) { + return sum + orderLine.get_total_without_any_discount().total_included; + }, 0), + this.pos.currency.rounding + ); + }, + get_discount_amount_with_tax_without_any_discount() { + return round_pr( + this.get_total_with_tax_without_any_discount() - this.get_total_with_tax(), + this.pos.currency.rounding + ); + }, + export_for_printing() { + var receipt = super.export_for_printing(...arguments); + receipt.total_discount = + this.get_discount_amount_with_tax_without_any_discount(); + return receipt; + }, +}); + +patch(Orderline.prototype, { + get_total_without_any_discount() { + var product = this.get_product(); + const ignored_product_ids = + this.order._get_ignored_product_ids_total_discount(); + if (ignored_product_ids.includes(product.id)) { + return { + total_excluded: 0.0, + total_included: 0.0, + }; + } + var price_unit_without_any_discount = product.get_price( + this.pos.default_pricelist, + this.get_quantity() + ); + var taxes_ids = this.tax_ids || product.taxes_id; + taxes_ids = taxes_ids.filter((t) => t in this.pos.taxes_by_id); + var product_taxes = this.pos.get_taxes_after_fp( + taxes_ids, + this.order.fiscal_position + ); + var all_taxes_without_any_discount = this.compute_all( + product_taxes, + price_unit_without_any_discount, + this.get_quantity(), + this.pos.currency.rounding + ); + return { + total_excluded: all_taxes_without_any_discount.total_excluded, + total_included: all_taxes_without_any_discount.total_included, + }; + }, +}); diff --git a/pos_discount_all/static/src/js/models.js b/pos_discount_all/static/src/js/models.js deleted file mode 100644 index 6f057eb3f3..0000000000 --- a/pos_discount_all/static/src/js/models.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - Copyright (C) 2022-Today GRAP (http://www.grap.coop) - @author Sylvain LE GAL (https://twitter.com/legalsylvain) - License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -*/ - -odoo.define("pos_discount_all.models", function (require) { - "use strict"; - - const {Order, Orderline} = require("point_of_sale.models"); - const Registries = require("point_of_sale.Registries"); - const {round_precision: round_pr} = require("web.utils"); - - // eslint-disable-next-line no-shadow - const PosDiscountAllOrder = (Order) => - // eslint-disable-next-line no-shadow - class PosDiscountAllOrder extends Order { - // eslint-disable-line no-shadow - // @override - _get_ignored_product_ids_total_discount() { - const productIds = super._get_ignored_product_ids_total_discount( - ...arguments - ); - _.map(this.pos.db.product_by_id, function (product) { - if (product.is_discount) { - productIds.push(product.id); - } - }); - return productIds; - } - - get_total_with_tax_without_any_discount() { - return round_pr( - this.orderlines.reduce(function (sum, orderLine) { - return ( - sum + - orderLine.get_total_without_any_discount().total_included - ); - }, 0), - this.pos.currency.rounding - ); - } - - get_discount_amount_with_tax_without_any_discount() { - return round_pr( - this.get_total_with_tax_without_any_discount() - - this.get_total_with_tax(), - this.pos.currency.rounding - ); - } - - export_for_printing() { - var receipt = super.export_for_printing(...arguments); - receipt.total_discount = - this.get_discount_amount_with_tax_without_any_discount(); - return receipt; - } - }; - - Registries.Model.extend(Order, PosDiscountAllOrder); - - // eslint-disable-next-line no-shadow - const PosDiscountAllOrderLine = (Orderline) => - // eslint-disable-next-line no-shadow - class PosDiscountAllOrderLine extends Orderline { - // eslint-disable-line no-shadow - get_total_without_any_discount() { - var product = this.get_product(); - const ignored_product_ids = - this.order._get_ignored_product_ids_total_discount(); - if (ignored_product_ids.includes(product.id)) { - return { - total_excluded: 0.0, - total_included: 0.0, - }; - } - var price_unit_without_any_discount = product.get_price( - this.pos.default_pricelist, - this.get_quantity() - ); - var taxes_ids = this.tax_ids || product.taxes_id; - taxes_ids = _.filter(taxes_ids, (t) => t in this.pos.taxes_by_id); - var product_taxes = this.pos.get_taxes_after_fp( - taxes_ids, - this.order.fiscal_position - ); - var all_taxes_without_any_discount = this.compute_all( - product_taxes, - price_unit_without_any_discount, - this.get_quantity(), - this.pos.currency.rounding - ); - return { - total_excluded: all_taxes_without_any_discount.total_excluded, - total_included: all_taxes_without_any_discount.total_included, - }; - } - }; - - Registries.Model.extend(Orderline, PosDiscountAllOrderLine); -}); diff --git a/pos_discount_all/static/src/js/order_widget.esm.js b/pos_discount_all/static/src/js/order_widget.esm.js new file mode 100644 index 0000000000..729bcf9f76 --- /dev/null +++ b/pos_discount_all/static/src/js/order_widget.esm.js @@ -0,0 +1,19 @@ +/** @odoo-module */ + +/* + Copyright (C) 2022-Today GRAP (http://www.grap.coop) + @author Sylvain LE GAL (https://twitter.com/legalsylvain) + Copyright 2024 (APSL-Nagarro) - Antoni Marroig + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). +*/ + +import {OrderWidget} from "@point_of_sale/app/generic_components/order_widget/order_widget"; +import {patch} from "@web/core/utils/patch"; +import {usePos} from "@point_of_sale/app/store/pos_hook"; + +patch(OrderWidget.prototype, { + setup() { + super.setup(); + this.props.pos = usePos(); + }, +}); diff --git a/pos_discount_all/tests/tours/PosDiscountAllTour.tour.js b/pos_discount_all/static/src/tests/tours/PosDiscountAllTour.tour.js similarity index 77% rename from pos_discount_all/tests/tours/PosDiscountAllTour.tour.js rename to pos_discount_all/static/src/tests/tours/PosDiscountAllTour.tour.js index 25c6ee6cd7..1ef510d4f4 100644 --- a/pos_discount_all/tests/tours/PosDiscountAllTour.tour.js +++ b/pos_discount_all/static/src/tests/tours/PosDiscountAllTour.tour.js @@ -1,15 +1,11 @@ -/* - Copyright (C) 2022-Today GRAP (http://www.grap.coop) - @author Sylvain LE GAL (https://twitter.com/legalsylvain) - License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html -*/ -/* eslint-disable no-empty-function */ -odoo.define("pos_discount_all.tour.PosDiscountAllTour", function (require) { - "use strict"; +/** @odoo-module */ - const Tour = require("web_tour.tour"); +import {registry} from "@web/core/registry"; - var steps = [ +registry.category("web_tour.tours").add("PosDiscountAllTour", { + test: true, + url: "/pos/ui", + steps: () => [ { content: "Test pos_discount_all: Waiting for loading to finish", trigger: "body:not(:has(.loader))", @@ -19,11 +15,6 @@ odoo.define("pos_discount_all.tour.PosDiscountAllTour", function (require) { content: "Test pos_discount_all: Close Opening cashbox popup", trigger: "div.opening-cash-control .button:contains('Open session')", }, - { - content: "Test pos_discount_all: Leave category displayed by default", - trigger: ".breadcrumb-home", - run: () => {}, - }, { content: "Test pos_discount_all: Order a 'Discount Product' (price -1.0)", trigger: ".product-list .product-name:contains('Discount Product')", @@ -70,9 +61,5 @@ odoo.define("pos_discount_all.tour.PosDiscountAllTour", function (require) { trigger: ".header-button", run: () => {}, }, - ]; - - Tour.register("PosDiscountAllTour", {test: true, url: "/pos/ui"}, steps); + ], }); - -/* */ diff --git a/pos_discount_all/static/src/xml/OrderSummary.xml b/pos_discount_all/static/src/xml/order_widget.xml similarity index 63% rename from pos_discount_all/static/src/xml/OrderSummary.xml rename to pos_discount_all/static/src/xml/order_widget.xml index f9b5570a13..2f55aee54d 100644 --- a/pos_discount_all/static/src/xml/OrderSummary.xml +++ b/pos_discount_all/static/src/xml/order_widget.xml @@ -2,25 +2,25 @@ - +
Discount Amount: - +
+

Point of Sale - Display All Discounts

+ + +

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

+

This module extends the functionality of point of sale module, to +display on the PoS ticket, the amount of the discount applied for this sale. +Contrary to the logic of Odoo and the OCA +(https://github.com/OCA/sale-workflow/tree/14.0/sale_discount_display_amount) +the amount of the discount is the difference between the theoretical sale with the default price list and the actual sale amount. +So it take into accounts:

+
    +
  • explicit discount set on pos.order.line. (as for odoo sale module)
  • +
  • fixed price set on pos.order.line
  • +
  • discount generated by specific pricelist
  • +
+

Also the module ignores in the computation of undiscounted amount lines, the +lines with a ‘Discount Product’. +(see the configure section.)

+

Table of contents

+ +
+

Configuration

+
    +
  • Go to “Point of Sale > Products”
  • +
  • Create or edit your discount products
  • +
  • Check the box “Is a Discount”
  • +
+https://raw.githubusercontent.com/OCA/pos/16.0/pos_discount_all/static/description/product_template_form.png +
+
+

Usage

+

Open your point of Sale

+

Make an order. for exemple, +- select the product ‘Conference chair (39.40$)’ +- select the pricelist -10% +- add a discount of 1$

+

The total discount is 1$ + 10% * 39.40 = 4.94$

+https://raw.githubusercontent.com/OCA/pos/16.0/pos_discount_all/static/description/order_summary.png +

Note, the discount displayed on the ticket is updated, to take into account all the discount.

+https://raw.githubusercontent.com/OCA/pos/16.0/pos_discount_all/static/description/pos_receipt.png +
+
+

Development

+

Note

+

In the javascript file, we could write

+
+const PosDiscountAllOrder = () =>
+    class extends Order {
+    }
+
+

However, this code doesn’t work if pos_sale module is installed. For that +reason we code the declaration as Odoo does, and add eslint exception.

+
+// eslint-disable-next-line no-shadow
+const PosDiscountAllOrder = (Order) =>
+    // eslint-disable-next-line no-shadow
+    class PosDiscountAllOrder extends Order {
+    }
+
+
+
+

Bug Tracker

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • GRAP
  • +
+
+ +
+

Other credits

+

The development of this module has been financially supported by:

+
    +
  • UGESS, Union Nationale des Groupements des épiceries Sociales et Solidaires (https://ugess.org/)
  • +
+
+
+

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:

+

legalsylvain

+

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

+

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

+
+
+