summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIndoteknik . <it@fixcomart.co.id>2025-05-13 15:26:01 +0700
committerIndoteknik . <it@fixcomart.co.id>2025-05-13 15:26:01 +0700
commit4688c123005c7c8038c4d56ef25307e309ef815e (patch)
treede3dcfa7c509608661b75b115e2f3e75a4ca6fa4
parentb2dcb44e3ff9a49c5b0b56cb7d722281790f1195 (diff)
(andri) add field Selection Option dan menambahkan opsi biteship
-rwxr-xr-xindoteknik_custom/models/sale_order.py36
-rwxr-xr-xindoteknik_custom/views/sale_order.xml1
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" />