summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIndoteknik . <it@fixcomart.co.id>2025-05-16 14:45:54 +0700
committerIndoteknik . <it@fixcomart.co.id>2025-05-16 14:45:54 +0700
commit2c4ab23bdf0ab6073195144879639a0dae863fde (patch)
tree9e7064cf0585e6d530df1746737d4424f1e264de
parent4688c123005c7c8038c4d56ef25307e309ef815e (diff)
(andri) revisi field shipping option
-rwxr-xr-xindoteknik_custom/models/sale_order.py38
1 files changed, 28 insertions, 10 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 90c32e2a..902c6db1 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -259,19 +259,41 @@ class SaleOrder(models.Model):
if self.shipping_option_id:
self.delivery_amt = self.shipping_option_id.price
+ def _get_biteship_courier_codes(self):
+ return [
+ 'jne', 'pos', 'tiki', 'rpx', 'wahana', 'sicepat', 'jnt', 'sap',
+ 'ninja', 'lion', 'anteraja', 'paxel', 'idexpress', 'rex', 'ide',
+ 'sentral', 'first', 'dse', 'ncs', 'jdl', 'slis', 'expedito'
+ ]
+
@api.onchange('select_shipping_option')
def _onchange_select_shipping_option(self):
- # Reset shipping option when the shipping type changes
self.shipping_option_id = False
+ self.delivery_amt = 0
+
+ biteship_courier_codes = self._get_biteship_courier_codes()
+
+ # Cari carrier yang namanya mengandung kode Biteship
+ biteship_carrier_ids = []
+ for code in biteship_courier_codes:
+ carriers = self.env['delivery.carrier'].search([
+ ('name', 'ilike', code)
+ ])
+ if carriers:
+ biteship_carrier_ids.extend(carriers.ids)
+
+ # Hapus duplikat
+ biteship_carrier_ids = list(set(biteship_carrier_ids))
if self.select_shipping_option == 'custom':
- return {'domain': {'carrier_id': []}}
+ # Tampilkan carrier yang bukan dari Biteship
+ domain = [('id', 'not in', biteship_carrier_ids)] if biteship_carrier_ids else []
+ return {'domain': {'carrier_id': domain}}
elif self.select_shipping_option == 'biteship':
- # Reset delivery amount as it will be calculated through Biteship API
- self.delivery_amt = 0
- self.carrier_id = False
- return {'domain': {'carrier_id': [('id', '=', -1)]}}
+ # Tampilkan hanya carrier dari Biteship
+ domain = [('id', 'in', biteship_carrier_ids)] if biteship_carrier_ids else []
+ return {'domain': {'carrier_id': domain}}
@api.constrains('fee_third_party', 'delivery_amt', 'biaya_lain_lain')
def _check_total_margin_excl_third_party(self):
@@ -429,7 +451,6 @@ class SaleOrder(models.Model):
raise UserError("Gagal mendapatkan estimasi ongkir.")
def _call_biteship_api(self, total_weight, destination_zip):
-
url = 'https://api.biteship.com/v1/rates/couriers'
api_key = 'biteship_live.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiUFQuSW5kb3Rla25payBEb3Rjb20gR2VtaWxhbmciLCJ1c2VySWQiOiI2NTIxMTU5YmRkNGIzZTAwMTUzNWIzMmYiLCJlbWFpbCI6InNhbGVzQGluZG90ZWtuaWsuY29tIiwibWVyY2hhbnRJZCI6IjY1MjExNTliOWNkN2JkMDAxNTJhNDM1ZSIsImlhdCI6MTcwNTE0Njc0NywiZXhwIjoxNzczMjk5MTQ3fQ.yR20t00sRR3fj-5eHI7G_rJPt9gv4Bi5iOIgB9sZ67c'
@@ -438,9 +459,6 @@ class SaleOrder(models.Model):
'Content-Type': 'application/json'
}
-
-
-
def _call_rajaongkir_api(self, total_weight, destination_subsdistrict_id):
url = 'https://pro.rajaongkir.com/api/cost'
headers = {