diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2024-10-02 10:41:13 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2024-10-02 10:41:13 +0700 |
| commit | a2d93b35cc849d742e851f5d876557ac18c1a9e1 (patch) | |
| tree | 71d0870982d21cdbd2c2e0ae834771a22cf641bc | |
| parent | 1754a77d402af8c9fccb896e0b0745eb6e591c0b (diff) | |
cr function get id partner
| -rw-r--r-- | indoteknik_api/controllers/api_v1/partner.py | 1 | ||||
| -rwxr-xr-x | indoteknik_custom/models/sale_order.py | 26 |
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) |
