//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 .= "Ngày | Hãng hàng không | Số hiệu chuyến bay | Giá vé | Mua vé |
";
// Lặp qua từng chuyến bay và hiển thị
foreach ($data['data_depart'] as $date => $flight) {
$output .= "";
$output .= "📅" . $flight['Date'] . " | ";
$output .= "✈" . $flight['Airline'] . " | ";
$output .= "" . $flight['FlightNumber'] . " | ";
$output .= "" . $flight['Price_Short'] . " | ";
$output .= "Mua vé | ";
$output .= "
";
}
$output .= "
";
} 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 .= 'Sân Bay Khởi Hành | ';
$output .= 'Chuyến Bay | ';
$output .= 'Sân Bay Đến | ';
$output .= 'Trạng Thái | ';
$output .= 'Ngày Chuyến Bay | ';
$output .= 'Giờ Khởi Hành Dự Kiến | ';
$output .= 'Giờ Đến Dự Kiến | ';
$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 .= '' . trim($origin_display_name) . ' (' . $origin_code . ') | ';
// Thêm biểu tượng máy bay vào cột Chuyến Bay
$output .= ' ' . esc_html($flight['identification']['number']['default']) . ' | ';
// 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 .= '' . trim($destination_display_name) . ' (' . $destination_code . ') | ';
// 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 .= '' . $status_text . ' | ';
// 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 .= '' . $departure_time->format('d-m-Y') . ' | ';
$output .= '' . $departure_time->format('H:i') . ' | ';
// 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 .= '' . $arrival_time->format('H:i') . ' | ';
$output .= '
';
}
$output .= '';
$output .= '
';
$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 .= 'Khởi hành (' . esc_html($gmt_offset) . ') | ' . esc_html($column_title) . ' | Chuyến bay | Hãng hàng không | Trạng thái |
';
if (empty($flights)) {
$output .= 'Không có dữ liệu chuyến bay. |
';
} 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 .= '' . $formatted_time . ' | ';
$output .= '' . esc_html($from_to_airport) . ' | ';
$output .= '' . esc_html($flight_number) . ' | ';
$output .= '' . esc_html($airline) . ' | ';
$output .= ' ' . esc_html($status) . ' | ';
$output .= '
';
}
}
$output .= '
';
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 .= 'Tên Hạng Ghế | Hạng Đặt Chỗ | Hoàn Vé | Thay Đổi Lịch Trình | ';
$output .= 'Hành Lý Xách Tay | Hành Lý Ký Gửi | ';
$output .= '
';
// Add data rows to the table
foreach ($data_for_airline as $cabin) {
$output .= '';
$output .= '' . esc_html($cabin['cabinName']) . ' | ';
$output .= '' . esc_html($cabin['bookingClass']) . ' | ';
$output .= '' . esc_html($cabin['refund']) . ' | ';
$output .= '' . esc_html($cabin['reschedule']) . ' | ';
$output .= '' . esc_html($cabin['boardingBaggage']) . ' | ';
$output .= '' . esc_html($cabin['checkinBaggage']) . ' | ';
$output .= '
';
}
$output .= '
';
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';