From 9b41c0a73a84161876203ee6b52881cc533d6eba Mon Sep 17 00:00:00 2001 From: Thanakorn S Date: Mon, 25 May 2026 14:33:28 +0700 Subject: [PATCH] PHP event trigger by NodeJS [stock dashboard] --- app/dashboard/index.php | 193 +++++++++++++++++- app/ics/api/engine/approve_stock.php | 3 + app/order/api/engine/cancel_order.php | 2 + app/order/api/engine/cancel_return.php | 2 + app/order/api/engine/confirm_order.php | 5 + app/order/api/engine/confirm_return.php | 5 + app/order/api/engine/delete_invoice.php | 2 + app/order/api/engine/delete_order.php | 2 + app/order/api/engine/delete_return.php | 2 + app/order/api/engine/manage_invoice.php | 2 + app/order/api/engine/manage_order.php | 2 + app/order/api/engine/manage_return.php | 2 + app/order/api/engine/proceed_to_invoice.php | 2 + .../api/engine/update_invoice_status.php | 2 + app/order/api/engine/void_invoice.php | 2 + 15 files changed, 227 insertions(+), 1 deletion(-) diff --git a/app/dashboard/index.php b/app/dashboard/index.php index c46fb22..2045569 100644 --- a/app/dashboard/index.php +++ b/app/dashboard/index.php @@ -276,10 +276,25 @@ + + diff --git a/app/ics/api/engine/approve_stock.php b/app/ics/api/engine/approve_stock.php index a614e12..4c46546 100644 --- a/app/ics/api/engine/approve_stock.php +++ b/app/ics/api/engine/approve_stock.php @@ -15,6 +15,7 @@ session_start(); require_once '../../../assets/utils/db_auth.php'; require_once '../../../assets/utils/classes/StockManager.php'; require_once '../../../assets/utils/classes/WarehouseManager.php'; +require_once '../../../assets/utils/notify_node.php'; require_role($user_role, ['owner', 'admin']); @@ -38,6 +39,8 @@ try { $pdo2->commit(); + notify_node('stock_updated', ['warehouse_id' => $warehouse_id, 'type' => $type], $company_id); + $answer['success'] = 1; $answer['message'] = 'Stock approved.'; exit(json_encode($answer)); diff --git a/app/order/api/engine/cancel_order.php b/app/order/api/engine/cancel_order.php index 4680e90..849c7fe 100644 --- a/app/order/api/engine/cancel_order.php +++ b/app/order/api/engine/cancel_order.php @@ -4,6 +4,7 @@ require_role($user_role, ['owner', 'admin']); require_once '../../../assets/utils/classes/OrderManager.php'; require_once '../../../assets/utils/classes/WarehouseManager.php'; + require_once '../../../assets/utils/notify_node.php'; $id = (int)($data['id'] ?? 0); @@ -21,6 +22,7 @@ $answer['success'] = 1; $answer['message'] = 'Order cancelled.'; + notify_node('order_updated', [], $company_id); } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; diff --git a/app/order/api/engine/cancel_return.php b/app/order/api/engine/cancel_return.php index 479fe54..1167c84 100644 --- a/app/order/api/engine/cancel_return.php +++ b/app/order/api/engine/cancel_return.php @@ -4,6 +4,7 @@ require_role($user_role, ['owner', 'admin']); require_once '../../../assets/utils/classes/ReturnManager.php'; require_once '../../../assets/utils/classes/WarehouseManager.php'; + require_once '../../../assets/utils/notify_node.php'; $id = (int)($data['id'] ?? 0); @@ -22,6 +23,7 @@ $answer['success'] = 1; $answer['message'] = 'Return cancelled.'; + notify_node('return_updated', [], $company_id); } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; diff --git a/app/order/api/engine/confirm_order.php b/app/order/api/engine/confirm_order.php index a11d1f5..7c5e2c6 100644 --- a/app/order/api/engine/confirm_order.php +++ b/app/order/api/engine/confirm_order.php @@ -7,6 +7,7 @@ require_once '../../../assets/utils/classes/WarehouseManager.php'; require_once '../../../assets/utils/classes/InvoiceManager.php'; require_once '../../../assets/utils/classes/CompanySettingManager.php'; + require_once '../../../assets/utils/notify_node.php'; $id = (int)($data['id'] ?? 0); @@ -35,6 +36,10 @@ $answer['message'] = 'Order confirmed.'; $answer['auto_approved'] = $auto_approve; $answer['auto_invoice'] = $auto_invoice; + notify_node('order_updated', [], $company_id); + if ($auto_invoice) { + notify_node('invoice_updated', [], $company_id); + } } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; diff --git a/app/order/api/engine/confirm_return.php b/app/order/api/engine/confirm_return.php index 073ad41..0b8c565 100644 --- a/app/order/api/engine/confirm_return.php +++ b/app/order/api/engine/confirm_return.php @@ -6,6 +6,7 @@ require_once '../../../assets/utils/classes/InvoiceManager.php'; require_once '../../../assets/utils/classes/WarehouseManager.php'; require_once '../../../assets/utils/classes/CompanySettingManager.php'; + require_once '../../../assets/utils/notify_node.php'; $id = (int)($data['id'] ?? 0); @@ -30,6 +31,10 @@ $answer['success'] = 1; $answer['message'] = 'Return confirmed.'; $answer['auto_cn'] = $auto_cn; + notify_node('return_updated', [], $company_id); + if ($auto_cn) { + notify_node('invoice_updated', [], $company_id); + } } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; diff --git a/app/order/api/engine/delete_invoice.php b/app/order/api/engine/delete_invoice.php index 8b1e618..19b7516 100644 --- a/app/order/api/engine/delete_invoice.php +++ b/app/order/api/engine/delete_invoice.php @@ -3,6 +3,7 @@ session_start(); require_once '../../../assets/utils/db_auth.php'; require_role($user_role, ['owner', 'admin']); require_once '../../../assets/utils/classes/InvoiceManager.php'; +require_once '../../../assets/utils/notify_node.php'; $id = (int)($data['id'] ?? 0); @@ -20,6 +21,7 @@ try { $answer['success'] = 1; $answer['message'] = 'Document deleted.'; + notify_node('invoice_updated', [], $company_id); } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; diff --git a/app/order/api/engine/delete_order.php b/app/order/api/engine/delete_order.php index bf983f6..26af20c 100644 --- a/app/order/api/engine/delete_order.php +++ b/app/order/api/engine/delete_order.php @@ -4,6 +4,7 @@ require_once '../../../assets/utils/db_auth.php'; require_role($user_role, ['owner', 'admin']); require_once '../../../assets/utils/classes/OrderManager.php'; require_once '../../../assets/utils/classes/WarehouseManager.php'; +require_once '../../../assets/utils/notify_node.php'; $id = (int)($data['id'] ?? 0); @@ -21,6 +22,7 @@ try { $answer['success'] = 1; $answer['message'] = 'Sales order deleted.'; + notify_node('order_updated', [], $company_id); } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; diff --git a/app/order/api/engine/delete_return.php b/app/order/api/engine/delete_return.php index d4619ac..e2b2484 100644 --- a/app/order/api/engine/delete_return.php +++ b/app/order/api/engine/delete_return.php @@ -4,6 +4,7 @@ require_once '../../../assets/utils/db_auth.php'; require_role($user_role, ['owner', 'admin']); require_once '../../../assets/utils/classes/ReturnManager.php'; require_once '../../../assets/utils/classes/WarehouseManager.php'; +require_once '../../../assets/utils/notify_node.php'; $id = (int)($data['id'] ?? 0); @@ -21,6 +22,7 @@ try { $answer['success'] = 1; $answer['message'] = 'Return deleted.'; + notify_node('return_updated', [], $company_id); } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; diff --git a/app/order/api/engine/manage_invoice.php b/app/order/api/engine/manage_invoice.php index 78b932a..3280d0c 100644 --- a/app/order/api/engine/manage_invoice.php +++ b/app/order/api/engine/manage_invoice.php @@ -4,6 +4,7 @@ require_role($user_role, ['owner', 'admin', 'staff']); require_once '../../../assets/utils/classes/UsageGuard.php'; require_once '../../../assets/utils/classes/InvoiceManager.php'; + require_once '../../../assets/utils/notify_node.php'; try { $action = $data['action'] ?? 'update'; @@ -29,6 +30,7 @@ if ($is_new) { (new UsageGuard($pdo1, $company_id, $packages))->increment(); } + notify_node('invoice_updated', [], $company_id); } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; diff --git a/app/order/api/engine/manage_order.php b/app/order/api/engine/manage_order.php index 48533ba..005174c 100644 --- a/app/order/api/engine/manage_order.php +++ b/app/order/api/engine/manage_order.php @@ -4,6 +4,7 @@ require_role($user_role, ['owner', 'admin', 'staff']); require_once '../../../assets/utils/classes/UsageGuard.php'; require_once '../../../assets/utils/classes/OrderManager.php'; + require_once '../../../assets/utils/notify_node.php'; // Decode items JSON string back to array $data['items'] = json_decode($data['items'] ?? '[]', true) ?: []; @@ -28,6 +29,7 @@ $answer['new_id'] = $new_id; (new UsageGuard($pdo1, $company_id, $packages))->increment(); } + notify_node('order_updated', [], $company_id); } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; diff --git a/app/order/api/engine/manage_return.php b/app/order/api/engine/manage_return.php index 11b0bc0..ba75d2d 100644 --- a/app/order/api/engine/manage_return.php +++ b/app/order/api/engine/manage_return.php @@ -3,6 +3,7 @@ require_once '../../../assets/utils/db_auth.php'; require_role($user_role, ['owner', 'admin', 'staff']); require_once '../../../assets/utils/classes/ReturnManager.php'; + require_once '../../../assets/utils/notify_node.php'; $action = $data['action'] ?? 'save'; $data['items'] = json_decode($data['items'] ?? '[]', true) ?: []; @@ -30,6 +31,7 @@ if ($new_id) { $answer['new_id'] = $new_id; } + notify_node('return_updated', [], $company_id); } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; diff --git a/app/order/api/engine/proceed_to_invoice.php b/app/order/api/engine/proceed_to_invoice.php index 3db1901..3055a92 100644 --- a/app/order/api/engine/proceed_to_invoice.php +++ b/app/order/api/engine/proceed_to_invoice.php @@ -3,6 +3,7 @@ require_once '../../../assets/utils/db_auth.php'; require_role($user_role, ['owner', 'admin', 'staff']); require_once '../../../assets/utils/classes/InvoiceManager.php'; + require_once '../../../assets/utils/notify_node.php'; $order_id = (int)($data['order_id'] ?? 0); @@ -22,6 +23,7 @@ $answer['success'] = 1; $answer['new_id'] = $new_id; + notify_node('invoice_updated', [], $company_id); } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; diff --git a/app/order/api/engine/update_invoice_status.php b/app/order/api/engine/update_invoice_status.php index 64fc982..c180539 100644 --- a/app/order/api/engine/update_invoice_status.php +++ b/app/order/api/engine/update_invoice_status.php @@ -3,6 +3,7 @@ require_once '../../../assets/utils/db_auth.php'; require_role($user_role, ['owner', 'admin', 'staff']); require_once '../../../assets/utils/classes/InvoiceManager.php'; + require_once '../../../assets/utils/notify_node.php'; $id = (int)($data['invoice_id'] ?? 0); $status = (int)($data['status'] ?? 0); @@ -29,6 +30,7 @@ $answer['success'] = 1; $answer['message'] = 'Invoice status updated.'; + notify_node('invoice_updated', [], $company_id); } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.'; diff --git a/app/order/api/engine/void_invoice.php b/app/order/api/engine/void_invoice.php index 4f8cc94..9ec142e 100644 --- a/app/order/api/engine/void_invoice.php +++ b/app/order/api/engine/void_invoice.php @@ -3,6 +3,7 @@ require_once '../../../assets/utils/db_auth.php'; require_role($user_role, ['owner', 'admin']); require_once '../../../assets/utils/classes/InvoiceManager.php'; + require_once '../../../assets/utils/notify_node.php'; $id = (int)($data['id'] ?? 0); @@ -20,6 +21,7 @@ $answer['success'] = 1; $answer['message'] = 'Invoice voided.'; + notify_node('invoice_updated', [], $company_id); } catch (PDOException $e) { $answer['message'] = 'Database error, please try again.';