//CONST var empresaGuid = 'DE5FA0FF-10AA-48FC-BAA3-C0F12516F32E'; var nameCookieCardList = 'memoryecommercecardlist' + empresaGuid; var nameCookieNewlySeenList = 'memoryecommercenewlyseenlist' + empresaGuid; //READY $(document).ready(function () { console.log('Document ready'); var _id = getParameterByName('id'); var _category_Id = getParameterByName('category_Id'); var _order_id = getParameterByName('order_Id'); var _search = getParameterByName('search'); var _verificationResult = getParameterByName('verificationResult'); var _recoverPassword = getParameterByName('recoverPassword'); var _login = getParameterByName('login'); includeHTML(); ServerMessage('ready', ''); setTimeout(function () { //Separados de los otros porque unos son para cargar los datos y otro para el tema del recover de la contrase�a y login al registrarte if (_id) { GetData_ProductId(_id); } else if (_category_Id) { GetData_Category(_category_Id); $(".memory_products_categoryId").eq(0).val(_category_Id); } else if (_order_id) { GetData_Order(_order_id); } else if (_search) { GetData_Search(_search) } else { GetData(); } if (_verificationResult) { var result = _verificationResult == 'True' ? true : false; if (result) PageLogin_Show(); else console.log('No se pudo verificar la cuenta, intente de nuevo'); } if (_recoverPassword) { var recover = _recoverPassword == 'True' ? true : false; if (recover) PageRecover_Password_Show(); else PageFail_Recover_Show(); } if (_login) { PageLogin_Show(); } $('.carousel').carousel({ interval: 3000, ride: true }); }, 300); }); function getParameterByName(name) //courtesy Artem { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regexS = "[\\?&]" + name + "=([^&#]*)"; var regex = new RegExp(regexS); var results = regex.exec(window.location.href); if (results == null) return ""; else return decodeURIComponent(results[1].replace(/\+/g, " ")); } //Arma el mensaje para enviar al server parent function ServerMessage(action, data) { var pathArray = window.location.pathname.split('/'); var currenPage = pathArray.pop().replace(".html", "").replace(".HTML", "") + window.location.search; var pass_data = { 'action': action, 'data': data, 'location': location.href, 'currentPage': currenPage }; sendMessage(pass_data); } // Send a message to the parent var sendMessage = function (pass_data) { window.parent.postMessage(JSON.stringify(pass_data), '*'); }; // Recieve message from parent window.addEventListener('message', function (event) { var pass_data = JSON.parse(event.data); if (pass_data) FrameMessageProcess(pass_data); //console.log('iFrame received response: ', event.data); }, false); function FrameMessageProcess(d) { if (d.action == 'get_data') { SetData(d.data); } if (d.action == 'setLocalidades') { SetLocalidades(d.data); } if (d.action == 'procesarOrden') { BtnSiguienteClick(5); } if (d.action == 'cerrarProcesarOrden') { Memory_HideLoading(); $(".row-card-confirmacion").removeClass('d-none').addClass("d-block"); $(".row-card-title").removeClass('d-none').addClass("d-block"); $(".row-card-procesando").addClass("d-none").removeClass('d-block'); } if (d.action == "showCartModal") { MemoryShowCartModal(d.data.product); MemorySetCountCardShopping(d.data.length); } if (d.action == "checkCart") { MemorySetCountCardShopping(d.data.length); MemoryCalcFinalCart(d.data); MemoryCheckCart(d.data.length); } if (d.action == "setData_Cart_Final_Result") { SetData_Cart_Final_Result(d.data); } } function SetLocalidades(d) { $("#slcLocalidad" + d.destino).html(d.localidadesFiltradas) } /************************************* */ function GetData() { GetData_Full(0, 0, 0); } //Obtengo datos desde el server function GetData_Full(productId, categoryId, orderId, search) { $(".productos").removeClass("d-block").addClass("d-none"); //para que no quede superpuesto con el loading si se cambia de categoria en la pagina Memory_ShowLoading(); console.log('memory.ecommerce: GetData'); var _empresaId = empresaGuid; var _rowPerPage = parseInt($(".memory_products_rowPerPage").eq(0).val()); var _page = parseInt($(".memory_products_page").eq(0).val() === undefined ? 1 : $(".memory_products_page").eq(0).val()); var _orden = "asc"; //$("#memory_products_orden").val(); var _ordenColumn = "codigo"; //$("#memory_products_ordenColumn").val(); var _priceRangeSince = parseFloat($(".memory_products_priceRangeSince").eq(0).val() == "" ? "0" : $(".memory_products_priceRangeSince").eq(0).val()); var _priceRangeUntil = parseFloat($(".memory_products_priceRangeUntil").eq(0).val() == "" ? "0" : $(".memory_products_priceRangeUntil").eq(0).val()); var _productoId = productId; var _categoryId = categoryId; var _orderId = orderId; var _search = search || $(".memory_products_search").eq(0).val(); _search = _search.replace("'", ""); var data_request = { filter: { id: _empresaId, rowPerPage: _rowPerPage, page: _page, search: _search, categoryId: _categoryId, orden: _orden, //asc, desec ordenColumn: _ordenColumn, priceRangeSince: _priceRangeSince, priceRangeUntil: _priceRangeUntil, productId: _productoId, orderId: _orderId } } ServerMessage('filter', data_request); //Solicita al server la informacion //SetData(data_mockup); //Obtiene la informacion desde un archivo } function Search(element) { var busqueda = $(element).prev().val() GetData_Search(busqueda); } //GETDATAS function GetData_Order(order_id) { GetData_Full(0, 0, order_id); } function GetData_Category(value) { $(".memory_products_categoryId").eq(0).val(value); $(".memory_products_page").eq(0).val(1); GetData_Full(0, value, 0); } function GetData_PageMobile() { var paginaSiguiente = $(".memory_products_page").val(); paginaSiguiente++; var topePaginas = $("#totalPages").val(); if (paginaSiguiente <= topePaginas) { $(".memory_products_page").val(paginaSiguiente); if (paginaSiguiente == topePaginas) $(".btnSiguientePagina").hide(); GetData_Full(0, "", 0); } } function GetData_Page(value) { $(".memory_products_page").eq(0).val(value); GetData_Full(0, $(".memory_products_categoryId").eq(0).val(), 0); } function GetData_ProductId(value) { $(".memory_products_productId").eq(0).val(value); $(".memory_products_page").eq(0).val(1); GetData_Full(value, 0, 0, ""); } function GetData_Search(search) { $(".memory_products_search").eq(0).val(search); GetData_Full(0, 0, 0, search); } function MostrarCantidadProductos() { var _category_Id = $(".memory_products_categoryId")[0].val; if (_category_Id) GetData_Category(_category_Id); else GetData(); } function Memory_ShowLoading() { $(".productos").hide(); $(".loading").show(); } function Memory_HideLoading() { $(".loading").hide(); $(".productos").show(); } //END //Handlebars helper Handlebars.registerHelper('times', function (n, block) { var accum = ''; for (var i = 0; i < n; ++i) accum += block.fn(i); return accum; }); Handlebars.registerHelper('for', function (from, to, incr, block) { var accum = ''; for (var i = from; i <= to; i += incr) accum += block.fn(i); return accum; }); //Seteo los datos con handlebars function SetData(d) { console.log('SetData'); var _data = d; var sourceCategorias = $(".memory-categorias").html(); if (sourceCategorias !== undefined) { var CategoriasTemplate = Handlebars.compile(sourceCategorias); $(".categorias").html(CategoriasTemplate(_data.categories.filter(x => x.name != "Sin categoría"))); } var sourceProductos = $(".memory-productos").html(); if (sourceProductos !== undefined) { var ProductosTemplate = Handlebars.compile(sourceProductos); if (!_data.filter.tieneProductos) { $(".productos").html(ProductosTemplate(data_mockup.products)); } else { if (_data.products.length == 0) { $(".productos").removeClass("d-block").addClass("d-none"); $(".sinProductos").removeClass("d-none").addClass("d-block"); } else { $(".productos").html(ProductosTemplate(_data.products)); $(".productos").removeClass("d-none").addClass("d-block"); $(".sinProductos").removeClass("d-block").addClass("d-none") } } } var sourceProductosRelacionados = $(".memory-productos-relacionados").html(); if (sourceProductosRelacionados !== undefined) { var ProductosRelacionadosTemplate = Handlebars.compile(sourceProductosRelacionados); $(".productos-relacionados").html(ProductosRelacionadosTemplate(_data.productosRelacionados)); } //Cargo la vista para movil var sourceProductosMovil = $(".memory-productos-movil").html(); if (sourceProductosMovil !== undefined) { var ProductosTemplate = Handlebars.compile(sourceProductosMovil); //Appendemos porque al movil, mejor que scrolee y no borre los productos if (_data.filter.search) $(".productos-movil").html(ProductosTemplate(_data.products)); else $(".productos-movil").append(ProductosTemplate(_data.products)); } var sourceVariaciones = $(".memory-variations").html(); if (sourceVariaciones !== undefined) { var VariacionesTemplate = Handlebars.compile(sourceVariaciones); $(".variaciones").html(VariacionesTemplate(_data.products)); } var sourcePagination = $(".memory-pagination").html(); if (sourcePagination !== undefined) { _data.filter.inicioPage = _data.filter.page < 10 ? 1 : (_data.filter.page === 1 ? _data.filter.page : _data.filter.page - 1); _data.filter.topePage = (_data.filter.inicioPage + 10) > _data.filter.totalPages ? _data.filter.totalPages : _data.filter.inicioPage + 10; var PaginationTemplate = Handlebars.compile(sourcePagination); $(".memory-pagination-target").html(PaginationTemplate(_data.filter)); } var sourceDetails = $(".memory-productos-details").html(); if (sourceDetails !== undefined) { var PaginationTemplate = Handlebars.compile(sourceDetails); let producto = _data.products.length == 0 ? data_mockup.products[0] : _data.products[0]; // replaceNumerosFromNombreVariante(producto); // setColoresVariante(producto); if (producto.variantes) { producto.variantes.forEach(element => { element.childs.forEach(child => { child.displayName = child.name.replace(/\s/g, '').toUpperCase(); }); element.varianteValues.forEach(element => element = element.replace(".", "")); }); } $(".producto-details").html(PaginationTemplate(producto)); //El primero en la lista de products es el producto que nos trajo por el get data if (producto.cantidadStock == 1) { $(".cantidadDisponibleProductoDetails").text('Último disponible!').css('color', '#00CC00'); $(".cantidadCarritoDetails").attr('disabled', true); } MemoryAddProductToNewlySeenList(producto); onlyNumbersCantidad(); $(".varianteContainer").each((index, element) => { $(element).find(".btn-variation").eq(0).click(); }); } if (_data.user && _data.user.id > 0 && _data.user.logueado) { $("#memory_user_id").val(_data.user.id); $("#memory_user_email").val(_data.user.contacto.email); $(".memory_user_name").removeClass("d-none"); $(".memory_user_name").html(_data.user.nombre + " " + _data.user.apellido); $(".memory_user_login").hide(); } if (window.location.href.includes("cartResult.html")) { _data.user.carrito = ""; //vacio el carrito que trae el usuario SetCartResult(_data.resultadoOrden); } if (window.location.href.includes("user.html")) { if (_data.user.logueado) { //Parte de mis datos $("#inputNombreMisDatos").val(_data.user.nombre); $("#inputApellidoMisDatos").val(_data.user.apellido); $("#inputIdentificadorMisDatos").val(_data.user.identificador); $("#inputTelefonoMisDatos").val(_data.user.contacto.telefono); //Traemos los datos de las direcciones //Facturacion $("#slcDepartamentoFacturacion").val(_data.user.datosFacturacion.direccionFactura.departamento).change(); $("#slcLocalidadFacturacion").val(_data.user.datosFacturacion.direccionFactura.localidad).change(); $("#inputIdentificadorFacturacion").val(_data.user.datosFacturacion.identificador); $("#inputNombreFacturacion").val(_data.user.datosFacturacion.nombre); $("#inputApellidoFacturacion").val(_data.user.datosFacturacion.apellido); $("#inputEmailFacturacion").val(_data.user.datosFacturacion.contactoFactura.email); $("#inputTelefonoFacturacion").val(_data.user.datosFacturacion.contactoFactura.telefono); $("#inputDireccionFacturacion").val(_data.user.datosFacturacion.direccionFactura.calle1); $("#inputRazonSocialFacturacion").val(_data.user.datosFacturacion.razonSocial); $("input[name='tipoConsumidor'][value='" + _data.user.datosFacturacion.tipoDeConsumidor + "']").prop('checked', true).change().parent().addClass('active'); //Envio $("#slcLocalidadEnvio").val(selectedIndex = _data.user.datosEnvio.direccionEnvio.localidad).change(); $("#slcDepartamentoEnvio").val(_data.user.datosEnvio.direccionEnvio.departamento).change(); $("#inputDireccionEnvio").val(_data.user.datosEnvio.direccionEnvio.calle1); $("#inputDatosAdicionalesEnvio").val(_data.user.datosEnvio.observaciones); $("#inputEnvioNombreReceptor").val(_data.user.datosEnvio.nombreReceptor); $("#retiroPorAgencia").prop('checked', _data.user.datosEnvio.retiraPorAgencia); $("input[name='tipoEnvio'][value='" + _data.user.datosEnvio.tipoDeEnvio + "']").prop('checked', true).change(); //end parte mis datos if (_data.user.ordenes) { var sourceOrdersTable = $(".memory-OrderRow").html(); if (sourceOrdersTable !== undefined) { var ordersTableTemplate = Handlebars.compile(sourceOrdersTable); $(".memory-tableClientOrder").html(ordersTableTemplate(_data.user.ordenes)); } } } else { //Para que no pueda entrar a user si no esta logeado window.location.href = "home.html"; } } if (window.location.href.includes("cart.html") && _data.user && _data.user.logueado) { $("#inputNombreMisDatos").val(_data.user.nombre); $("#inputApellidoMisDatos").val(_data.user.apellido); $("#inputIdentificadorMisDatos").val(_data.user.identificador); $("#inputTelefonoMisDatos").val(_data.user.contacto.telefono); //Traemos los datos de las direcciones //Facturacion $("#slcDepartamentoFacturacion").val(_data.user.datosFacturacion.direccionFactura.departamento).change(); $("#slcLocalidadFacturacion").val(_data.user.datosFacturacion.direccionFactura.localidad).change(); $("#inputIdentificadorFacturacion").val(_data.user.datosFacturacion.identificador); $("#inputNombreFacturacion").val(_data.user.datosFacturacion.nombre); $("#inputApellidoFacturacion").val(_data.user.datosFacturacion.apellido); $("#inputEmailFacturacion").val(_data.user.datosFacturacion.contactoFactura.email); $("#inputTelefonoFacturacion").val(_data.user.datosFacturacion.contactoFactura.telefono); $("#inputDireccionFacturacion").val(_data.user.datosFacturacion.direccionFactura.calle1); $("#inputRazonSocialFacturacion").val(_data.user.datosFacturacion.razonSocial); $("input[name='tipoConsumidor'][value='" + _data.user.datosFacturacion.tipoDeConsumidor + "']").prop('checked', true).change().parent().addClass('active'); //Envio $("#slcLocalidadEnvio").val(selectedIndex = _data.user.datosEnvio.direccionEnvio.localidad).change(); $("#slcDepartamentoEnvio").val(_data.user.datosEnvio.direccionEnvio.departamento).change(); $("#inputDireccionEnvio").val(_data.user.datosEnvio.direccionEnvio.calle1); $("#inputDatosAdicionalesEnvio").val(_data.user.datosEnvio.observaciones); $("#inputEnvioNombreReceptor").val(_data.user.datosEnvio.nombreReceptor); $("#retiroPorAgencia").prop('checked', _data.user.datosEnvio.retiraPorAgencia); $("input[name='tipoEnvio'][value='" + _data.user.datosEnvio.tipoDeEnvio + "']").prop('checked', true).change(); //Ver este para obtener bien el telefono $("#inputTelefonoMisDatos")(_data.user.telefono); } if (window.location.href.includes("cart.html")) { $("#memory_cotizacion_dolar").val(_data.cotizacion.Dolar); } //Seteo los valores de el mostrando SetDataMostrandoResultados(_data.filter); SetData_NewlySeen(); if (_data.user.carrito) { _data.user.carrito = Array.isArray(_data.user.carrito) ? _data.user.carrito : JSON.parse(_data.user.carrito); SetData_CardShopping(_data.user.carrito, _data.cotizacion); MemorySetCountCardShopping(_data.user.carrito.length); } else { MemoryCheckCart(0); MemorySetCountCardShopping(0); } //Luego de pasar por todos los set data, formateamos los precios FormatoPrecioTodos(); Memory_HideLoading(); SetDataAplicacionDatos(_data); } function SetDataAplicacionDatos(data) { const aplicacionDatos = data.aplicacionDatos; const keys = Object.getOwnPropertyNames(aplicacionDatos); const containerValues = $("#memory_values_container"); keys.forEach(element => { const elementAplicacionDatos = $(containerValues).find("#" + element); if (elementAplicacionDatos.length) { $(elementAplicacionDatos).val(aplicacionDatos[element]); } else { $(containerValues).append(""); } }); CheckDataAplicacionDatos(); } function CheckDataAplicacionDatos() { if (window.location.href.includes("cart")) { const monedaMedioDePago = +$("#Memory_Ecommmerce_Moneda_Card_Option").val() || 0; //Por defecto decide el cliente switch (monedaMedioDePago) { case 0: $(".decideCliente").removeClass("d-none").addClass("d-block"); break; case 1: $(".totalPesos").removeClass("d-none").addClass("d-block"); break; case 2: $(".totalDolar").removeClass("d-none").addClass("d-block"); break; } } const cambioMoneda = $("#Memory_Ecommmerce_Moneda_Allow_Customer_Change").length ? +$("#Memory_Ecommmerce_Moneda_Allow_Customer_Change").val() : 1 switch (cambioMoneda) { case 0: $("#monedaECommerce").removeClass("d-inline-block").addClass("d-none") break; case 1: $("#monedaECommerce").removeClass("d-none").addClass("d-inline-block") break; } } //Seteo el mensaje de la cantidad de productos que estoy mostrando y el tope por pagina function SetDataMostrandoResultados(data) { //As� desprolijo para salir del apuro if (data.page && data.rowPerPage && data.totalPages && data.totalReg) { var valorInicio = data.page == 1 ? 1 : data.page == data.totalPages ? data.totalReg : (data.page - 1) * data.rowPerPage; var valorTope = data.page == data.totalPages ? data.totalReg : data.page * data.rowPerPage; var mensaje = "Mostrando " + valorInicio + " - " + valorTope + " de " + data.totalReg + " resultados"; $("#mostrando").text(mensaje); } } //Si tengo usuario Id, le guardo el carrito en la bd cada vez que lo actualiza function SaveCart() { var userId = $("#memory_user_id").val(); if (userId) { var data = { usuarioId: userId, guid: empresaGuid, } ServerMessage("savecart", data); } } //Esto es por si hay que reemplazar algun html en la pagina function includeHTML() { var z, i, elmnt, file, xhttp; /*loop through a collection of all HTML elements:*/ z = document.getElementsByTagName("*"); for (i = 0; i < z.length; i++) { elmnt = z[i]; /*search for elements with a certain atrribute:*/ file = elmnt.getAttribute("memory-include-html"); if (file) { $(elmnt).load(file); elmnt.removeAttribute("memory-include-html"); includeHTML(); return; } } } //Abre el popup de login function PageLogin_Show() { var userId = $("#memory_user_id").val(); if (!(userId || userId > 0)) { ServerMessage('login', empresaGuid); } else { window.location.href = "user.html"; } } //mando mensaje al server que muestre el pagerecover function PageRecover_Password_Show() { var empresaId = $("#memory_empresa_id").val(); ServerMessage('recuperarContraseniaSuccess', empresaId); } //Mando mensaje al server que muestre el pagerecover fail function PageFail_Recover_Show() { var empresaId = $("#memory_empresa_id").val(); ServerMessage('recuperarContraseniaFail', empresaId); } //Envia un objeto con los datos para actualizar el usuario function SaveDataUser() { if (ValidarDatos()) { var dataUser = { id: $("#memory_user_id").val(),//id del usuario identificador: $("#inputIdentificadorMisDatos").val(), nombre: $("#inputNombreMisDatos").val(), apellido: $("#inputApellidoMisDatos").val(), contacto: { telefono: $("#inputTelefonoMisDatos").val(), email: $("#memory_user_email").val(),//Lo vamos a guardar en un hidden }, datosFacturacion: { tipoDeConsumidor: $("input[name='tipoConsumidor'][type='radio']:checked").val(), nombre: $("#inputNombreFacturacion").val(), apellido: $("#inputApellidoFacturacion").val(), razonSocial: $("#inputRazonSocialFacturacion").val(), identificador: $("#inputIdentificadorFacturacion").val(), contactoFactura: { telefono: $("#inputTelefonoFacturacion").val(), email: $("#inputEmailFacturacion").val() }, direccionFactura: { pais: $("#slcPaisFacturacion").val(), departamento: $("#slcDepartamentoFacturacion").val(), localidad: $("#slcLocalidadFacturacion").val(), calle1: $("#inputDireccionFacturacion").val() } }, datosEnvio: { direccionEnvio: { pais: $("#slcPaisEnvio").val(), departamento: $("#slcDepartamentoEnvio").val(), localidad: $("#slcLocalidadEnvio").val(), calle1: $("#inputDireccionEnvio").val() }, tipoDeEnvio: $("input[name='tipoEnvio']:checked").val(), observaciones: $("#inputDatosAdicionalesEnvio").val(), nombreReceptor: $("#inputEnvioNombreReceptor").val(), retiraPorAgencia: $('#retiroPorAgencia').is(":checked") }, empresaGuid: $("#memory_empresa_id").val(), }; ServerMessage('savedatauser', dataUser); } } //Mandamos mensaje al server que lo deslogee y le madnamos el carrito para que se lo actualice function User_LogOut() { var carrito = MemoryGetCookie(nameCookieCardList); var data = { id: $("#memory_user_id").val(), carrito: carrito, }; ServerMessage("logoutuser", data); window.location.href = "home.html" } //Abre el popup de pedido function PagePedidoCatalogo_Show() { var data_request = { product: { id: $("#details_id").val(), name: $("#details_name").val(), description: $("#details_description").val(), priceUYU: $("#details_priceUYU").val(), simbolUYU: $("#details_simbolUYU").val(), imageUri: $("#details_imageUri").val() } }; ServerMessage('pedidocatalogo', data_request); } //Recibo un producto y armo la modal con los datos del producto function MemoryShowCartModal(product) { var sourceModal = $(".memory-modalCart").html(); if (sourceModal !== undefined) { var modalTemplate = Handlebars.compile(sourceModal); product.precio = FormatoPrecioDeUnValor(product.precio); $(".modalCartContainer").html(modalTemplate(product)); $(".cartModal").modal('show'); } } /* COOKIE MANAGE */ //Muestro el valor de una cookie function MemoryShowCookie(name) { console.log('Cookie: ' + MemoryGetCookie(name)); } //Seteo un valor en una cookie function MemorySetCookie(name, value, days) { var expires = ""; if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + (value || "") + expires + "; path=/"; } //Obtengo el valor de una cookie function MemoryGetCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; } //Borro la cookie con en name que nos pasan function MemoryEraseCookie(name) { document.cookie = name + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; } //Recibimos un nombre de cookie y la retornamos como un array function MemoryGetCookieAsArray(name) { var cookie = MemoryGetCookie(name); var arrayCookie = JSON.parse(cookie); return arrayCookie; } //Actualizo la cookie. la borro y la vuelvo a crear con datos nuevos function MemoryUpdateCookie(nameCookie, newData) { MemoryEraseCookie(nameCookie); //Borro la cookie con los productos viejos var arrayJson = JSON.stringify(newData); MemorySetCookie(nameCookie, arrayJson, 5); //La creo de nuevo con los nuevos productos } //LLeno el carrito con lo que esta en los cookies function SetData_CardShopping(carrito, cotizacion) { /// let monedaId = localStorage.getItem('monedaId') || 1; //Si es undefined, es 1, o sea peso uruguayo let monedaSimbolo = monedaId == "2" ? "US$" : "$"; if (carrito) { let totalDolar = 0; let totalPesos = 0; carrito.forEach(function (element) { let precioFinalNeto = element.precioOriginal; if (element.monedaIdOriginal != monedaId) { if (element.monedaIdOriginal == 1 && monedaId == 2) { precioFinalNeto = precioFinalNeto / cotizacion.Dolar; } else if (element.monedaIdOriginal == 2 && monedaId == 1) { precioFinalNeto = precioFinalNeto * cotizacion.Dolar; } else if (monedaId == 0) { monedaSimbolo = element.monedaIdOriginal == "2" ? "US$" : "$"; } } var precioFinal = precioFinalNeto * element.cantidad; element.precio = precioFinal; element.moneda = monedaSimbolo; totalDolar += (monedaId == 1) || (monedaId == 0 && element.monedaIdOriginal == 1) ? precioFinal / cotizacion.Dolar : precioFinal; //Si tengo un producto en pesos urugayos, tengo que hacerle la conversión a dolares totalPesos += (monedaId == 2) || (monedaId == 0 && element.monedaIdOriginal == 2) ? precioFinal * cotizacion.Dolar : precioFinal; //Si tengo un producto en dolares, tengo que hacerle la conversión a pesos urugayos }); var sourceCardShoppingProductTRs = $(".memory-cardshoppingproduct-tr").html(); if (sourceCardShoppingProductTRs !== undefined) { var CardShoppingTrsTemplate = Handlebars.compile(sourceCardShoppingProductTRs); $(".memory-cardshoppingproduct-tablebody").append(CardShoppingTrsTemplate(carrito)); } $(".CartShoppingTotal").text(monedaSimbolo + (monedaId == 2 ? totalDolar.toFixed(2) : totalPesos.toFixed(2))); $(".priceUyu").text(totalPesos.toFixed(2)) $(".priceUsd").text(totalDolar.toFixed(2)) $("#puh").val(totalPesos.toFixed(2)); $("#pdh").val(totalPesos.toFixed(2)); } else { $(".CartShoppingTotal").text(monedaSimbolo + "0"); } if (carrito) { MemoryCheckCart(carrito.length) } else { MemoryCheckCart(0); } } //Setemos la tabla del checkout del carrito con los datos que tenemos en las cookies function SetData_Cart_Final() { ServerMessage("setData_Cart_Final", { guid: empresaGuid }); // var dataCookie = JSON.parse(MemoryGetCookie(nameCookieCardList)); // if (dataCookie) { // dataCookie.forEach(function (element) { // var precioFinal = element.precio * element.cantidad; // element.precio = FormatoPrecioDeUnValor(precioFinal); // }); // } // var source = $(".memory-cardshoppingproduct-tr-final").html(); // if (source !== undefined) { // var cardShoppingTemplate = Handlebars.compile(source); // $(".memory-cardshoppingproduct-tablebody-final").html(cardShoppingTemplate(dataCookie)); // } } function SetData_Cart_Final_Result(cart) { var source = $(".memory-cardshoppingproduct-tr-final").html(); if (source !== undefined) { let monedaId = localStorage.getItem('monedaId') || 1; //Si es undefined, es 1, o sea peso uruguayo let cotizacionDolar = $("#memory_cotizacion_dolar").val(); let monedaSimbolo = monedaId == "2" ? "US$" : "$"; cart.forEach(function (producto, index) { var calcPrice = producto.precioOriginal; if (producto.monedaIdOriginal != monedaId) { if (producto.monedaIdOriginal == 1 && monedaId == 2) { calcPrice = calcPrice / cotizacionDolar; } else if (producto.monedaIdOriginal == 2 && monedaId == 1) { calcPrice = calcPrice * cotizacionDolar; } else if (monedaId == 0) { monedaSimbolo = producto.monedaIdOriginal == "2" ? "US$" : "$"; } } calcPrice = calcPrice * producto.cantidad; producto.precio = calcPrice; producto.moneda = monedaSimbolo; }); var cardShoppingTemplate = Handlebars.compile(source); $(".memory-cardshoppingproduct-tablebody-final").html(cardShoppingTemplate(cart)); } } //Seteo los datos de los productos recien vistos function SetData_NewlySeen() { console.log('SetData_NewlyVisited'); var algo = MemoryGetCookie(nameCookieNewlySeenList); var dataCookie = JSON.parse(algo); //array productos recien vistos. if (dataCookie) { var sourceProductosRecientes = $(".memory-productos-recientes").html(); if (sourceProductosRecientes !== undefined) { var ProductosRecientesTemplate = Handlebars.compile(sourceProductosRecientes); $(".productos-recientes").html(ProductosRecientesTemplate(dataCookie)); } } } //Recibo un producto y lo agrego a la lista, si tiene mas de 5, borro el primero que es el que mas tiempo lleva function MemoryAddProductToNewlySeenList(product) { product.descripcion = ""; //Borramos la descripción, porque nos rompe var json_NewlySeen = MemoryGetCookie(nameCookieNewlySeenList); var arr_from_json = []; if ((json_NewlySeen == null) || (json_NewlySeen == "")) { json_NewlySeen = []; } else { arr_from_json = JSON.parse(json_NewlySeen); } arr_from_json.pushIfNotExist(product, function (e) { return e.codigo === product.codigo; }); if (arr_from_json.length > 3) arr_from_json.shift(); //Elimino el primer elemento del array, que seria el elemento mas reciente var json_from_arr = JSON.stringify(arr_from_json); MemorySetCookie(nameCookieNewlySeenList, json_from_arr, 5); } //Agrego un producto al carrito de compra function MemoryAddProductToCart(cantidadProducto, codigoProducto, precioProducto, monedaProducto, descripcionProducto, urlImagen, monedaId, precioOriginal, monedaIdOriginal) { cantidadProducto = $("#cantidadSeleccionada").val() || cantidadProducto; var product = { codigo: codigoProducto, cantidad: cantidadProducto, precio: precioProducto, moneda: monedaProducto, descripcion: descripcionProducto, imagen: urlImagen, fecha: GetTodayDate(), monedaId: monedaId || 1, precioOriginal, monedaIdOriginal, }; let codigoPadre = $("#codigoPadreHidden").val(); let cantidadVariantes = +$("#cantidadVariantes").val() + +$("#cantidadVariantesColor").val(); if (cantidadVariantes && codigoPadre && cantidadVariantes >= 1 && codigoProducto === codigoPadre) { $(".variantesError").removeClass("d-none").addClass("d-block") } else { $(".variantesError").removeClass("d-block").addClass("d-none") ServerMessage("addToCart", { guid: empresaGuid, product, usuarioId: $("#memory_user_id").val() }) } } //Todos los que tengan esa clase van a tener el total de items function MemorySetCountCardShopping(length) { $(".shopping_card_count").text(length); } //Borro el renglon del producto que quiero borrar, luego lo borro de las cookies function MemoryDeleteProductFromCart(indexRenglon) { $("#row-" + indexRenglon).hide(); //Ocultamos el renglon correspondiente var codigoProducto = $("#row-" + indexRenglon + "-code").html(); //Obtenemos el codigo del producto para emparejarlo con el identificador en nuestras cookies // MemoryDeleteProductCookie(codigoProducto); ServerMessage("deleteProductFromCart", { codigoProducto, guid: empresaGuid, usuarioId: $("#memory_user_id").val() }); // var dataCookie = JSON.parse(MemoryGetCookie(nameCookieCardList)); //Obtenemos la cookie actual // $(".CartShoppingTotal").text(FormatoPrecioDeUnValor(dataCookie.sum("precio"))); //Asignamos el nuevo total // MemorySetCountCardShopping(); } // //Elimino un producto del carrito de compra // function MemoryDeleteProductCookie(codigo) { // var indexProducto = MemoryGetIndexProductoCookie(codigo); // var dataCookie = JSON.parse(MemoryGetCookie(nameCookieCardList)); // if (indexProducto != -1) { // dataCookie.splice(indexProducto, 1); // MemoryUpdateCookie(nameCookieCardList, dataCookie); //Solo actualizo si encontro // SaveCart(); // } // } //Recibo un codigo de producto y un indice de renglon y agrego cantidad al objeto function MemoryAddCant(code, row) { ServerMessage("cartAddCantProduct", { codigoProducto: code, guid: empresaGuid, usuarioId: $("#memory_user_id").val() }); // var dataCookie = JSON.parse(MemoryGetCookie(nameCookieCardList)); // var indexProducto = MemoryGetIndexProductoCookie(code); // dataCookie[indexProducto].cantidad++; // $(".cant-" + row).html(dataCookie[indexProducto].cantidad); // MemoryUpdateCookie(nameCookieCardList, dataCookie); // MemoryCalcFinalPriceCart(); // SaveCart(); } //Recibo un codigo de producto y un indice y le resto cantidad al objeto, function MemorySubtractCant(code, row) { ServerMessage("cartSubstractCantProduct", { codigoProducto: code, guid: empresaGuid, usuarioId: $("#memory_user_id").val() }); // var dataCookie = JSON.parse(MemoryGetCookie(nameCookieCardList)); // var indexProducto = MemoryGetIndexProductoCookie(code); // if (dataCookie[indexProducto].cantidad > 1) dataCookie[indexProducto].cantidad--; // $(".cant-" + row).html(dataCookie[indexProducto].cantidad); // MemoryUpdateCookie(nameCookieCardList, dataCookie); // MemoryCalcFinalPriceCart(); // SaveCart(); } //Recibo un codigo de producto y retorno el indice en el que se encuentre el objeto con el codigo que estoy buscando function MemoryGetIndexProductoCookie(code) { var dataCookie = JSON.parse(MemoryGetCookie(nameCookieCardList)); var arrayProducto = dataCookie.filter(x => x.codigo == code); //find del objeto que buscamos con el codigo recibido arrayProducto = arrayProducto[0]; //Asignamos solo el array var indexProducto = dataCookie.indexOf(arrayProducto); //Obtenemos el indice que le corresponda return indexProducto; } function MemoryCalcFinalCart(cart) { //Recorre todos los renglones que tenemos //setea en cada uno el precio calculando el precio en las cookies por la cantidad que tenga en ese momento las cookies var totalPesos = 0; var totalDolar = 0; let monedaId = localStorage.getItem('monedaId') || 1; //Si es undefined, es 1, o sea peso uruguayo let monedaSimbolo = monedaId == "2" ? "US$" : "$"; let cotizacionDolar = $("#memory_cotizacion_dolar").val(); cart.forEach(function (producto, index) { var calcPrice = producto.precioOriginal; if (producto.monedaIdOriginal != monedaId) { if (producto.monedaIdOriginal == 1 && monedaId == 2) { calcPrice = calcPrice / cotizacionDolar; } else if (producto.monedaIdOriginal == 2 && monedaId == 1) { calcPrice = calcPrice * cotizacionDolar; } else if (monedaId == 0) { monedaSimbolo = producto.monedaIdOriginal == "2" ? "US$" : "$"; } } calcPrice = calcPrice * producto.cantidad; $(".productoCodigo-" + producto.codigo).find(".cartRow-" + index + "-price").html(calcPrice); $(".productoCodigo-" + producto.codigo).find(".cant-" + producto.codigo).html(producto.cantidad); totalDolar += (monedaId == 1) || (monedaId == 0 && producto.monedaIdOriginal == 1) ? calcPrice / cotizacionDolar : calcPrice; //Si tengo un producto en pesos urugayos, tengo que hacerle la conversión a dolares totalPesos += (monedaId == 2) || (monedaId == 0 && producto.monedaIdOriginal == 2) ? calcPrice * cotizacionDolar : calcPrice; //Si tengo un producto en dolares, tengo que hacerle la conversión a pesos urugayos }); $(".CartShoppingTotal").text(monedaSimbolo + (monedaId == 2 ? totalDolar.toFixed(2) : totalPesos.toFixed(2))); $(".priceUyu").text(totalPesos.toFixed(2)) $(".priceUsd").text(totalDolar.toFixed(2)) $("#puh").val(totalPesos.toFixed(2)); $("#pdh").val(totalPesos.toFixed(2)); FormatoPrecioTodos(); } /* END - COOKIE MANAGE */ /* ARRAY */ // check if an element exists in array using a comparer function // comparer : function(currentElement) Array.prototype.inArray = function (comparer) { for (var i = 0; i < this.length; i++) { if (comparer(this[i])) return true; } return false; }; // adds an element to the array if it does not already exist using a comparer // function Array.prototype.pushIfNotExist = function (element, comparer) { if (!this.inArray(comparer)) { this.push(element); } }; // Sumo una propiedad del array Array.prototype.sum = function (prop) { var total = 0 for (var i = 0, _len = this.length; i < _len; i++) { total += this[i][prop] } return total } /* END ARRAY */ /* MERCADOPAGO */ function PagarConMercadoPago_Show(orden) { ServerMessage('pagarconmercadopago', JSON.stringify(orden)); } /* END MERCADOPAGO */ /* Formato precio*/ //Funcion para formatear el precio function formatMoney(n, c, d, t) { var c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "", i = String(parseInt(n = Math.abs(Number(n) || 0).toFixed(c))), j = (j = i.length) > 3 ? j % 3 : 0; return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); }; function FormatoPrecioTodos() { $(".price").each(function () { var precioFormateado = formatMoney($(this).html()); if (precioFormateado && precioFormateado != '0,00') $(this).html(precioFormateado); }); console.log("Format price") } function FormatoPrecioDeUnValor(valor) { return formatMoney(valor); } /* End formato precio */ //Ordenes //Armo el json para mandar una orden, siguiendo los atibutos del modelo function MemoryCreateOrder() { var tipoDePago = $("input[name='tipoPago'][type='radio']:checked").val(); let formaDePagoAux = tipoDePago.includes("10") ? tipoDePago.split("-")[1] : "Off"; tipoDePago = tipoDePago.split("-")[0]; var tipoDeConsumidor = $("input[name='tipoConsumidor'][type='radio']:checked").val(); var tipoDeEnvio = $("input[name='tipoEnvio'][type='radio']:checked").val(); var nombre = ""; var razonSocial = ""; if (tipoDeConsumidor == 3) nombre = $("#nombreRazonSocialDatosFacturacion").html(); if (tipoDeConsumidor == 2) razonSocial = $("#nombreRazonSocialDatosFacturacion").html(); const monedaMedioDePago = +$("#Memory_Ecommmerce_Moneda_Card_Option").val() || 0; //Por defecto decide el cliente var _adenda = $("#ordenAdenda").val(); //Franja horaria envio var franjaHoraria = ""; if (tipoDeEnvio == "0") { franjaHoraria = $('input[name=horarioEnvio]:checked').val(); switch (franjaHoraria) { case "0": franjaHoraria = "8am a 11am"; break; case "1": franjaHoraria = "13pm a 16pm"; break; case "2": franjaHoraria = "17pm a 19pm"; break; default: franjaHoraria = "Sin declarar"; break; } franjaHoraria = "FRANJA HORARIA: " + franjaHoraria; } //OBSERVACION DE ENVIO var envioObservacion = franjaHoraria + "\r\n" + $("#observacionesEnvio").html(); var orden = { user: { nombre: $("#nombreMisDatos").html(), apellido: $("#apellidoMisDatos").html(), identificador: $("#cedulaMisDatos").html(), email: $("#memory_user_email").val(), datosFacturacion: { identificador: $("#identificadorDatosFacturacion").html(), nombre: nombre, razonSocial: razonSocial, tipoDeConsumidor: tipoDeConsumidor, contactoFactura: { email: $("#emailDatosFacturacion").html(), telefono: $("#telefonoDatosFacturacion").html() }, direccionFactura: { calle1: $("#direccionDatosFacturacion").html(), pais: $("#slcPaisFacturacion").val(), departamento: $("#slcDepartamentoFacturacion").val(), localidad: $("#slcLocalidadFacturacion").val() }, tipoDePago: tipoDePago, formaDePago: formaDePagoAux == "On" ? "online" : "offline" }, datosEnvio: { direccionEnvio: { calle1: $("#direccionEnvio").html(), pais: $("#slcPaisEnvio").val(), departamento: $("#slcDepartamentoEnvio").val(), localidad: $("#slcLocalidadEnvio").val() }, tipoDeEnvio: tipoDeEnvio, observaciones: envioObservacion, nombreReceptor: $("#inputEnvioNombreReceptor").val(), retiraPorAgencia: $("#retiroPorAgencia:checked").val() == "on" ? true : false }, }, empresaGuid: empresaGuid, adenda: _adenda, filter: { monedaId: (monedaMedioDePago == 0 ? $("[name='monedaCliente']:checked").val() : monedaMedioDePago) || 1, //Si es undefined, es 1, o sea peso uruguayo }, cotizacion: { Dolar: $("#memory_cotizacion_dolar").val() } }; if (tipoDePago == 9) { PagarConMercadoPago_Show(orden); } else { ServerMessage("createOrder", orden); BtnSiguienteClick(5); $(".btn-createOrder").attr("disabled", true); } } //End ordenes //Newsletter suscripcion function MemorySubscribeNewsletter() { var email = $("#inputEmailNewslatter").val(); if (email) { var data = { email: email, guidEmpresa: $("#memory_empresa_id").val() } ServerMessage("subscribeNewsletter", data); $("#inputEmailNewslatter").val(""); $(".modalNewsletter").modal('show'); } } //end newsletter //fehca function GetTodayDate() { var currentDate = new Date(); var date = currentDate.getDate(); var month = currentDate.getMonth(); //Be careful! January is 0 not 1 var year = currentDate.getFullYear(); var dateString = date + "-" + (month + 1) + "-" + year; return dateString; } //end fecha //Localidades del apartamento function GetLocalidades(destino) { var departamentoId = $("#slcDepartamento" + destino).val(); //obtengo el valor del selected var data = { departamentoId: departamentoId, destino: destino }; ServerMessage('getLocalidades', data); } //Redireccionamiento de productos segun la categoria function RedirectToProducts(categoryId) { window.location = "productos.html?category_Id=" + categoryId; } //contacto //Valido vacios y null, mando un json al server para mandar un mail a la empresa function MemoryMandarMailContacto() { $(".btn.contact").attr('disabled', 'disabled'); var clienteNombre = $("#contactoNombre").val(); var clienteEmail = $("#contactoEmail").val(); var clienteTelefono = $("#contactoTelefono").val(); var numeroOrden = $("#contactoNumeroOrden").val(); var asunto = $("#contactoAsunto").val(); var mensaje = $("#contactoMensaje").val(); if ((clienteNombre) && (clienteEmail) && (clienteTelefono) && (numeroOrden) && (asunto) && (mensaje)) { var empresaGuid = $("#memory_empresa_id").val(); var empresaContacto = $("#memory_empresa_contacto").val(); if (empresaGuid && empresaContacto) { var contactoMail = { empresaGuid: empresaGuid, empresaContacto: empresaContacto, asunto: asunto, mensaje: mensaje, orden: { numero: numeroOrden }, cliente: { nombre: clienteNombre, contacto: { email: clienteEmail, telefono: clienteTelefono, }, } }; ServerMessage('contactoEmpresa', contactoMail); } } $(".btn.contact").prop('disabled', null); } //end contacto //Begin cart result function SetCartResult(datos) { if (datos) { //Si el compraEfectuada = 1, significa que la efectuo y podemos borrar el carrito if (datos.ordenEfectuada == 1) { SaveCart(); } else { $("#cartRedirect").attr('href', 'cart.html'); $("#cartRedirect").text('Volver al carrito'); } if (datos.error) { $("#estadoOrden").html(''); //Cambiamos el icono por el de error $("#estadoOrden").removeClass('card-step-iconSuccess'); //Le quitamos la clase del color success $("#estadoOrden").addClass('card-step-iconError'); //Le agregamos la clase del color del error } $("#cartConfirmedError").html(datos.errorDescripcion) $('#cartConfirmedTitulo').html(datos.titulo); $('#cartConfirmedSubTitulo').append(datos.subTitulo); $(".cartResult").each(function () { $(this).removeClass('d-none') }); } } //End cart result //Login cart function LoginCart() { var email = $("#loginCartEmail").val(); var password = $("#loginCartPassword").val(); if (email && password) { var data = { email: email, password: password, empresaGuid: $("#memory_empresa_id").val() } ServerMessage('loginCart', data); } } //Copiar datos para cuando es consumidor final function CopiarMisDatosFacturacion() { let nombre = $("#inputNombreMisDatos").val(); let apellido = $("#inputApellidoMisDatos").val(); let documento = $("#inputIdentificadorMisDatos").val(); let telefono = $("#inputTelefonoMisDatos").val(); $("#inputIdentificadorFacturacion").val(documento); $("#inputNombreFacturacion").val(nombre); $("#inputApellidoFacturacion").val(apellido); $("#inputTelefonoFacturacion").val(telefono); } function RedirectEtiqueta(Etiqueta) { location.href = "productos.html?search=" + Etiqueta; } function redirectToCart() { location.href = "cart.html"; } function onlyNumbersCantidad() { $("#cantidadSeleccionada").on("keypress", function (event) { if ((event.which != 8 && isNaN(String.fromCharCode(event.which)))) { // || ($(this).val() + +String.fromCharCode(event.keyCode) > max) event.preventDefault(); //stop character from entering input } }); } function MemoryCheckCart(length) { if (length <= 0) { $(".btn-siguiente").attr('disabled', true); $(".row-card-empty").removeClass('d-none'); $(".row-step").addClass('d-none'); $(".row-card-title").addClass('d-none'); return false; } return true; } function ClearCartShopping() { MemorySetCookie('memoryecommercecardlist', '', 1) }