summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1
diff options
context:
space:
mode:
authortrisusilo48 <tri.susilo@altama.co.id>2025-01-10 10:44:59 +0700
committertrisusilo48 <tri.susilo@altama.co.id>2025-01-10 10:44:59 +0700
commit63878bd84a6eb9094e702963d7c78fcd8dfa1808 (patch)
tree97bc5825ee92341a48d41b3f0096a12b3391516f /indoteknik_api/controllers/api_v1
parent7ac434ec0fcf75cb6eefe1892118b7c18b3db53a (diff)
api sla
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
-rw-r--r--indoteknik_api/controllers/api_v1/product.py59
1 files changed, 55 insertions, 4 deletions
diff --git a/indoteknik_api/controllers/api_v1/product.py b/indoteknik_api/controllers/api_v1/product.py
index 2573d7a8..7570015f 100644
--- a/indoteknik_api/controllers/api_v1/product.py
+++ b/indoteknik_api/controllers/api_v1/product.py
@@ -1,6 +1,6 @@
from .. import controller
from odoo import http
-from odoo.http import request
+from odoo.http import request, Response
from datetime import datetime, timedelta
import ast
import logging
@@ -33,7 +33,58 @@ 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'])
+ @controller.Controller.must_authorized()
+ def get_product_template_sla_by_id(self, **kw):
+ json_raw = json.loads(request.httprequest.data)
+
+ ids = json_raw.get('ids')
+ ids = list(map(int, ids))
+
+ if not ids or not isinstance(ids, list):
+ return ({'status' : 'Failed','message': 'Parameter "ids" harus berupa list dan tidak boleh kosong.'})
+
+ sla_days = 0
+ products = request.env['product.product'].search([('id', 'in', ids)])
+ if len(products) < 1:
+ return ({
+ 'status' : 'Failed',
+ 'message' : '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.'
+ })
+
+ # Mapping SLA untuk mempermudah lookup
+ sla_map = {sla.product_variant_id.id: sla for sla in product_slas}
+
+ 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)
+ 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
+ }],
+ })
+ # Jika semua loop selesai tanpa include_instant menjadi False
+ return ({
+ 'status' : 'Success',
+ 'data' : [{
+ 'include_instant': True,
+ 'sla_days': sla_days
+ }],
+ })
+
@http.route(prefix + 'product_variant/<id>/stock', auth='public', methods=['GET', 'OPTIONS'])
@controller.Controller.must_authorized()
def get_product_template_stock_by_id(self, **kw):
@@ -84,9 +135,9 @@ class Product(controller.Controller):
sla_date = product_sla.sla or 1
elif qty_altama > 0 or qty_vendor > 0:
qty = total_adem if qty_altama > 0 else total_excell
- sla_date = product.sla
+ sla_date = product_sla.sla
else:
- sla_date = '3-7 Hari'
+ sla_date = product_sla.sla
except:
print('error')
else: