summaryrefslogtreecommitdiff
path: root/indoteknik_api
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_api')
-rw-r--r--indoteknik_api/controllers/api_v1/sale_order.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/indoteknik_api/controllers/api_v1/sale_order.py b/indoteknik_api/controllers/api_v1/sale_order.py
index 2d697ae1..16fcd449 100644
--- a/indoteknik_api/controllers/api_v1/sale_order.py
+++ b/indoteknik_api/controllers/api_v1/sale_order.py
@@ -284,6 +284,43 @@ class SaleOrder(controller.Controller):
sale_order = request.env['sale.order'].search(domain)
if sale_order:
data = request.env['sale.order'].api_v1_single_response(sale_order, context='with_detail')
+
+ CBD_PAYMENT_TERM_ID = 26
+ ALLOWED_UNSETTLED = {'', 'expire', 'pending'} # kalau mau ikutkan 'pending', tinggal tambahkan di set ini
+
+ def _is_website_order(so):
+ # aman kalau source website fix id=59
+ return bool(so.source_id and so.source_id.id == 59)
+
+ pay_status = (getattr(sale_order, 'payment_status', '') or '').strip().lower()
+ eligible = (
+ sale_order.approval_status in ('pengajuan1', 'pengajuan2') and
+ _is_website_order(sale_order) and
+ sale_order.payment_term_id and sale_order.payment_term_id.id == CBD_PAYMENT_TERM_ID and
+ pay_status in ALLOWED_UNSETTLED
+ )
+
+ redirect_url = getattr(sale_order, 'payment_link_midtrans', '') or ''
+ if eligible and not redirect_url:
+ try:
+ sale_order.sudo().generate_payment_link_midtrans_sales_order()
+ redirect_url = getattr(sale_order, 'payment_link_midtrans', '') or ''
+ except Exception as e:
+ _logger.warning(f'Autogenerate Midtrans gagal untuk SO {sale_order.id}: {e}')
+
+ # sisipkan ke payload (snake_case; FE kamu sudah biasa auto-camelCase)
+ data.update({
+ 'eligible_continue': eligible,
+ 'payment_summary': {
+ 'eligible': eligible,
+ 'approval_status': sale_order.approval_status or '',
+ 'payment_status': pay_status,
+ 'payment_term_id': sale_order.payment_term_id.id if sale_order.payment_term_id else None,
+ 'source_id': sale_order.source_id.id if sale_order.source_id else None,
+ 'redirect_url': redirect_url,
+ }
+ })
+
if sale_order.expected_ready_to_ship:
bulan_id = [
"Januari", "Februari", "Maret", "April", "Mei", "Juni",