diff options
| author | Indoteknik . <it@fixcomart.co.id> | 2025-05-13 15:26:01 +0700 |
|---|---|---|
| committer | Indoteknik . <it@fixcomart.co.id> | 2025-05-13 15:26:01 +0700 |
| commit | 4688c123005c7c8038c4d56ef25307e309ef815e (patch) | |
| tree | de3dcfa7c509608661b75b115e2f3e75a4ca6fa4 | |
| parent | b2dcb44e3ff9a49c5b0b56cb7d722281790f1195 (diff) | |
(andri) add field Selection Option dan menambahkan opsi biteship
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 36 | ||||
| -rwxr-xr-x | indoteknik_custom/views/sale_order.xml | 1 |
2 files changed, 37 insertions, 0 deletions
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py index 795bfa0b..90c32e2a 100755 --- a/indoteknik_custom/models/sale_order.py +++ b/indoteknik_custom/models/sale_order.py @@ -249,6 +249,30 @@ class SaleOrder(models.Model): nomor_so_pengganti = fields.Char(string='Nomor SO Pengganti', copy=False, tracking=3) shipping_option_id = fields.Many2one("shipping.option", string="Selected Shipping Option", domain="['|', ('sale_order_id', '=', False), ('sale_order_id', '=', id)]") + select_shipping_option = fields.Selection([ + ('biteship', 'Biteship'), + ('custom', 'Custom'), + ], string='Select Shipping Option', help="Select shipping option for delivery") + + @api.onchange('shipping_option_id') + def _onchange_shipping_option_id(self): + if self.shipping_option_id: + self.delivery_amt = self.shipping_option_id.price + + @api.onchange('select_shipping_option') + def _onchange_select_shipping_option(self): + # Reset shipping option when the shipping type changes + self.shipping_option_id = False + + if self.select_shipping_option == 'custom': + return {'domain': {'carrier_id': []}} + + 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)]}} + @api.constrains('fee_third_party', 'delivery_amt', 'biaya_lain_lain') def _check_total_margin_excl_third_party(self): for rec in self: @@ -404,6 +428,18 @@ class SaleOrder(models.Model): else: 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' + + headers = { + 'Authorization': api_key, + 'Content-Type': 'application/json' + } + + + def _call_rajaongkir_api(self, total_weight, destination_subsdistrict_id): url = 'https://pro.rajaongkir.com/api/cost' diff --git a/indoteknik_custom/views/sale_order.xml b/indoteknik_custom/views/sale_order.xml index 79a095fb..080549a4 100755 --- a/indoteknik_custom/views/sale_order.xml +++ b/indoteknik_custom/views/sale_order.xml @@ -118,6 +118,7 @@ <field name="approval_status" /> <field name="sales_tax_id" domain="[('type_tax_use','=','sale'), ('active', '=', True)]" required="1" /> + <field name="select_shipping_option" required="1"/> <field name="carrier_id" required="1" /> <field name="delivery_service_type" readonly="1" /> <field name="shipping_option_id" /> |
