diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2023-07-05 08:52:06 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2023-07-05 08:52:06 +0700 |
| commit | 2c5c557540cd5e2f95e7b2e201c4b2ee2eccf737 (patch) | |
| tree | e4ba6d1bcb573e5b0789d110d3c454f9444a613b /indoteknik_custom/models | |
| parent | eecd16d10dd20df13f5cb6c70c5e1199b3080527 (diff) | |
change condition product non altama
Diffstat (limited to 'indoteknik_custom/models')
| -rw-r--r-- | indoteknik_custom/models/product_sla.py | 105 |
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 |
