feat: filter loyalty cards by program type and include membership details in controller response
This commit is contained in:
parent
b2a14520ab
commit
4981764a5f
@ -168,9 +168,15 @@ class AppNotificationController(http.Controller):
|
|||||||
user = request.env.user
|
user = request.env.user
|
||||||
partner = user.partner_id
|
partner = user.partner_id
|
||||||
|
|
||||||
# Get all loyalty cards for this partner
|
# Get loyalty cards for this partner (only multi-level membership and subscription programs)
|
||||||
cards = request.env['loyalty.card'].sudo().search([('partner_id', '=', partner.id)])
|
cards = request.env['loyalty.card'].sudo().search([
|
||||||
card_ids = cards.ids
|
('partner_id', '=', partner.id),
|
||||||
|
'|',
|
||||||
|
('program_id.multi_level_membership', '=', True),
|
||||||
|
('program_id.program_type', '=', 'subscription')
|
||||||
|
])
|
||||||
|
card_data = {c.id: {'program_type': c.program_id.program_type, 'program_name': c.program_id.name} for c in cards}
|
||||||
|
card_ids = list(card_data.keys())
|
||||||
|
|
||||||
if not card_ids:
|
if not card_ids:
|
||||||
return {'status': 'success', 'data': []}
|
return {'status': 'success', 'data': []}
|
||||||
@ -250,6 +256,11 @@ class AppNotificationController(http.Controller):
|
|||||||
else:
|
else:
|
||||||
order_ref = rec.get('description') or ''
|
order_ref = rec.get('description') or ''
|
||||||
|
|
||||||
|
card_id_val = rec['card_id'][0] if isinstance(rec.get('card_id'), (list, tuple)) else rec.get('card_id')
|
||||||
|
card_info = card_data.get(card_id_val, {})
|
||||||
|
program_type = card_info.get('program_type') or 'loyalty'
|
||||||
|
program_name = card_info.get('program_name') or ''
|
||||||
|
|
||||||
result.append({
|
result.append({
|
||||||
'id': rec['id'],
|
'id': rec['id'],
|
||||||
'date': str(rec.get('create_date') or ''),
|
'date': str(rec.get('create_date') or ''),
|
||||||
@ -257,7 +268,9 @@ class AppNotificationController(http.Controller):
|
|||||||
'type': point_type,
|
'type': point_type,
|
||||||
'order_ref': order_ref,
|
'order_ref': order_ref,
|
||||||
'pos_name': pos_name,
|
'pos_name': pos_name,
|
||||||
'card_id': rec['card_id'][0] if isinstance(rec.get('card_id'), (list, tuple)) else rec.get('card_id'),
|
'card_id': card_id_val,
|
||||||
|
'program_type': program_type,
|
||||||
|
'program_name': program_name,
|
||||||
})
|
})
|
||||||
|
|
||||||
return {'status': 'success', 'data': result}
|
return {'status': 'success', 'data': result}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user