summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/sale_order.py
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-08-20 15:24:58 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-08-20 15:24:58 +0700
commitaf483feb734c1e135a779008ca3fa32a721d59ff (patch)
tree42450b0ce182c4d698a6c54a549eb2ff51ea07c5 /indoteknik_custom/models/sale_order.py
parentfcef24bcce3d9e1d916bef3ff74429c990edf3b7 (diff)
fix bug percent pie
Diffstat (limited to 'indoteknik_custom/models/sale_order.py')
-rwxr-xr-xindoteknik_custom/models/sale_order.py35
1 files changed, 21 insertions, 14 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 53be999f..5787c6ea 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -431,21 +431,27 @@ class SaleOrder(models.Model):
continue
for move in line.move_ids:
- if move.state != 'done':
- # reserve qty (draft/assigned)
- if move.picking_type_id.code == 'internal':
+ if move.picking_type_id.code == 'internal':
+ if move.state != 'done':
+ # PICK belum done → qty reserved
reserved_qty += move.reserved_availability or 0.0
- continue
-
- # sudah done → cek alur lokasi
- if move.location_dest_id.usage == 'customer':
- # barang keluar → delivered
- delivered_qty += move.quantity_done
- elif move.location_id.usage == 'customer':
- # barang balik (return) → kurangi delivered
- delivered_qty -= move.quantity_done
-
- # clamp biar ga minus
+ else:
+ # PICK done → qty_done masih dianggap reserved (masuk BU/OUT)
+ reserved_qty += move.quantity_done or 0.0
+
+ elif move.state == 'done':
+ # OUT done (customer terima) → delivered
+ if move.location_dest_id.usage == 'customer':
+ delivered_qty += move.quantity_done
+ # sekaligus kurangi reserved (karena udah terkirim)
+ reserved_qty -= move.quantity_done
+ # Return dari customer
+ elif move.location_id.usage == 'customer':
+ delivered_qty -= move.quantity_done
+ reserved_qty += move.quantity_done # balik ke reserved
+
+ # clamp jangan sampai minus
+ reserved_qty = max(reserved_qty, 0)
delivered_qty = max(delivered_qty, 0)
order.reserved_percent = (reserved_qty / total_qty) * 100
@@ -455,6 +461,7 @@ class SaleOrder(models.Model):
order.reserved_percent = order.delivered_percent = order.unreserved_percent = 0
+
def _has_ccm(self):
if self.id:
self.ccm_id = self.env['tukar.guling'].search([('origin', 'ilike', self.name)], limit=1)