From 5b97d845b5f4f1e70a44d8a8730e7165d7668c94 Mon Sep 17 00:00:00 2001 From: Carmen Bianca Bakker Date: Wed, 15 Jun 2022 18:03:00 +0200 Subject: [PATCH 01/26] [ADD] pos_customer_wallet_is_user Signed-off-by: Carmen Bianca Bakker Signed-off-by: Carmen Bianca BAKKER --- .../__init__.py | 5 +++ .../__manifest__.py | 31 ++++++++++++++ .../models/__init__.py | 5 +++ .../models/res_partner.py | 37 +++++++++++++++++ .../readme/CONTRIBUTORS.rst | 3 ++ .../readme/DESCRIPTION.rst | 0 .../static/src/js/models.js | 22 ++++++++++ .../static/src/xml/pos.xml | 31 ++++++++++++++ .../templates/assets.xml | 16 ++++++++ .../views/res_partner_views.xml | 41 +++++++++++++++++++ 10 files changed, 191 insertions(+) create mode 100644 pos_customer_wallet_partner_is_user/__init__.py create mode 100644 pos_customer_wallet_partner_is_user/__manifest__.py create mode 100644 pos_customer_wallet_partner_is_user/models/__init__.py create mode 100644 pos_customer_wallet_partner_is_user/models/res_partner.py create mode 100644 pos_customer_wallet_partner_is_user/readme/CONTRIBUTORS.rst create mode 100644 pos_customer_wallet_partner_is_user/readme/DESCRIPTION.rst create mode 100644 pos_customer_wallet_partner_is_user/static/src/js/models.js create mode 100644 pos_customer_wallet_partner_is_user/static/src/xml/pos.xml create mode 100644 pos_customer_wallet_partner_is_user/templates/assets.xml create mode 100644 pos_customer_wallet_partner_is_user/views/res_partner_views.xml diff --git a/pos_customer_wallet_partner_is_user/__init__.py b/pos_customer_wallet_partner_is_user/__init__.py new file mode 100644 index 000000000..f2551dd32 --- /dev/null +++ b/pos_customer_wallet_partner_is_user/__init__.py @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: 2022 Coop IT Easy SCRLfs +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +from . import models diff --git a/pos_customer_wallet_partner_is_user/__manifest__.py b/pos_customer_wallet_partner_is_user/__manifest__.py new file mode 100644 index 000000000..3315986bb --- /dev/null +++ b/pos_customer_wallet_partner_is_user/__manifest__.py @@ -0,0 +1,31 @@ +# SPDX-FileCopyrightText: 2022 Coop IT Easy SCRLfs +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +{ + "name": "Point of Sale Customer Wallet Partner Is User", + "summary": """ + Add a field on partners that shows whether they have used customer wallet + functionality, and don't show some parts of customer wallet functionality + to partners who haven't already used it.""", + "version": "12.0.1.0.0", + "category": "Point of Sale", + "website": "https://coopiteasy.be", + "author": "Coop IT Easy SCRLfs", + "maintainer": "Coop IT Easy SCRLfs", + "maintainers": ["coopiteasy"], + "license": "AGPL-3", + "application": False, + "depends": [ + "pos_customer_wallet", + ], + "excludes": [], + "data": [ + "templates/assets.xml", + "views/res_partner_views.xml", + ], + "demo": [], + "qweb": [ + "static/src/xml/pos.xml", + ], +} diff --git a/pos_customer_wallet_partner_is_user/models/__init__.py b/pos_customer_wallet_partner_is_user/models/__init__.py new file mode 100644 index 000000000..07a07e9d9 --- /dev/null +++ b/pos_customer_wallet_partner_is_user/models/__init__.py @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: 2022 Coop IT Easy SCRLfs +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +from . import res_partner diff --git a/pos_customer_wallet_partner_is_user/models/res_partner.py b/pos_customer_wallet_partner_is_user/models/res_partner.py new file mode 100644 index 000000000..ce6acd0ae --- /dev/null +++ b/pos_customer_wallet_partner_is_user/models/res_partner.py @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: 2022 Coop IT Easy SCRLfs +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +from odoo import fields, models + + +class Partner(models.Model): + _inherit = "res.partner" + + is_customer_wallet_user = fields.Boolean( + string="Is Customer Wallet User", + compute="_compute_is_customer_wallet_user", + ) + + def _compute_is_customer_wallet_user(self): + # TODO: Write a test for this. + account_move_line = self.env["account.move.line"] + for record in self: + for partner in record.get_all_partners_in_family(): + if account_move_line.search( + [ + ("partner_id", "=", partner.id), + ("account_id", "=", partner.customer_wallet_id.id), + ] + ): + # FIXME: Optimise this. If `self` contains e.g. all + # partners, the above check is done once for every partner + # in the family, which is technically not necessary. But I'm + # not sure if we can just do + # `partner.is_customer_wallet_user = True` if partner is not + # in `self`. + record.is_customer_wallet_user = True + # Small optimisation to break early + break + else: + record.is_customer_wallet_user = False diff --git a/pos_customer_wallet_partner_is_user/readme/CONTRIBUTORS.rst b/pos_customer_wallet_partner_is_user/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..9f39efbc5 --- /dev/null +++ b/pos_customer_wallet_partner_is_user/readme/CONTRIBUTORS.rst @@ -0,0 +1,3 @@ +* `Coop IT Easy SCRLfs `_: + + * Carmen Bianca Bakker diff --git a/pos_customer_wallet_partner_is_user/readme/DESCRIPTION.rst b/pos_customer_wallet_partner_is_user/readme/DESCRIPTION.rst new file mode 100644 index 000000000..e69de29bb diff --git a/pos_customer_wallet_partner_is_user/static/src/js/models.js b/pos_customer_wallet_partner_is_user/static/src/js/models.js new file mode 100644 index 000000000..664237039 --- /dev/null +++ b/pos_customer_wallet_partner_is_user/static/src/js/models.js @@ -0,0 +1,22 @@ +// SPDX-FileCopyrightText: 2022 Coop IT Easy SCRLfs +// +// SPDX-License-Identifier: AGPL-3.0-or-later +odoo.define("pos_customer_wallet_partner_is_user.models", function (require) { + "use strict"; + + var models = require("point_of_sale.models"); + + models.load_fields("res.partner", ["is_customer_wallet_user"]); + + var order_prototype = models.Order.prototype; + models.Order = models.Order.extend({ + export_for_printing: function () { + var receipt = order_prototype.export_for_printing.apply(this); + var client = this.get("client"); + receipt.is_customer_wallet_user = client + ? client.is_customer_wallet_user + : null; + return receipt; + }, + }); +}); diff --git a/pos_customer_wallet_partner_is_user/static/src/xml/pos.xml b/pos_customer_wallet_partner_is_user/static/src/xml/pos.xml new file mode 100644 index 000000000..64219c849 --- /dev/null +++ b/pos_customer_wallet_partner_is_user/static/src/xml/pos.xml @@ -0,0 +1,31 @@ + + + diff --git a/pos_customer_wallet_partner_is_user/templates/assets.xml b/pos_customer_wallet_partner_is_user/templates/assets.xml new file mode 100644 index 000000000..d0369cdce --- /dev/null +++ b/pos_customer_wallet_partner_is_user/templates/assets.xml @@ -0,0 +1,16 @@ + + + +