diff options
| author | Indoteknik . <it@fixcomart.co.id> | 2025-05-16 14:45:54 +0700 |
|---|---|---|
| committer | Indoteknik . <it@fixcomart.co.id> | 2025-05-16 14:45:54 +0700 |
| commit | 2c4ab23bdf0ab6073195144879639a0dae863fde (patch) | |
| tree | 9e7064cf0585e6d530df1746737d4424f1e264de | |
| parent | 4688c123005c7c8038c4d56ef25307e309ef815e (diff) | |
(andri) revisi field shipping option
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 38 |
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 = { |
