diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2025-06-02 11:19:21 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2025-06-02 11:19:21 +0700 |
| commit | 9e71d7ac3e018e9d4415e1341231671e62fbdb45 (patch) | |
| tree | 4c97d373511456864c982acc6a0a78d91c8cec74 | |
| parent | 00fb3752ece083d28accad7b0a5ec8971a1cbb34 (diff) | |
<hafid> fix hours shipping method
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 32 |
1 files 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 |
