'; case 'STAAH': return ''; case 'VIA': case 'VIA.COM': return '
'; case 'EASEMYTRIP': return '
'; case 'GO-MMT': return '
'; case 'PAYTM': return '
'; case 'GOIBIBO': return '
'; case 'MAKEMYTRIP': return '
'; case 'YATRA': return '
'; case 'CLEARTRIP': return '
'; case 'AGODA': return '
'; case 'BOOKING': case 'BOOKING.COM': return '
'; case 'PRICELINE': return '
'; case 'A-EXPEDIA': case 'EXPEDIA': return '
'; case 'A-CHEAPTICKETS': case 'CHEAPTICKETS': return '
'; case 'A-EBOOKERS': case 'EBOOKERS': return '
'; case 'A-EXPEDIA AFFILIATE NETWORK': case 'EXPEDIA AFFILIATE NETWORK': return '
'; case 'A-HOTELS.COM': case 'HOTELS.COM': return '
'; case 'A-HOTWIRE': case 'HOTWIRE': return '
'; case 'A-EGENCIA': case 'EGENCIA': return '
'; case 'A-THOMAS COOK': case 'THOMAS COOK': return '
'; case 'A-WOTIF': case 'WOTIF': return '
'; case 'A-ORBITZ': case 'ORBITZ': return '
'; case 'A-TRAVELOCITY': case 'TRAVELOCITY': return '
'; case 'A-TRAVELOKA': case 'TRAVELOKA': return '
'; case 'A-CTRIP': case 'CTRIP': return '
'; case 'AIRBNB': return '
'; case 'TIKET': return '
'; case 'STAYFLEXI_HD': return '预约进入'; case 'STAYFLEXI_OD': return 'Stayflexi 预订引擎'; case 'STAYFLEXI_OM': return 'StayFlexi 市场/ OTA'; case 'STAYFLEXI_MOBILE': return 'StayFlexi 移动OTA'; default: return source.toUpperCase() } } else { return ''; } } function getBookingStatusLabel(status) { switch (status) { case 'SUCCESS': return '' + status + ''; case 'CHECKED_OUT': return '' + "检查过了" + ''; case 'ADMIN_CONFIRMED': case 'CHECKED_IN': return '' + "入住" + ''; case 'CONFIRMED': return '' + "确认的" + ''; case 'CANCELLED': return '' + "取消" + ''; case 'PENDING': return '' + status + ''; default: return '' + status + ''; } } /* * 1, 1.1, 1.11, ...etc * */ function validateAmountInput(s) { if(s) { let rgx = /^[0-9]*\.?[0-9]*$/; return s.match(rgx); } return false; } function getBookingStatusDisplayText(status) { switch (status) { case 'SUCCESS': return status; case 'CHECKED_OUT': return "检查过了"; case 'ADMIN_CONFIRMED': case 'CHECKED_IN': return "入住"; case 'CONFIRMED': return "确认的"; case 'CANCELLED': return "取消"; case 'PENDING': return status; default: return status; } } function getOccupancyStatusLabel(status) { switch (status) { case 'AVAILABLE': return '' + "可用的" + ''; case 'OCCUPIED': return '' + "占据" + ''; default: return '' + status + ''; } } function getBookingSourceDisplayText(text) { switch (text){ case 'STAYFLEXI_OD': return "预订引擎"; case 'STAYFLEXI_OM': return "StayFlexi OTA"; case 'STAYFLEXI_HD': return "预约进入"; case 'STAYFLEXI_MOBILE': return "Stayflexi移动OTA"; default: return text; } } function getBookingPaymentStatusDisplay(status, booking) { var displayValue = ''; switch (status) { case 'ADMIN_CONFIRMED': case 'CHECKED_IN': case 'CONFIRMED': let paymentMade = parseFloat(booking.payment_made); if(paymentMade && paymentMade > 0){ displayValue = '已付款: ' + ''+ paymentMade.toFixed(2); } let balance_due = parseFloat(booking.balance_due); if(balance_due || balance_due === 0) { displayValue += '
' + '余额到期: ' + '' + balance_due.toFixed(2); } break; case 'CANCELLED': let refund = parseFloat(booking.refund); if(Number.isNaN(refund)){ refund = 0; } displayValue = ' 退款: '+ ''+ refund.toFixed(2); break; default: displayValue = ''; } return displayValue; } function populateBookingInfoInModal(bookingObj) { var orderModalDiv = $("#orderModal"); console.log("In populateBookingInfoInModal"); orderModalDiv.find('#custName').val(bookingObj.user_name); orderModalDiv.find('#custAddressLine1').val(bookingObj.user_address_line1); orderModalDiv.find('#custAddressLine2').val(bookingObj.user_address_line2); orderModalDiv.find('#custAddressCity').val(bookingObj.user_address_city); print_country("custAddressCountry"); orderModalDiv.find('#custAddressCountry').val(bookingObj.user_address_country); orderModalDiv.find('#custAddressCountry').change(); orderModalDiv.find('#custAddressState').val(bookingObj.user_address_state); orderModalDiv.find('#custAddressZip').val(bookingObj.user_address_zip); orderModalDiv.find('#custEmail').val(bookingObj.user_email); orderModalDiv.find('#custContact').val(bookingObj.user_contact); orderModalDiv.find('#custType').text(bookingObj.user_type); orderModalDiv.find('#bookingID').text(bookingObj.booking_id); if(bookingObj.ota_booking_id){ orderModalDiv.find('#ota_booking_id_div').show(); orderModalDiv.find('#ota_booking_id').text(bookingObj.ota_booking_id); }else{ orderModalDiv.find('#ota_booking_id_div').hide(); } if(bookingObj.room_type_name_counts){ orderModalDiv.find('#roomTypeName').text(bookingObj.room_type_name_counts); } else{ orderModalDiv.find('#roomTypeName').text(bookingObj.roomTypeInfo.roomTypeName); } orderModalDiv.find('#bookingSource').html(parseBookingSource(bookingObj.booking_source)); orderModalDiv.find('#noOfSlots').text(bookingObj.num_slots); orderModalDiv.find('#roomPreTaxAmount').html(''+parseFloat(bookingObj.total_room_pretax_amount).toFixed(2)); orderModalDiv.find('#roomTax').html(''+parseFloat(bookingObj.total_room_tax_amount).toFixed(2)); orderModalDiv.find('#addonsPreTaxAmount').html(''+parseFloat(bookingObj.total_services_pretax_amount).toFixed(2)); orderModalDiv.find('#addonsTax').html(''+parseFloat(bookingObj.total_services_tax).toFixed(2)); orderModalDiv.find('#totalAmount').html(''+parseFloat(bookingObj.total_amount_with_services).toFixed(2)); orderModalDiv.find('#totalTax').html(''+parseFloat(bookingObj.total_tax_amount).toFixed(2)); orderModalDiv.find('#paymentMade').html(''+parseFloat(bookingObj.payment_made).toFixed(2)); orderModalDiv.find('#balance_due').html(''+parseFloat(bookingObj.balance_due).toFixed(2)); if (bookingObj.rate_plan_amenities) { orderModalDiv.find('#ratePlan').text(bookingObj.rate_plan_name + " [" + (bookingObj.rate_plan_amenities).join(",") + "]"); } else { orderModalDiv.find('#ratePlan').text(bookingObj.rate_plan_name); } orderModalDiv.find('#checkin').text(moment(bookingObj.booking_checkin, "YYYY-MM-DD HH:mm:ss").format("MMMM Do YYYY, h:mm:ss a")); orderModalDiv.find('#checkout').text(moment(bookingObj.booking_checkout, "YYYY-MM-DD HH:mm:ss").format("MMMM Do YYYY, h:mm:ss a")); orderModalDiv.find('#booking_made_on').text(moment(bookingObj.booking_made_on, "YYYY-MM-DD HH:mm:ss").format("MMMM Do YYYY, h:mm:ss a")); orderModalDiv.find('#refund').text(parseFloat(bookingObj.refund).toFixed(2)); if (bookingObj.services_list && bookingObj.services_list !== 'null') { orderModalDiv.find('#servicesList').parent().show(); orderModalDiv.find('#servicesList').text(bookingObj.services_list); } else { orderModalDiv.find('#servicesList').parent().hide(); } if (bookingObj.special_requests && bookingObj.special_requests !== 'null') { orderModalDiv.find('#specialRequests').parent().show(); orderModalDiv.find('#specialRequests').text(bookingObj.special_requests); } else { orderModalDiv.find('#specialRequests').parent().hide(); } if (bookingObj.identification && bookingObj.identification !== 'null') { orderModalDiv.find('#identification').parent().show(); orderModalDiv.find('#identification').text(bookingObj.identification); } else { orderModalDiv.find('#identification').parent().hide(); } orderModalDiv.find('#physicalRoomIds').text(bookingObj.reservedRoomsDisplayValue); if (bookingObj.user_govt_id_type && bookingObj.user_govt_id_val) { $("#govtImgDiv").show(); orderModalDiv.find('#govt_id_type').val(bookingObj.user_govt_id_type); orderModalDiv.find('#govt_id_number').val(bookingObj.user_govt_id_val); }else{ $("#govtImgDiv").hide(); } if(bookingObj.govt_id_image){ orderModalDiv.find('#govtImgDiv').show(); orderModalDiv.find('#govtImgDownLink').attr("href", bookingObj.govt_id_image); }else{ orderModalDiv.find('#govtImgDiv').hide(); } if(bookingObj.adults && bookingObj.children){ $("#adultChildCountDiv").show(); orderModalDiv.find('#num_adults').html(bookingObj.adults); orderModalDiv.find('#num_children').html(bookingObj.children); }else{ $("#adultChildCountDiv").hide(); } if(bookingObj.booking_status === 'CHECKED_OUT'){ $("#actualCheckinCheckoutDiv").show(); orderModalDiv.find('#checkin').text(moment(bookingObj.booking_actual_checkin, "YYYY-MM-DD HH:mm:ss").format("MMMM Do YYYY, h:mm:ss a")); orderModalDiv.find('#checkout').text(moment(bookingObj.booking_actual_checkout, "YYYY-MM-DD HH:mm:ss").format("MMMM Do YYYY, h:mm:ss a")); }else{ $("#actualCheckinCheckoutDiv").hide(); } } var updateQueryStringParam = function (key, value) { var baseUrl = [location.protocol, '//', location.host, location.pathname].join(''), urlQueryString = document.location.search, newParam = key + '=' + value, params = '?' + newParam; //If the "search" string exists, then build params from it if(urlQueryString){ var updateRegex = new RegExp('([\?&])' + key + '[^&]*'); var removeRegex = new RegExp('([\?&])' + key + '=[^&;]+[&;]?'); if(typeof value === 'undefined' || value == null || value === ''){ // Remove param if value is empty params = urlQueryString.replace(removeRegex, "$1"); params = params.replace( /[&;]$/, "" ); } else if (urlQueryString.match(updateRegex) !== null) { // If param exists already, update it params = urlQueryString.replace(updateRegex, "$1" + newParam); } else { // Otherwise, add it to end of query string params = urlQueryString + '&' + newParam; } } //No parameter was set so we don't need the question mark params = params === '?' ? '' : params; window.history.replaceState({}, "", baseUrl + params); }; function htmlDecode(input){ var e = document.createElement('div'); e.innerHTML = input; // handle case of empty input return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue; } var localeString = "en-US"; var country = ""; var hotelCurrency = ""; var currencyIcon = getCurrencyIcon(country); if(country === "India"){ localeString = "en-IN"; } function toHotelLocaleIntString(value){ if(!value){ return 0; }else { return parseInt(value).toLocaleString(localeString); } } function toHotelLocaleFloatString(value){ if(!value){ return 0; }else { return parseFloat(value).toLocaleString(localeString, {minimumFractionDigits: 2, maximumFractionDigits: 2}); } } function sanitizeReportValue(value){ if(!value || ['na','null','n/a'].includes(value.toLowerCase())){ return ''; } return value; } function validateEmail(email) { let re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(String(email).toLowerCase()); } $("#supportEmailForm").submit(function (e) { e.preventDefault(); console.log("submitting feedback form.."); //prevent double submission if($(e.target).parents().length > 2 && $($(e.target).parents()[2]).attr('id') === 'adminTableDiv'){ return } $("#supportEmailModal").modal('hide'); waitingDialog.show("Sending..."); $.ajax({ data: { 'hotel_id':"", 'issue_type': $("#supportEmailForm").find("#issue_type").val(), 'issue_details': $("#supportEmailForm").find("#issue_details").val() }, url: "/hotelAdmin/submitPMSIssueFeedback/", type: "POST", success: function (response) { waitingDialog.hide(); var box = bootbox.alert({ title: '提交成功', message: " " +"已成功将问题/反馈发送给Stayflexi支持团队。我们会尽快回复!", size: 'medium', callback: function () { $('body').removeClass('modal-open'); $('.modal-backdrop').remove(); } }); box.find(".bootbox-body").css("font-size", "15px"); box.css({ 'top': '50%', 'margin-top': function () { return -(box.height() / 2); } }); }, complete: function () { waitingDialog.hide(); }, error: function (xhr, textStatus, thrownError) { waitingDialog.hide(); console.log(xhr.responseText); bootbox.alert({ message: " " +"发送问题/反馈时出错。请再试一次" }); } }); }); $(".lang_item").click(function (e) { e.preventDefault(); let lang_code = $(this).data('lang_code'); $.ajax({ data: { 'locale':lang_code }, url: "/hotelAdmin/setAccountLocale/", type: "GET", success: function (response) { location.reload(); }, complete: function () { }, error: function (xhr, textStatus, thrownError) { console.log(xhr.responseText); bootbox.alert({ message: " " +"设置语言失败" }); } }); }); $("#accountSettingsForm").submit(function (e) { e.preventDefault(); console.log("submitting account setting form.."); //prevent double submission if($(e.target).parents().length > 2 && $($(e.target).parents()[2]).attr('id') === 'adminTableDiv'){ return } $("#accountSettingsModal").modal('hide'); waitingDialog.show("Updating..."); let formData = $(this).serializeJSON(); formData['hotel_email'] = ""; console.log(formData); $.ajax({ data: formData, url: "/hotelAdmin/resetUserPassword/", type: "POST", success: function (response) { waitingDialog.hide(); let box = bootbox.alert({ title: '成功保存新密码', message: " " +"成功保存新密码。您现在可以使用新密码登录。" +"
555彩票注册 | 5822彩票网app下载 | 58彩票网 | 56足球比分网 | 555娱乐彩票大全 | 567cc彩票在线登录 |