//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)
}