From 9e71d7ac3e018e9d4415e1341231671e62fbdb45 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Mon, 2 Jun 2025 11:19:21 +0700 Subject: fix hours shipping method --- indoteknik_custom/models/sale_order.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index a76d8011..a86d43cb 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -1068,13 +1068,33 @@ class SaleOrder(models.Model): def _compute_eta_date(self): for rec in self: if rec.expected_ready_to_ship and rec.shipping_option_id and rec.shipping_option_id.etd and rec.state not in ['cancel']: - etd_text = rec.shipping_option_id.etd - match = re.match(r"(\d+)\s*-\s*(\d+)", etd_text) + etd_text = rec.shipping_option_id.etd.strip().lower() + match = re.match(r"(\d+)\s*-\s*(\d+)\s*(days?|hours?)", etd_text) + single_match = re.match(r"(\d+)\s*(days?|hours?)", etd_text) + if match: - start_days = int(match.group(1)) - end_days = int(match.group(2)) - rec.eta_date_start = rec.expected_ready_to_ship + timedelta(days=start_days) - rec.eta_date = rec.expected_ready_to_ship + timedelta(days=end_days) + start_val = int(match.group(1)) + end_val = int(match.group(2)) + unit = match.group(3) + + if 'hour' in unit: + rec.eta_date_start = rec.expected_ready_to_ship + timedelta(hours=start_val) + rec.eta_date = rec.expected_ready_to_ship + timedelta(hours=end_val) + else: + rec.eta_date_start = rec.expected_ready_to_ship + timedelta(days=start_val) + rec.eta_date = rec.expected_ready_to_ship + timedelta(days=end_val) + + elif single_match: + val = int(single_match.group(1)) + unit = single_match.group(2) + + if 'hour' in unit: + rec.eta_date_start = rec.expected_ready_to_ship + timedelta(hours=val) + rec.eta_date = rec.expected_ready_to_ship + timedelta(hours=val) + else: + rec.eta_date_start = rec.expected_ready_to_ship + timedelta(days=val) + rec.eta_date = rec.expected_ready_to_ship + timedelta(days=val) + else: rec.eta_date_start = False rec.eta_date = False -- cgit v1.2.3