summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1
diff options
context:
space:
mode:
authortrisusilo48 <tri.susilo@altama.co.id>2025-01-28 09:46:48 +0700
committertrisusilo48 <tri.susilo@altama.co.id>2025-01-28 09:46:48 +0700
commit2644e259339cd921babf49218aadbdcedb0c8937 (patch)
tree64e0c1c5daa37ecc222c912522419a1b6193c381 /indoteknik_api/controllers/api_v1
parent464292a0eb2b9353f499a541991e4d88a76c2d82 (diff)
change product sla
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
-rw-r--r--indoteknik_api/controllers/api_v1/product.py72
1 files changed, 32 insertions, 40 deletions
diff --git a/indoteknik_api/controllers/api_v1/product.py b/indoteknik_api/controllers/api_v1/product.py
index 7570015f..5d564ff9 100644
--- a/indoteknik_api/controllers/api_v1/product.py
+++ b/indoteknik_api/controllers/api_v1/product.py
@@ -34,31 +34,34 @@ class Product(controller.Controller):
categories.reverse()
return self.response(categories, headers=[('Cache-Control', 'max-age=3600, public')])
- @http.route(prefix + 'product/variants/sla', auth='none', type='json', csrf=False, cors='*', methods=['GET', 'OPTIONS'])
+ @http.route(prefix + 'product/variants/sla', auth='public', methods=['GET', 'OPTIONS'])
@controller.Controller.must_authorized()
- def get_product_template_sla_by_id(self, **kw):
- json_raw = json.loads(request.httprequest.data)
+ def get_product_template_sla_by_id(self, **kwargs):
+ body_params = kwargs.get('ids')
- ids = json_raw.get('ids')
- ids = list(map(int, ids))
+ if not body_params:
+ return self.response('Failed', code=400, description='id is required')
- if not ids or not isinstance(ids, list):
- return ({'status' : 'Failed','message': 'Parameter "ids" harus berupa list dan tidak boleh kosong.'})
+ ids = [int(id.strip()) for id in body_params.split(',') if id.strip().isdigit()]
- sla_days = 0
+ sla_duration = 0
+ sla_unit = 'Hari'
+ include_instant = True
products = request.env['product.product'].search([('id', 'in', ids)])
if len(products) < 1:
- return ({
- 'status' : 'Failed',
- 'message' : 'Produk Tidak Di Temukan.'
- })
+ return self.response(
+ 'Failed',
+ code=400,
+ description='Produk Tidak Di Temukan.'
+ )
product_slas = request.env['product.sla'].search([('product_variant_id', 'in', ids)])
if len(product_slas) < 1:
- return ({
- 'status' : 'Failed',
- 'message' : 'Produk Tidak Di Temukan.'
- })
+ return self.response(
+ 'Failed',
+ code=400,
+ description='SLA Tidak Di Temukan.'
+ )
# Mapping SLA untuk mempermudah lookup
sla_map = {sla.product_variant_id.id: sla for sla in product_slas}
@@ -66,24 +69,20 @@ class Product(controller.Controller):
for product in products:
product_sla = sla_map.get(product.id)
if product_sla:
- sla_days = max(sla_days, product_sla.sla_vendor_id.duration)
+ sla_duration = max(sla_duration, int(product_sla.sla))
+ sla_unit = product_sla.sla_vendor_id.unit
if product.qty_free_bandengan < 1 :
if product_sla.sla_vendor_id.unit != 'jam':
- return ({
- 'status' : 'Success',
- 'data' : [{
- 'include_instant': False,
- 'sla_days': sla_days
- }],
- })
+ include_instant = False
+ break
+
# Jika semua loop selesai tanpa include_instant menjadi False
- return ({
- 'status' : 'Success',
- 'data' : [{
- 'include_instant': True,
- 'sla_days': sla_days
- }],
- })
+ return self.response({
+ 'include_instant': include_instant,
+ 'sla_duration': sla_duration,
+ 'sla_unit': sla_unit
+ }
+ )
@http.route(prefix + 'product_variant/<id>/stock', auth='public', methods=['GET', 'OPTIONS'])
@controller.Controller.must_authorized()
@@ -98,18 +97,12 @@ class Product(controller.Controller):
('product_variant_id', '=', id),
('write_date', '>=', date_7_days_ago.strftime("%Y-%m-%d %H:%M:%S"))
], limit=1)
-
- include_instant = False
qty_available = product.qty_free_bandengan
- if qty_available > 0 :
- include_instant = True
- else :
+ if qty_available < 1 :
qty_available = 0
- if product_sla.sla_vendor_id.unit == 'jam':
- include_instant = True
qty = 0
sla_date = '-'
@@ -150,8 +143,7 @@ class Product(controller.Controller):
data = {
'qty': qty,
- 'sla_date': sla_date,
- 'can_instant': include_instant
+ 'sla_date': sla_date
}
return self.response(data, headers=[('Cache-Control', 'max-age=600, private')])