summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrisusilo48 <tri.susilo@altama.co.id>2025-03-13 11:25:22 +0700
committertrisusilo48 <tri.susilo@altama.co.id>2025-03-13 11:25:22 +0700
commit2b1783368e7be632e18be524b5288713125e7902 (patch)
tree8918cd93bb776187d487d187ebd6c4f4a5cf22ea
parent56e42190cb5cf039ee3ad05068dc7fb94f72943d (diff)
uat bitehsip
-rw-r--r--indoteknik_api/controllers/api_v1/product.py5
-rwxr-xr-xindoteknik_custom/models/sale_order.py34
-rw-r--r--indoteknik_custom/models/stock_picking.py17
3 files changed, 32 insertions, 24 deletions
diff --git a/indoteknik_api/controllers/api_v1/product.py b/indoteknik_api/controllers/api_v1/product.py
index 557215ea..ef2d8bf2 100644
--- a/indoteknik_api/controllers/api_v1/product.py
+++ b/indoteknik_api/controllers/api_v1/product.py
@@ -34,9 +34,12 @@ class Product(controller.Controller):
categories.reverse()
return self.response(categories, headers=[('Cache-Control', 'max-age=3600, public')])
- @http.route(prefix + 'product/variants/sla', auth='public', methods=['GET', 'OPTIONS'])
+ @http.route(prefix + 'product/variants/sla', auth='public', methods=['POST', 'OPTIONS'])
@controller.Controller.must_authorized()
def get_product_template_sla_by_id(self, **kwargs):
+ params = kwargs
+
+
body_params = kwargs.get('ids')
if not body_params:
diff --git a/indoteknik_custom/models/sale_order.py b/indoteknik_custom/models/sale_order.py
index 852e3cf0..b22ee2ee 100755
--- a/indoteknik_custom/models/sale_order.py
+++ b/indoteknik_custom/models/sale_order.py
@@ -498,7 +498,6 @@ class SaleOrder(models.Model):
if all_fast_products:
return {'slatime': 1, 'include_instant': include_instant}
-
# Cari semua vendor pemenang untuk produk yang diberikan
vendors = self.env['purchase.pricelist'].search([
('product_id', 'in', product_ids),
@@ -532,18 +531,18 @@ class SaleOrder(models.Model):
max_slatime = 1 # Default SLA jika tidak ada
slatime = self.calculate_sla_by_vendor(rec.order_line)
max_slatime = max(max_slatime, slatime['slatime'])
+
+
+ current_date = datetime.now().date()
if rec.date_order:
- sum_days = max_slatime + self.get_days_until_next_business_day(rec.date_order) - 1
- if not rec.estimated_arrival_days:
- rec.estimated_arrival_days = sum_days
-
- eta_date = rec.date_order + timedelta(days=sum_days)
+ sum_days = max_slatime + self.get_days_until_next_business_day(current_date) - 1
+ rec.estimated_arrival_days = sum_days
+
+ eta_date = current_date + timedelta(days=sum_days)
rec.estimated_ready_ship_date = eta_date
rec.commitment_date = eta_date
- # Jika expected_ready_to_ship kosong, set nilai default
- if not rec.expected_ready_to_ship:
- rec.expected_ready_to_ship = eta_date
+ rec.expected_ready_to_ship = eta_date
@@ -765,14 +764,10 @@ class SaleOrder(models.Model):
def write(self, vals):
- res = super(SaleOrder, self).write(vals)
- # self._compute_etrts_date()
if 'carrier_id' in vals:
for picking in self.picking_ids:
if picking.state == 'assigned':
picking.carrier_id = self.carrier_id
-
- return res
def calculate_so_status(self):
so_state = ['sale']
@@ -1229,7 +1224,7 @@ class SaleOrder(models.Model):
order._set_sppkp_npwp_contact()
order.calculate_line_no()
order.send_notif_to_salesperson()
- order._compute_etrts_date()
+ # order._compute_etrts_date()
# order.order_line.get_reserved_from()
res = super(SaleOrder, self).action_confirm()
@@ -1629,15 +1624,15 @@ class SaleOrder(models.Model):
# order._update_partner_details()
return order
- def write(self, vals):
+ # def write(self, vals):
# Call the super method to handle the write operation
- res = super(SaleOrder, self).write(vals)
+ # res = super(SaleOrder, self).write(vals)
# self._compute_etrts_date()
# Check if the update is coming from a save operation
# if any(field in vals for field in ['sppkp', 'npwp', 'email', 'customer_type']):
# self._update_partner_details()
- return res
+ # return res
def _update_partner_details(self):
for order in self:
@@ -1666,7 +1661,8 @@ class SaleOrder(models.Model):
if command[0] == 0: # A new line is being added
raise UserError(
"SO tidak dapat ditambahkan produk baru karena SO sudah menjadi sale order.")
+
res = super(SaleOrder, self).write(vals)
- if 'order_line' in vals:
- self._compute_etrts_date()
+ if any(field in vals for field in ["order_line", "client_order_ref"]):
+ self._compute_etrts_date()
return res \ No newline at end of file
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py
index ab8109c7..edc9cc78 100644
--- a/indoteknik_custom/models/stock_picking.py
+++ b/indoteknik_custom/models/stock_picking.py
@@ -13,11 +13,11 @@ import requests
import time
import logging
import re
-from deep_translator import GoogleTranslator
_logger = logging.getLogger(__name__)
_biteship_url = "https://api.biteship.com/v1"
-_biteship_api_key = "biteship_live.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiaW5kb3Rla25payIsInVzZXJJZCI6IjY3MTViYTJkYzVkMjdkMDAxMjRjODk2MiIsImlhdCI6MTc0MTE1NTU4M30.pbFCai9QJv8iWhgdosf8ScVmEeP3e5blrn33CHe7Hgo"
+_biteship_api_key = "biteship_test.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSW5kb3Rla25payIsInVzZXJJZCI6IjY3MTViYTJkYzVkMjdkMDAxMjRjODk2MiIsImlhdCI6MTcyOTQ5ODAwMX0.L6C73couP4-cgVEfhKI2g7eMCMo3YOFSRZhS-KSuHNA"
+# _biteship_api_key = "biteship_live.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiaW5kb3Rla25payIsInVzZXJJZCI6IjY3MTViYTJkYzVkMjdkMDAxMjRjODk2MiIsImlhdCI6MTc0MTE1NTU4M30.pbFCai9QJv8iWhgdosf8ScVmEeP3e5blrn33CHe7Hgo"
@@ -492,8 +492,18 @@ class StockPicking(models.Model):
self.biteship_tracking_id = data.get("courier", {}).get("tracking_id", "")
self.biteship_waybill_id = data.get("courier", {}).get("waybill_id", "")
self.delivery_tracking_no = data.get("courier", {}).get("waybill_id", "")
+
+ waybill_id = data.get("courier", {}).get("waybill_id", "")
+
+ message = f"✅ Berhasil Order ke Biteship! Resi: {waybill_id}" if waybill_id else "⚠️ Order berhasil, tetapi tidak ada nomor resi."
- return data
+ return {
+ 'effect': {
+ 'fadeout': 'slow', # Efek menghilang perlahan
+ 'message': message, # Pesan sukses
+ 'type': 'rainbow_man', # Efek animasi lucu Odoo
+ }
+ }
else:
error_data = response.json()
error_message = error_data.get("error", "Unknown error")
@@ -1203,7 +1213,6 @@ class StockPicking(models.Model):
manifests.append({
"status": re.sub(r'[^a-zA-Z0-9\s]', ' ', entry["status"]).lower().capitalize(),
"datetime": self._convert_to_local_time(entry["updated_at"]),
- # "description": GoogleTranslator(source='auto', target='id').translate(entry["note"]),
"description": description[entry["status"]],
})