diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2023-07-03 10:31:22 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2023-07-03 10:31:22 +0700 |
| commit | e8a6caab3ec347114ab7e18ccae5855e30d81ce2 (patch) | |
| tree | 29f9922cb2e99d24b81af1d8d92acf7ec9d605f1 | |
| parent | fde265040065d233a0b7eee277defb3c472575a2 (diff) | |
api product sla
| -rw-r--r-- | indoteknik_api/controllers/api_v1/product.py | 11 | ||||
| -rw-r--r-- | indoteknik_custom/models/product_sla.py | 71 |
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 = '-' |
