//vé rẻ theo tháng // // // // // // // // function get_flight_data_shortcode($atts) { // Lấy tham số truyền vào từ shortcode $atts = shortcode_atts( array( 'from' => '', 'to' => '', 'depart' => '' ), $atts ); // URL của API $url = 'https://www.bestprice.vn/ajax-get-flight-cheapest.html?From=' . urlencode($atts['from']) . '+%28' . urlencode($atts['from']) . '%29&From_Code=' . urlencode($atts['from']) . '&To=' . urlencode($atts['to']) . '+%28' . urlencode($atts['to']) . '%29&To_Code=' . urlencode($atts['to']) . '&Depart=' . urlencode($atts['depart']) . '&Return=&Type=oneway&ADT=1&CHD=0&INF=0&is_domistic=1&is_search_cheapest=1'; // Khởi tạo cURL $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Gửi yêu cầu và nhận dữ liệu $response = curl_exec($ch); // Kiểm tra lỗi if ($response === false) { return 'Lỗi cURL: ' . curl_error($ch); } else { // Chuyển đổi dữ liệu JSON thành mảng PHP $data = json_decode($response, true); $output = ''; // Kiểm tra xem có dữ liệu không if (!empty($data['data_depart'])) { // Thêm CSS cho bảng $output .= " "; // Tạo bảng dữ liệu chuyến bay $output .= ""; $output .= ""; // Lặp qua từng chuyến bay và hiển thị foreach ($data['data_depart'] as $date => $flight) { $output .= ""; $output .= ""; $output .= ""; $output .= ""; $output .= ""; $output .= ""; $output .= ""; } $output .= "
NgàyHãng hàng khôngSố hiệu chuyến bayGiá véMua vé
📅" . $flight['Date'] . "" . $flight['Airline'] . "" . $flight['FlightNumber'] . "" . $flight['Price_Short'] . "Mua vé
"; } else { $output .= "Không tìm thấy chuyến bay."; } } // Đóng cURL curl_close($ch); return $output; } // Đăng ký shortcode add_shortcode('flight_data', 'get_flight_data_shortcode'); // // Hàm xử lý shortcode cho thông tin chuyến bay // Hàm xử lý shortcode cho thông tin chuyến bay function flight_info_shortcode($atts) { // Lấy mã chuyến bay từ thuộc tính shortcode $flight_code = isset($atts['code']) ? sanitize_text_field($atts['code']) : ''; if (empty($flight_code)) { return 'Mã chuyến bay là bắt buộc.'; } // Thiết lập URL API cho mã chuyến bay $url = 'https://api.flightradar24.com/common/v1/flight/list.json?&fetchBy=flight&page=1&limit=25&query=' . $flight_code; // Gửi yêu cầu đến API $response = wp_remote_get($url); if (is_wp_error($response)) { return 'Không thể lấy thông tin chuyến bay.'; } // Lấy dữ liệu từ phản hồi $data = json_decode(wp_remote_retrieve_body($response), true); if (empty($data['result']['response']['data'])) { return 'Không có thông tin chuyến bay nào.'; } // Bắt đầu tạo HTML với bảng $output = '
'; $output .= '

Thông Tin Chuyến Bay cho ' . esc_html($flight_code) . '

'; // Tạo bảng cho thông tin chuyến bay $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; // Duyệt qua từng chuyến bay đã lấy thông tin foreach ($data['result']['response']['data'] as $flight) { $output .= ''; // Thay thế tên sân bay khởi hành $origin_name = esc_html($flight['airport']['origin']['name']); $origin_code = esc_html($flight['airport']['origin']['code']['iata']); $origin_display_name = strpos($origin_name, 'International Airport') !== false ? 'Sân bay quốc tế ' . str_replace('International Airport', '', $origin_name) : (strpos($origin_name, 'Airport') !== false ? 'Sân bay ' . str_replace('Airport', '', $origin_name) : $origin_name); $output .= ''; // Thêm biểu tượng máy bay vào cột Chuyến Bay $output .= ''; // Thay thế tên sân bay đến $destination_name = esc_html($flight['airport']['destination']['name']); $destination_code = esc_html($flight['airport']['destination']['code']['iata']); $destination_display_name = strpos($destination_name, 'International Airport') !== false ? 'Sân bay quốc tế ' . str_replace('International Airport', '', $destination_name) : (strpos($destination_name, 'Airport') !== false ? 'Sân bay ' . str_replace('Airport', '', $destination_name) : $destination_name); $output .= ''; // Dịch trạng thái chuyến bay sang tiếng Việt $status_text = esc_html($flight['status']['text']); $time = ''; if (preg_match('/\d{2}:\d{2}/', $status_text, $matches)) { $time = $matches[0]; } if (strpos($status_text, 'Scheduled') !== false) { $status_text = 'Dự Kiến' . ($time ? ' ' . $time : ''); } elseif (strpos($status_text, 'Landed') !== false) { $status_text = 'Đã Hạ Cánh' . ($time ? ' ' . $time : ''); } elseif (strpos($status_text, 'Cancelled') !== false) { $status_text = 'Bị Huỷ' . ($time ? ' ' . $time : ''); } elseif (strpos($status_text, 'Estimated dep') !== false) { $status_text = 'Giờ bay mới' . ($time ? ' ' . $time : ''); } $output .= ''; // Lấy và hiển thị thời gian chuyến bay theo múi giờ sân bay khởi hành $departure_timezone = isset($flight['airport']['origin']['timezone']['name']) ? $flight['airport']['origin']['timezone']['name'] : 'UTC'; $departure_time = new DateTime('@' . $flight['time']['scheduled']['departure']); $departure_time->setTimezone(new DateTimeZone($departure_timezone)); $output .= ''; $output .= ''; // Lấy và hiển thị thời gian chuyến bay theo múi giờ sân bay đến $arrival_timezone = isset($flight['airport']['destination']['timezone']['name']) ? $flight['airport']['destination']['timezone']['name'] : 'UTC'; $arrival_time = new DateTime('@' . $flight['time']['scheduled']['arrival']); $arrival_time->setTimezone(new DateTimeZone($arrival_timezone)); $output .= ''; $output .= ''; } $output .= ''; $output .= '
Sân Bay Khởi HànhChuyến BaySân Bay ĐếnTrạng TháiNgày Chuyến BayGiờ Khởi Hành Dự KiếnGiờ Đến Dự Kiến
' . trim($origin_display_name) . ' (' . $origin_code . ') ' . esc_html($flight['identification']['number']['default']) . '' . trim($destination_display_name) . ' (' . $destination_code . ')' . $status_text . '' . $departure_time->format('d-m-Y') . '' . $departure_time->format('H:i') . '' . $arrival_time->format('H:i') . '
'; $output .= '
'; return $output; } // Đăng ký shortcode add_shortcode('flight_info', 'flight_info_shortcode'); // Shortcode hiển thị trạng thái chuyến bay add_shortcode('flightstatus', function($atts) { $atts = shortcode_atts(array( 'codes' => '' // Mặc định là chuỗi rỗng nếu không có giá trị truyền vào ), $atts); if (empty($atts['codes'])) { return '

Không có mã sân bay nào được cung cấp.

'; } $airport_codes = explode(',', esc_attr($atts['codes'])); // Tách các mã sân bay $output = ''; foreach ($airport_codes as $airport_code) { $airport_code = trim($airport_code); // Gọi API lấy thông tin sân bay $url = 'https://api.flightradar24.com/common/v1/airport.json?code=' . $airport_code; $response = wp_remote_get($url); if (is_wp_error($response)) { $output .= '

Không thể kết nối đến API cho ' . esc_html($airport_code) . '. Vui lòng thử lại sau.

'; continue; } $data = wp_remote_retrieve_body($response); $getflight = json_decode($data, true); if (empty($getflight['result']['response']['airport'])) { $output .= '

Không có dữ liệu cho ' . esc_html($airport_code) . '.

'; continue; } $airport_name = translate_airport_names($getflight['result']['response']['airport']['pluginData']['details']['name'] ?? 'N/A'); $timezone = $getflight['result']['response']['airport']['pluginData']['details']['timezone']['name'] ?? 'UTC'; $gmt_offset = get_gmt_offset($timezone); $arrivals = $getflight['result']['response']['airport']['pluginData']['schedule']['arrivals']['data'] ?? []; $departures = $getflight['result']['response']['airport']['pluginData']['schedule']['departures']['data'] ?? []; // Chuyến bay đến $output .= '

' . esc_html($airport_name) . ' - Chuyến bay đến

'; $output .= render_flight_table($arrivals, 'Từ', $airport_name, $gmt_offset, $timezone); // Chuyến bay đi $output .= '

' . esc_html($airport_name) . ' - Chuyến bay đi

'; $output .= render_flight_table($departures, 'Đến', $airport_name, $gmt_offset, $timezone, true); } return $output; }); // Hàm render bảng chuyến bay function render_flight_table($flights, $column_title, $airport_name, $gmt_offset, $timezone, $is_departure = false) { $output = '
'; $output .= ''; if (empty($flights)) { $output .= ''; } else { foreach ($flights as $flight) { $time = $flight['flight']['time']['scheduled']['departure'] ?? null; $formatted_time = $time ? format_flight_time($time, $timezone) : 'N/A'; $formatted_time = str_replace(', ', '
', $formatted_time); // Xuống dòng $from_to_airport = $is_departure ? translate_airport_names($flight['flight']['airport']['destination']['name'] ?? 'N/A') : translate_airport_names($flight['flight']['airport']['origin']['name'] ?? 'N/A'); $flight_number = $flight['flight']['identification']['number']['default'] ?? 'N/A'; $airline = $flight['flight']['airline']['name'] ?? 'N/A'; $status = translate_status($flight['flight']['status']['text'] ?? 'N/A'); $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; } } $output .= '
Khởi hành (' . esc_html($gmt_offset) . ')' . esc_html($column_title) . 'Chuyến bayHãng hàng khôngTrạng thái
Không có dữ liệu chuyến bay.
' . $formatted_time . '' . esc_html($from_to_airport) . '' . esc_html($flight_number) . '' . esc_html($airline) . ' ' . esc_html($status) . '
'; return $output; } // Hàm loại bỏ chữ "Sân bay" khỏi tên function remove_sanbay_prefix($airport_name) { return str_replace('Sân bay ', '', $airport_name); } // Hàm định dạng thời gian theo múi giờ function format_flight_time($timestamp, $timezone_name) { if (!$timestamp) return 'N/A'; try { $datetime = new DateTime('@' . $timestamp); // Tạo thời gian từ timestamp (UTC) $datetime->setTimezone(new DateTimeZone($timezone_name)); // Chuyển sang múi giờ sân bay return $datetime->format('H:i, d/m/Y'); // Hiển thị giờ:phút, ngày/tháng/năm } catch (Exception $e) { return 'N/A'; } } // Hàm chuyển đổi múi giờ sang GMT+/- format function get_gmt_offset($timezone_name) { try { $timezone = new DateTimeZone($timezone_name); $datetime = new DateTime('now', $timezone); $offset = $timezone->getOffset($datetime) / 3600; // Chuyển giây sang giờ return 'GMT' . ($offset >= 0 ? '+' . $offset : $offset); // Hiển thị dạng GMT+/-X } catch (Exception $e) { return 'GMT'; } } // Các hàm hỗ trợ khác (dịch trạng thái, dịch tên sân bay, CSS) giữ nguyên như trước. // Hàm lấy thông tin thời tiết function get_weather_info($getflight) { $weather_data = $getflight['result']['response']['airport']['pluginData']['weather'] ?? null; if (!$weather_data) { return null; } $windhill= translate_wind($weather_data['wind']['speed']['text']); $condition = translate_weather_condition($weather_data['sky']['condition']['text']); return [ 'condition' => $condition, 'temperature' => $weather_data['temp']['celsius'], 'wind' => $windhill, 'humidity' => $weather_data['humidity'], ]; } //hàm dịch gió // Hàm dịch điều kiện thời tiết function translate_wind($windhill) { $translations = array( 'Mod' => 'Trung bình', 'Cloudy' => 'Nhiều mây', 'Clear' => 'Trời quang', 'Overcast' => 'U ám', 'Calm' => 'Lặng gió', 'Fog' => 'Sương mù', 'Sunny' => 'Có nắng', 'Partly sunny' => 'Có nắng vài nơi', 'Windy' => 'Nhiều gió', 'Dry' => 'Khô', 'Wet' => 'Ướt', 'Mild' => 'Ôn hòa', 'Humid' => 'Ẩm', 'Wind Chill' => 'Gió rét', 'Stormy' => 'Có bão', 'Sunshine' => 'Ánh nắng', 'Wind' => 'Gió', 'Breeze' => 'Gió nhẹ', 'Gale' => 'Gió giật', 'Drizzle' => 'Mưa phùn', 'Torrential rain' => 'Mưa lớn', 'Frost' => 'Băng giá', 'Clear' => 'Trời xanh', 'Rainbow' => 'Cầu vồng', 'Icy' => 'Đóng băng', 'Raindrop' => 'Hạt mưa', ); return $translations[$windhill] ?? $windhill; } // Hàm dịch điều kiện thời tiết function translate_weather_condition($condition) { $translations = array( 'Mod' => 'Trung bình', 'Cloudy' => 'Nhiều mây', 'Clear' => 'Trời quang', 'Overcast' => 'U ám', 'Calm' => 'Lặng gió', 'Fog' => 'Sương mù', 'Sunny' => 'Có nắng', 'Partly sunny' => 'Có nắng vài nơi', 'Windy' => 'Nhiều gió', 'Dry' => 'Khô', 'Wet' => 'Ướt', 'Mild' => 'Ôn hòa', 'Humid' => 'Ẩm', 'Wind Chill' => 'Gió rét', 'Stormy' => 'Có bão', 'Sunshine' => 'Ánh nắng', 'Wind' => 'Gió', 'Breeze' => 'Gió nhẹ', 'Gale' => 'Gió giật', 'Drizzle' => 'Mưa phùn', 'Torrential rain' => 'Mưa lớn', 'Frost' => 'Băng giá', 'Clear' => 'Trời xanh', 'Rainbow' => 'Cầu vồng', 'Icy' => 'Đóng băng', 'Raindrop' => 'Hạt mưa', 'Rain' => 'Có Mưa', ); return $translations[$condition] ?? $condition; } // Enqueue Font Awesome function enqueue_font_awesome() { wp_enqueue_style('font-awesome', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css'); } add_action('wp_enqueue_scripts', 'enqueue_font_awesome'); // CSS Responsive cho Bảng function flight_status_styles() { echo ' '; } add_action('wp_head', 'flight_status_styles'); // Hàm dịch tên sân bay và loại bỏ "Sân bay" function translate_airport_names($airport_name) { $translations = array( 'International Airport' => '', 'Airport' => '', 'Ho Chi Minh City' => 'Tân Sơn Nhất', 'Hanoi Noi Bai' => 'Nội Bài', 'Rach Gia' => 'Rạch Giá', 'Hue Phu Bai' => 'Huế', 'Dong Hoi' => 'Đồng Hới', 'Can Tho' => 'Cần Thơ', 'Da Lat Lien Khuong' => 'Đà Lạt', 'Phu Quoc' => 'Phú Quốc', 'Nha Trang Cam Ranh' => 'Nha Trang', 'Qui Nhon Phu Cat' => 'Quy Nhơn', 'Dien Bien Phu' => 'Điện Biên Phủ', 'Haiphong Cat Bi' => 'Hải Phòng', 'Buon Ma Thuot' => 'Buôn Ma Thuột', 'Con Dao' => 'Côn Đảo', 'Quang Ninh Van Don' => 'Vân Đồn', 'Da Nang' => 'Đà Nẵng', 'Tuy Hoa Dong Tac' => 'Tuy Hòa', ); foreach ($translations as $english => $vietnamese) { $airport_name = str_replace($english, $vietnamese, $airport_name); } return trim(str_replace('Sân bay ', '', $airport_name)); } // Hàm dịch trạng thái chuyến bay function translate_status($status) { $translations = array( 'Scheduled' => 'Đã lên lịch', 'Estimated dep' => 'Thời gian dự kiến', 'Canceled' => 'Đã hủy', 'Landed' => 'Đã hạ cánh', 'Estimated'=>'Dự Kiến', 'Delayed ' =>'Trễ ', // Thêm các trạng thái khác vào đây ); // Tìm kiếm và thay thế trạng thái foreach ($translations as $english => $vietnamese) { $status = str_replace($english, $vietnamese, $status); } return $status; } // Thêm mã này vào tệp functions.php của theme function display_current_month_year_numeric() { $current_month_year = date('m/Y'); // Lấy tháng và năm hiện tại dưới dạng số return 'Lịch Bay Vietsovpetro Cập Nhật ' . $current_month_year; } add_shortcode('current_month_year_numeric', 'display_current_month_year_numeric'); // // function display_fare_rules_table($json_data, $airline_key) { // Define the mapping of keys to airline names $airline_names = [ "VU" => "Vietravel Airlines", "BL" => "Bamboo Airways", "VJ_2" => "VietJet Air", "VN" => "Vietnam Airlines" ]; // Decode JSON data $data_for_airline = null; foreach ($json_data as $item) { if ($item['key'] === $airline_key) { $data_for_airline = json_decode($item['value'], true); break; } } if (!$data_for_airline) { return "

No data found for airline key: $airline_key

"; } // Start building the output with an optional header $output = ''; // Check if the airline key is in the mapping and add an

header if (isset($airline_names[$airline_key])) { $output .= '

Điều kiện vé hãng ' . esc_html($airline_names[$airline_key]) . '

'; } // Start building the HTML table with translated headers $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; // Add data rows to the table foreach ($data_for_airline as $cabin) { $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; } $output .= '
Tên Hạng GhếHạng Đặt ChỗHoàn VéThay Đổi Lịch TrìnhHành Lý Xách TayHành Lý Ký Gửi
' . esc_html($cabin['cabinName']) . '' . esc_html($cabin['bookingClass']) . '' . esc_html($cabin['refund']) . '' . esc_html($cabin['reschedule']) . '' . esc_html($cabin['boardingBaggage']) . '' . esc_html($cabin['checkinBaggage']) . '
'; return $output; } // Shortcode to use the function in WordPress function fare_rules_shortcode($atts) { $atts = shortcode_atts(array( 'key' => '' ), $atts, 'fare_rules'); // Example JSON data (should be retrieved or passed in reality) $json_data = [ [ "key" => "QH", "value" => "[{\"cabin\":\"ECONOMYSAVERMAX\",\"cabinName\":\"Economy Saver Max\",\"bookingClass\":\"A|V|U|R|O\",\"refund\":false,\"reschedule\":\"600,000 (Trước khởi hành tối thiểu 3 tiếng) (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":false,\"loungeService\":\"Có phí\"},{\"cabin\":\"ECONOMYSAVER\",\"cabinName\":\"Economy Saver\",\"bookingClass\":\"G\",\"refund\":false,\"reschedule\":\"600,000 (Trước khởi hành tối thiểu 3 tiếng) (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"20KG\",\"goShow\":false,\"seat\":\"Miễn phí\",\"checkinPriority\":false,\"loungeService\":\"Có phí\"},{\"cabin\":\"ECONOMYSMART\",\"cabinName\":\"Economy Smart\",\"bookingClass\":\"X|T|Q|N|M|L|K|H\",\"refund\":\"450,000 (Trước khởi hành tối thiểu 3 tiếng) | 600,000 (Trong vòng 03 tiếng trước giờ khởi hành và sau giờ khởi hành) (Đã bao gồm VAT)\",\"reschedule\":\"450,000 (Trước khởi hành tối thiểu 3 tiếng) hoặc 600,000 (Trong vòng 03 tiếng trước giờ khởi hành và sau giờ khởi hành) (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":false,\"loungeService\":\"Có phí\"},{\"cabin\":\"ECONOMYFLEX\",\"cabinName\":\"Economy Flex\",\"bookingClass\":\"B|W|Y\",\"refund\":\"300,000 (Đã bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"20KG\",\"goShow\":\"Miễn phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":false,\"loungeService\":\"Có phí\"},{\"cabin\":\"BUSINESSSMART\",\"cabinName\":\"Business Smart\",\"bookingClass\":\"D|I|C\",\"refund\":\"450,000 (Đã bao gồm VAT)\",\"reschedule\":\"300,000 (Trước khởi hành tối thiểu 3 tiếng) hoặc 450,000 (Trong vòng 03 tiếng trước giờ khởi hành và sau giờ khởi hành) (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG x 2\",\"checkinBaggage\":\"40KG\",\"goShow\":false,\"seat\":\"Miễn phí\",\"checkinPriority\":\"Miễn phí\",\"loungeService\":\"Miễn phí\"},{\"cabin\":\"BUSINESSFLEX\",\"cabinName\":\"Business Flex\",\"bookingClass\":\"J|F\",\"refund\":\"300,000 (Đã bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG x 2\",\"checkinBaggage\":\"40KG\",\"goShow\":\"Miễn phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"Miễn phí\",\"loungeService\":\"Miễn phí\"}]" ], [ "key" => "VJ_3", "value" => "[{\"cabin\":\"ECO\",\"cabinName\":\"Eco\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E24H) 01 year valid credit shell (Excluded VAT)\",\"reschedule\":\"FEE (\u003E3H) + fare difference fee\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Excluded\",\"goShow\":false,\"seat\":\"FEE\",\"checkinPriority\":false,\"loungeService\":false},{\"cabin\":\"DELUXE\",\"cabinName\":\"Deluxe\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E24H) 01 year valid credit shell (Excluded VAT)\",\"reschedule\":\"FREE (\u003E3H) + fare difference fee\",\"boardingBaggage\":\"10KG\",\"checkinBaggage\":\"20KG (max 1PC)\",\"goShow\":false,\"seat\":\"FREE\",\"checkinPriority\":false,\"loungeService\":false},{\"cabin\":\"SKYBOSS\",\"cabinName\":\"SkyBoss\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E3H) 02 years valid credit shell (Excluded VAT)\",\"reschedule\":\"FREE (\u003E3H) + fare difference fee\",\"boardingBaggage\":\"14KG\",\"checkinBaggage\":\"40KG (max 2PC) + GOLF\",\"goShow\":false,\"seat\":\"FREE\",\"checkinPriority\":\"FEE\",\"loungeService\":\"FEE\"},{\"cabin\":\"SKYBOSSBUSINESS\",\"cabinName\":\"Skyboss Business\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E3H) 02 years valid credit shell (Excluded VAT)\",\"reschedule\":\"FREE + fare difference fee\",\"boardingBaggage\":\"18KG\",\"checkinBaggage\":\"40KG (max 3PC) + GOLF\",\"goShow\":false,\"seat\":\"FREE\",\"checkinPriority\":\"FREE\",\"loungeService\":\"FREE\"},{\"cabin\":\"BUSINESS\",\"cabinName\":\"Business\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E3H) 02 years valid credit shell (Excluded VAT)\",\"reschedule\":\"FREE + fare difference fee\",\"boardingBaggage\":\"18KG\",\"checkinBaggage\":\"40KG (max 3PC) + GOLF\",\"goShow\":false,\"seat\":\"FREE\",\"checkinPriority\":\"FREE\",\"loungeService\":\"FREE\"}]" ], [ "key" => "QH_2", "value" => "[{\"cabin\":\"ECONOMYSAVERMAX\",\"cabinName\":\"Economy Saver Max\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"20KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYSAVER\",\"cabinName\":\"Economy Saver\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"25KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYSMART\",\"cabinName\":\"Economy Smart\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"25KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYFLEX\",\"cabinName\":\"Economy Flex\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"25KG\",\"goShow\":\" \",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"BUSINESSSMART\",\"cabinName\":\"Business Smart\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"14KG\",\"checkinBaggage\":\"50KG\",\"goShow\":\" \",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"BUSINESSFLEX\",\"cabinName\":\"Business Flex\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"14KG\",\"checkinBaggage\":\"50KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"}]" ], [ "key" => "QH_VCS", "value" => "[{\"cabin\":\"ECONOMYSAVERMAX\",\"cabinName\":\"Economy Saver Max\",\"bookingClass\":\"A|V|U|R|O\",\"refund\":false,\"reschedule\":\"600,000 (At least 03h before original scheduled ticketed flight time) (Included VAT) + fare difference fee\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Excluded (Không được mua thêm)\",\"goShow\":false,\"seat\":\"Fee includes\",\"checkinPriority\":false,\"loungeService\":\"Fee includes\"},{\"cabin\":\"ECONOMYSAVER\",\"cabinName\":\"Economy Saver\",\"bookingClass\":\"G\",\"refund\":false,\"reschedule\":\"600,000 (At least 03h before original scheduled ticketed flight time) (Included VAT) + fare difference fee\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"15KG (Không được mua thêm)\",\"goShow\":false,\"seat\":\"Free\",\"checkinPriority\":false,\"loungeService\":\"Fee includes\"},{\"cabin\":\"ECONOMYSMART\",\"cabinName\":\"Economy Smart\",\"bookingClass\":\"X|T|Q|N|M|L|K|H\",\"refund\":\"450,000 (At least 03h before original scheduled ticketed flight time) | 600,000 (Within 03h prior to each ticketed flight and after each ticketed flight) (Included VAT)\",\"reschedule\":\"450,000 (At least 03h before original scheduled ticketed flight time) or 600,000 (Within 03h prior to each ticketed flight and after each ticketed flight) (Included VAT) + fare difference fee\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Excluded (Không được mua thêm)\",\"goShow\":false,\"seat\":\"Fee includes\",\"checkinPriority\":false,\"loungeService\":\"Fee includes\"},{\"cabin\":\"ECONOMYFLEX\",\"cabinName\":\"Economy Flex\",\"bookingClass\":\"B|W|Y\",\"refund\":\"300,000 (Included VAT)\",\"reschedule\":\"Free + fare difference fee\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"15KG (Không được mua thêm)\",\"goShow\":\"Free\",\"seat\":\"Free\",\"checkinPriority\":false,\"loungeService\":\"Fee includes\"},{\"cabin\":\"BUSINESSSMART\",\"cabinName\":\"Business Smart\",\"bookingClass\":\"D|I|C\",\"refund\":\"450,000 (Included VAT)\",\"reschedule\":\"300,000 (At least 03h before original scheduled ticketed flight time) or 450,000 (Within 03h prior to each ticketed flight and after each ticketed flight) (Included VAT) + fare difference fee\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"25KG (Không được mua thêm)\",\"goShow\":false,\"seat\":\"Free\",\"checkinPriority\":\"Free\",\"loungeService\":\"Free\"},{\"cabin\":\"BUSINESSFLEX\",\"cabinName\":\"Business Flex\",\"bookingClass\":\"J|F\",\"refund\":\"300,000 (Included VAT)\",\"reschedule\":\"Free + fare difference fee\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"25KG (Không được mua thêm)\",\"goShow\":\"Free\",\"seat\":\"Free\",\"checkinPriority\":\"Free\",\"loungeService\":\"Free\"}]" ] , [ "key" => "QH_3", "value" => "[{\"cabin\":\"ECONOMYSAVERMAX\",\"cabinName\":\"Economy Saver Max\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Excluded\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYSAVER\",\"cabinName\":\"Economy Saver\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"20KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYSMART\",\"cabinName\":\"Economy Smart\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"20KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYFLEX\",\"cabinName\":\"Economy Flex\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"20KG\",\"goShow\":\" \",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"BUSINESSSMART\",\"cabinName\":\"Business Smart\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"14KG\",\"checkinBaggage\":\"40KG\",\"goShow\":\" \",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"BUSINESSFLEX\",\"cabinName\":\"Business Flex\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"14KG\",\"checkinBaggage\":\"40KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"}]" ], [ "key" => "QH_4", "value" => "[{\"cabin\":\"ECONOMYSAVERMAX\",\"cabinName\":\"Economy Saver Max\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"20KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYSAVER\",\"cabinName\":\"Economy Saver\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"25KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYSMART\",\"cabinName\":\"Economy Smart\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"25KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYFLEX\",\"cabinName\":\"Economy Flex\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"25KG\",\"goShow\":\" \",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"BUSINESSSMART\",\"cabinName\":\"Business Smart\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"14KG\",\"checkinBaggage\":\"50KG\",\"goShow\":\" \",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"BUSINESSFLEX\",\"cabinName\":\"Business Flex\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"14KG\",\"checkinBaggage\":\"50KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"}]" ], [ "key" => "VJ", "value" => "[{\"cabin\":\"ECO\",\"cabinName\":\"Eco\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E24H) Bảo lưu 1 năm (Không bao gồm VAT)\",\"reschedule\":\"350,000 (\u003E3H) (Không bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":false,\"loungeService\":false},{\"cabin\":\"DELUXE\",\"cabinName\":\"Deluxe\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E24H) Bảo lưu 1 năm (Không bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"20KG\",\"goShow\":false,\"seat\":\"Miễn phí\",\"checkinPriority\":false,\"loungeService\":false},{\"cabin\":\"SKYBOSS\",\"cabinName\":\"SkyBoss\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E3H) Bảo lưu 2 năm (Không bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"10KG\",\"checkinBaggage\":\"30KG + GOLF\",\"goShow\":false,\"seat\":\"Miễn phí\",\"checkinPriority\":\"Có phí\",\"loungeService\":\"Có phí\"},{\"cabin\":\"SKYBOSSBUSINESS\",\"cabinName\":\"Skyboss Business\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E3H) Bảo lưu 2 năm (Không bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"18KG\",\"checkinBaggage\":\"40KG + GOLF\",\"goShow\":false,\"seat\":\"Miễn phí\",\"checkinPriority\":\"Miễn phí\",\"loungeService\":\"Miễn phí\"},{\"cabin\":\"BUSINESS\",\"cabinName\":\"Business\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E3H) Bảo lưu 2 năm (Không bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"18KG\",\"checkinBaggage\":\"40KG + GOLF\",\"goShow\":false,\"seat\":\"Miễn phí\",\"checkinPriority\":\"Miễn phí\",\"loungeService\":\"Miễn phí\"}]" ], [ "key" => "VU", "value" => "[{\"cabin\":\"NON-REFUNDABLE\",\"cabinName\":\"Vé không được hoàn\",\"bookingClass\":\"\",\"refund\":false,\"reschedule\":\"350,000 (\u003E3H) (Không bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":\"Có phí\",\"loungeService\":\"Có phí\"},{\"cabin\":\"INTL-REFUND\",\"cabinName\":\"Premium Economy\",\"bookingClass\":\"\",\"refund\":\"378,000 (\u003E3H), 108,000/chặng (\u003C3H - chỉ được hoàn thuế phí)\",\"reschedule\":\"378,000/chặng (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"12KG\",\"checkinBaggage\":\"2 Kiện (23kg/Kiện)\",\"goShow\":false,\"seat\":\"Miễn phí\",\"checkinPriority\":\"Miễn phí\",\"loungeService\":\"CIP Lounge\"},{\"cabin\":\"INT-NON-REFUND\",\"cabinName\":\"Vé không được hoàn\",\"bookingClass\":\"\",\"refund\":false,\"reschedule\":\"350,000 (\u003E3H) (Không bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":\"Có phí\",\"loungeService\":\"Có phí\"},{\"cabin\":\"INT-REFUNDABLE\",\"cabinName\":\"Premium Economy\",\"bookingClass\":\"\",\"refund\":\"378,000 (\u003E3H), 108,000/chặng (\u003C3H - chỉ được hoàn thuế phí)\",\"reschedule\":\"378,000/chặng (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"12KG\",\"checkinBaggage\":\"2 Kiện (23kg/Kiện)\",\"goShow\":false,\"seat\":\"Miễn phí\",\"checkinPriority\":\"Miễn phí\",\"loungeService\":\"CIP Lounge\"},{\"cabin\":\"INT-NON-REFUNDABLE\",\"cabinName\":\"Vé không được hoàn\",\"bookingClass\":\"\",\"refund\":false,\"reschedule\":\"350,000 (\u003E3H) (Không bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":\"Có phí\",\"loungeService\":\"Có phí\"},{\"cabin\":\"REFUNDABLE\",\"cabinName\":\"Premium Economy\",\"bookingClass\":\"\",\"refund\":\"378,000 (\u003E3H), 108,000/chặng (\u003C3H - chỉ được hoàn thuế phí)\",\"reschedule\":\"378,000/chặng (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"12KG\",\"checkinBaggage\":\"2 Kiện (23kg/Kiện)\",\"goShow\":false,\"seat\":\"Miễn phí\",\"checkinPriority\":\"Miễn phí\",\"loungeService\":\"CIP Lounge\"},{\"cabin\":\"ECONOMY SAVER\",\"cabinName\":\"Economy Saver\",\"bookingClass\":\"\",\"refund\":false,\"reschedule\":\"378,000/chặng (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":\"Có phí\",\"loungeService\":\"Có phí\"},{\"cabin\":\"ECONOMY FLEX\",\"cabinName\":\"Economy Flex\",\"bookingClass\":\"\",\"refund\":\"378,000 (\u003E3H), 108,000/chặng (\u003C3H - chỉ được hoàn thuế phí)\",\"reschedule\":\"378,000/chặng (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":\"Có phí\",\"loungeService\":\"Có phí\"},{\"cabin\":\"INTL - ECONOMY SAVER\",\"cabinName\":\"Economy Saver\",\"bookingClass\":\"\",\"refund\":\"Không được hoàn (\u003E3H), 108,000/chặng (\u003C3H - chỉ được hoàn thuế phí)\",\"reschedule\":\"378,000/chặng (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":\"Có phí\",\"loungeService\":\"Có phí\"},{\"cabin\":\"INTL -ECONOMY FLEX\",\"cabinName\":\"Economy Flex\",\"bookingClass\":\"\",\"refund\":\"378,000 (\u003E3H), 108,000/chặng (\u003C3H - chỉ được hoàn thuế phí)\",\"reschedule\":\"378,000/chặng (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":\"Có phí\",\"loungeService\":\"Có phí\"}, {\"cabin\":\"PREMIUM ECONOMY\",\"cabinName\":\"Premium Economy\",\"bookingClass\":\"\",\"refund\":\"378,000 (\u003E3H), 108,000/chặng (\u003C3H - chỉ được hoàn thuế phí)\",\"reschedule\":\"378,000/chặng (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"12KG\",\"checkinBaggage\":\"2 Kiện (23kg/Kiện)\",\"goShow\":false,\"seat\":\"Miễn phí\",\"checkinPriority\":\"Miễn phí\",\"loungeService\":\"CIP Lounge\"}]" ], [ "key" => "BL", "value" => "[{\"cabin\":\"BF\",\"cabinName\":\"Thương gia linh hoạt\",\"bookingClass\":\"J | C\",\"refund\":\"360,000 (Đã bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"02 kiện x(9KG) +2KG\",\"checkinBaggage\":\"1 kiện (32KG)\",\"goShow\":\"Miễn phí/TET Có phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"YES\",\"loungeService\":\"YES\"},{\"cabin\":\"BC\",\"cabinName\":\"Thương gia tiêu chuẩn\",\"bookingClass\":\"D | I\",\"refund\":\"500,000 (Đã bao gồm VAT)\",\"reschedule\":\"360,000 (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"02 kiện x(9KG) +2KG\",\"checkinBaggage\":\"1 kiện (32KG)\",\"goShow\":\"Có phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"YES\",\"loungeService\":\"YES\"},{\"cabin\":\"DF\",\"cabinName\":\"Phổ thông đặc biệt linh hoạt\",\"bookingClass\":\"W\",\"refund\":\"360,000 (Đã bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"1 kiện (10KG) +2KG\",\"checkinBaggage\":\"1 kiện (32KG)\",\"goShow\":\"Miễn phí/TET Có phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"YES\",\"loungeService\":\"NO\"},{\"cabin\":\"DC\",\"cabinName\":\"Phổ thông đặc biệt tiêu chuẩn\",\"bookingClass\":\"Z | U\",\"refund\":\"500,000 (Đã bao gồm VAT)\",\"reschedule\":\"360,000/SGNHANSGN Miễn phí đổi (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"1 kiện (10KG) +2KG\",\"checkinBaggage\":\"1 kiện (32KG)\",\"goShow\":\"Có phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"YES\",\"loungeService\":\"NO\"},{\"cabin\":\"EF\",\"cabinName\":\"Phổ thông linh hoạt\",\"bookingClass\":\"Y | B | M\",\"refund\":\"360,000 (Đã bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi/TET 360,000 (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"1 kiện (10KG) +2KG\",\"checkinBaggage\":\"1 kiện (23KG)\",\"goShow\":\"Miễn phí/TET Có phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"YES\",\"loungeService\":\"NO\"},{\"cabin\":\"EC\",\"cabinName\":\"Phổ thông tiêu chuẩn\",\"bookingClass\":\"S | H | K | L\",\"refund\":\"360,000 (Đã bao gồm VAT)\",\"reschedule\":\"360,000 (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"1 kiện (10KG) +2KG\",\"checkinBaggage\":\"1 kiện (23KG)\",\"goShow\":\"Có phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"NO\",\"loungeService\":\"NO\"},{\"cabin\":\"EL\",\"cabinName\":\"Phổ thông tiết kiệm\",\"bookingClass\":\"Q | N | R | T | E\",\"refund\":\"500,000 (Đã bao gồm VAT)\",\"reschedule\":\"500,000 (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"1 kiện (10KG) +2KG\",\"checkinBaggage\":\"1 kiện (23KG)\",\"goShow\":\"Có phí\",\"seat\":\"Có phí\",\"checkinPriority\":\"NO\",\"loungeService\":\"NO\"},{\"cabin\":\"EP\",\"cabinName\":\"Phổ thông siêu tiết kiệm\",\"bookingClass\":\"P | A | G\",\"refund\":false,\"reschedule\":false,\"boardingBaggage\":\"1 kiện (10KG) +2KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":\"NO\",\"loungeService\":\"NO\"}]" ], [ "key" => "VN", "value" => "[{\"cabin\":\"BF\",\"cabinName\":\"Thương gia linh hoạt\",\"bookingClass\":\"J | C\",\"refund\":\"360,000 (Đã bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"02 kiện x(9KG) +2KG\",\"checkinBaggage\":\"1 kiện (32KG)\",\"goShow\":\"Miễn phí/TET Có phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"YES\",\"loungeService\":\"YES\"},{\"cabin\":\"BC\",\"cabinName\":\"Thương gia tiêu chuẩn\",\"bookingClass\":\"D | I\",\"refund\":\"500,000 (Đã bao gồm VAT)\",\"reschedule\":\"360,000 (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"02 kiện x(9KG) +2KG\",\"checkinBaggage\":\"1 kiện (32KG)\",\"goShow\":\"Có phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"YES\",\"loungeService\":\"YES\"},{\"cabin\":\"DF\",\"cabinName\":\"Phổ thông đặc biệt linh hoạt\",\"bookingClass\":\"W\",\"refund\":\"360,000 (Đã bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"1 kiện (10KG) +2KG\",\"checkinBaggage\":\"1 kiện (32KG)\",\"goShow\":\"Miễn phí/TET Có phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"YES\",\"loungeService\":\"NO\"},{\"cabin\":\"DC\",\"cabinName\":\"Phổ thông đặc biệt tiêu chuẩn\",\"bookingClass\":\"Z | U\",\"refund\":\"500,000 (Đã bao gồm VAT)\",\"reschedule\":\"360,000/SGNHANSGN Miễn phí đổi (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"1 kiện (10KG) +2KG\",\"checkinBaggage\":\"1 kiện (32KG)\",\"goShow\":\"Có phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"YES\",\"loungeService\":\"NO\"},{\"cabin\":\"EF\",\"cabinName\":\"Phổ thông linh hoạt\",\"bookingClass\":\"Y | B | M\",\"refund\":\"360,000 (Đã bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi/TET 360,000 (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"1 kiện (10KG) +2KG\",\"checkinBaggage\":\"1 kiện (23KG)\",\"goShow\":\"Miễn phí/TET Có phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"YES\",\"loungeService\":\"NO\"},{\"cabin\":\"EC\",\"cabinName\":\"Phổ thông tiêu chuẩn\",\"bookingClass\":\"S | H | K | L\",\"refund\":\"360,000 (Đã bao gồm VAT)\",\"reschedule\":\"360,000 (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"1 kiện (10KG) +2KG\",\"checkinBaggage\":\"1 kiện (23KG)\",\"goShow\":\"Có phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"NO\",\"loungeService\":\"NO\"},{\"cabin\":\"EL\",\"cabinName\":\"Phổ thông tiết kiệm\",\"bookingClass\":\"Q | N | R | T | E\",\"refund\":\"500,000 (Đã bao gồm VAT)\",\"reschedule\":\"500,000 (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"1 kiện (10KG) +2KG\",\"checkinBaggage\":\"1 kiện (23KG)\",\"goShow\":\"Có phí\",\"seat\":\"Có phí\",\"checkinPriority\":\"NO\",\"loungeService\":\"NO\"},{\"cabin\":\"EP\",\"cabinName\":\"Phổ thông siêu tiết kiệm\",\"bookingClass\":\"P | A | G\",\"refund\":false,\"reschedule\":false,\"boardingBaggage\":\"1 kiện (10KG) +2KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":\"NO\",\"loungeService\":\"NO\"}]" ], [ "key" => "QH_5", "value" => "[{\"cabin\":\"ECONOMYSAVERMAX\",\"cabinName\":\"Economy Saver Max\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYSAVER\",\"cabinName\":\"Economy Saver\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"20KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYSMART\",\"cabinName\":\"Economy Smart\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"20KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYFLEX\",\"cabinName\":\"Economy Flex\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"20KG\",\"goShow\":\" \",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"BUSINESSSMART\",\"cabinName\":\"Business Smart\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"14KG\",\"checkinBaggage\":\"40KG\",\"goShow\":\" \",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"BUSINESSFLEX\",\"cabinName\":\"Business Flex\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"14KG\",\"checkinBaggage\":\"40KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"}]" ], [ "key" => "QH_1", "value" => "[{\"cabin\":\"ECONOMYSAVERMAX\",\"cabinName\":\"Economy Saver Max\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"Không bao gồm\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYSAVER\",\"cabinName\":\"Economy Saver\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"45KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYSMART\",\"cabinName\":\"Economy Smart\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"45KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"ECONOMYFLEX\",\"cabinName\":\"Economy Flex\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"45KG\",\"goShow\":\" \",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"BUSINESSSMART\",\"cabinName\":\"Business Smart\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"14KG\",\"checkinBaggage\":\"65KG\",\"goShow\":\" \",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"},{\"cabin\":\"BUSINESSFLEX\",\"cabinName\":\"Business Flex\",\"bookingClass\":\"\",\"refund\":\"\",\"reschedule\":\"\",\"boardingBaggage\":\"14KG\",\"checkinBaggage\":\"65KG\",\"goShow\":\"\",\"seat\":\"\",\"checkinPriority\":\"\",\"loungeService\":\"\"}]" ], [ "key" => "VJ_2", "value" => "[{\"cabin\":\"ECO\",\"cabinName\":\"Eco\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E24H) Bảo lưu 1 năm (Không bao gồm VAT)\",\"reschedule\":\"Có phí (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":false,\"loungeService\":false},{\"cabin\":\"DELUXE\",\"cabinName\":\"Deluxe\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E24H) Bảo lưu 1 năm (Không bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"10KG\",\"checkinBaggage\":\"40KG\",\"goShow\":false,\"seat\":\"FREE\",\"checkinPriority\":false,\"loungeService\":false},{\"cabin\":\"SKYBOSS\",\"cabinName\":\"SkyBoss\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E3H) Bảo lưu 2 năm (Không bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"14KG\",\"checkinBaggage\":\"50KG + GOLF\",\"goShow\":false,\"seat\":\"FREE\",\"checkinPriority\":\"Có phí\",\"loungeService\":\"Có phí\"},{\"cabin\":\"SKYBOSSBUSINESS\",\"cabinName\":\"Skyboss Business\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E3H) Bảo lưu 2 năm (Không bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"18KG\",\"checkinBaggage\":\"60KG + GOLF\",\"goShow\":false,\"seat\":\"FREE\",\"checkinPriority\":\"FREE\",\"loungeService\":\"FREE\"},{\"cabin\":\"BUSINESS\",\"cabinName\":\"Business\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E3H) Bảo lưu 2 năm (Không bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"18KG\",\"checkinBaggage\":\"60KG + GOLF\",\"goShow\":false,\"seat\":\"FREE\",\"checkinPriority\":\"FREE\",\"loungeService\":\"FREE\"}]" ], [ "key" => "AK", "value" => "[\n {\n \"cabin\": \"EC\",\n \"cabinName\": \"Economy\",\n \"fareType\": \"Low Fare\",\n \"bookingClass\": \"\",\n \"refund\": \"\",\n \"reschedule\": \"\",\n \"boardingBaggage\": \"7KG\",\n \"checkinBaggage\": \"Không bao gồm\",\n \"goShow\": \"\",\n \"seat\": \"\",\n \"checkinPriority\": \"\",\n \"loungeService\": \"\"\n },\n {\n \"cabin\": \"EP\",\n \"cabinName\": \"Economy Promo\",\n \"fareType\": \"Low Fare\",\n \"bookingClass\": \"\",\n \"refund\": \"\",\n \"reschedule\": \"\",\n \"boardingBaggage\": \"7KG\",\n \"checkinBaggage\": \"Không bao gồm\",\n \"goShow\": \"\",\n \"seat\": \"\",\n \"checkinPriority\": \"\",\n \"loungeService\": \"\"\n },\n {\n \"cabin\": \"PM\",\n \"cabinName\": \"Premium\",\n \"fareType\": \"Premium FlatBed\",\n \"bookingClass\": \"\",\n \"refund\": \"\",\n \"reschedule\": \"\",\n \"boardingBaggage\": \"7KG\",\n \"checkinBaggage\": \"40KG\",\n \"goShow\": \"\",\n \"seat\": \"\",\n \"checkinPriority\": \"\",\n \"loungeService\": \"\"\n },\n {\n \"cabin\": \"HF\",\n \"cabinName\": \"High Flyer\",\n \"fareType\": \"Premium Flex\",\n \"bookingClass\": \"\",\n \"refund\": \"\",\n \"reschedule\": \"\",\n \"boardingBaggage\": \"7KG\",\n \"checkinBaggage\": \"20KG\",\n \"goShow\": \"\",\n \"seat\": \"\",\n \"checkinPriority\": \"\",\n \"loungeService\": \"\"\n },\n {\n \"cabin\": \"CL\",\n \"cabinName\": \"Corporate Lite\",\n \"fareType\": \"MyCorporate\",\n \"bookingClass\": \"\",\n \"refund\": \"\",\n \"reschedule\": \"\",\n \"boardingBaggage\": \"7KG\",\n \"checkinBaggage\": \"20KG\",\n \"goShow\": \"\",\n \"seat\": \"\",\n \"checkinPriority\": \"\",\n \"loungeService\": \"\"\n },\n {\n \"cabin\": \"FS\",\n \"cabinName\": \"Free SSR\",\n \"fareType\": \"MyCorporate\",\n \"bookingClass\": \"\",\n \"refund\": \"\",\n \"reschedule\": \"\",\n \"boardingBaggage\": \"7KG\",\n \"checkinBaggage\": \"20KG\",\n \"goShow\": \"\",\n \"seat\": \"\",\n \"checkinPriority\": \"\",\n \"loungeService\": \"\"\n }\n]" ], ["key" => "QH_VCS", "value"=> "[{\"cabin\":\"ECONOMYSAVERMAX\",\"cabinName\":\"Economy Saver Max\",\"bookingClass\":\"A|V|U|R|O\",\"refund\":false,\"reschedule\":\"600,000 (Trước khởi hành tối thiểu 3 tiếng) (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm (Không được mua thêm)\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":false,\"loungeService\":\"Có phí\"},{\"cabin\":\"ECONOMYSAVER\",\"cabinName\":\"Economy Saver\",\"bookingClass\":\"G\",\"refund\":false,\"reschedule\":\"600,000 (Trước khởi hành tối thiểu 3 tiếng) (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"15KG (Không được mua thêm)\",\"goShow\":false,\"seat\":\"Miễn phí\",\"checkinPriority\":false,\"loungeService\":\"Có phí\"},{\"cabin\":\"ECONOMYSMART\",\"cabinName\":\"Economy Smart\",\"bookingClass\":\"X|T|Q|N|M|L|K|H\",\"refund\":\"450,000 (Trước khởi hành tối thiểu 3 tiếng) | 600,000 (Trong vòng 03 tiếng trước giờ khởi hành và sau giờ khởi hành) (Đã bao gồm VAT)\",\"reschedule\":\"450,000 (Trước khởi hành tối thiểu 3 tiếng) hoặc 600,000 (Trong vòng 03 tiếng trước giờ khởi hành và sau giờ khởi hành) (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm (Không được mua thêm)\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":false,\"loungeService\":\"Có phí\"},{\"cabin\":\"ECONOMYFLEX\",\"cabinName\":\"Economy Flex\",\"bookingClass\":\"B|W|Y\",\"refund\":\"300,000 (Đã bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"15KG (Không được mua thêm)\",\"goShow\":\"Miễn phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":false,\"loungeService\":\"Có phí\"},{\"cabin\":\"BUSINESSSMART\",\"cabinName\":\"Business Smart\",\"bookingClass\":\"D|I|C\",\"refund\":\"450,000 (Đã bao gồm VAT)\",\"reschedule\":\"300,000 (Trước khởi hành tối thiểu 3 tiếng) hoặc 450,000 (Trong vòng 03 tiếng trước giờ khởi hành và sau giờ khởi hành) (Đã bao gồm VAT) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"25KG (Không được mua thêm)\",\"goShow\":false,\"seat\":\"Miễn phí\",\"checkinPriority\":\"Miễn phí\",\"loungeService\":\"Miễn phí\"},{\"cabin\":\"BUSINESSFLEX\",\"cabinName\":\"Business Flex\",\"bookingClass\":\"J|F\",\"refund\":\"300,000 (Đã bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"25KG (Không được mua thêm)\",\"goShow\":\"Miễn phí\",\"seat\":\"Miễn phí\",\"checkinPriority\":\"Miễn phí\",\"loungeService\":\"Miễn phí\"}]" ] , ["key" => "VJ_3", "value" => "[{\"cabin\":\"ECO\",\"cabinName\":\"Eco\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E24H) Bảo lưu 1 năm (Không bao gồm VAT)\",\"reschedule\":\"Có phí (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"7KG\",\"checkinBaggage\":\"Không bao gồm\",\"goShow\":false,\"seat\":\"Có phí\",\"checkinPriority\":false,\"loungeService\":false},{\"cabin\":\"DELUXE\",\"cabinName\":\"Deluxe\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E24H) Bảo lưu 1 năm (Không bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"10KG\",\"checkinBaggage\":\"20KG (1 kiện)\",\"goShow\":false,\"seat\":\"FREE\",\"checkinPriority\":false,\"loungeService\":false},{\"cabin\":\"SKYBOSS\",\"cabinName\":\"SkyBoss\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E3H) Bảo lưu 2 năm (Không bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi (\u003E3H) + phí chênh lệch giá vé\",\"boardingBaggage\":\"14KG\",\"checkinBaggage\":\"40KG (2 kiện) + GOLF\",\"goShow\":false,\"seat\":\"FREE\",\"checkinPriority\":\"Có phí\",\"loungeService\":\"Có phí\"},{\"cabin\":\"SKYBOSSBUSINESS\",\"cabinName\":\"Skyboss Business\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E3H) Bảo lưu 2 năm (Không bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"18KG\",\"checkinBaggage\":\"40KG (3 kiện) + GOLF\",\"goShow\":false,\"seat\":\"FREE\",\"checkinPriority\":\"FREE\",\"loungeService\":\"FREE\"},{\"cabin\":\"BUSINESS\",\"cabinName\":\"Business\",\"bookingClass\":\"\",\"refund\":\"350,000 (\u003E3H) Bảo lưu 2 năm (Không bao gồm VAT)\",\"reschedule\":\"Miễn phí đổi + phí chênh lệch giá vé\",\"boardingBaggage\":\"18KG\",\"checkinBaggage\":\"40KG (3 kiện) + GOLF\",\"goShow\":false,\"seat\":\"FREE\",\"checkinPriority\":\"FREE\",\"loungeService\":\"FREE\"}]" ] , ]; return display_fare_rules_table($json_data, $atts['key']); } add_shortcode('fare_rules', 'fare_rules_shortcode'); // Add CSS styles for the table function add_fare_rules_styles() { echo ' '; } add_action('wp_head', 'add_fare_rules_styles'); /** * Load deprecated functions */ require_once ASTRA_THEME_DIR . 'inc/core/deprecated/deprecated-filters.php'; require_once ASTRA_THEME_DIR . 'inc/core/deprecated/deprecated-hooks.php'; require_once ASTRA_THEME_DIR . 'inc/core/deprecated/deprecated-functions.php';