summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-09-07 15:53:53 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-09-07 15:53:53 +0700
commit6077556118dc28824c73baf157c75792ab75fa16 (patch)
tree1d7ffd285601920730b32f89e8933840bf1357d6 /indoteknik_api/controllers/api_v1
parentf73449303d21622036a7e69945836fbc01b8f951 (diff)
Add filter on get voucher API
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
-rw-r--r--indoteknik_api/controllers/api_v1/voucher.py16
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)