diff options
| author | Miqdad <ahmadmiqdad27@gmail.com> | 2025-08-28 14:24:48 +0700 |
|---|---|---|
| committer | Miqdad <ahmadmiqdad27@gmail.com> | 2025-08-28 14:24:48 +0700 |
| commit | d672d8745f5157d4cf3ff17907a3ca0881b68901 (patch) | |
| tree | 255cc2eb9c9df7c8a7ca8e6b51adced4b0d3410c /indoteknik_api | |
| parent | c6f2111d3872604c6cdd0901c1ee2fde5edb59de (diff) | |
<Miqdad> Show bayar sekarang in detail transaction
Diffstat (limited to 'indoteknik_api')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/sale_order.py | 37 |
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", |
