diff --git a/advanced_loyalty_management/README.rst b/advanced_loyalty_management/README.rst new file mode 100644 index 000000000..c4675b3b9 --- /dev/null +++ b/advanced_loyalty_management/README.rst @@ -0,0 +1,45 @@ +.. image:: https://img.shields.io/badge/license-LGPL--3-green.svg + :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 + +Advanced Loyalty Management +=========================== +In this module, we have incorporated new features such as deducting loyalty points upon refund, +converting change into loyalty points, displaying claimed rewards history, and introducing a new type of reward. + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: (V17) NIHALA KP, Contact: odoo@cybrosys.com + + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + + diff --git a/advanced_loyalty_management/__init__.py b/advanced_loyalty_management/__init__.py new file mode 100644 index 000000000..097bdb395 --- /dev/null +++ b/advanced_loyalty_management/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import models diff --git a/advanced_loyalty_management/__manifest__.py b/advanced_loyalty_management/__manifest__.py new file mode 100644 index 000000000..511c021c2 --- /dev/null +++ b/advanced_loyalty_management/__manifest__.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': 'Advanced Loyalty Management', + 'version': '17.0.1.0.0', + 'category': 'Point of Sale', + 'summary': 'Advanced loyalty Management', + 'description': """When an order is refunded, any loyalty points gained from + that purchase are also revoked. This means that the points earned through + the refunded transaction will be deducted from the customer's loyalty + points balance.""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['pos_loyalty', 'sale'], + 'data': [ + 'views/loyalty_program_views.xml', + 'views/loyalty_reward_rule_views.xml', + 'views/res_partner_views.xml', + 'views/pos_order_line_views.xml', + 'views/loyalty_kanban_views.xml' + ], + 'assets': { + 'point_of_sale._assets_pos': [ + 'advanced_loyalty_management/static/src/xml/pos_loyalty_refund.xml', + 'advanced_loyalty_management/static/src/js/pos_loyalty_deduction.js', + 'advanced_loyalty_management/static/src/xml/pos_loyalty_receipt.xml', + 'advanced_loyalty_management/static/src/js/pos_loyalty_deduction_receipt.js', + 'advanced_loyalty_management/static/src/xml/pos_loyalty_change.xml', + 'advanced_loyalty_management/static/src/js/pos_loyalty_change.js', + 'advanced_loyalty_management/static/src/xml/pos_loyalty_popup.xml', + 'advanced_loyalty_management/static/src/js/pos_loyalty_popups.js', + 'advanced_loyalty_management/static/src/js/pos_reward_button.js', + 'advanced_loyalty_management/static/src/xml/pos_redeem_reward_popup.xml', + 'advanced_loyalty_management/static/src/js/pos_reward_redeem_popup.js', + 'advanced_loyalty_management/static/src/js/pos_loyalty_card.js', + 'advanced_loyalty_management/static/src/js/pos_payment_screen.js', + 'advanced_loyalty_management/static/src/js/pos_ticketscreen.js', + ], + }, + 'images': ['static/description/banner.jpg'], + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/advanced_loyalty_management/doc/RELEASE_NOTES.md b/advanced_loyalty_management/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..ffa51db38 --- /dev/null +++ b/advanced_loyalty_management/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 08.04.2024 +#### Version 17.0.1.0.0 +#### ADD +- Initial Commit for Advanced Loyalty Management diff --git a/advanced_loyalty_management/models/__init__.py b/advanced_loyalty_management/models/__init__.py new file mode 100644 index 000000000..ece25bd25 --- /dev/null +++ b/advanced_loyalty_management/models/__init__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import loyalty_program +from . import loyalty_reward +from . import pos_order_line +from . import pos_refund +from . import pos_session +from . import res_partner diff --git a/advanced_loyalty_management/models/loyalty_program.py b/advanced_loyalty_management/models/loyalty_program.py new file mode 100644 index 000000000..b82f85280 --- /dev/null +++ b/advanced_loyalty_management/models/loyalty_program.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, models, fields + + +class LoyaltyProgram(models.Model): + """To set the point rate when change is converted to loyalty points""" + _inherit = 'loyalty.program' + + point_rate = fields.Integer(string='Point Rate', + help="Points corresponding to each unit", + default=1, required=True) + change_rate = fields.Monetary(string='Change Rate', default=1, + readonly=True, + help="Unit of money per points cost") + currency_id = fields.Many2one('res.currency', string='Currency', + default=lambda + self: self.env.user.company_id.currency_id, + help="Symbol of Currency") + + @api.model + def convert_loyalty(self, pid, cid, loyalty, partner_id): + """converting the change to loyalty points""" + if int(cid[0]) < 0: + self.env['loyalty.card'].create({ + 'program_id': pid[0], + 'partner_id': partner_id[0], + 'points': loyalty[0] + }) + + else: + loyalty_card = self.env['loyalty.card'].search( + [('id', '=', int(cid[0]))]) + loyalty_card.points += loyalty[0] diff --git a/advanced_loyalty_management/models/loyalty_reward.py b/advanced_loyalty_management/models/loyalty_reward.py new file mode 100644 index 000000000..a22889f53 --- /dev/null +++ b/advanced_loyalty_management/models/loyalty_reward.py @@ -0,0 +1,78 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, models, fields + + +class LoyaltyReward(models.Model): + """To create new reward type """ + _inherit = 'loyalty.reward' + + reward_type = fields.Selection(selection_add=[('redemption', 'Redemption')], + ondelete={'redemption': 'cascade'}, + help="Reward Type") + redemption_point = fields.Integer(string='Redemption Point', default=1.0, + readonly=True, + help="No of points redeemed according " + "to the redemption amount") + redemption_amount = fields.Float(string='Maximum Redemption per Point', + default=1.00, required=True, + help="Maximum Redemption per redemption " + "point") + max_redemption_type = fields.Selection( + [('amount', 'Amount'), ('percent', 'Percentage'), ('points', 'Points')], + default="amount", + required=True, + help="Redemption type based on Fixed Amount,percentage or Point wise") + max_redemption_amount = fields.Float(string='Max Redemption Amount', + default=10, required=True, + help="Maximum redemption amount " + "given to an order") + redemption_frequency = fields.Integer(string='Redemption Frequency', + default=1, required=True, + help="Number of times this reward " + "can be claimed") + redemption_frequency_unit = fields.Selection([('day', 'Daily'), + ('week', 'Weekly'), + ('month', 'Monthly'), + ('year', 'Yearly')], + default='day', required=True, + string='Redemption Frequency' + 'Unit', + help="Choose the frequency " + "for claiming the reward") + redemption_eligibility = fields.Float(string="Redemption Eligibility", + default=200, + help="points required for claiming " + "the reward") + + @api.depends('reward_type', 'reward_product_id', 'discount_mode', + 'discount', 'currency_id', 'discount_applicability', + 'all_discount_product_ids') + def _compute_description(self): + """compute description when the reward type is redemption""" + for reward in self: + if reward.reward_type == 'redemption': + reward.description = 'Redemption' + else: + res = super(LoyaltyReward, + self)._compute_description() + return res diff --git a/advanced_loyalty_management/models/pos_order_line.py b/advanced_loyalty_management/models/pos_order_line.py new file mode 100644 index 000000000..67557363a --- /dev/null +++ b/advanced_loyalty_management/models/pos_order_line.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, models, fields + + +class PosOrderLine(models.Model): + """To Show the redeemed points in the redemption history""" + _inherit = 'pos.order.line' + + points_remaining = fields.Float(string="Points Remaining", + help="Remaining points after claming the " + "reward") + + @api.model + def remaining_points(self, balance, token): + """Remaining points calculated after claiming the reward""" + order = self.env['pos.order'].search([('access_token', '=', token[0])]) + pos_order_line = self.env['pos.order.line'].search( + [('is_reward_line', '=', 'true'), ('order_id', '=', order.id)]) + pos_order_line.points_remaining = balance[0] diff --git a/advanced_loyalty_management/models/pos_refund.py b/advanced_loyalty_management/models/pos_refund.py new file mode 100644 index 000000000..63eb3237a --- /dev/null +++ b/advanced_loyalty_management/models/pos_refund.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import models, fields + + +class PosOrder(models.Model): + """To deduct the loyalty points when order is refunded""" + _inherit = 'pos.order' + + check = fields.Boolean() + + def _compute_order_name(self): + """Compute the loyalty points when order is refunded""" + res = super()._compute_order_name() + partner_id = self.partner_id + li = [line.mapped('price_subtotal_incl') for line + in self.lines.filtered(lambda x: not x.is_reward_line)] + reward_line = self.refunded_order_ids.lines.filtered( + lambda x: x.is_reward_line) + points_cost = [] + for line in reward_line: + dict = {} + dict.update({ + line.coupon_id.id: line.points_cost + }) + points_cost.append(dict) + if self.refunded_order_ids: + cards = self.env['loyalty.card'].search( + [('partner_id', '=', partner_id.id)]) + + for program in cards: + if not self.refunded_order_ids.check: + for point in points_cost: + for key, values in point.items(): + if program.id == key: + program.points += point[key] + self.refunded_order_ids.check = True + + for rule in program.program_id.rule_ids: + if rule.reward_point_mode == 'money': + points_granted = rule.reward_point_amount + reward_points = [sum(sublist) * points_granted for + sublist in li] + program.points += reward_points[0] + elif rule.reward_point_mode == 'order': + reward_points = rule.reward_point_amount + reward_line_ids = len(reward_line) + ordered_qty = sum(self.refunded_order_ids.lines.mapped( + 'qty')) - reward_line_ids + refunded_qty = sum( + self.refunded_order_ids.lines.filtered( + lambda x: not x.is_reward_line).mapped( + 'refunded_qty')) + if ordered_qty == refunded_qty: + program.points -= reward_points + elif rule.reward_point_mode == 'unit': + points_granted = rule.reward_point_amount + qty = sum( + self.lines.filtered( + lambda x: not x.is_reward_line).mapped('qty')) + reward_points = qty * points_granted + program.points += reward_points + return res diff --git a/advanced_loyalty_management/models/pos_session.py b/advanced_loyalty_management/models/pos_session.py new file mode 100644 index 000000000..a173a3d54 --- /dev/null +++ b/advanced_loyalty_management/models/pos_session.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import models + + +class PosSession(models.Model): + """to load more fields in loyalty program and loyalty model""" + _inherit = 'pos.session' + + def _loader_params_loyalty_program(self): + """To load more fields in the model loyalty.program""" + result = super()._loader_params_loyalty_program() + result['search_params']['fields'].extend(['point_rate', 'change_rate']) + return result + + def _loader_params_loyalty_reward(self): + """to load more fields in the model loyalty.reward""" + result = super()._loader_params_loyalty_reward() + result['search_params']['fields'].extend( + ['redemption_point', 'redemption_amount', 'max_redemption_amount', + 'redemption_frequency', + 'redemption_frequency_unit', 'redemption_eligibility', + 'max_redemption_type']) + return result + + def _loader_params_res_partner(self): + result = super()._loader_params_res_partner() + result['search_params']['fields'].extend(['pos_order_ids']) + return result diff --git a/advanced_loyalty_management/models/res_partner.py b/advanced_loyalty_management/models/res_partner.py new file mode 100644 index 000000000..9f86be98f --- /dev/null +++ b/advanced_loyalty_management/models/res_partner.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2024-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import api, models, fields + + +class ResPartner(models.Model): + """To show the redemption history in the customer's form""" + _inherit = 'res.partner' + + pos_order_ids = fields.One2many('pos.order', inverse_name="partner_id", + domain="[('partner_id','=',self.id)]") + + def action_view_redemption_history(self): + """Smart button to view the rewards claimed by the customers""" + order_id = self.env['pos.order'].search( + [('partner_id', '=', self.id)]).ids + return { + 'type': 'ir.actions.act_window', + 'name': 'Redemption History', + 'view_mode': 'tree,form', + 'res_model': 'pos.order.line', + 'domain': [('is_reward_line', '=', 'true'), + ('order_id', 'in', order_id)], + 'context': "{'create': False}" + } + + @api.model + def check_redemption(self, pid): + """to check number of times the reward is claimed""" + order = self.env['pos.order'].search([('partner_id', '=', pid[0])]) + data = [] + date = [] + order_line = self.env['pos.order.line'].search( + [('is_reward_line', '=', 'true'), ('order_id', 'in', order.ids)]) + for line in order_line: + data.append(line.order_id.id) + date.append(line.create_date.date()) + + return data, date diff --git a/advanced_loyalty_management/static/description/assets/icons/check.png b/advanced_loyalty_management/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/check.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/chevron.png b/advanced_loyalty_management/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/chevron.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/cogs.png b/advanced_loyalty_management/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/cogs.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/consultation.png b/advanced_loyalty_management/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/consultation.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/ecom-black.png b/advanced_loyalty_management/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/ecom-black.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/education-black.png b/advanced_loyalty_management/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/education-black.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/hotel-black.png b/advanced_loyalty_management/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/hotel-black.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/license.png b/advanced_loyalty_management/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/license.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/lifebuoy.png b/advanced_loyalty_management/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/lifebuoy.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/manufacturing-black.png b/advanced_loyalty_management/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/manufacturing-black.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/pos-black.png b/advanced_loyalty_management/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/pos-black.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/puzzle.png b/advanced_loyalty_management/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/puzzle.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/restaurant-black.png b/advanced_loyalty_management/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/restaurant-black.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/service-black.png b/advanced_loyalty_management/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/service-black.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/trading-black.png b/advanced_loyalty_management/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/trading-black.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/training.png b/advanced_loyalty_management/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/training.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/update.png b/advanced_loyalty_management/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/update.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/user.png b/advanced_loyalty_management/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/user.png differ diff --git a/advanced_loyalty_management/static/description/assets/icons/wrench.png b/advanced_loyalty_management/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/icons/wrench.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/Cybrosys R.png b/advanced_loyalty_management/static/description/assets/misc/Cybrosys R.png new file mode 100644 index 000000000..da4058087 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/Cybrosys R.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/categories.png b/advanced_loyalty_management/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/categories.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/check-box.png b/advanced_loyalty_management/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/check-box.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/compass.png b/advanced_loyalty_management/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/compass.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/corporate.png b/advanced_loyalty_management/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/corporate.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/customer-support.png b/advanced_loyalty_management/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/customer-support.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/cybrosys-logo.png b/advanced_loyalty_management/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/cybrosys-logo.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/email.svg b/advanced_loyalty_management/static/description/assets/misc/email.svg new file mode 100644 index 000000000..15291cdc3 --- /dev/null +++ b/advanced_loyalty_management/static/description/assets/misc/email.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/advanced_loyalty_management/static/description/assets/misc/features.png b/advanced_loyalty_management/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/features.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/logo.png b/advanced_loyalty_management/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/logo.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/phone.svg b/advanced_loyalty_management/static/description/assets/misc/phone.svg new file mode 100644 index 000000000..b7bd7f251 --- /dev/null +++ b/advanced_loyalty_management/static/description/assets/misc/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/advanced_loyalty_management/static/description/assets/misc/pictures.png b/advanced_loyalty_management/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/pictures.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/pie-chart.png b/advanced_loyalty_management/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/pie-chart.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/right-arrow.png b/advanced_loyalty_management/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/right-arrow.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/star (1) 2.svg b/advanced_loyalty_management/static/description/assets/misc/star (1) 2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/advanced_loyalty_management/static/description/assets/misc/star (1) 2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/advanced_loyalty_management/static/description/assets/misc/star.png b/advanced_loyalty_management/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/star.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/support (1) 1.svg b/advanced_loyalty_management/static/description/assets/misc/support (1) 1.svg new file mode 100644 index 000000000..7d37a8f30 --- /dev/null +++ b/advanced_loyalty_management/static/description/assets/misc/support (1) 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/advanced_loyalty_management/static/description/assets/misc/support-email.svg b/advanced_loyalty_management/static/description/assets/misc/support-email.svg new file mode 100644 index 000000000..eb70370d6 --- /dev/null +++ b/advanced_loyalty_management/static/description/assets/misc/support-email.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/advanced_loyalty_management/static/description/assets/misc/support.png b/advanced_loyalty_management/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/support.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/tick-mark.svg b/advanced_loyalty_management/static/description/assets/misc/tick-mark.svg new file mode 100644 index 000000000..2dbb40187 --- /dev/null +++ b/advanced_loyalty_management/static/description/assets/misc/tick-mark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/advanced_loyalty_management/static/description/assets/misc/whatsapp 1.svg b/advanced_loyalty_management/static/description/assets/misc/whatsapp 1.svg new file mode 100644 index 000000000..0bfaf8fc6 --- /dev/null +++ b/advanced_loyalty_management/static/description/assets/misc/whatsapp 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/advanced_loyalty_management/static/description/assets/misc/whatsapp.png b/advanced_loyalty_management/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/misc/whatsapp.png differ diff --git a/advanced_loyalty_management/static/description/assets/misc/whatsapp.svg b/advanced_loyalty_management/static/description/assets/misc/whatsapp.svg new file mode 100644 index 000000000..b618aea1d --- /dev/null +++ b/advanced_loyalty_management/static/description/assets/misc/whatsapp.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/advanced_loyalty_management/static/description/assets/modules/1.jpg b/advanced_loyalty_management/static/description/assets/modules/1.jpg new file mode 100644 index 000000000..92c3c3af6 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/modules/1.jpg differ diff --git a/advanced_loyalty_management/static/description/assets/modules/2.png b/advanced_loyalty_management/static/description/assets/modules/2.png new file mode 100644 index 000000000..1cf1c53ff Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/modules/2.png differ diff --git a/advanced_loyalty_management/static/description/assets/modules/3.png b/advanced_loyalty_management/static/description/assets/modules/3.png new file mode 100644 index 000000000..cad60ef80 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/modules/3.png differ diff --git a/advanced_loyalty_management/static/description/assets/modules/4.jpg b/advanced_loyalty_management/static/description/assets/modules/4.jpg new file mode 100644 index 000000000..96f7cf8b9 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/modules/4.jpg differ diff --git a/advanced_loyalty_management/static/description/assets/modules/5.jpg b/advanced_loyalty_management/static/description/assets/modules/5.jpg new file mode 100644 index 000000000..96bff5760 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/modules/5.jpg differ diff --git a/advanced_loyalty_management/static/description/assets/modules/6.jpg b/advanced_loyalty_management/static/description/assets/modules/6.jpg new file mode 100644 index 000000000..42742c0e7 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/modules/6.jpg differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/hero-v17.gif b/advanced_loyalty_management/static/description/assets/screenshots/hero-v17.gif new file mode 100644 index 000000000..9c7c0269c Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/hero-v17.gif differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot1.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot1.png new file mode 100644 index 000000000..4ab042985 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot1.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot10.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot10.png new file mode 100644 index 000000000..8a62c3c31 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot10.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot11.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot11.png new file mode 100644 index 000000000..3e774ffcc Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot11.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot12.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot12.png new file mode 100644 index 000000000..40d9ba1af Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot12.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot13.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot13.png new file mode 100644 index 000000000..6bf2bd1bf Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot13.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot14.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot14.png new file mode 100644 index 000000000..251824be9 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot14.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot15.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot15.png new file mode 100644 index 000000000..3013d6288 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot15.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot16.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot16.png new file mode 100644 index 000000000..e32318657 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot16.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot17.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot17.png new file mode 100644 index 000000000..73dc968f3 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot17.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot18.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot18.png new file mode 100644 index 000000000..90b7b8e8f Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot18.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot19.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot19.png new file mode 100644 index 000000000..2819fef7b Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot19.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot2.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot2.png new file mode 100644 index 000000000..2ae4e7d30 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot2.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot20.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot20.png new file mode 100644 index 000000000..a6109fac1 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot20.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot21.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot21.png new file mode 100644 index 000000000..22a2add9d Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot21.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot22.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot22.png new file mode 100644 index 000000000..cb3e1de9f Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot22.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot23.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot23.png new file mode 100644 index 000000000..029806d91 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot23.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot24.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot24.png new file mode 100644 index 000000000..048541b1c Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot24.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot25.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot25.png new file mode 100644 index 000000000..e2b6259b7 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot25.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot26.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot26.png new file mode 100644 index 000000000..df967a93d Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot26.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot27.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot27.png new file mode 100644 index 000000000..b6fcdf713 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot27.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot28.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot28.png new file mode 100644 index 000000000..956c8766b Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot28.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot29.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot29.png new file mode 100644 index 000000000..3fc413dce Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot29.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot3.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot3.png new file mode 100644 index 000000000..e3960bc32 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot3.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot30.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot30.png new file mode 100644 index 000000000..9bbf21a0b Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot30.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot31.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot31.png new file mode 100644 index 000000000..6c0e8734a Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot31.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot32.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot32.png new file mode 100644 index 000000000..2c7f0ba49 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot32.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot33.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot33.png new file mode 100644 index 000000000..a1f763d1a Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot33.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot34.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot34.png new file mode 100644 index 000000000..80a2a5d35 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot34.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot35.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot35.png new file mode 100644 index 000000000..202c57c83 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot35.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot36.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot36.png new file mode 100644 index 000000000..e54047c4e Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot36.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot37.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot37.png new file mode 100644 index 000000000..8acf7a94d Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot37.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot38.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot38.png new file mode 100644 index 000000000..2fe46b26a Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot38.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot39.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot39.png new file mode 100644 index 000000000..a3636c784 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot39.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot40.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot40.png new file mode 100644 index 000000000..58aeed9a7 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot40.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot41.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot41.png new file mode 100644 index 000000000..270bed3cd Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot41.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot42.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot42.png new file mode 100644 index 000000000..069904e55 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot42.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot43.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot43.png new file mode 100644 index 000000000..0f7416844 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot43.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot44.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot44.png new file mode 100644 index 000000000..2266c000a Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot44.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot45.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot45.png new file mode 100644 index 000000000..45d281c96 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot45.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot46.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot46.png new file mode 100644 index 000000000..446db5ad5 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot46.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot47.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot47.png new file mode 100644 index 000000000..c67304a5d Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot47.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot48.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot48.png new file mode 100644 index 000000000..7d67c7482 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot48.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot49.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot49.png new file mode 100644 index 000000000..327efa1a8 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot49.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot50.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot50.png new file mode 100644 index 000000000..bdb3a263d Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot50.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot51.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot51.png new file mode 100644 index 000000000..b4a7eb6cd Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot51.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot52.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot52.png new file mode 100644 index 000000000..8202a7ead Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot52.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot53.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot53.png new file mode 100644 index 000000000..26e9adb5d Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot53.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot54.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot54.png new file mode 100644 index 000000000..1579299cc Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot54.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot55.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot55.png new file mode 100644 index 000000000..f6297613b Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot55.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot56.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot56.png new file mode 100644 index 000000000..283a3ecaa Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot56.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot57.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot57.png new file mode 100644 index 000000000..e34710b19 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot57.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot58.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot58.png new file mode 100644 index 000000000..e98f06168 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot58.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot59.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot59.png new file mode 100644 index 000000000..aa44a2eba Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot59.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot6.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot6.png new file mode 100644 index 000000000..d101602f0 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot6.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot60.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot60.png new file mode 100644 index 000000000..f37500aa8 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot60.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot61.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot61.png new file mode 100644 index 000000000..6d0a8171a Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot61.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot62.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot62.png new file mode 100644 index 000000000..d7c94b2b3 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot62.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot63.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot63.png new file mode 100644 index 000000000..69bb1a7ab Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot63.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot64.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot64.png new file mode 100644 index 000000000..c974335c3 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot64.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot65.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot65.png new file mode 100644 index 000000000..93614cb70 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot65.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot66.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot66.png new file mode 100644 index 000000000..4b4be0fb6 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot66.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot67.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot67.png new file mode 100644 index 000000000..834d94e7e Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot67.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot68.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot68.png new file mode 100644 index 000000000..cb973de18 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot68.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot69.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot69.png new file mode 100644 index 000000000..07e717a23 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot69.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot7.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot7.png new file mode 100644 index 000000000..9a2c6d2bf Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot7.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot70.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot70.png new file mode 100644 index 000000000..c742a25d0 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot70.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot71a.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot71a.png new file mode 100644 index 000000000..ff9ff1b93 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot71a.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot71b.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot71b.png new file mode 100644 index 000000000..34d21669f Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot71b.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot72.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot72.png new file mode 100644 index 000000000..d6d5c4337 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot72.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot73.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot73.png new file mode 100644 index 000000000..c29920cee Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot73.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot74.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot74.png new file mode 100644 index 000000000..89a5f3260 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot74.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot75.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot75.png new file mode 100644 index 000000000..4030b718d Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot75.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot76.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot76.png new file mode 100644 index 000000000..fec8a16fe Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot76.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot77.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot77.png new file mode 100644 index 000000000..8eb0ec30f Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot77.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot78.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot78.png new file mode 100644 index 000000000..05611641d Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot78.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot79.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot79.png new file mode 100644 index 000000000..f621cd066 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot79.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot8.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot8.png new file mode 100644 index 000000000..00e4b464c Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot8.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot80.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot80.png new file mode 100644 index 000000000..0c5b63f6b Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot80.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot81.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot81.png new file mode 100644 index 000000000..ba18ff7d4 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot81.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot82.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot82.png new file mode 100644 index 000000000..ab683442f Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot82.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot83.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot83.png new file mode 100644 index 000000000..1c1165c99 Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot83.png differ diff --git a/advanced_loyalty_management/static/description/assets/screenshots/screenshot9.png b/advanced_loyalty_management/static/description/assets/screenshots/screenshot9.png new file mode 100644 index 000000000..ff37b0a5f Binary files /dev/null and b/advanced_loyalty_management/static/description/assets/screenshots/screenshot9.png differ diff --git a/advanced_loyalty_management/static/description/banner.jpg b/advanced_loyalty_management/static/description/banner.jpg new file mode 100644 index 000000000..7f9fb587c Binary files /dev/null and b/advanced_loyalty_management/static/description/banner.jpg differ diff --git a/advanced_loyalty_management/static/description/icon.png b/advanced_loyalty_management/static/description/icon.png new file mode 100644 index 000000000..8f11a8d5b Binary files /dev/null and b/advanced_loyalty_management/static/description/icon.png differ diff --git a/advanced_loyalty_management/static/description/index.html b/advanced_loyalty_management/static/description/index.html new file mode 100644 index 000000000..a5237b494 --- /dev/null +++ b/advanced_loyalty_management/static/description/index.html @@ -0,0 +1,1588 @@ + + + + + + Advanced Loyalty Management + + + + + + + + +
+
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+
+
+
+

+ Advanced Loyalty Management

+

+ In this module, we have incorporated new features such as + deducting loyalty points upon refund, converting change into + loyalty points, displaying claimed rewards history, and + introducing a new type of reward

+ +
+ +
+
+
+
+
+

+ Key Highlights +

+
+
+
+
+
+ +
+
+

+ Loyalty deduction on Refund

+

In this module + This module helps in deducting the loyalty + points on + refund .

+
+
+
+
+
+
+ +
+
+

+ Convert Change to loyalty points

+

In this module + We can convert the Change into Loyalty + points.

+
+
+
+
+
+
+ +
+
+

+ History of Claimed Rewards

+

We can see + Claimed + Rewards History in customer's page. +

+
+
+
+
+
+
+ +
+
+

+ Introducing New Reward Type

+

Introducing New + Reward type Redemption in Loyalty reward, where + we + can redeem our points +

+
+
+
+
+
+ +
+
+
+
+
+ +
+
+ +
+
+ +
+ +
+

+ Created a Loyalty program with rule 1 point + for + per $ spent.We see How it added to order and + Pos + screen and Receipt . Lets see how it reduced + on + refund

+
+
+
+ +
+
+
+ +
+ +
+

+ + We can observe how the loyalty points are + deducted when the order is refunded.Firstly, + we + can see refunding 1 quantity

+
+
+
+
+
+
+ +
+
+

+ + We can see the points deducted for the + corresponding quantity refunded.

+
+
+
+
+
+
+ +
+ +
+

+ We can see it in the receipt

+
+
+
+
+
+
+ +
+
+

+ + It is also reflected on the customer's + page.

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+

+ Next, we can process a refund for two + quantities + and examine how it is reflected in the POS + screen, on the receipt, and on the + customer's + page.

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+

+ Next, we can process a refund for the final + quantity and examine how it is reflected in + the + POS screen, on the receipt, and on the + customer's page.

+
+
+
+
+
+
+ +
+ +
+

+ We can create another loyalty program with + rule + 10 points per order, We can see how it + reflects + in the pos screen receipt

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+ +
+

+ We can see the points given in the pos + screen, + reciept and customer's page. Now we can + examine + how it deducts on refund

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+

+ We can see in this loyalty program we give + points to an order. so when the whole + quantity + is refunded only, we can deduct the + points

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+

+ We can see when the final quantity is + refunded + the point is deducted

+
+
+
+
+
+
+ +
+ +
+

+ We can create another loyalty program with + rule + 5 points per unit, We can see how it + reflects in + the pos screen receipt

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+ +
+

+ We can see the points given in the pos + screen, + reciept and customer's page. Now we can + examine + how it deducts on refund

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+

+ We refund 1 quantity , so points for 1 + quantity + is reduced from loyalty cards

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+

+ We refund 3 quantity , so points for 3 + quantity + is reduced from loyalty cards

+
+
+
+
+
+
+ +
+ +
+

+ Next, we can examine the scenario of claimed + rewards

+
+
+
+
+
+
+ +
+ +
+

+ In POS we can see reward is claimed

+
+
+
+
+
+
+ +
+ +
+

+ It can be seen in receipt

+
+
+
+
+
+
+ +
+ +
+

+ The change of points also in customer's + page

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+

+ We can refund a quantity and check how the + change in points in pos screen,receipt and + customer's page

+
+
+
+
+
+
+ +
+ +
+

+ Now we refund the pending quantity, and + tried to + refund the reward line also, + so a warning will appear no refund of reward + line is possible because it will conflict + the + calculation of loyalty points.

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+

+ Continue the process of refund and lets + examine + how the point changes in pos screen , + recipet + and customer's page.

+
+
+
+
+
+
+ +
+ +
+

+ The next scenario involves converting change + to + loyalty points. To facilitate this, we have + introduced a new field in the loyalty + program + for the conversion rate per dollar.

+
+
+
+
+
+
+ +
+ +
+

+ We create a sales order directly from the + POS + interface.

+
+
+
+
+
+
+ +
+ +
+

+ We create a button under the change to + convert + the loyalty.

+
+
+
+
+
+
+ +
+ +
+

+ We can choose to which program the points is + to + be added.

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+

+ We can choose to which program the points is + to + be added. and it is added to loyalty + cards

+
+
+
+
+
+
+ +
+ +
+

+ We can see the claimed rewards history in + this + smart tab in the customer's page.

+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+

+ We can see the history of claimed rewards in + customer's page.

+
+
+
+
+
+
+ +
+ +
+

+ A new Reward type is added in the loyalty + program. We can set condition in the reward + form

+
+
+
+
+
+
+ +
+ +
+

+ This reward type can be claimed to the + customer + when the customer is purchasing for the + second + time

+
+
+
+
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+

+ No we can claim the reward and redeem the + points

+
+
+
+
+
+
+ +
+
+ +
+ +
+

+ we can see once this reward is claimed + according + to redemption frequency we cant claim it + again

+
+
+
+
+
+
+ +
+
+ +
+ +
+

+ We can set Max redemption amount and how + much + point per dollar cost ,then in pos we can + see + the points in popup

+
+
+
+
+
+
+ +
+
+ +
+ +
+

+ We can set Max redemption type as percent + and + there by calculating the order's 10 % as + redeem + points

+
+
+
+
+ +
+
+
    +
  • + Deduct Loyalty + points on refund +
  • +
  • + Convert Change + to Loyalty Points +
  • +
  • + History of + Claimed rewards of Customers +
      +
    • +
    • +
    +
  • +
  • + New reward type + introduced where we can redeem our points + directly +
      +
    • +
    • +
    +
  • +
+
+
+
+
+
+
Version + 17.0.1.0.0|Released on: 12th April 2024 +
+

+ + Initial Commit for Advanced Loyalty + Management.

+
+
+
+
+
+
+
+

+ Related Products

+
+
+ +
+
+

+ Our Services

+ +
+
+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Customization

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Support

+
+
+
+
+
+
+ service-icon +
+
+

Hire + Odoo Developer

+
+
+
+
+ +
+
+ service-icon +
+
+

Odoo + Integration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Migration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Consultancy

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Licensing Consultancy

+
+
+
+
+
+
+

+ Our Industries

+ +
+
+
+
+
+
+ +

Trading

+

Easily procure and sell your products

+
+
+
+
+ +

POS

+

Easy configuration and convivial experience

+
+
+
+
+ +

+ Education

+

A platform for educational management

+
+
+
+
+ +

+ Manufacturing

+

Plan, track and schedule your operations

+
+
+
+
+ +

E-commerce & + Website

+

Mobile friendly, awe-inspiring product pages

+
+
+
+
+ +

Service + Management

+

Keep track of services and invoice

+
+
+
+
+ +

+ Restaurant

+

Run your bar or restaurant methodically

+
+
+
+
+ +

Hotel + Management

+

An all-inclusive hotel management application

+
+
+
+
+
+
+

+ Support

+
+
+
+
+
+
+
+ +
+ Need + Help? +

Got + questions or need help? Get in touch.

+
odoo@cybrosys.com +
+
+
+
+
+
+
+
+ +
+ WhatsApp +

Say hi to + us on WhatsApp!

+
+91 + 99456767686 +
+
+
+
+
+
+
+
+
+ + + + + + diff --git a/advanced_loyalty_management/static/src/js/pos_loyalty_card.js b/advanced_loyalty_management/static/src/js/pos_loyalty_card.js new file mode 100644 index 000000000..16a253878 --- /dev/null +++ b/advanced_loyalty_management/static/src/js/pos_loyalty_card.js @@ -0,0 +1,179 @@ +/** @odoo-module **/ + +import { patch } from "@web/core/utils/patch"; +import { Order } from "@point_of_sale/app/store/models"; +import { roundPrecision as round_pr } from "@web/core/utils/numbers"; +import { + formatDate, + serializeDateTime, + deserializeDate, +} from "@web/core/l10n/dates"; + +function _newRandomRewardCode() { + return (Math.random() + 1).toString(36).substring(3); +} + +patch(Order.prototype,{ + + _getRewardLineValues(args) { + //---added the new reward type to this function---- + const reward = args["reward"]; + if (reward.reward_type === "discount") { + return this._getRewardLineValuesDiscount(args); + } else if (reward.reward_type === "product") { + return this._getRewardLineValuesProduct(args); + } else if (reward.reward_type === "redemption"){ + return this._getRewardLineValuesRedemption(args)} + }, + + _getRewardLineValuesRedemption(args){ + //---reward product for the reward 'redemption'--- + const reward = args["reward"]; + const coupon_id = args["coupon_id"]; + const rewardAppliesTo = reward.discount_applicability; + let getDiscountable; + getDiscountable = this._getDiscountableOnOrder.bind(this); + let { discountable, discountablePerTax } = getDiscountable(reward); + discountable = Math.min(this.get_total_with_tax(), discountable); + const discount = reward.pointsToRedeem * reward.redemption_amount + const discountProduct = reward.discount_line_product_id; + const rewardCode = _newRandomRewardCode(); + const points = this._getRealCouponPoints(args["coupon_id"]) + const cost = reward.clear_wallet ? points :reward.pointsToRedeem + return[ + { + product: discountProduct, + price: -Math.min(discount), + quantity: 1, + reward_id: reward.id, + is_reward_line: true, + coupon_id: coupon_id, + points_cost: cost, + reward_identifier_code: rewardCode, + merge: false, + tax_ids: [], + }, + ] + }, + + getLoyaltyPoints() { + //------change is added to loyalty points--- + // map: couponId -> LoyaltyPoints + const loyaltyPoints = {}; + for (const pointChange of Object.values(this.couponPointChanges)) { + const { coupon_id, points, program_id } = pointChange; + const program = this.pos.program_by_id[program_id]; + if (program.program_type !== "loyalty") { + // Not a loyalty program, skip + continue; + } + const loyaltyCard = this.pos.couponCache[coupon_id] || /* or new card */ { + id: coupon_id, + balance: 0, + }; + let [won, spent, total] = [0, 0, 0]; + + var balance = loyaltyCard.balance; + if(this.pos.get_order().convertToLoyalty == undefined){ + won += points - this._getPointsCorrection(program); + } + else{ + won += points - this._getPointsCorrection(program); + if(program_id === this.pos.get_order().programToAdd){ + won += this.pos.get_order().convertToLoyalty + } + } + if (coupon_id !== 0) { + for (const line of this._get_reward_lines()) { + if (line.coupon_id === coupon_id) { + spent += line.points_cost; + } + } + } + total = balance + won - spent; + const name = program.portal_visible ? program.portal_point_name : _t("Points"); + loyaltyPoints[coupon_id] = { + won: parseFloat(won.toFixed(2)), + spent: parseFloat(spent.toFixed(2)), + total: parseFloat(total.toFixed(2)), + balance: parseFloat(balance.toFixed(2)), + name, + program, + }; + } + + return Object.entries(loyaltyPoints).map(([couponId, points]) => ({ + couponId, + points, + program: points.program, + })); + }, + + get_change(paymentline) { + //----change is modified when change is added to loyalty points---- + if (!paymentline) { + if(this.changeConverted == undefined){ + var change = + this.get_total_paid() - this.get_total_with_tax() - this.get_rounding_applied(); + } + else{ + var change = 0 + } + } else { + change = -this.get_total_with_tax(); + var lines = this.paymentlines; + for (var i = 0; i < lines.length; i++) { + change += lines[i].get_amount(); + if (lines[i] === paymentline) { + break; + } + } + } + return round_pr(Math.max(0, change), this.pos.currency.rounding); + }, + + export_as_JSON() { + //when change is converted the amount returned is changed + var orderLines, paymentLines; + orderLines = []; + this.orderlines.forEach((item) => { + return orderLines.push([0, 0, item.export_as_JSON()]); + }); + paymentLines = []; + this.paymentlines.forEach((item) => { + const itemAsJson = item.export_as_JSON(); + if (itemAsJson) { + return paymentLines.push([0, 0, itemAsJson]); + } + }); + var json = { + name: this.get_name(), + amount_paid: this.get_total_paid() - this.get_change(), + amount_total: this.get_total_with_tax(), + amount_tax: this.get_total_tax(), + amount_return: this.get_total_paid() - this.get_total_with_tax() - this.get_rounding_applied(), + lines: orderLines, + statement_ids: paymentLines, + pos_session_id: this.pos_session_id, + pricelist_id: this.pricelist ? this.pricelist.id : false, + partner_id: this.get_partner() ? this.get_partner().id : false, + user_id: this.pos.user.id, + uid: this.uid, + sequence_number: this.sequence_number, + date_order: serializeDateTime(this.date_order), + fiscal_position_id: this.fiscal_position ? this.fiscal_position.id : false, + server_id: this.server_id ? this.server_id : false, + to_invoice: this.to_invoice ? this.to_invoice : false, + shipping_date: this.shippingDate ? this.shippingDate : false, + is_tipped: this.is_tipped || false, + tip_amount: this.tip_amount || 0, + access_token: this.access_token || "", + last_order_preparation_change: JSON.stringify(this.lastOrderPrepaChange), + ticket_code: this.ticketCode || "", + }; + if (!this.is_paid && this.user_id) { + json.user_id = this.user_id; + } + return json; + } +}) \ No newline at end of file diff --git a/advanced_loyalty_management/static/src/js/pos_loyalty_change.js b/advanced_loyalty_management/static/src/js/pos_loyalty_change.js new file mode 100644 index 000000000..b9bc12be6 --- /dev/null +++ b/advanced_loyalty_management/static/src/js/pos_loyalty_change.js @@ -0,0 +1,27 @@ +/** @odoo-module */ +import { PaymentScreenStatus } from "@point_of_sale/app/screens/payment_screen/payment_status/payment_status"; +import { CustomButtonPopup } from "@advanced_loyalty_management/js/pos_loyalty_popups"; +import { patch } from "@web/core/utils/patch"; +import { useService } from "@web/core/utils/hooks"; +import { usePos } from "@point_of_sale/app/store/pos_hook"; +import { _t } from "@web/core/l10n/translation"; + +patch(PaymentScreenStatus.prototype, { + + setup() { + this.pos = usePos(); + this.popup = useService("popup"); + }, + + async convertLoyalty(){ + //---a popup added when convert to loyalty button is clicked--- + const order = this.pos.get_order(); + await this.popup.add(CustomButtonPopup, { + title: _t("Loyalty Cards"), + loyalty_points: order.getLoyaltyPoints(), + change: order.get_change(), + order: order, + pos: this.pos, + }); + } +}); diff --git a/advanced_loyalty_management/static/src/js/pos_loyalty_deduction.js b/advanced_loyalty_management/static/src/js/pos_loyalty_deduction.js new file mode 100644 index 000000000..c40334d6b --- /dev/null +++ b/advanced_loyalty_management/static/src/js/pos_loyalty_deduction.js @@ -0,0 +1,64 @@ +/** @odoo-module **/ +import { Order } from "@point_of_sale/app/store/models"; +import { roundPrecision } from "@web/core/utils/numbers"; +import { _t } from "@web/core/l10n/translation"; +import { patch } from "@web/core/utils/patch"; + +patch(Order.prototype, { + + deductLoyaltyPoints(product) { + // -----------To show the deducted loyalty points on pos screen----------- + let refundedLines = this.get_orderlines().filter((line) => line.refunded_orderline_id + ); + let pointsReduced = []; + let newBalance = []; + let programName= []; + let valsList = []; + if (this.couponPointChanges) { + let refundedLines = this.get_orderlines().filter((line) => line.refunded_orderline_id); + let refundIds = refundedLines.map(line => line.refunded_orderline_id); + let rewardPoints = JSON.parse(localStorage.getItem('pointsCost')) + this.getLoyaltyPoints().forEach((record) => { + let { couponId, points, program } = record; + if (couponId > 0) { + let loyaltyCard = this.pos.couponCache[couponId]; + let programs = this.pos.program_by_id[loyaltyCard.program_id]; + let balance = loyaltyCard.balance; + let res = 0; + let ruleId = []; + programs.rules.forEach(rule => { + ruleId.push(rule.id); + let totalQuantity = 0; + for (let line of refundedLines) { + const refundedQty = line.pos.toRefundLines[line.refunded_orderline_id]?.orderline?.refundedQty - line.get_quantity() + switch (rule.reward_point_mode) { + case 'money': + res -= roundPrecision(rule.reward_point_amount * line.get_price_with_tax(), 0.01); + break; + case 'unit': + res -= rule.reward_point_amount * line.get_quantity(); + break; + default: + totalQuantity += line.pos.toRefundLines[line.refunded_orderline_id]?.orderline?.qty || 0; + res += totalQuantity === refundedQty ? rule.reward_point_amount : 0; + } + } + }) + for(var line of refundedLines){ + if(line.pos.toRefundLines[line.refunded_orderline_id]?.orderline?.refundedQty === 0 && rewardPoints.length != 0){ + for(var pointscost of rewardPoints){ + if (pointscost[couponId]){ + res -= pointscost[couponId] + } + } + } + } + let currentBalance = balance - res; + valsList.push({lostPoint: res, newPoint: currentBalance.toFixed(2), programName : programs.name, ruleId:ruleId }) + } + }) + } + this.pos.lostPoints = valsList; + return valsList; + }, +}) \ No newline at end of file diff --git a/advanced_loyalty_management/static/src/js/pos_loyalty_deduction_receipt.js b/advanced_loyalty_management/static/src/js/pos_loyalty_deduction_receipt.js new file mode 100644 index 000000000..e7d84986f --- /dev/null +++ b/advanced_loyalty_management/static/src/js/pos_loyalty_deduction_receipt.js @@ -0,0 +1,13 @@ +/** @odoo-module */ + +import { Order } from "@point_of_sale/app/store/models"; +import { patch } from "@web/core/utils/patch"; + +patch(Order.prototype, { + export_for_printing() { + //--------to show the deducted loyalty points details in the order receipt + const result = super.export_for_printing(...arguments); + result.pointsDeducted = this.pos.lostPoints + return result; + }, +}); diff --git a/advanced_loyalty_management/static/src/js/pos_loyalty_popups.js b/advanced_loyalty_management/static/src/js/pos_loyalty_popups.js new file mode 100644 index 000000000..bac507179 --- /dev/null +++ b/advanced_loyalty_management/static/src/js/pos_loyalty_popups.js @@ -0,0 +1,34 @@ +/** @odoo-module */ +import { AbstractAwaitablePopup } from "@point_of_sale/app/popup/abstract_awaitable_popup"; +import { _t } from "@web/core/l10n/translation"; +import { useService } from "@web/core/utils/hooks"; + +export class CustomButtonPopup extends AbstractAwaitablePopup { + static template = "custom_popup.CustomButtonPopup"; +// ------------------------------------- + setup(){ + this.orm = useService("orm"); + } + convertToLoyalty(props, programId,ev){ + //-------change converted to loyalty points + let convertToLoyalty = [] + var change = props.change + const loyalty = props.loyalty_points.filter(point => point.program.id ==programId)[0] + var addedLoyalty = change * loyalty.program.point_rate + convertToLoyalty.push(addedLoyalty) + props.order.programToAdd = programId + props.order.convertToLoyalty = convertToLoyalty[0] + props.order.changeConverted = true + const partner_id = props.order.partner.id + props.order.getLoyaltyPoints() + props.close() + const updateLoyalty = ev.orm.call("loyalty.program","convert_loyalty", + [[programId],[loyalty.couponId],[convertToLoyalty[0]],[partner_id]]) + } +// ---------------------------------------- + static defaultProps = { + closePopup: _t("Cancel"), + confirmText: _t("Save"), + title: _t("Customer Details"), + }; +} \ No newline at end of file diff --git a/advanced_loyalty_management/static/src/js/pos_payment_screen.js b/advanced_loyalty_management/static/src/js/pos_payment_screen.js new file mode 100644 index 000000000..81a551429 --- /dev/null +++ b/advanced_loyalty_management/static/src/js/pos_payment_screen.js @@ -0,0 +1,25 @@ +/** @odoo-module **/ + +import { PaymentScreen } from "@point_of_sale/app/screens/payment_screen/payment_screen"; +import { patch } from "@web/core/utils/patch"; + +patch(PaymentScreen.prototype, { + async afterOrderValidation(suggestToSync = true) { + //---remaining points calculated after claiming the reward is shown in the redemption history + const res = super.afterOrderValidation(...arguments); + if(this.pos.get_order().pointsCost != undefined){ + const order = this.pos.get_order() + const coupon = order.selectedCoupon + let pointsOfPartner = 0 + if(order.partner.loyalty_cards.length != undefined){ + pointsOfPartner += order.partner.loyalty_cards[coupon].points + } + const pointsWon = order.couponPointChanges[coupon].points + const pointsSpent = order.pointsCost + const balance = pointsOfPartner + pointsWon - pointsSpent + const token = order.access_token + const remaining_points = this.env.services.orm.call('pos.order.line','remaining_points',[[balance],[token]]) + } + return res + }, +}); diff --git a/advanced_loyalty_management/static/src/js/pos_reward_button.js b/advanced_loyalty_management/static/src/js/pos_reward_button.js new file mode 100644 index 000000000..c428027d0 --- /dev/null +++ b/advanced_loyalty_management/static/src/js/pos_reward_button.js @@ -0,0 +1,179 @@ +/** @odoo-module **/ + +import { RewardPopup } from "@advanced_loyalty_management/js/pos_reward_redeem_popup"; +import { patch } from "@web/core/utils/patch"; +import { SelectionPopup } from "@point_of_sale/app/utils/input_popups/selection_popup"; +import { RewardButton } from "@pos_loyalty/app/control_buttons/reward_button/reward_button"; +import { _t } from "@web/core/l10n/translation"; +import { session } from "@web/session"; +import { useState } from "@odoo/owl"; + +patch(RewardButton.prototype,{ + setup(){ + super.setup() + this.state = useState({ + frequency : 0, + }); + }, + + _mergeFreeProductRewards(freeProductRewards, potentialFreeProductRewards,redemption) { + //---reward type redemption is shown in list of rewards + const result = []; + for (const reward of potentialFreeProductRewards) { + if (!freeProductRewards.find((item) => item.reward.id === reward.reward.id)) { + result.push(reward); + } + } + for (const rew of redemption){ + result.push(rew) + } + return freeProductRewards.concat(result); + }, + + _getPotentialRewards() { + //---Reward type redemption is included in the list of claimable rewards--- + const order = this.pos.get_order(); + const partner_id = this.pos.get_order().partner + let rewards = []; + if (order) { + const claimableRewards = order.getClaimableRewards(); + rewards = claimableRewards.filter( + ({ reward }) => reward.program_id.program_type !== "ewallet" + ); + } + var pointCheck = false + for (const pointChange of Object.values(order.couponPointChanges)){ + if(pointChange.coupon_id > 0){ + pointCheck = true + } + } + const discountRewards = rewards.filter(({ reward }) => reward.reward_type == "discount"); + const freeProductRewards = rewards.filter(({ reward }) => reward.reward_type == "product"); + const redemption = rewards.filter(({ reward }) => reward.reward_type == "redemption" && + reward.max_redemption_amount < order.get_subtotal() && + pointCheck == true + && reward.redemption_frequency > this.state.frequency + ); + if(order.partner != null){ + var checkFrequency = this.check(rewards) + } + const potentialFreeProductRewards = this.pos.getPotentialFreeProductRewards() + return discountRewards.concat( + this._mergeFreeProductRewards(freeProductRewards, potentialFreeProductRewards,redemption)) + }, + + async check(rewards){ + //---gives the number of times the reward is claimed--- + let count = 0; + const partner_id = this.pos.get_order().partner.id + var checkRedemption = await this.env.services.orm.call("res.partner","check_redemption",[[partner_id]]).then((result) =>{ + const today = new Date() + const year = today.getFullYear(); + const month = String(today.getMonth() + 1).padStart(2, '0'); + const day = String(today.getDate()).padStart(2, '0'); + const formattedDate = `${year}-${month}-${day}`; + const currentWeekStart = new Date(today.getFullYear(), today.getMonth(), today.getDate() - today.getDay()); + const currentWeekEnd = new Date(today.getFullYear(), today.getMonth(), today.getDate() + (6 - today.getDay())); + const formattedCurrentWeekStart = currentWeekStart.toISOString().split('T')[0]; + const formattedCurrentWeekEnd = currentWeekEnd.toISOString().split('T')[0]; + const currentMonthStart = new Date(today.getFullYear(), today.getMonth(), 1); + const currentMonthEnd = new Date(today.getFullYear(), today.getMonth() + 1, 0); // Last day of current month + const formattedCurrentMonthStart = currentMonthStart.toISOString().split('T')[0]; + const formattedCurrentMonthEnd = currentMonthEnd.toISOString().split('T')[0]; + const currentYearStart = new Date(today.getFullYear(), 0, 1); + const currentYearEnd = new Date(today.getFullYear(), 11, 31); + const formattedCurrentYearStart = currentYearStart.toISOString().split('T')[0]; + const formattedCurrentYearEnd = currentYearEnd.toISOString().split('T')[0]; + for (const reward of rewards){ + if(reward.reward.redemption_frequency_unit === 'day'){ + for (let i = 0; i < result[1].length; i++) { + if (result[1][i] === formattedDate) { + count ++; + } + } + } + else if(reward.reward.redemption_frequency_unit === 'week'){ + for (let i = 0; i < result[1].length; i++) { + const date =(result[1][i]); + if (date >= formattedCurrentWeekStart && date <= formattedCurrentWeekEnd) { + count++; + } + } + } + else if(reward.reward.redemption_frequency_unit === 'month'){ + for (let i = 0; i < result[1].length; i++) { + const date =(result[1][i]); + if (date >= formattedCurrentMonthStart && date <= formattedCurrentMonthEnd) { + count++; + } + } + } + else if(reward.reward.redemption_frequency_unit === 'year'){ + for (let i = 0; i < result[1].length; i++) { + const date =(result[1][i]); + if (date >= formattedCurrentYearStart && date <= formattedCurrentYearEnd) { + count ++ + + } + } + } + } + return count + }); + this.state.frequency = checkRedemption + }, + + async click() { + //---choose the reward --- + const rewards = this._getPotentialRewards(); + const order = this.pos.get_order(); + if (rewards.length >= 1) { + const rewardsList = rewards.map((reward) => ({ + id: reward.reward.id, + label: reward.reward.description, + description: reward.reward.program_id.name, + item: reward, + })); + const { confirmed, payload: selectedReward } = await this.popup.add(SelectionPopup, { + title: _t("Please select a reward"), + list: rewardsList, + }); + if (confirmed) { + if(selectedReward.reward.reward_type == "redemption"){ + var points = [] + if(selectedReward.reward.max_redemption_type == 'points'){ + points.push(selectedReward.reward.max_redemption_amount/selectedReward.reward.redemption_amount) + } + else if(selectedReward.reward.max_redemption_type == 'amount'){ + points.push(selectedReward.reward.max_redemption_amount/selectedReward.reward.redemption_amount) + } + else if(selectedReward.reward.max_redemption_type == 'percent'){ + var totalAmount = order.get_total_with_tax() + var maxRedemption = totalAmount * selectedReward.reward.max_redemption_amount / 100 + points.push(maxRedemption/selectedReward.reward.redemption_amount) + } + await this.popup.add(RewardPopup, { + title: _t("Redeem Points"), + rewards: rewards, + selected_reward: selectedReward, + order: order, + max_redemption_points : points[0], + property: this + }); + } + else{ + var cost = selectedReward.reward.required_points + order.selectedCoupon = selectedReward.coupon_id + order.pointsCost = cost + return this._applyReward( + selectedReward.reward, + selectedReward.coupon_id, + selectedReward.potentialQty + ); + } + } + } + return false; + }, +}) + diff --git a/advanced_loyalty_management/static/src/js/pos_reward_redeem_popup.js b/advanced_loyalty_management/static/src/js/pos_reward_redeem_popup.js new file mode 100644 index 000000000..072cf3085 --- /dev/null +++ b/advanced_loyalty_management/static/src/js/pos_reward_redeem_popup.js @@ -0,0 +1,61 @@ + /** @odoo-module */ +import { AbstractAwaitablePopup } from "@point_of_sale/app/popup/abstract_awaitable_popup"; +import { _t } from "@web/core/l10n/translation"; +import { useRef,useState } from "@odoo/owl"; +import { useService } from "@web/core/utils/hooks"; +import { ErrorPopup } from "@point_of_sale/app/errors/popups/error_popup"; + +export class RewardPopup extends AbstractAwaitablePopup { + static template = "RedeemPoint"; + setup(){ + this.orm = useService("orm"); + this.popup = useService("popup"); + this.state = useState({ + value:'' , + redeemPoints:'' + }) + this.points = useRef("points"); + } + + toRedeem(ev){ + //---validation for popup--- + ev.state.redeemPoints = ev.points.el.value + if (isNaN(ev.state.redeemPoints)) { + ev.popup.add(ErrorPopup, { + body: _t( + "Points to redeem should be a number." + ), + }); + } else if (ev.props.max_redemption_points < ev.state.redeemPoints) { + ev.popup.add(ErrorPopup, { + body: _t( + "Points to redeem should be less than Maximum Redemption Point." + ), + }); + } + } + + save(props,ev){ + //---after giving the points to redeem, the reward is added to orderliness + const selectedReward = props.selected_reward + const pointsOfPartner = props.order.partner.loyalty_cards[selectedReward.coupon_id].points + const pointsWon = props.order.couponPointChanges[selectedReward.coupon_id].points + const balance = pointsOfPartner + pointsWon - parseInt(ev.state.redeemPoints) + const order = props.order.access_token + selectedReward.reward.pointsToRedeem = parseInt(ev.state.redeemPoints) + props.close() + props.order.selectedCoupon = selectedReward.coupon_id + props.order.pointsCost = parseInt(ev.state.redeemPoints) + return props.property._applyReward( + selectedReward.reward, + selectedReward.coupon_id, + selectedReward.potentialQty + ); + + } + static defaultProps = { + closePopup: _t("Cancel"), + confirmText: _t("Save"), + title: _t("Customer Details"), + }; +} \ No newline at end of file diff --git a/advanced_loyalty_management/static/src/js/pos_ticketscreen.js b/advanced_loyalty_management/static/src/js/pos_ticketscreen.js new file mode 100644 index 000000000..cd103ee63 --- /dev/null +++ b/advanced_loyalty_management/static/src/js/pos_ticketscreen.js @@ -0,0 +1,87 @@ +/** @odoo-module */ + +import { patch } from "@web/core/utils/patch"; +import { TicketScreen } from "@point_of_sale/app/screens/ticket_screen/ticket_screen"; +import { ErrorPopup } from "@point_of_sale/app/errors/popups/error_popup"; +import { _t } from "@web/core/l10n/translation"; +import { useService } from "@web/core/utils/hooks"; + +patch(TicketScreen.prototype, { + setup() { + this.numberBuffer = useService("number_buffer"); + this.numberBuffer.use({ + triggerAtInput: (event) => this._onUpdateSelectedOrderline(event), + }); + super.setup(...arguments); + + }, + async onDoRefund() { + //---------to get the points cost from the reward lines + var res = super.onDoRefund(...arguments); + let rewardLines = this._state.ui.selectedOrder.get_orderlines().filter((line) => line.is_reward_line == true) + let pointsCost = [] + for(var line in rewardLines ){ + var dict = {} + dict[rewardLines[line].coupon_id] = rewardLines[line].points_cost + pointsCost.push(dict) + } + localStorage.setItem("pointsCost", JSON.stringify(pointsCost)) + return res + }, + + _onUpdateSelectedOrderline({ key, buffer }) { + //---prevent the rewarded to line to get refunded + const order = this.getSelectedOrder(); + if (!order) { + return this.numberBuffer.reset(); + } + const selectedOrderlineId = this.getSelectedOrderlineId(); + const orderline = order.orderlines.find((line) => line.id == selectedOrderlineId); + if (!orderline) { + return this.numberBuffer.reset(); + } + const toRefundDetails = orderline + .getAllLinesInCombo() + .map((line) => this._getToRefundDetail(line)); + for (const toRefundDetail of toRefundDetails) { + if (toRefundDetail.destinationOrderUid) { + return this.numberBuffer.reset(); + } + const refundableQty = + toRefundDetail.orderline.qty - toRefundDetail.orderline.refundedQty; + if (refundableQty <= 0) { + return this.numberBuffer.reset(); + } + if (buffer == null || buffer == "") { + toRefundDetail.qty = 0; + } else { + const quantity = Math.abs(parseFloat(buffer)); + if(orderline.is_reward_line == true){ + if(quantity > 0){ + this.popup.add(ErrorPopup, { + title: _t("REFUND NOT POSSIBLE"), + body: _t( + "You cannot refund a rewarded line", + ), + }); + } + } + else{ + if (quantity > refundableQty) { + this.numberBuffer.reset(); + this.popup.add(ErrorPopup, { + title: _t("Maximum Exceeded"), + body: _t( + "The requested quantity to be refunded is higher than the ordered quantity. %s is requested while only %s can be refunded.", + quantity, + refundableQty + ), + }); + } else { + toRefundDetail.qty = quantity; + } + } + } + } + } +}) \ No newline at end of file diff --git a/advanced_loyalty_management/static/src/xml/pos_loyalty_change.xml b/advanced_loyalty_management/static/src/xml/pos_loyalty_change.xml new file mode 100644 index 000000000..59d541684 --- /dev/null +++ b/advanced_loyalty_management/static/src/xml/pos_loyalty_change.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + diff --git a/advanced_loyalty_management/static/src/xml/pos_loyalty_popup.xml b/advanced_loyalty_management/static/src/xml/pos_loyalty_popup.xml new file mode 100644 index 000000000..eb44cffc3 --- /dev/null +++ b/advanced_loyalty_management/static/src/xml/pos_loyalty_popup.xml @@ -0,0 +1,33 @@ + + + + + + + \ No newline at end of file diff --git a/advanced_loyalty_management/static/src/xml/pos_loyalty_receipt.xml b/advanced_loyalty_management/static/src/xml/pos_loyalty_receipt.xml new file mode 100644 index 000000000..5a267b686 --- /dev/null +++ b/advanced_loyalty_management/static/src/xml/pos_loyalty_receipt.xml @@ -0,0 +1,32 @@ + + + + + + + + +
--------------------------------
+
+
+
+ + +
Points Lost : + - + + +
+
+
Balance Loyalty Points : + +
+ + + + + \ No newline at end of file diff --git a/advanced_loyalty_management/static/src/xml/pos_loyalty_refund.xml b/advanced_loyalty_management/static/src/xml/pos_loyalty_refund.xml new file mode 100644 index 000000000..2e61f9133 --- /dev/null +++ b/advanced_loyalty_management/static/src/xml/pos_loyalty_refund.xml @@ -0,0 +1,29 @@ + + + + + + + + + Deducted Loyalty Points +
+
+ Points Lost + - +
+
+ New Total + +
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/advanced_loyalty_management/static/src/xml/pos_redeem_reward_popup.xml b/advanced_loyalty_management/static/src/xml/pos_redeem_reward_popup.xml new file mode 100644 index 000000000..6ce575ce6 --- /dev/null +++ b/advanced_loyalty_management/static/src/xml/pos_redeem_reward_popup.xml @@ -0,0 +1,43 @@ + + + + + + + diff --git a/advanced_loyalty_management/views/loyalty_kanban_views.xml b/advanced_loyalty_management/views/loyalty_kanban_views.xml new file mode 100644 index 000000000..4c10f7f41 --- /dev/null +++ b/advanced_loyalty_management/views/loyalty_kanban_views.xml @@ -0,0 +1,26 @@ + + + + + + loyalty.reward.view.kanban.inherit.advanced.loyalty.management + + loyalty.reward + + + + + Redemption +
+
+ +
+ + +
+
+
+
+
+
+
\ No newline at end of file diff --git a/advanced_loyalty_management/views/loyalty_program_views.xml b/advanced_loyalty_management/views/loyalty_program_views.xml new file mode 100644 index 000000000..0131c23fe --- /dev/null +++ b/advanced_loyalty_management/views/loyalty_program_views.xml @@ -0,0 +1,24 @@ + + + + + + loyalty.program.view.form.inherit.advanced.loyalty.management + + loyalty.program + + + + + + + \ No newline at end of file diff --git a/advanced_loyalty_management/views/loyalty_reward_rule_views.xml b/advanced_loyalty_management/views/loyalty_reward_rule_views.xml new file mode 100644 index 000000000..e918f6bd6 --- /dev/null +++ b/advanced_loyalty_management/views/loyalty_reward_rule_views.xml @@ -0,0 +1,29 @@ + + + + + + loyalty.reward.view.form.inherit.advanced.loyalty.management + + loyalty.reward + + + + + + + + + + + \ No newline at end of file diff --git a/advanced_loyalty_management/views/pos_order_line_views.xml b/advanced_loyalty_management/views/pos_order_line_views.xml new file mode 100644 index 000000000..6d1c578a0 --- /dev/null +++ b/advanced_loyalty_management/views/pos_order_line_views.xml @@ -0,0 +1,18 @@ + + + + + + pos.order.line.form.inherit.advanced.loyalty.management + + pos.order.line + + + + + + + + + \ No newline at end of file diff --git a/advanced_loyalty_management/views/res_partner_views.xml b/advanced_loyalty_management/views/res_partner_views.xml new file mode 100644 index 000000000..ade087033 --- /dev/null +++ b/advanced_loyalty_management/views/res_partner_views.xml @@ -0,0 +1,20 @@ + + + + + + res.partner.view.form.inherit.advanced.loyalty.management + + res.partner + + + + + + + + \ No newline at end of file