summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py2
-rwxr-xr-xindoteknik_custom/models/sale_order.py24
2 files changed, 18 insertions, 8 deletions
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index 98b13cad..065dddbb 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -438,7 +438,7 @@ class SaleOrder(controller.Controller):
if params['value']['type'] == 'sale_order':
parameters['approval_status'] = 'pengajuan1'
- sale_order = request.env['sale.order'].create([parameters])
+ sale_order = request.env['sale.order'].with_context(from_website_checkout=True).create([parameters])
sale_order.onchange_partner_contact()
user_id = params['value']['user_id']
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 38d2505d..a41e001b 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -2265,24 +2265,33 @@ class SaleOrder(models.Model):
order_line.order_id.use_button = True
def _auto_set_shipping_from_website(self):
+ # Jalankan hanya jika context menandakan ini proses checkout
+ if not self.env.context.get('from_website_checkout'):
+ _logger.info("[AutoSetShipping] Dilewati karena bukan dari website checkout (context tidak ada)")
+ return
+
for order in self:
- # Jalankan hanya untuk SO dari website (ID 59)
+ _logger.info(f"[AutoSetShipping] Proses otomatis untuk SO: {order.name}")
+
+ # Validasi: pastikan source_id = Website
if not order.source_id or order.source_id.id != 59:
+ _logger.warning(f"[AutoSetShipping] SO {order.name} bukan dari Website (source_id.id != 59)")
continue
- # Jika shipping method adalah Self Pick Up (ID 32), atur ke custom
+ # Abaikan jika shipping method adalah Self Pick Up
if order.carrier_id and order.carrier_id.id == 32:
order.select_shipping_option = 'custom'
+ _logger.info(f"[AutoSetShipping] SO {order.name} menggunakan Self Pick Up. Set ke custom.")
continue
- # Set shipping option ke biteship dan jalankan estimasi
order.select_shipping_option = 'biteship'
order.action_estimate_shipping()
if not (order.delivery_service_type and order.carrier_id):
+ _logger.warning(f"[AutoSetShipping] SO {order.name} tidak memiliki delivery_service_type atau carrier_id")
continue
- # Ambil provider dari rajaongkir_kurir
+ # Cari provider dari mapping rajaongkir_kurir
self.env.cr.execute("""
SELECT name FROM rajaongkir_kurir
WHERE delivery_carrier_id = %s LIMIT 1
@@ -2297,7 +2306,7 @@ class SaleOrder(models.Model):
_logger.warning(f"[AutoSetShipping] Provider tidak ditemukan untuk carrier_id: {order.carrier_id.id}")
continue
- # Cari shipping option berdasarkan provider dan courier_service_code
+ # Cari shipping option berdasarkan courier_service_code + provider
matched_option = self.env['shipping.option'].search([
('sale_order_id', '=', order.id),
('courier_service_code', '=', order.delivery_service_type),
@@ -2307,15 +2316,16 @@ class SaleOrder(models.Model):
if matched_option:
order.shipping_option_id = matched_option.id
order.delivery_amt = matched_option.price
- _logger.info(f"[AutoSetShipping] Matched via courier_service_code: {matched_option.name} | Provider: {provider}")
+ _logger.info(f"[AutoSetShipping] Match: {matched_option.name} | Provider: {provider} | Price: {matched_option.price}")
else:
- _logger.warning(f"[AutoSetShipping] No match for service code '{order.delivery_service_type}' and provider '{provider}' in SO {order.name}")
+ _logger.warning(f"[AutoSetShipping] Tidak ditemukan match untuk SO {order.name} dengan service_code '{order.delivery_service_type}' dan provider '{provider}'")
@api.model
def create(self, vals):
# Ensure partner details are updated when a sale order is created
order = super(SaleOrder, self).create(vals)
+ _logger.info(f"[CREATE CONTEXT] {self.env.context}")
order._auto_set_shipping_from_website()
order._compute_etrts_date()
order._validate_expected_ready_ship_date()