Skip to Content
Menu

Advanced Loyalty Management

by
Odoo
v 17.0 Third Party 433
Download for v 17.0 Deploy on Odoo.sh
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies Point of Sale (point_of_sale)
Discuss (mail)
Inventory (stock)
Invoicing (account)
Lines of code 1074
Technical Name advanced_loyalty_management
LicenseLGPL-3
Websitehttps://www.cybrosys.com
Versions 15.0 16.0 17.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies Point of Sale (point_of_sale)
Discuss (mail)
Inventory (stock)
Invoicing (account)
Lines of code 1074
Technical Name advanced_loyalty_management
LicenseLGPL-3
Websitehttps://www.cybrosys.com
Versions 15.0 16.0 17.0
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

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Please choose a rating from 1 to 5 for this module.
There are no ratings yet!
Why override export_as_JSON() ?
by
Daniel Santibanez Polanco
on 5/31/25, 12:10 AM

Why are you overriding export_as_JSON(), and don't extends it? 


if some custom or additional pos module is installed before your module, your override cause data loss , because loading stack is in installed order,  if i do some custom module and then extends for add a single field, your module in stack loading overrides my extends.


its there any way to avoid this override and use extends instead ?


thanks

Re: Why override export_as_JSON() ?
by
Cybrosys Technologies
on 6/9/25, 6:36 AM Author

Thank you for your feedback. The issue you mentioned has been resolved, and the updated app is now available on the Odoo App Store. You can download it from there.


[ISSUE] [v17] Create invoice from POS
by
Cesar Casielles
on 11/20/24, 6:27 AM

Hi!

Thanks you for addons.

I want to indicate an error that I have found.

If we apply a redemption at the POS, and request an invoice, it causes problems and does not generate.

I have attached the error in case it helps.

I would also like to provide the translation into Spanish. Tell me how I can get it to you.

Traceback (most recent call last):
  File "/opt/odoo17_test/odoo/odoo/http.py", line 1782, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
  File "/opt/odoo17_test/odoo/odoo/service/model.py", line 133, in retrying
    result = func()
  File "/opt/odoo17_test/odoo/odoo/http.py", line 1809, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
  File "/opt/odoo17_test/odoo/odoo/http.py", line 2013, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
  File "/opt/odoo17_test/odoo/odoo/addons/base/models/ir_http.py", line 221, in _dispatch
    result = endpoint(**request.params)
  File "/opt/odoo17_test/odoo/odoo/http.py", line 757, in route_wrapper
    result = endpoint(self, *args, **params_ok)
  File "/opt/odoo17_test/odoo/addons/web/controllers/dataset.py", line 24, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "/opt/odoo17_test/odoo/addons/web/controllers/dataset.py", line 20, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/opt/odoo17_test/odoo/odoo/api.py", line 464, in call_kw
    result = _call_kw_model(method, model, args, kwargs)
  File "/opt/odoo17_test/odoo/odoo/api.py", line 435, in _call_kw_model
    result = method(recs, *args, **kwargs)
  File "/opt/odoo17_test/odoo/addons/pos_sale/models/pos_order.py", line 49, in create_from_ui
    order_ids = super(PosOrder, self).create_from_ui(orders, draft)
  File "/opt/odoo17_test/odoo/addons/point_of_sale/models/pos_order.py", line 972, in create_from_ui
    order_ids.append(self._process_order(order, draft, False))
  File "/opt/odoo17_test/odoo/addons/point_of_sale/models/pos_order.py", line 160, in _process_order
    return pos_order._process_saved_order(draft)
  File "/opt/odoo17_test/odoo/addons/point_of_sale/models/pos_order.py", line 187, in _process_saved_order
    self._generate_pos_order_invoice()
  File "/opt/odoo17_test/odoo/addons/point_of_sale/models/pos_order.py", line 897, in _generate_pos_order_invoice
    new_move.with_context(skip_invoice_sync=True)._generate_pdf_and_send_invoice(template)
  File "/opt/odoo17_test/odoo/addons/l10n_es_edi_facturae/models/account_move.py", line 661, in _generate_pdf_and_send_invoice
    return super()._generate_pdf_and_send_invoice(template, force_synchronous, allow_fallback_pdf, bypass_download, **kwargs)
  File "/opt/odoo17_test/odoo/addons/account/models/account_move.py", line 4536, in _generate_pdf_and_send_invoice
    return composer.action_send_and_print(force_synchronous=force_synchronous, allow_fallback_pdf=allow_fallback_pdf, bypass_download=bypass_download)
  File "/opt/odoo17_test/odoo/addons/account/wizard/account_move_send.py", line 732, in action_send_and_print
    return self._process_send_and_print(
  File "/opt/odoo17_test/odoo/addons/account/wizard/account_move_send.py", line 666, in _process_send_and_print
    self._generate_invoice_documents(moves_data, allow_fallback_pdf=allow_fallback_pdf)
  File "/opt/odoo17_test/odoo/addons/account/wizard/account_move_send.py", line 593, in _generate_invoice_documents
    self._hook_invoice_document_after_pdf_report_render(invoice, invoice_data)
  File "/opt/odoo17_test/odoo/addons/account_edi_ubl_cii/wizard/account_move_send.py", line 215, in _hook_invoice_document_after_pdf_report_render
    writer.write(writer_buffer)
  File "/opt/venvs/erptest/lib/python3.10/site-packages/pypdf/_writer.py", line 1412, in write
    self.write_stream(stream)
  File "/opt/odoo17_test/odoo/odoo/tools/pdf/__init__.py", line 100, in write_stream
    self.add_metadata({
  File "/opt/venvs/erptest/lib/python3.10/site-packages/pypdf/_writer.py", line 1620, in add_metadata
    assert isinstance(self._info, DictionaryObject)
AssertionError


Re: [ISSUE] [v17] Create invoice from POS
by
Cybrosys Technologies
on 2/6/25, 5:33 AM Author

Thanks for reporting