Files
odoo_source/addons/pos_loyalty/models/loyalty_program.py
T
William Braeckman 26e79061f5 [ADD] pos_loyalty: manage loyalty in PoS
This module was moved from enterprise to community and now includes
pos_coupon and pos_gift_card aswell.

TaskId-2675382
2022-04-08 11:04:44 +02:00

37 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import _, fields, models
from odoo.tools import unique
class LoyaltyProgram(models.Model):
_inherit = 'loyalty.program'
pos_config_ids = fields.Many2many('pos.config', string="Point of Sales", readonly=True)
pos_order_count = fields.Integer("PoS Order Count", compute='_compute_pos_order_count')
def _compute_pos_order_count(self):
read_group_res = self.env['pos.order.line']._read_group(
[('reward_id', 'in', self.reward_ids.ids)], ['reward_id:array_agg'], ['order_id'])
for program in self:
program_reward_ids = program.reward_ids.ids
program.pos_order_count = sum(1 if any(id in group['reward_id'] for id in program_reward_ids) else 0 for group in read_group_res)
def _compute_total_order_count(self):
super()._compute_total_order_count()
for program in self:
program.total_order_count += program.pos_order_count
def action_view_pos_orders(self):
self.ensure_one()
pos_order_ids = list(unique(r['order_id'] for r in\
self.env['pos.order.line'].search_read([('reward_id', 'in', self.reward_ids.ids)], fields=['order_id'])))
return {
'name': _("PoS Orders"),
'view_mode': 'tree,form',
'res_model': 'pos.order',
'type': 'ir.actions.act_window',
'domain': [('id', 'in', pos_order_ids)],
'context': dict(self._context, create=False),
}