diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-09-07 15:53:53 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-09-07 15:53:53 +0700 |
| commit | 6077556118dc28824c73baf157c75792ab75fa16 (patch) | |
| tree | 1d7ffd285601920730b32f89e8933840bf1357d6 /indoteknik_api/controllers/api_v1 | |
| parent | f73449303d21622036a7e69945836fbc01b8f951 (diff) | |
Add filter on get voucher API
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/voucher.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/indoteknik_api/controllers/api_v1/voucher.py b/indoteknik_api/controllers/api_v1/voucher.py index 2ad61feb..e176803d 100644 --- a/indoteknik_api/controllers/api_v1/voucher.py +++ b/indoteknik_api/controllers/api_v1/voucher.py @@ -11,7 +11,7 @@ class Voucher(controller.Controller): def get_vouchers(self, **kw): cart = request.env['website.user.cart'] code = kw.get('code') - user_id = kw.get('user_id') + user_id = int(kw.get('user_id', 0)) source = kw.get('source') visibility = ['public'] @@ -28,6 +28,10 @@ class Voucher(controller.Controller): checkout = cart.get_user_checkout(user_id, source=source) products = checkout['products'] + user = request.env['res.users'].search([('id', '=', user_id)], limit=1) + if not user: + return self.response([]) + order_line = [] for product in products: order_line.append({ @@ -40,7 +44,15 @@ class Voucher(controller.Controller): results = [] for voucher in vouchers: - if not voucher.can_used: + if voucher.limit > 0 and voucher.count_order >= voucher.limit: + continue + + partner_voucher_orders = [] + for order in voucher.order_ids: + if order.partner_id.id == user.partner_id.id: + partner_voucher_orders.append(order) + + if voucher.limit_user > 0 and len(partner_voucher_orders) >= voucher.limit_user: continue voucher_info = voucher.apply(order_line) |
