summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indoteknik_custom/models/product_sla.py105
1 files changed, 55 insertions, 50 deletions
diff --git a/indoteknik_custom/models/product_sla.py b/indoteknik_custom/models/product_sla.py
index 73f6dcbc..622fdc89 100644
--- a/indoteknik_custom/models/product_sla.py
+++ b/indoteknik_custom/models/product_sla.py
@@ -29,63 +29,68 @@ class ProductSla(models.Model):
], order='sla_version asc', limit=limit)
i = 1
+ indexMatch = 1
for product in products:
- _logger.info(f'Update Product SLA {i}/{len(products)}')
+ qty_available = 0
+ for stock in product.stock_quant_ids:
+ if stock.location_id.id == 57:
+ qty_available += stock.quantity
+ qty_available -= 10
+
+ _logger.info(f'Product SLA: {i}/{len(products)}')
+ i += 1
+
+ if len(product.stock_move_ids) == 0 and qty_available <= 0:
+ continue
+
+ _logger.info(f'Match Product SLA: {indexMatch}')
+ indexMatch += 1
product_sla = self.search([('product_variant_id', '=', product.id)], limit=1)
if not product_sla:
product_sla = self.env['product.sla'].create({
'product_variant_id': product.id,
})
+
+ product_sla.generate_product_sla(qty_available)
- product_sla.generate_product_sla()
- i += 1
-
- def generate_product_sla(self):
- for sla in self:
- sla.avg_leadtime = '-'
- sla.sla = '-'
+ def generate_product_sla(self, qty_available):
+ self.avg_leadtime = '-'
+ self.sla = '-'
- qty_available = 0
- for stock in sla.product_variant_id.stock_quant_ids:
- if stock.location_id.id == 57:
- qty_available += stock.quantity
- qty_available -= 10
- total_stock_moves = len(sla.product_variant_id.stock_move_ids)
+ total_stock_moves = len(self.product_variant_id.stock_move_ids)
- if total_stock_moves > 0:
- if qty_available > 10:
- sla.sla = '1 Hari'
- elif qty_available <= 0:
- sla.sla = 'barang mempunyai stock move tetapi tidak ada qty available'
- elif total_stock_moves == 0 and qty_available > 10:
- sla.sla = 'barang tidak mempunyai stock move tetapi ada qty available'
+ if total_stock_moves > 0:
+ if qty_available > 10:
+ self.sla = '1 Hari'
+ elif qty_available <= 0:
+ self.sla = 'barang mempunyai stock move tetapi tidak ada qty available'
- query = [
- ('product_id', '=', sla.product_variant_id.id),
- ('picking_id', '!=', False),
- ('picking_id.location_id', '=', 57),
- ('picking_id.state', 'not in', ['cancel'])
- ]
- picking = self.env['stock.move.line'].search(query)
- leadtimes=[]
- for stock in picking:
- 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(avg_leadtime)
- sla.avg_leadtime = rounded_leadtime
- if rounded_leadtime >= 1 and rounded_leadtime <= 5:
- sla.sla = '3-6 Hari'
- elif rounded_leadtime >= 6 and rounded_leadtime <= 10:
- sla.sla = '4-12 Hari'
- elif rounded_leadtime >= 11:
- sla.sla = 'Indent'
- else:
- sla.sla = 'tidak masuk kondisi manapun'
- sla.product_variant_id.sla_version += 1
+ query = [
+ ('product_id', '=', self.product_variant_id.id),
+ ('picking_id', '!=', False),
+ ('picking_id.location_id', '=', 57),
+ ('picking_id.state', 'not in', ['cancel'])
+ ]
+ picking = self.env['stock.move.line'].search(query)
+ leadtimes=[]
+ for stock in picking:
+ 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(avg_leadtime)
+ self.avg_leadtime = rounded_leadtime
+ if rounded_leadtime >= 1 and rounded_leadtime <= 5:
+ self.sla = '3-6 Hari'
+ elif rounded_leadtime >= 6 and rounded_leadtime <= 10:
+ self.sla = '4-12 Hari'
+ elif rounded_leadtime >= 11:
+ self.sla = 'Indent'
+ else:
+ self.sla = 'tidak masuk kondisi manapun'
+ self.product_variant_id.sla_version += 1