summaryrefslogtreecommitdiff
path: root/indoteknik_api/models
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-07-31 08:33:22 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-07-31 08:33:22 +0700
commit8d1af98bb7dab812f91d7d275b4004c4e5b0ff75 (patch)
treebab2e7e3740f295ecfd088624af5c06aa948b604 /indoteknik_api/models
parent6b2872ba3025c8876cb0885fa05757389bc4d6d2 (diff)
<hafid> repeat order fix
Diffstat (limited to 'indoteknik_api/models')
-rw-r--r--indoteknik_api/models/sale_order.py45
1 files changed, 24 insertions, 21 deletions
diff --git a/indoteknik_api/models/sale_order.py b/indoteknik_api/models/sale_order.py
index 5427ed07..54b4a6dc 100644
--- a/indoteknik_api/models/sale_order.py
+++ b/indoteknik_api/models/sale_order.py
@@ -51,29 +51,32 @@ class SaleOrder(models.Model):
})
if sale_order.state == 'cancel':
data['status'] = 'cancel'
- if sale_order.state in ['draft', 'sent']:
+ if sale_order.state == 'draft' and sale_order.approval_status == False:
data['status'] = 'draft'
- if sale_order.is_continue_transaction:
- data['status'] = 'waiting'
- if sale_order.approval_status in ['pengajuan1', 'pengajuan2']:
- data['status'] = 'waiting'
- if sale_order.state == 'sale':
- data['status'] = 'sale'
- picking_count = {
- 'assigned': 0,
- 'done': 0,
- }
- for picking in sale_order.picking_ids:
- if picking.state in ['confirmed', 'assigned']:
- picking_count['assigned'] += 1
- if picking.state == 'done':
- picking_count['done'] += 1
- if picking_count['done'] > 0:
+ if sale_order.state == 'draft' and sale_order.approval_status in ['pengajuan1', 'pengajuan2']:
+ data['status'] = 'waiting'
+
+
+ if sale_order.state == 'sale':
+ bu_pickings = [
+ p for p in sale_order.picking_ids
+ if p.picking_type_id and p.picking_type_id.id == 29
+ ]
+
+ # Hitung status masing-masing picking
+ total = len(bu_pickings)
+ done_pickings = [p for p in bu_pickings if p.state == 'done']
+ done_with_driver = [p for p in done_pickings if p.driver_arrival_date]
+ done_without_driver = [p for p in done_pickings if not p.driver_arrival_date]
+
+ if len(done_pickings) == 0:
+ data['status'] = 'sale'
+ elif len(done_pickings) == total and len(done_pickings) > 0 and len(done_with_driver) == total:
+ data['status'] = 'done'
+ elif len(done_pickings) == total and len(done_pickings) > 0 and len(done_without_driver) == total:
data['status'] = 'shipping'
- if picking_count['assigned'] > 0:
- data['status'] = 'partial_shipping'
- if sale_order.state == 'done':
- data['status'] = 'done'
+ else:
+ data['status'] = 'partial_shipping'
res_users = self.env['res.users']
if context: