Skip to content

Commit

Permalink
[IMP]sale_loyalty_ux: SOs on programs
Browse files Browse the repository at this point in the history
  • Loading branch information
jok-adhoc committed Jan 2, 2024
1 parent adf862a commit 66dfe26
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 45 deletions.
2 changes: 1 addition & 1 deletion sale_loyalty_ux/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
'sale_loyalty',
],
'data': [
'views/loyalty_rule_views.xml',
'views/loyalty_program_views.xml',
],
'demo': [
],
Expand Down
1 change: 0 additions & 1 deletion sale_loyalty_ux/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
from . import loyalty_rule
from . import sale_order
from . import loyalty_program
23 changes: 12 additions & 11 deletions sale_loyalty_ux/models/loyalty_program.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
import ast

from odoo import fields, models
from odoo.osv import expression


class LoyaltyProgram(models.Model):
_inherit = 'loyalty.program'

def _get_valid_pricelists(self, pricelist):
'''
Returns a dict containing the pricelists that match per rule of the program
'''
rule_pricelists = dict()
for rule in self.rule_ids:
if not rule.pricelist_ids:
rule_pricelists[rule] = pricelist
else:
rule_pricelists[rule] = rule.pricelist_ids
return rule_pricelists
sale_domain = fields.Char(default="[]")

def _get_valid_sale_order(self):
domain = []
if self.sale_domain and self.sale_domain != '[]':
domain = expression.AND([domain, ast.literal_eval(self.sale_domain)])
return domain
return False

7 changes: 0 additions & 7 deletions sale_loyalty_ux/models/loyalty_rule.py

This file was deleted.

16 changes: 4 additions & 12 deletions sale_loyalty_ux/models/sale_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,11 @@
class SaleOrder(models.Model):

_inherit = "sale.order"

def _program_check_compute_points(self, programs):
res = super()._program_check_compute_points(programs)
pricelist = self.pricelist_id
pricelists_per_rule = programs._get_valid_pricelists(pricelist)
aux_programs = programs
for program in programs:
aux_programs -= program
for rule in program.rule_ids:
if self.pricelist_id in pricelists_per_rule.get(rule):
aux_programs += program
break
for r in res:
if r not in aux_programs:
res[r] = {'error': "pricelist not matching"}
domain = r._get_valid_sale_order()
if not res[r].get('error') and domain:
if self not in self.env['sale.order'].search(domain):
res[r] = {'error': "SaleOrder not matching"}
return res
13 changes: 13 additions & 0 deletions sale_loyalty_ux/views/loyalty_program_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="loyalty_program_view_form" model="ir.ui.view">
<field name="name">loyalty.program.view.form</field>
<field name="model">loyalty.program</field>
<field name="inherit_id" ref="loyalty.loyalty_program_view_form"/>
<field name="arch" type="xml">
<field name="date_to" position="after">
<field name="sale_domain" string="Sales domain" widget="domain" options="{'model': 'sale.order', 'in_dialog': true}"/>
</field>
</field>
</record>
</odoo>
13 changes: 0 additions & 13 deletions sale_loyalty_ux/views/loyalty_rule_views.xml

This file was deleted.

0 comments on commit 66dfe26

Please sign in to comment.