summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2023-07-03 10:31:22 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2023-07-03 10:31:22 +0700
commite8a6caab3ec347114ab7e18ccae5855e30d81ce2 (patch)
tree29f9922cb2e99d24b81af1d8d92acf7ec9d605f1
parentfde265040065d233a0b7eee277defb3c472575a2 (diff)
api product sla
-rw-r--r--indoteknik_api/controllers/api_v1/product.py11
-rw-r--r--indoteknik_custom/models/product_sla.py71
2 files changed, 42 insertions, 40 deletions
diff --git a/indoteknik_api/controllers/api_v1/product.py b/indoteknik_api/controllers/api_v1/product.py
index 8dea4c28..5ed6490c 100644
--- a/indoteknik_api/controllers/api_v1/product.py
+++ b/indoteknik_api/controllers/api_v1/product.py
@@ -16,9 +16,9 @@ class Product(controller.Controller):
def get_product_template_stock_by_id(self, **kw):
id = kw.get('id')
stock_location_id = 57 # Ubah dengan location_id yang diinginkan
- template = request.env['product.product'].search([('id', '=', id)], limit=1)
- stock = template.qty_available
- item_code = template.default_code
+ product = request.env['product.product'].search([('id', '=', id)], limit=1)
+ stock = product.qty_available
+ item_code = product.default_code
qty_altama = request.env['product.template'].get_stock_altama(item_code)
qty_altama -= int(qty_altama * 0.1)
rounded_qty_altama = math.ceil(float(qty_altama))
@@ -28,7 +28,7 @@ class Product(controller.Controller):
sla_date = '-'
qty_available = 0
- for stock in template.stock_quant_ids:
+ for stock in product.stock_quant_ids:
if stock.location_id.id == 57:
qty_available += stock.quantity
@@ -40,8 +40,9 @@ class Product(controller.Controller):
qty = 0
sla_date = 'Indent'
elif qty_available > 10:
- if template.x_manufacture.id == 10 or template.x_manufacture.id == 122 or template.x_manufacture.id == 89:
+ if product.x_manufacture.id == 10 or product.x_manufacture.id == 122 or product.x_manufacture.id == 89:
qty = qty_available + qty_b2b_altama
+ sla_date = '2-4 Hari'
else:
qty = qty_available
sla_date = '1 Hari'
diff --git a/indoteknik_custom/models/product_sla.py b/indoteknik_custom/models/product_sla.py
index 00df2fa2..8d314dd9 100644
--- a/indoteknik_custom/models/product_sla.py
+++ b/indoteknik_custom/models/product_sla.py
@@ -16,49 +16,50 @@ class ProductSla(models.Model):
def generate_product_variant_id_sla(self):
# Filter produk non-Altama
- products = self.env['stock.move.line'].search([
- # ('product_id', '=', self.product_variant_id.id),
- ('product_id.x_manufacture', 'not in', [10,122,89]),
- ('picking_id.driver_departure_date', '!=', False)
+ products = self.env['product.product'].search([
+ ('x_manufacture', 'not in', [10,122,89]),
])
for product in products:
sla = self.env['product.sla'].create({
- 'product_variant_id': product.product_id.id,
+ 'product_variant_id': product.id,
})
sla.generate_product_sla()
def generate_product_sla(self):
for sla in self:
- query = [
- ('product_id', '=', sla.product_variant_id.id),
- ('picking_id', '!=', False),
- ('picking_id.state', '=', 'done'),
- ]
- picking = self.env['stock.move.line'].search(query)
- leadtimes=[]
- for stock in picking:
- if not stock.picking_id.driver_departure_date:
- continue
- date_delivered = stock.picking_id.driver_departure_date
- date_so_confirmed = stock.picking_id.sale_id.date_order
- if date_delivered and date_so_confirmed:
- leadtime = date_delivered - date_so_confirmed
- leadtime_in_days = leadtime.days
- leadtimes.append(leadtime_in_days)
- if len(leadtimes) > 0:
- avg_leadtime = sum(leadtimes)/len(leadtimes)
- rounded_leadtime = math.ceil(float(avg_leadtime))
- sla.avg_leadtime = rounded_leadtime
-
- if picking.picking_id.location_id == 57 and picking.picking_id.qty_available > 10:
+ if sla.product_variant_id.stock_move_ids.picking_id:
+ query = [
+ ('product_id', '=', sla.product_variant_id.id),
+ ('picking_id', '!=', False),
+ ('picking_id.state', '=', 'done'),
+ ]
+ picking = self.env['stock.move.line'].search(query)
+ leadtimes=[]
+ for stock in picking:
+ if not stock.picking_id.driver_departure_date:
+ continue
+ date_delivered = stock.picking_id.driver_departure_date
+ date_so_confirmed = stock.picking_id.sale_id.date_order
+ if date_delivered and date_so_confirmed:
+ leadtime = date_delivered - date_so_confirmed
+ leadtime_in_days = leadtime.days
+ leadtimes.append(leadtime_in_days)
+ if len(leadtimes) > 0:
+ avg_leadtime = sum(leadtimes)/len(leadtimes)
+ rounded_leadtime = math.ceil(float(avg_leadtime))
+ sla.avg_leadtime = rounded_leadtime
+ if picking.picking_id.location_id == 57 and picking.picking_id.qty_available > 10:
+ sla.sla = '1 Hari'
+ elif sla.avg_leadtime and float(sla.avg_leadtime) >= 1 and float(sla.avg_leadtime) <= 5:
+ sla.sla = '3-6 Hari'
+ elif sla.avg_leadtime and float(sla.avg_leadtime) >= 6 and float(sla.avg_leadtime) <= 10:
+ sla.sla = '4-12 Hari'
+ elif sla.avg_leadtime and float(sla.avg_leadtime) >= 11:
+ sla.sla = 'Indent'
+ else:
+ sla.sla = '-'
+ elif not sla.product_variant_id.stock_move_ids.picking_id and sla.product_variant_id.stock_quant_ids.location_id.id == 57 and sla.product_variant_id.stock_quant_ids.quantity > 0:
sla.sla = '1 Hari'
- elif sla.avg_leadtime and float(sla.avg_leadtime) >= 1 and float(sla.avg_leadtime) <= 5:
- sla.sla = '3-6 Hari'
- elif sla.avg_leadtime and float(sla.avg_leadtime) >= 6 and float(sla.avg_leadtime) <= 10:
- sla.sla = '4-12 Hari'
- elif sla.avg_leadtime and float(sla.avg_leadtime) >= 11:
- sla.sla = 'Indent'
- else:
- sla.sla = '-' \ No newline at end of file
+ sla.avg_leadtime = '-'