summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIndoteknik . <it@fixcomart.co.id>2025-06-01 17:23:56 +0700
committerIndoteknik . <it@fixcomart.co.id>2025-06-01 17:23:56 +0700
commite5a3d37ca40127a6bd2a31f08d94704103a1ac11 (patch)
treeec821a3e51cc20d0b1c136b68090a0e9e5889ca4
parent03d52ddceacea1939aef8ee4c571cacdb8b2c055 (diff)
(andri) fix bug shipping method
-rwxr-xr-xindoteknik_custom/models/sale_order.py20
1 files changed, 10 insertions, 10 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 490e4581..453406c4 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -306,6 +306,10 @@ class SaleOrder(models.Model):
@api.onchange('carrier_id')
def _onchange_carrier_id(self):
+ # Jika record masih baru (belum disimpan), jangan jalankan onchange
+ if not self._origin or not self._origin.id:
+ return
+
self.shipping_option_id = False
# self.delivery_amt = 0
# self.delivery_service_type = False
@@ -313,7 +317,7 @@ class SaleOrder(models.Model):
if not self.carrier_id:
return {'domain': {'shipping_option_id': [('id', '=', -1)]}}
- # Ambil provider dari rajaongkir_kurir
+ # Ambil provider dari mapping
self.env.cr.execute("""
SELECT name FROM rajaongkir_kurir
WHERE delivery_carrier_id = %s
@@ -322,16 +326,14 @@ class SaleOrder(models.Model):
result = self.env.cr.fetchone()
provider = result[0].lower() if result and result[0] else False
- # Fallback dari nama carrier
if not provider:
provider = self.carrier_id.name.lower().split()[0] if self.carrier_id.name else False
_logger.info(f"[Carrier Changed] {self.carrier_id.name}, Detected Provider: {provider}")
- # Ambil ID SO
- sale_order_id = self._origin.id if self._origin else False
+ sale_order_id = self._origin.id
- # Hitung jumlah shipping_option yang cocok
+ # Cek apakah ada shipping_option yang cocok
self.env.cr.execute("""
SELECT COUNT(*) FROM shipping_option
WHERE LOWER(provider) LIKE %s AND sale_order_id = %s
@@ -340,7 +342,6 @@ class SaleOrder(models.Model):
_logger.info(f"[Shipping Option Count] Provider: {provider} | SO ID: {sale_order_id} | Count: {count}")
- # Jika tidak ditemukan shipping option
if count == 0:
previous_carrier = self._origin.carrier_id if self._origin else False
previous_provider = False
@@ -348,7 +349,7 @@ class SaleOrder(models.Model):
self.carrier_id = previous_carrier
self.shipping_option_id = self._origin.shipping_option_id if self._origin else False
- # Rehitung provider untuk domain fallback
+ # Ambil kembali domain provider sebelumnya
if previous_carrier:
self.env.cr.execute("""
SELECT name FROM rajaongkir_kurir
@@ -358,7 +359,7 @@ class SaleOrder(models.Model):
previous_provider = prev_row[0].lower() if prev_row and prev_row[0] else previous_carrier.name.lower().split()[0]
fallback_domain = [('id', '=', -1)]
- if sale_order_id and previous_provider:
+ if previous_provider:
fallback_domain = [
'|',
'&', ('sale_order_id', '=', sale_order_id), ('provider', 'ilike', f'%{previous_provider}%'),
@@ -376,7 +377,7 @@ class SaleOrder(models.Model):
'domain': {'shipping_option_id': fallback_domain}
}
- # Jika ditemukan, set domain normal
+ # Jika data ada, kembalikan domain biasa
domain = [
'|',
'&', ('sale_order_id', '=', sale_order_id), ('provider', 'ilike', f'%{provider}%'),
@@ -385,7 +386,6 @@ class SaleOrder(models.Model):
return {'domain': {'shipping_option_id': domain}}
-
@api.onchange('shipping_option_id')
def _onchange_shipping_option_id(self):
if not self.shipping_option_id: