summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-10-02 10:41:13 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-10-02 10:41:13 +0700
commita2d93b35cc849d742e851f5d876557ac18c1a9e1 (patch)
tree71d0870982d21cdbd2c2e0ae834771a22cf641bc
parent1754a77d402af8c9fccb896e0b0745eb6e591c0b (diff)
cr function get id partner
-rw-r--r--indoteknik_api/controllers/api_v1/partner.py1
-rwxr-xr-xindoteknik_custom/models/sale_order.py26
2 files changed, 17 insertions, 10 deletions
diff --git a/indoteknik_api/controllers/api_v1/partner.py b/indoteknik_api/controllers/api_v1/partner.py
index 369f2125..833b3302 100644
--- a/indoteknik_api/controllers/api_v1/partner.py
+++ b/indoteknik_api/controllers/api_v1/partner.py
@@ -13,6 +13,7 @@ class Partner(controller.Controller):
partner_child_ids = [x['id'] for x in partner.child_ids] + [partner.id]
if partner.parent_id:
partner_child_ids = [x['id'] for x in partner.parent_id.child_ids]
+ partner_child_ids += [partner.parent_id.id]
return partner_child_ids
@http.route(prefix + 'partner/<id>/list/site', auth='public', methods=['GET', 'OPTIONS'])
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 8f48e898..8c506c47 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -140,18 +140,27 @@ class SaleOrder(models.Model):
for line in self.order_line:
if line.weight:
total_weight += line.weight
+ line.product_id.weight = line.weight
else:
missing_weight_products.append(line.product_id.name)
+ if missing_weight_products:
+ product_names = ', '.join(missing_weight_products)
+ self.message_post(body=f"Produk berikut tidak memiliki berat: {product_names}")
+
if total_weight == 0:
raise UserError("Tidak dapat mengestimasi ongkir tanpa berat yang valid.")
# Mendapatkan city_id berdasarkan nama kota
origin_city_name = self.warehouse_id.partner_id.kota_id.name
destination_city_name = self.real_shipping_id.kota_id.name
-
- origin_city_id = self._get_city_id_by_name(origin_city_name)
- destination_city_id = self._get_city_id_by_name(destination_city_name)
+ origin_subdistrict_name = self.warehouse_id.partner_id.kecamatan_id.name
+ destination_subdistrict_name = self.real_shipping_id.kecamatan_id.name
+
+ origin_id_city = self._get_city_id_by_name(origin_city_name)
+ destination_id_city = self._get_city_id_by_name(destination_city_name)
+ origin_city_id = self._get_subdistrict_id_by_name(origin_id_city, origin_subdistrict_name)
+ destination_city_id = self._get_subdistrict_id_by_name(destination_id_city, destination_subdistrict_name)
if not origin_city_id or not destination_city_id:
raise UserError("Gagal mendapatkan ID kota asal atau tujuan.")
@@ -160,7 +169,8 @@ class SaleOrder(models.Model):
if result:
estimated_cost = result['rajaongkir']['results'][0]['costs'][0]['cost'][0]['value']
self.delivery_amt = estimated_cost
- self.message_post(body=f"Estimasi Ongkos Kirim: {estimated_cost}")
+ self.message_post(body=f"Estimasi Ongkos Kirim: {self.delivery_amt}")
+
else:
raise UserError("Gagal mendapatkan estimasi ongkir.")
@@ -173,9 +183,9 @@ class SaleOrder(models.Model):
data = {
'origin': int(origin_city_id),
- 'originType': 'city',
+ 'originType': 'subdistrict',
'destination': int(destination_city_id),
- 'destinationType': 'city',
+ 'destinationType': 'subdistrict',
'weight': int(total_weight * 1000),
'courier': courier,
}
@@ -186,16 +196,13 @@ class SaleOrder(models.Model):
return None
def _normalize_city_name(self, city_name):
- # Ubah nama kota menjadi huruf kecil
city_name = city_name.lower()
- # Hilangkan prefiks "kabupaten" atau "kota" jika ada
if city_name.startswith('kabupaten'):
city_name = city_name.replace('kabupaten', '').strip()
elif city_name.startswith('kota'):
city_name = city_name.replace('kota', '').strip()
- # Hilangkan spasi yang berlebihan
city_name = " ".join(city_name.split())
return city_name
@@ -206,7 +213,6 @@ class SaleOrder(models.Model):
'key': '7ac9883688da043b50cc32f0e3070bb6',
}
- # Normalisasi nama kota sebelum melakukan pencarian
normalized_city_name = self._normalize_city_name(city_name)
response = requests.get(url, headers=headers)