summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIndoteknik . <it@fixcomart.co.id>2025-08-11 11:40:57 +0700
committerIndoteknik . <it@fixcomart.co.id>2025-08-11 11:40:57 +0700
commitbbd7fbf19ef974b4f7716671e3d6203a15a2f2c3 (patch)
tree820e98628462d7c4f369e3fd47546b1ea7094b04
parenta929da36d56ad080e50adeb331d2796c0c8c13ed (diff)
(andri) add flag & temp di autoset shipping from website & estimate biteship
-rwxr-xr-xindoteknik_custom/models/sale_order.py26
1 files changed, 22 insertions, 4 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 45814475..b52df54c 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -1116,8 +1116,9 @@ class SaleOrder(models.Model):
break
if not selected_option and shipping_options:
+ if not self.env.context.get('from_website_checkout'):
+ _logger.info(f"[DEFAULT] Tidak ada yang cocok, pakai opsi pertama: {shipping_options[0].name}")
selected_option = shipping_options[0]
- _logger.info(f"[DEFAULT] Tidak ada yang cocok, pakai opsi pertama: {selected_option.name}")
# ❗ Ganti carrier_id hanya jika BELUM terisi sama sekali (contoh: user dari backend)
if not self.carrier_id:
@@ -1137,9 +1138,18 @@ class SaleOrder(models.Model):
# Set shipping option dan nilai ongkir
if selected_option:
- self.shipping_option_id = selected_option.id
- self.delivery_amt = selected_option.price
- self.delivery_service_type = selected_option.courier_service_code
+ if self.env.context.get('from_website_checkout'):
+ # Simpan di context sebagai nilai sementara
+ self = self.with_context(
+ _temp_delivery_amt=selected_option.price,
+ _temp_delivery_service=selected_option.courier_service_code,
+ _temp_shipping_option=selected_option.id
+ )
+ else:
+ self.shipping_option_id = selected_option.id
+ self.delivery_amt = selected_option.price
+ self.delivery_service_type = selected_option.courier_service_code
+
message_lines = [f"<b>Estimasi Ongkos Kirim Biteship:</b><br/>"]
for courier, options in courier_options.items():
@@ -2950,6 +2960,14 @@ class SaleOrder(models.Model):
order.select_shipping_option = 'biteship'
order.action_estimate_shipping()
+ temp_price = self.env.context.get('_temp_delivery_amt')
+ temp_service = self.env.context.get('_temp_delivery_service')
+ temp_option_id = self.env.context.get('_temp_shipping_option')
+ if temp_price and temp_option_id:
+ order.shipping_option_id = temp_option_id
+ order.delivery_amt = temp_price
+ order.delivery_service_type = temp_service
+
# Restore pilihan user setelah estimasi
if user_carrier_id and user_service:
# Dapatkan provider