//Kiểm tra cú pháp Email function validateEmail(Email) { var regaxEmail = /^(([^<>()[\]\\.,;:\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,}))$/; if (regaxEmail.test(Email)) { return true; } else { return false; } } function check_field(){ var number_regex1 = /^[0]\d{9}$/i; var number_regex2 = /^[0]\d{10}$/i; var error = ""; var check_name = document.getElementById('buyer_name').value; if(check_name.length < 4) error += "- Tên quá ngắn\n"; else if(check_name.indexOf(' -1) { error += "- Họ tên chứa các ký tự không hợp lệ, bạn vui lòng kiểm tra lại\n"; } var check_email = document.getElementById('buyer_email').value; if(check_email.length < 4) { error += "- Bạn chưa nhập email\n"; } if(check_email.length > 4){ if(validateEmail(check_email)==false) error += "- Email không hợp lệ\n"; } var check_add = document.getElementById('buyer_address').value; if(check_add.length < 5) error += "- Địa chỉ quá ngắn\n"; else if(check_add.indexOf(' -1) { error += "- Địa chỉ chứa các ký tự không hợp lệ, bạn vui lòng kiểm tra lại\n"; } var check_tel = document.getElementById('buyer_tel').value; if(check_tel.length < 4) error += "- Bạn chưa nhập SĐT\n"; else{ if(number_regex1.test(check_tel) == false && number_regex2.test(check_tel) == false) error += "- Số điện thoại chưa chính xác\n"; } var check_note = document.getElementById('buyer_note').value; if(check_note.indexOf(' -1) { error += "- Ghi chú chứa các ký tự không hợp lệ, bạn vui lòng kiểm tra lại\n"; } var check_province = document.getElementById('buyer_province').value; if(check_province==0) error += "- Bạn chưa chọn Tỉnh/Thành phố\n"; else if(check_province.indexOf(' -1) { error += "- Tỉnh/Thành phố chứa các ký tự không hợp lệ, bạn vui lòng kiểm tra lại\n"; } var check_district = document.getElementById('js-district-holder').value; if(check_district==0) error += "- Bạn chưa chọn Quận/Huyện\n"; else if(check_district.indexOf(' -1) { error += "- Quận/Huyện phố chứa các ký tự không hợp lệ, bạn vui lòng kiểm tra lại\n"; } if(error != "") { alert(error); return false; } if (check_district > 0 && check_add.length > 5) { var district = $('#js-district-holder option:selected').text(); $('#buyer_address').val(check_add +', '+ district) } $(".js-send-cart").css("pointer-events","none"); $(".js-send-cart").html("ĐANG XỬ LÝ..."); return true; } // check input validation section function check_valid_input(pattern, target) { // check valid value for input in cart page $(target).on("input", function () { var stringValue = $(target).val(); var status = pattern.test(stringValue); if (status == false) { $(this).css("outline-color", "rgb(194 29 29)"); //red var targetName = $(this).prev().html().replace("*", ""); this.setCustomValidity(targetName + " quá ngắn/chưa đúng"); this.reportValidity(); } else { this.setCustomValidity(""); this.reportValidity(); $(this).css("outline-color", "rgb(45 182 99)"); //green } }); return; } //for mail function check_valid_input_executer() { // add check func for each input here and call this func to check all input //for mail check_valid_input( /^(([^<>()[\]\\.,;:\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,}))$/, "#buyer_email" ); //for name check_valid_input(/^[a-zA-Z ]{4,20}$/, "#buyer_name"); //for phone number check_valid_input(/(84|0[3|5|7|8|9])+([0-9]{8})\b/, "#buyer_tel"); //for address check_valid_input(/.{10}/, "#buyer_address"); } // end check input validation section //Get province selection ( lay quan huyen ) function getProvince(province_id) { var params = { action_type: 'district-list', province: province_id }; var target = '#js-district-holder'; Hura.Ajax.get("province", params).then(function (data) { //console.log(data); // productTpl is in template: javascript/tpl var html = Hura.Template.parse(provinceTpl, data); Hura.Template.render(target, ''); }) } $(".js-bank-money").click(function(){ $("#show-info-bank").addClass("hide"); }); $(".js-bank-online").click(function(){ $("#show-info-bank").removeClass("hide"); }); var TOTAL_CART_VALUE_NODE = ".js-total-cart-price"; function formatCurrency(a) { var b = parseFloat(a) .toFixed(2) .replace(/(\d)(?=(\d{3})+\.)/g, "$1.") .toString(); var len = b.length; b = b.substring(0, len - 3); return b; } function strToNumber(str) { str += ""; while (str.indexOf(".") > 0) { str = str.replace(".", ""); } var result = parseFloat(str); return isNaN(result) ? 0 : result; } function tinhSoLuongSanPham() { var total_item = 0; $(".js-buy-quantity").each(function () { total_item += parseInt($(this).val()); }); $("#js-total-quantity").html(total_item + " sản phẩm"); } function checkTotalShippingFee(){ var province = $("#id-province").val(); var district = $("#id-distric").val(); var cart_total_before_fee_discount = $("#js-total-before-fee-discount").val(); if(province==0 || district == 0){ return; } var params = { action : "shipping", action_type: "get-shipping-and-cod", order_value : cart_total_before_fee_discount, province : province, district : district } Hura.Ajax.post('shipping',params).then(function(data){ //console.log(data) $('#js_price_ship').val(data.ship) calculateCartTotalPrice() }) } //tinh tong gia don hang function calculateCartTotalPrice() { var dom_target = ".js-total-before-fee-cart-price"; var total_cart_price = 0; $(".item-cart-price").each(function () { total_cart_price += Hura.Util.strToNumber($(this).html()); }); //log for other reference $("#js-total-before-fee-discount").val(total_cart_price); //giam gia khac: voucher, membership, loyalty point conversion var total_discount = 0; total_discount += Number($("#js-discount-voucher").val()); total_discount += parseInt($("#js-discount-membership").val()); var voucher_value = parseInt($("#js-discount-voucher").val()); //phi khac: shipping, COD... var total_other_fee = 0; total_other_fee += parseInt($("#js-fee-shipping").val()); total_other_fee += parseInt($("#js-fee-cod").val()); //console.log(total_discount); var priceFreeship = parseInt($('#js_price_freeship').val()); if($('#js_price_ship').val() == "nomal"){ $("#js-inner-ship").html(`
Phí vận chuyển:

Chưa tính

`); $(dom_target).html(formatCurrency(total_cart_price)+' đ'); $(TOTAL_CART_VALUE_NODE).html(formatCurrency(total_cart_price - total_discount )+' đ'); }else{ var priceShip = parseInt($('#js_price_ship').val()); if(total_cart_price >= priceFreeship || priceShip == 0){ //console.log(total_cart_price); //console.log(priceFreeship) $("#js-inner-ship").html(`
Phí vận chuyển:

Freeship

`); $(dom_target).html(formatCurrency(total_cart_price)+' đ'); $(TOTAL_CART_VALUE_NODE).html(formatCurrency(total_cart_price - total_discount )+' đ'); }else{ var minusPriceShip = priceFreeship - total_cart_price; //console.log(total_cart_price); //console.log(priceFreeship) $("#js-inner-ship").html(`
Phí vận chuyển:

${formatCurrency(priceShip) + ' đ'}

Mua thêm ${formatCurrency(minusPriceShip)} đ để được Freeship
`); //console.log(total_discount) $(dom_target).html(formatCurrency(total_cart_price)+' đ'); $(TOTAL_CART_VALUE_NODE).html(formatCurrency(total_cart_price - total_discount + priceShip )+' đ'); } } } //thay doi tong gia cua 1 san pham function changeItemTotalPrice() { var $row = $(this).closest(".js-item-row"); var item_type = $row.data("item_type"); var price = parseInt($row.find(".js-buy-price").val()); var quantity = parseInt($row.find(".js-buy-quantity").val()); var total_price = price * quantity; //loai bo so luong vo ly if (quantity < 1) { $row.find(".js-buy-quantity").val(1); total_price = 0; } $row.find(".item-cart-price").html(formatCurrency(total_price)+' đ'); calculateCartTotalPrice(); //console.log("updating cart = " + item_type); //save to cart switch (item_type) { case "product": Hura.Cart.Product.update($row.data("item_id"), $row.data("variant_id"), {quantity: quantity,}); break; case "deal": Hura.Cart.Deal.update($row.data("item_id"), { quantity: quantity }); break; case "combo": Hura.Cart.Combo.update($row.data("item_id"), { quantity: quantity }); break; } // } //nghe thay doi so luong sp function listenQuantityChange() { var $track_change = $(".js-quantity-change"); //thay doi so luong sp mua, neu nhap so luong $track_change.on("change", function (e) { var quantity_stock = $(this).attr("data-stock"); var $row = $(this).closest(".js-item-row"); var current_quantity = $(this).val(); if($(this).val() < 1) $(this).val(1); if(current_quantity > quantity_stock) { alert("Bạn được mua tối đa "+ quantity_stock + " sản phẩm này"); $row.find(".js-buy-quantity").val(quantity_stock); changeItemTotalPrice.call(this); tinhSoLuongSanPham.call(this); return ; } changeItemTotalPrice.call(this); tinhSoLuongSanPham.call(this); }); //thay doi so luong sp theo - hoac + $track_change.on("click", function (e) { if (e.target.nodeName === "INPUT") return; var quantity_change = parseInt(this.getAttribute("data-value")); var $row = $(this).closest(".cart-item-info"); var current_quantity = parseInt($row.find(".js-buy-quantity").val()); var quantity_stock = parseInt($row.find(".js-buy-quantity").attr("data-stock")); //loai bo so luong vo ly if (current_quantity + quantity_change < 1) { $row.find(".js-buy-quantity").val(1); return; } if(current_quantity + quantity_change > quantity_stock) { alert("Bạn được mua tối đa "+ quantity_stock + " sản phẩm này"); $row.find(".js-buy-quantity").val(quantity_stock); changeItemTotalPrice.call(this); tinhSoLuongSanPham.call(this); return ; } $row.find(".js-buy-quantity").val(current_quantity + quantity_change); //then update changeItemTotalPrice.call(this); tinhSoLuongSanPham.call(this); }); } function deleteCart(){ let product_ids = []; $(".js-delete-item").each(function(){ var $row = $(this).closest(".js-item-row"); var item_id = $row.data("item_id"); var variant_id = $row.data("variant_id"); product_ids.push({item_id: item_id, variant_id: variant_id}) $row.remove(); }); deleteAllCart(product_ids); } async function deleteAllCart(product_ids){ for(let i = 0; i < product_ids.length; i++) { let item_id = product_ids[i].item_id; let variant_id = product_ids[i].variant_id; await Hura.Cart.Product.remove(item_id, variant_id); } setTimeout(function(){ if($(".js-item-row").length==0){ location.reload();} },500); } function downloadCartImage() { var seconds = new Date().getTime() / 1000; var print_url = "{{ global.domain }}/print/user.php?view=cart&f="+parseInt(seconds)+"&uid="+Hura.User.getUserId(); window.location = "https://screenshot.hurasoft.com/screenshot.php?url=" + encodeURIComponent(print_url); } //nghe xoa san pham function listenDeleteCartItem() { $(".item-cart-icon").on("click", function () { var $row = $(this).closest(".cart-item-info"); var item_type = $row.data("item_type"); var item_id = $row.data("item_id"); calculateCartTotalPrice(); //console.log("deleting item from cart = " + item_type); var deleteStatus; //save to cart switch (item_type) { case "product": deleteStatus = Hura.Cart.Product.remove( item_id, $row.data("variant_id") ); location.reload(); break; case "deal": deleteStatus = Hura.Cart.Deal.remove(item_id); location.reload(); break; case "combo": deleteStatus = Hura.Cart.Combo.remove(item_id); location.reload(); break; } if (deleteStatus) { deleteStatus.then(function () { $row.remove(); tinhSoLuongSanPham(); }); } }); } // Voucher function debounce(func, wait, immediate) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; }; function voucher_input_change() { $('#js_voucher_input').change(); } function listenVoucherCode(dom_node) { var cart_total_before_fee_discount = $("#js-total-before-fee-discount").val(); var $message_holder = $("#js-voucher-message"); var check_deal = 0 $(".js-item-row").each(function(){ var check = $(this).attr("data-check-deal") if (check == 1) { check_deal = 1; } }) $(dom_node).change(debounce(function(){ if (check_deal == 1) { $message_holder.html('Mã voucher không được áp dụng. Vui lòng xóa sản phẩm DEAL trong giỏ hàng'); } else{ var voucher_code = this.value.trim(); //update field to send when submit $("#js_coupon_code").val(voucher_code); $("#js-discount-voucher").val(0); $("#price-discount").html(''); $message_holder.html(''); //xu ly hien thi if(voucher_code.length > 2) { var params = { action_type: 'check', code : voucher_code , order_value : cart_total_before_fee_discount, product_ids : '' } Hura.Ajax.post('coupon', params).then(function (data) { //console.log(data); var voucher_info = data; if(voucher_info.status == 'error') { //bao loi $message_holder.html(voucher_info.message); return ; } $message_holder.html("Bạn đang sử dụng mã coupon/voucher: " + voucher_info.coupon_info.code + ""); $message_holder.show(); //xu ly khac switch (voucher_info.coupon_info.type) { case "cash": //giam tru tien $("#js-discount-voucher").val(Hura.Util.strToNumber(voucher_info.coupon_info.cash_discount)); $("#price-discount").html(formatCurrency(voucher_info.coupon_info.cash_discount)); break; case "priceoff"://giam gia % //var total_price_in_cart = $('#js-total-before-fee-discount').val(); var total_price_in_cart = {% if global.module.name == 'combo_set' %}0{% else %}{{ page.cart_summary.total_value }}{% endif%}; var after_discount = Math.ceil( total_price_in_cart * voucher_info.coupon_info.content / 100); $("#js-discount-voucher").val(Hura.Util.strToNumber(after_discount)); $("#price-discount").html(formatCurrency(voucher_info.total_cash_discount)); break; case "pro": //todo: break; case "other": //todo: break; } calculateCartTotalPrice(); }) }else{ $("#js-discount-voucher").val(0); $message_holder.html(''); //recalculate total calculateCartTotalPrice(); } } },100)); } function getVoucherList(holder) { var params = { action_type: 'get-active-list', limit: 50 } Hura.Ajax.post('coupon', params).then(function (response) { //console.log(response); buildListVoucher(response, holder); $(".js-voucher-active").click(function(){ $(".js-voucher-active").removeClass('current-voucher'); $(this).addClass('current-voucher'); }); }) } function buildListVoucher(response, holder) { var html = ''; var current_time = (new Date()).getTime()/1000; if (response.total > 0) { Object.keys(response).forEach(function(key, keyIndex) { var data = response[key]; Object.keys(data).forEach(function(item, itemIndex) { var status = data[item].can_use_with_cart.status; var code = data[item].code var title = data[item].title; var id_coupon = data[item].id; var to_time = data[item].to_time; var time_left = to_time - current_time; var check_product = data[item].can_use_with_cart.status; if (time_left > 0 && check_product == 'yes') { html+=`
`; } else{ html+='
'; } html+= '
Nhập '+code+'
'; html+= '

'+ title +'

'; }) }) } else{ html+= `

Chưa có mã voucher nào !

`; } $(holder).html(html); } function voucherSelected(voucher_coder) { $("#js_voucher_input_pop").val(voucher_coder); $('#js-voucher-popupmessage').html(""); } function voucherActive() { $("#js_voucher_input").val(""); $("#js_voucher_input").change(); var newCode = $("#js_voucher_input_pop").val(); $("#js_voucher_input").val(newCode); $("#js_voucher_input").change(); close_voucher(); } function open_voucher() { $("#js-popup-voucher").show(); $("body").addClass("overflow-hidden"); $(".cart-voucher-popup").addClass("active") } function close_voucher() { $("#js-popup-voucher").hide(); $("body").removeClass("overflow-hidden"); $(".js-voucher-active").removeClass('current-voucher'); $("#js_voucher_input_pop").val(""); $(".cart-voucher-popup").removeClass("active") }