diff --git a/admin/controller/payment/hutko.php b/admin/controller/payment/hutko.php index da11582..1033966 100644 --- a/admin/controller/payment/hutko.php +++ b/admin/controller/payment/hutko.php @@ -124,9 +124,6 @@ class Hutko extends \Opencart\System\Engine\Controller { $this->model_setting_event->deleteEventByCode('hutko_order_info'); } - /** - * Event handler: Injects the Hutko panel into Order Info page - */ public function order_info(string &$route, array &$args, string &$output): void { $order_id = isset($args['order_id']) ? (int)$args['order_id'] : 0; if (!$order_id) return; @@ -134,19 +131,35 @@ class Hutko extends \Opencart\System\Engine\Controller { $this->load->model('sale/order'); $order_info = $this->model_sale_order->getOrder($order_id); - // Check if payment method is Hutko (code can vary slightly depending on how it was saved) if ($order_info && isset($order_info['payment_code']) && ($order_info['payment_code'] == 'hutko' || $order_info['payment_code'] == 'hutko.hutko')) { $this->load->language('extension/hutko/payment/hutko'); $this->load->model('extension/hutko/payment/hutko'); - $hutko_order = $this->model_extension_hutko_payment_hutko->getHutkoOrder($order_id); + // NEW: Get all transactions + $transactions = $this->model_extension_hutko_payment_hutko->getTransactions($order_id); - // Prepare Data - $data['user_token'] = $this->session->data['user_token']; + // Format transactions for view + $data['transactions'] = []; + foreach ($transactions as $t) { + $payload_arr = json_decode($t['payload'], true); + $pretty_payload = $payload_arr ? json_encode($payload_arr, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) : $t['payload']; + + $data['transactions'][] = [ + 'date' => date($this->language->get('datetime_format'), strtotime($t['date_added'])), + 'ref' => $t['hutko_ref'], + 'type' => $t['type'], + 'status' => $t['status'], + 'amount' => $t['amount'] . ' ' . $t['currency'], + 'payload' => $pretty_payload, + // Only allow refund if it's a successful callback (approved payment) + 'can_refund'=> ($t['type'] == 'callback' && $t['status'] == 'success') + ]; + } + $data['order_id'] = $order_id; - $data['hutko_transaction_ref'] = $hutko_order['hutko_transaction_ref'] ?? ''; + $data['user_token'] = $this->session->data['user_token']; // URLs $data['refund_url'] = $this->url->link('extension/hutko/payment/hutko.refund', 'user_token=' . $this->session->data['user_token'] . '&order_id=' . $order_id); @@ -154,7 +167,6 @@ class Hutko extends \Opencart\System\Engine\Controller { // Translations $data['text_payment_information'] = $this->language->get('text_payment_information'); - $data['text_hutko_transaction_ref_label'] = $this->language->get('text_hutko_transaction_ref_label'); $data['text_hutko_refund_title'] = $this->language->get('text_hutko_refund_title'); $data['text_hutko_status_title'] = $this->language->get('text_hutko_status_title'); $data['entry_refund_amount'] = $this->language->get('entry_refund_amount'); @@ -162,56 +174,14 @@ class Hutko extends \Opencart\System\Engine\Controller { $data['button_hutko_refund'] = $this->language->get('button_hutko_refund'); $data['button_hutko_status_check'] = $this->language->get('button_hutko_status_check'); $data['text_confirm_refund'] = $this->language->get('text_confirm_refund'); - $data['text_not_available'] = $this->language->get('text_not_available'); $data['text_loading'] = $this->language->get('text_loading'); + $data['text_no_transactions'] = 'No Hutko transactions recorded.'; - $data['hutko_transaction_ref_display'] = $data['hutko_transaction_ref'] ?: $data['text_not_available']; - - // Load View $panel_html = $this->load->view('extension/hutko/payment/hutko_order_info_panel', $data); - // Injection Logic: Try to place it before the History card - // We look for the "Order History" text or the history div ID. - // OC4 typically uses id="history" for the history list, but we want to be above the card containing it. - - $markers = [ - '