diff options
| author | Indoteknik . <it@fixcomart.co.id> | 2025-08-11 11:40:57 +0700 |
|---|---|---|
| committer | Indoteknik . <it@fixcomart.co.id> | 2025-08-11 11:40:57 +0700 |
| commit | bbd7fbf19ef974b4f7716671e3d6203a15a2f2c3 (patch) | |
| tree | 820e98628462d7c4f369e3fd47546b1ea7094b04 | |
| parent | a929da36d56ad080e50adeb331d2796c0c8c13ed (diff) | |
(andri) add flag & temp di autoset shipping from website & estimate biteship
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 26 |
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 |
