class Web { static init() { $(document).ready(function() { $("body").on("click", ".btn-abre-bloque", function(e) { e.preventDefault(); Web.abreBloque($(this).attr("data-bloque")); }); $("body").on("click", ".cerrar-bloque", function(e) { e.preventDefault(); Web.cerrarBloque($(this).parents(".bloque-flotante").attr("id")); }); $("#btn-abre-importe, #bloque-importe-presupuesto .cerrar-bloque").click(function() { $("#bloque-importe-presupuesto").toggleClass("active"); }); }); } static abreBloque(bloque) { $(".overlay").addClass("active"); $("#"+bloque).addClass("open"); } static cerrarBloque(bloque) { $(".overlay").removeClass("active"); $("#"+bloque).removeClass("open"); } static initListadoClientes() { $(document).ready(function() { $("#btn-exportar").click(function (){ window.location = "exportarClientes.php?buscar="+$("#tablaClientes_filter input").val(); }); $("#btn-anadir").click(function () { $("#frm-cliente")[0].reset(); $("#frm-cliente-id").val(-1); $("#bloque-cliente .bloque-flotante-header").text("Añadir Cliente"); $("#btn-guardar-cliente").text("Añadir"); }); $("body").on("click", ".editar-cliente", function(e) { e.preventDefault(); $("#frm-cliente")[0].reset(); $("#bloque-cliente .bloque-flotante-header").text("Editar Cliente"); $("#btn-guardar-cliente").text("Editar"); let datos = JSON.parse($(this).attr("data-datos")); $("#frm-cliente-id").val(datos.id); $("#frm-cliente-nombre").val(datos.nombre); $("#frm-cliente-apellido-1").val(datos.apellido1); $("#frm-cliente-apellido-2").val(datos.apellido2); $("#frm-cliente-email").val(datos.email); $("#frm-cliente-telefono").val(datos.telefono); $("#frm-cliente-dni").val(datos.dni); $("#frm-cliente-direccion").val(datos.direccion); $("#frm-cliente-cp").val(datos.codPostal); $("#frm-cliente-nacimiento").val(datos.fechaNacimiento); $("#frm-cliente-provincia").val(datos.provincia); $("#frm-cliente-provincia").selectpicker('refresh'); $("#frm-cliente-genero").val(datos.sexo); $("#frm-cliente-genero").selectpicker('refresh'); $("#frm-cliente-empresa").val(datos.esEmpresa); $("#frm-cliente-empresa").selectpicker('refresh'); $("#frm-cliente-empresa").trigger("change"); Utils.actualizaCiudades("frm-cliente-localidad", "frm-cliente-provincia", "frm-cliente-pais", datos.localidad, datos.pais, datos.provincia, datos.localidad, undefined, "Selecciona una localidad", "Espere por favor...", "es", true); Web.abreBloque("bloque-cliente"); }); }); } static initListadoAgentes() { $(document).ready(function() { $("#btn-exportar").click(function (){ window.location = "exportarAgentes.php?buscar="+$("#tablaAgentes_filter input").val(); }); $("#btn-anadir").click(function () { $("#frm-agente")[0].reset(); $("#frm-agente-id").val(-1); $("#bloque-agente .bloque-flotante-header").text("Añadir Agente"); $("#btn-guardar-agente").text("Añadir"); }); $("body").on("click", ".editar-agente", function(e) { e.preventDefault(); $("#frm-agente")[0].reset(); $("#bloque-agente .bloque-flotante-header").text("Editar Agente"); $("#btn-guardar-agente").text("Editar"); let datos = JSON.parse($(this).attr("data-datos")); $("#frm-agente-id").val(datos.id); $("#frm-agente-nombre").val(datos.nombre); $("#frm-agente-email").val(datos.email); $("#frm-agente-telefono").val(datos.telefono); $("#frm-agente-codigo").val(datos.codigo); Web.abreBloque("bloque-agente"); }); }); } static initListadoPresupuestos(urlAjax) { $(document).ready(function() { $("#fechaDesde, #fechaHasta").mask("99/99/9999"); $("#cliente").autocomplete({ source: "ajax/PresupuestosClientes.buscar.php?CSRF="+CSRF, minLength: 3, response: function( event, ui ) { $(event.target).removeClass("ui-autocomplete-loading"); }, change: function (event, ui) { $(event.target).removeClass("ui-autocomplete-loading"); if(!ui.item) { $(event.target).val("").data("item", null).removeClass("selected"); return; } }, select: function (event, ui) { $(event.target).data("item", ui.item).addClass("selected"); } }); $("#usuario").autocomplete({ source: "ajax/PresupuestosUsuarios.buscar.php?CSRF="+CSRF, minLength: 3, response: function( event, ui ) { $(event.target).removeClass("ui-autocomplete-loading"); }, change: function (event, ui) { $(event.target).removeClass("ui-autocomplete-loading"); if(!ui.item) { $(event.target).val("").data("item", null).removeClass("selected"); return; } }, select: function (event, ui) { $(event.target).data("item", ui.item).addClass("selected"); } }); $("#marca").on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { if (isSelected == null) return; Web.eliminarOpcionesSelect($("#modelo")); Web.eliminarOpcionesSelect($("#cilindrada")); $.ajax( { type: "POST", dataType:"json", url:"ajax/Presupuestos.cargarModelosCilindrada.php?CSRF="+CSRF, data: { marca: $("#marca").val(), }, success: function(data, textStatus, XMLHttpRequest) { if (data["error_number"] < 0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, undefined); } else { let modelos = $("#modelo"); let cilindradas = $("#cilindrada"); $.each(data["modelos"], function (id, opc) { modelos.append(""); }); modelos.selectpicker("refresh"); $.each(data["cilindradas"], function (id, opc) { cilindradas.append(""); }); cilindradas.selectpicker("refresh"); } } }); }); $("#borrar-filtros").click(function() { Web.eliminarOpcionesSelect($("#modelo")); Web.eliminarOpcionesSelect($("#cilindrada")); $("#marca").val(0); $("#marca").selectpicker("refresh"); $("#estado").val(0); $("#estado").selectpicker("refresh"); $("#cliente").val("").data("item", null); $("#usuario").val("").data("item", null); $("#fechaDesde, #fechaHasta").val(""); buscar(); }); $("#btn-filtrar").click(buscar); $("#btn-exportar").click(function (){ let cliente = $("#cliente").data("item"); let usuario = $("#usuario").data("item"); let extraUrl = ""; if (cliente != undefined && cliente != null) extraUrl = "&idCliente="+cliente.id; if (usuario != undefined && usuario != null) extraUrl = "&idUsuario="+usuario.id; extraUrl += "&"+$("#frm-filtro").serialize(); window.location = "exportarPresupuestos.php?buscar="+$("#tablaPresupuestos_filter input").val()+extraUrl; }); }); function buscar() { Web.cerrarBloque("bloque-filtro"); let cliente = $("#cliente").data("item"); let usuario = $("#usuario").data("item"); let extraUrl = ""; if (cliente != undefined && cliente != null) extraUrl = "&idCliente="+cliente.id; if (usuario != undefined && usuario != null) extraUrl = "&idUsuario="+usuario.id; extraUrl += "&"+$("#frm-filtro").serialize(); tablatablaPresupuestos.ajax.url(urlAjax+extraUrl).load(); } } static rellenaFichaCliente() { $(".dato-cliente-nombre").text($("#frm-cliente-nombre").val()); $(".dato-cliente-email").text($("#frm-cliente-email").val()); $(".dato-cliente-telefono").text($("#frm-cliente-telefono").val()); $(".dato-cliente-dni").text($("#frm-cliente-dni").val()); $(".dato-cliente-direccion").text($("#frm-cliente-direccion").val()); $(".dato-cliente-cp").text($("#frm-cliente-cp").val()); $(".dato-cliente-provincia").text($("button[data-id='frm-cliente-provincia']").find(".filter-option-inner-inner").text()); $(".dato-cliente-localidad").text($("button[data-id='frm-cliente-localidad']").find(".filter-option-inner-inner").text()); } static initEvento(urlAjax) { $(document).ready(function () { $("#frm-evento-fecha").mask("99/99/9999"); $("#frm-evento-hora").mask("99:99"); $("#frm-evento-cliente").autocomplete({ source: "ajax/Clientes.buscar.php?CSRF="+CSRF, minLength: 3, response: function( event, ui ) { $(event.target).removeClass("ui-autocomplete-loading"); }, change: function (event, ui) { $(event.target).removeClass("ui-autocomplete-loading"); if(!ui.item || ui.item.id == -1) { $(event.target).val("").data("item", null).removeClass("selected"); $("#frm-evento-nombre, #frm-evento-email, #frm-evento-telefono, #frm-evento-dni, #frm-evento-direccion, #frm-evento-cp, #frm-evento-provincia, #frm-evento-localidad").val(""); tablatablaPresupuestos.ajax.url(urlAjax+"&idCliente=-1").load(); return; } }, select: function (event, ui) { if (ui.item.id == -1) { $(event.target).data("item", null).removeClass("selected").val(""); Web.abreBloque("bloque-cliente"); $("#frm-evento-nombre, #frm-evento-email, #frm-evento-telefono, #frm-evento-dni, #frm-evento-direccion, #frm-evento-cp, #frm-evento-provincia, #frm-evento-localidad").val(""); } else { let datos = ui.item.datos; $("#frm-evento-nombre").val(datos.nombre); $("#frm-evento-email").val(datos.email); $("#frm-evento-telefono").val(datos.telefono); $("#frm-evento-dni").val(datos.dni); $("#frm-evento-direccion").val(datos.direccion); $("#frm-evento-cp").val(datos.codPostal); $("#frm-evento-provincia").val(datos.provincia); $("#frm-evento-localidad").val(datos.localidad); $(event.target).data("item", ui.item).addClass("selected"); tablatablaPresupuestos.ajax.url(urlAjax+"&idCliente="+ui.item.id).load(); } } }).autocomplete( "instance" )._renderItem = function( ul, item ) { var label = item.label; return $( "
  • ") .append( $( "
    " ).html( label ) ) .appendTo( ul ); }; $("#btn-deseleccionar").click(function () { $("input[name='presupuesto']").prop("checked", false); }); $("#btn-guardar-evento").click(function (e) { e.preventDefault(); let btn = $(this); let extraErroresForm = ""; let cliente = $("#frm-evento-cliente").data("item"); if (cliente == null || cliente == undefined) extraErroresForm += "Seleccione un cliente
    "; else $("#frm-evento-cliente-id").val(cliente.id); Utils.sendStandardAjax("frm-evento", "ajax/Eventos.guardar.php", {extraErroresForm: extraErroresForm, successCallback: "https://gestion.vespaturia.es/agenda.html"}); }); }); } static initPresupuesto(idPresupuesto, datos) { Web.intereses = {}; Web.PVP = 0; Web.PVPDescuento = 0; Web.financiacionMes = 0; Web.PVPAccesorios = 0; Web.PVPOtros = 0; Web.importeAccesorios = {}; Web.otrosAccesorios = {}; let campoTipo = $("#frm-presupuesto-tipo-moto"); let campoMarca = $("#frm-presupuesto-marca"); let campoCilindrada = $("#frm-presupuesto-cilindrada"); let campoModelo = $("#frm-presupuesto-modelo"); let campoVersion = $("#frm-presupuesto-version"); let campoColor = $("#frm-presupuesto-color"); let inpImporteDescuento = $("#frm-presupuesto-moto-imp-descuento"); let inpPorcDescuento = $("#frm-presupuesto-moto-porc-descuento"); let inpFinalDescuento = $("#frm-presupuesto-moto-final"); $(document).ready(function () { $("#tablaAccesorios").on('xhr.dt', function(e, settings, json, xhr) { Web.importeAccesorios = json["datosPVP"]; if (json["datosPVP"].length == 0 && json["sEcho"] == 1) { //No hago nada } else { rellenaFinanciacion(); } rellenaResumenPresupuesto(); }); $("#tablaOtrosAccesorios").on('xhr.dt', function(e, settings, json, xhr) { Web.otrosAccesorios = json["datosPVP"]; if (json["datosPVP"].length == 0 && json["sEcho"] == 1) { //No hago nada } else { rellenaFinanciacion(); } rellenaResumenPresupuesto(); }); const ESTADO_INICIAL = $("#frm-presupuesto-estado").val(); $("#frm-presupuesto-estado").on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { if (isSelected == null) return; const tipoMoto = $("#tabs-tipo a.active").attr("data-tipo")*1 || -1; const val = $("#frm-presupuesto-estado").val()*1; if (tipoMoto == 1 && [1, 6].includes(val)) { if (val == 1) $(".form-group-agente").addClass("d-none"); else $(".form-group-agente").removeClass("d-none"); ClassBlockUI.abrirBlockUIEstandar("bloquePresupuestoAceptado", function() { //Si lo cierra le cambio el estado $("#frm-presupuesto-estado").val(ESTADO_INICIAL); $("#frm-presupuesto-estado").selectpicker("refresh"); $(".modal").modal("hide"); Web.notify("El estado ha sido cambiado al inicial", true); }, "Aceptar Presupuesto", "modal1000"); } }); $("#frm-presupuesto-nombre").keyup(function() { $("#frm-psp-aceptado-nombre").val($(this).val()); }); $("#frm-presupuesto-cliente").autocomplete({ source: "ajax/Clientes.buscar.php?CSRF="+CSRF, minLength: 3, response: function( event, ui ) { $(event.target).removeClass("ui-autocomplete-loading"); }, change: function (event, ui) { $(event.target).removeClass("ui-autocomplete-loading"); if(!ui.item || ui.item.id == -1) { $(event.target).val("").data("item", null).removeClass("selected"); $("#frm-presupuesto-nombre").val(""); $("#frm-presupuesto-email").val(""); $("#frm-presupuesto-telefono").val(""); $("#frm-presupuesto-dni").val(""); $("#frm-presupuesto-direccion").val(""); $("#frm-presupuesto-cp").val(""); $("#frm-presupuesto-provincia").val(""); $("#frm-presupuesto-localidad").val(""); return; } }, select: function (event, ui) { if (ui.item.id == -1) { $(event.target).data("item", null).removeClass("selected").val(""); Web.abreBloque("bloque-cliente"); $("#frm-presupuesto-nombre").val(""); $("#frm-presupuesto-email").val(""); $("#frm-presupuesto-telefono").val(""); $("#frm-presupuesto-dni").val(""); $("#frm-presupuesto-direccion").val(""); $("#frm-presupuesto-cp").val(""); $("#frm-presupuesto-provincia").val(""); $("#frm-presupuesto-localidad").val(""); } else { let datos = ui.item.datos; $("#frm-psp-aceptado-clienteId").val(datos.id); $("#frm-presupuesto-nombre, #frm-psp-aceptado-nombre").val(datos.nombre); $("#frm-presupuesto-email, #frm-psp-aceptado-email").val(datos.email); $("#frm-presupuesto-telefono, #frm-psp-aceptado-telefono").val(datos.telefono); $("#frm-presupuesto-dni, #frm-psp-aceptado-dni").val(datos.dni); $("#frm-presupuesto-direccion, #frm-psp-aceptado-direccion").val(datos.direccion); $("#frm-presupuesto-cp, #frm-psp-aceptado-cp").val(datos.codPostal); $("#frm-presupuesto-provincia").val(datos.provincia); $("#frm-presupuesto-localidad").val(datos.localidad); $("#frm-psp-aceptado-nacimiento").val(datos.fechaNacimiento); $("#frm-psp-aceptado-provincia").val(datos.provinciaId); $("#frm-psp-aceptado-provincia").selectpicker("refresh"); //$("#frm-psp-aceptado-localidad").val(datos.localidadId); Utils.actualizaCiudades("frm-psp-aceptado-localidad", "frm-psp-aceptado-provincia", "frm-psp-aceptado-pais", datos.localidadId, datos.paisId, datos.provinciaId, datos.localidadId, undefined, "Selecciona una localidad", "Espere por favor...", "es", true); $(event.target).data("item", ui.item).addClass("selected"); } } }).autocomplete( "instance" )._renderItem = function( ul, item ) { var label = item.label; return $( "
  • ") .append( $( "
    " ).html( label ) ) .appendTo( ul ); }; $("#frm-presupuesto-accesorio").autocomplete({ source: "ajax/Accesorios.buscar.php?CSRF="+CSRF, minLength: 3, response: function( event, ui ) { $(event.target).removeClass("ui-autocomplete-loading"); }, change: function (event, ui) { $(event.target).removeClass("ui-autocomplete-loading"); if(!ui.item) { $(event.target).val("").data("item", null).removeClass("selected"); return; } }, select: function (event, ui) { if (ui.item.id == -1) { $(event.target).data("item", ui.item).removeClass("selected").val(""); $("#accesorio-encontrado").val(ui.item.value); $("#precio-accesorio-encontrado").val("").prop("readonly", false); $("#iva-accesorio-encontrado").val(21).prop("readonly", false); } else { $(event.target).data("item", ui.item).addClass("selected"); $("#accesorio-encontrado").val(ui.item.label); $("#precio-accesorio-encontrado").val(ui.item.precio).prop("readonly", false); $("#iva-accesorio-encontrado").val(ui.item.porcentajeIVA).prop("readonly", true); } } }).autocomplete( "instance" )._renderItem = function( ul, item ) { var label = item.label; return $( "
  • ") .append( $( "
    " ).html( label ) ) .appendTo( ul ); };; $("#btn-anadir-accesorio-encontrado, #btn-anadir-accesorio-otro").click(function () { let tipo = $(this).attr("data-tipo"); let id = -1; let titulo = ""; let precio = 0; let porcentajeIVA = 0; if (tipo == 1) { let item = $("#frm-presupuesto-accesorio").data("item"); if (item == null || item == undefined) { ClassBlockUI.abrirBlockUIEstandarMensaje("Selecciona un accesorio", true); return; } id = item.id; precio = $("#precio-accesorio-encontrado").val() * 1; porcentajeIVA = $("#iva-accesorio-encontrado").val() * 1 || 21; if (id < 0) { titulo = $("#accesorio-encontrado").val().trim(); } } else { titulo = $("#accesorio-otro").val().trim(); if (titulo == "") { ClassBlockUI.abrirBlockUIEstandarMensaje("Debe escribir el título del accesorio", true); return; } precio = $("#precio-accesorio-otro").val() * 1; porcentajeIVA = $("#iva-accesorio-otro").val() * 1 || 21; } if (isNaN(precio)) { ClassBlockUI.abrirBlockUIEstandarMensaje("Debe escribir un precio válido", true); return; } $.ajax( { type: "POST", dataType:"json", url:"ajax/PresupuestoAccesorios.anadir.php?CSRF="+CSRF, data: { presupuesto: $("#frm-presupuesto-id").val(), id: id, precio: precio, porcentajeIVA: porcentajeIVA, titulo: titulo, tipo: tipo, }, success: function(data, textStatus, XMLHttpRequest) { if (data["error_number"] < 0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, undefined); } else { Web.notify(data["error_message"]); if (tipo == 1) { $("#frm-presupuesto-accesorio").val("").data("item", null); $("#accesorio-encontrado, #precio-accesorio-encontrado, #iva-accesorio-encontrado").val(""); $("#iva-accesorio-encontrado").prop("readonly", true); tablatablaAccesorios.ajax.reload(); } else { $("#accesorio-otro, #precio-accesorio-otro, #iva-accesorio-otro").val(""); tablatablaOtrosAccesorios.ajax.reload(); } } } }); }); $("body").on("click", ".editar-accesorio", function () { let tipo = $(this).attr("data-tipo"); $("#frm-editar-accesorio-id").val($(this).attr("data-id")); $("#frm-editar-accesorio-titulo").val($(this).attr("data-titulo")); $("#frm-editar-accesorio-referencia").val($(this).attr("data-referencia")); $("#frm-editar-accesorio-precio").val($(this).attr("data-precio")).attr("data-precio", $(this).attr("data-precio")); $("#frm-editar-accesorio-iva").val($(this).attr("data-porcentajeiva")).attr("data-precio", $(this).attr("data-porcentajeiva")); if (tipo == 1) { if ($(this).attr("data-producto") > 0) { $(".editar-accesorio-referencia").removeClass("d-none"); $("#frm-editar-accesorio-iva, #frm-editar-accesorio-titulo").prop("readonly", true); } else { $(".editar-accesorio-referencia").addClass("d-none"); $("#frm-editar-accesorio-iva, #frm-editar-accesorio-titulo").prop("readonly", false); } } else { $("#frm-editar-accesorio-titulo, #frm-editar-accesorio-iva").prop("readonly", false); $(".editar-accesorio-referencia").addClass("d-none"); } $("#btn-guardar-accesorio").attr("data-tipo", tipo); ClassBlockUI.abrirBlockUIEstandar("bloqueEditarAccesorio", undefined, "Editar", "modal500"); }); $("body").on("click", ".eliminar-accesorio", function () { let tipo = $(this).attr("data-tipo"); let id = $(this).attr("data-id"); const successCallback = function (data, textStatus, XMLHttpRequest) { $(".modal").modal("hide"); if (data["error_number"] >= 0) { Web.notify(data["error_message"]); if (tipo == 1) tablatablaAccesorios.ajax.reload(); else tablatablaOtrosAccesorios.ajax.reload(); } else { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, undefined); } }; Utils.sendStandardAjax(null, "ajax/PresupuestoAccesorios.eliminar.php?CSRF="+CSRF+"&id="+id, {successCallback: successCallback}); }); $("body").on("click", "#btn-guardar-accesorio", function () { let tipo = $(this).attr("data-tipo"); const successCallback = function (data, textStatus, XMLHttpRequest) { if (data["error_number"] >= 0) { $(".modal").modal("hide"); Web.notify(data["error_message"]); if (tipo == 1) tablatablaAccesorios.ajax.reload(); else tablatablaOtrosAccesorios.ajax.reload(); } else { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, undefined); } }; Utils.sendStandardAjax("frm-editar-accesorio", "ajax/PresupuestoAccesorios.anadir.php?CSRF="+CSRF, {successCallback: successCallback}); }); campoTipo.on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { if (isSelected == null) return; eliminarOpcionesSelect(campoMarca); eliminarOpcionesSelect(campoCilindrada); eliminarOpcionesSelect(campoModelo); eliminarOpcionesSelect(campoVersion); eliminarOpcionesSelect(campoColor); cargarOpciones(campoMarca); }); campoMarca.on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { if (isSelected == null) return; eliminarOpcionesSelect(campoModelo); eliminarOpcionesSelect(campoVersion); eliminarOpcionesSelect(campoColor); if (campoCilindrada.val() == "" || campoCilindrada.val() == 0) { return; } else { cargarOpciones(campoModelo); } }); campoCilindrada.on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { if (isSelected == null) return; eliminarOpcionesSelect(campoModelo); eliminarOpcionesSelect(campoVersion); eliminarOpcionesSelect(campoColor); if (campoMarca.val() == "" || campoMarca.val() == 0) { return; } else { cargarOpciones(campoModelo); } }); campoModelo.on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { if (isSelected == null) return; eliminarOpcionesSelect(campoVersion); eliminarOpcionesSelect(campoColor); cargarOpciones(campoVersion); }); campoVersion.on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { if (isSelected == null) return; eliminarOpcionesSelect(campoColor); cargarOpciones(campoColor); }); campoColor.on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { if (isSelected == null) return; cargarOpciones(undefined); }); $("#frm-presupuesto-moto-iva").keyup(function() { validaInpNumero($(this), 21); calculaPrecios(); }); $("#frm-presupuesto-entrada").keyup(function() { validaInpNumero($(this), 0); rellenaFinanciacion(); }); $("#frm-presupuesto-moto-impuesto").keyup(function() { validaInpNumero($(this), 0); rellenaResumenPresupuesto(); $("#frm-presupuesto-moto-imp-descuento").trigger("keyup"); }); $("#frm-presupuesto-plazo-meses").on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { if (isSelected == null) return; rellenaFinanciacion(); }); inpPorcDescuento.keyup(function() { validaInpNumero($(this), 0); let pvp = $("#frm-presupuesto-moto-precio").attr("data-pvp")*1; let porcDescuento = $(this).val(); if (porcDescuento > 0) { let pvpDescuento = pvp * (1 - porcDescuento / 100); inpImporteDescuento.val(round(pvp - pvpDescuento)); } else { inpImporteDescuento.val(0); inpFinalDescuento.val(""); } calculaPrecios(); }); inpImporteDescuento.keyup(function() { validaInpNumero($(this), 0); let pvp = $("#frm-presupuesto-moto-precio").attr("data-pvp")*1; let importeDescuento = $(this).val(); if (importeDescuento > 0) { let pvpDescuento = pvp - importeDescuento; inpPorcDescuento.val(round(100 - (pvpDescuento * 100 / pvp))); } else { inpPorcDescuento.val(0); inpFinalDescuento.val(""); } calculaPrecios(); }); inpFinalDescuento.keyup(function() { validaInpNumero($(this), 0); let pvp = $("#frm-presupuesto-moto-precio").attr("data-pvp")*1; let final = inpFinalDescuento.val(); inpImporteDescuento.val(round(pvp - final)); inpPorcDescuento.val(round(100 - (final * 100 / pvp))); }); inpFinalDescuento.change(function() { validaInpNumero($(this), 0); calculaPrecios(); }); $("#precio-accesorio-encontrado, #precio-accesorio-otro, #frm-presupuesto-entrada").keyup(function (){validaInpNumero($(this), 0)}); $("#iva-accesorio-encontrado, #iva-accesorio-otro").keyup(function (){validaInpNumero($(this), 21)}); $("#frm-presupuesto-gestoria-precio").keyup(function () { validaInpNumero($(this), 0); rellenaFinanciacion(); }); $("#frm-presupuesto-tasacion-precio, #frm-presupuesto-seguro-precio").keyup(function () { validaInpNumero($(this), 0); rellenaFinanciacion(); rellenaResumenPresupuesto(); }); $("#frm-presupuesto-anadir-accesorios, #frm-presupuesto-anadir-gestoria").change(rellenaFinanciacion); $("body").on("keyup", "#frm-editar-accesorio-precio, #frm-editar-accesorio-iva", function (){validaInpNumero($(this), $(this).attr("data-precio"))}); motoSeleccionada(datos, true); if (idPresupuesto > 0) $("#frm-presupuesto-moto-imp-descuento").trigger("keyup"); let tipoAnterior = $("#tabs-tipo a.active").attr("data-tipomoto") || 0; $(".nav-tabs").on("click", ".nav-link", function(e) { e.preventDefault(); $(".nav-tabs .nav-link").removeClass("active"); $(this).addClass("active"); const tipo = $(this).attr("data-tipo"); const tipoMoto = $(this).attr("data-tipomoto")*1 || -1; //Esto se hace al seleccionar la moto //$("#frm-presupuesto-tipo-nueva-ocasion").val(tipo); if (tipo == 1) { $(".bloque-moto-nueva").removeClass("d-none"); $(".bloque-moto-ocasion").addClass("d-none"); if (campoVersion.val() > 0) { const color = campoColor.val(); //Las motos nuevas y las de oferta NO comparten color Web.eliminarOpcionesSelect(campoColor); cargarOpciones(campoColor, color); } } else { $(".bloque-moto-nueva").addClass("d-none"); $(".bloque-moto-ocasion").removeClass("d-none"); } }); $("#frm-presupuesto-ocasion").autocomplete({ source: "ajax/MotosOcasion.buscar.php", minLength: 3, classes: { "ui-autocomplete": "autocompleteMotos custom-scroll-bar" }, response: function (event, ui) { $("#frm-presupuesto-ocasion").removeClass("ui-autocomplete-loading"); }, change: function (event, ui) { if (!ui.item) { //$(event.target).val($("#input-buscador").val()); //$("#input-buscador").val(""); } else { $("#frm-presupuesto-ocasion").removeClass("ui-autocomplete-loading"); //$("#frm-presupuesto-ocasion").data("item", ui.item); } }, select: function( event, ui ) { $("#frm-presupuesto-ocasion").removeClass("ui-autocomplete-loading"); $("#frm-presupuesto-ocasion").data("item", ui.item); $("#frm-presupuesto-tipo-nueva-ocasion").val(2); motoSeleccionada(ui.item); if (ui.item.mesesFinanciacion != undefined) { $("#bloque-intereses").removeClass("d-none"); Web.intereses = ui.item.mesesFinanciacion; let campoMeses = $("#frm-presupuesto-plazo-meses"); let valorMes = campoMeses.val(); eliminarOpcionesSelect(campoMeses); campoMeses.append(""); $.each(Web.intereses, function(i, e) { campoMeses.append(""); }); campoMeses.val(valorMes); campoMeses.selectpicker("refresh"); rellenaFinanciacion(); } }, }).autocomplete( "instance" )._renderItem = function( ul, item ) { var label = item.label; return $( "
  • " ) .append( $( "
    " ).html( label ) ) .appendTo( ul ); }; }); $("#btns").on("click", ".btn-guardar-presupuesto", function(e) { e.preventDefault(); let btn = $(this); let extraErroresForm = ""; let cliente = $("#frm-presupuesto-cliente").data("item"); if (cliente == null || cliente == undefined) extraErroresForm += "Seleccione un cliente
    "; else $("#frm-presupuesto-cliente-id").val(cliente.id); if ($("#frm-presupuesto-moto").val() <= 0) extraErroresForm += "Debe seleccionar una moto"; let mes = $("#frm-presupuesto-plazo-meses").val(); if (mes == undefined || mes == '') mes = $("#frm-presupuesto-plazo-meses option").last().attr('value'); let agenteId = -1; if ($("#frm-presupuesto-estado").val()*1 == 6) { let agente = $("#frm-psp-aceptado-agente").data("item"); if (agente == null || agente == undefined) extraErroresForm += "Debe seleccionar un agente"; else agenteId = agente.id; } let bastidor = $("#frm-psp-aceptado-bastidor").val(); const successCallback = function (data, textStatus, XMLHttpRequest) { $(".modal").modal("hide"); if (data["error_number"] >= 0) { if (btn.attr("id") == "btn-imprimir-presupuesto" || btn.attr("id") == "btn-imprimir-proforma") { let tipo = btn.attr("id") == "btn-imprimir-presupuesto" ? 1 : 2; if (tipo == 2 && data["datosSinEnviar"] === true) { ClassBlockUI.abrirBlockUIEstandarMensaje(("Para poder descargar la Proforma el cliente debe tener todos los datos rellenados, haz click aquí para ir al perfil del cliente, una vez rellenado debe volver a cargar el cliente.").replace("%1%", $("#frm-presupuesto-cliente-id").val()), true, undefined); } else { window.location = "descargarPresupuesto.php?id=" + data["id"] + "&tipo="+tipo; } } else if (btn.attr("id") == "btn-enviar-presupuesto") { //Aqui no muestro mensaje de guardado OK $("#frm-enviar-email-id").val(data["id"]); $("#frm-enviar-email-asunto").val("Presupuesto de Vespa Turia"); $("#frm-enviar-email-descripcion").val("Ha sido adjuntado un documento PDF con el presupuesto de Vespa Turia."); ClassBlockUI.abrirBlockUIEstandar("bloqueEnviarEmail", undefined, "Datos del email", "modal500"); //enviarPresupuesto(data["id"]); } else { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, "https://gestion.vespaturia.es/presupuestos.html"); } } else { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, undefined); } }; Utils.sendStandardAjax( "frm-presupuesto", "ajax/Presupuesto.guardar.php?meses-financiacion=" + mes + "&bastidor=" + bastidor + "&agente=" + agenteId, { extraErroresForm: extraErroresForm, successCallback: successCallback, prepareFormData: function () { let formData = new FormData($("#frm-presupuesto")[0]); let formDataDocs = new FormData($("#form-presupuesto-documentos")[0]); for (var pair of formDataDocs.entries()) { formData.append(pair[0], pair[1]); } return formData; }, } ); }); $("#bloqueEnviarEmail").on("click", "#btn-enviar-datos-email", enviarPresupuesto); function enviarPresupuesto() { const successCallback = function (data, textStatus, XMLHttpRequest) { if (data["error_number"] >= 0) { $(".modal").modal("hide"); } ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, undefined); }; Utils.sendStandardAjax("frm-enviar-email", "ajax/Presupuesto.enviar.php", {successCallback: successCallback}); } function cargarOpciones(input, selectedValue = undefined) { const tipoMoto = $("#tabs-tipo a.active").attr("data-tipomoto") || -1; $("#frm-presupuesto-moto").val(-1); $(".extra-dato-moto").prop("readonly", true).val(""); $("#frm-presupuesto-moto-precio").val(""); $("#frm-presupuesto-ocasion").val("").data("item", null); if (input != undefined) $("#bloque-importe-presupuesto").removeClass("open"); $.ajax( { type: "POST", dataType:"json", url:"ajax/Moto.cargarOpciones.php?CSRF="+CSRF, data: { tipoMoto: tipoMoto, tipo: campoTipo.val(), marca: campoMarca.val(), cilindrada: campoCilindrada.val(), modelo: campoModelo.val(), version: campoVersion.val(), color: campoColor.val(), }, success: function(data, textStatus, XMLHttpRequest) { if (data["error_number"] < 0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, undefined); } else { $("#frm-presupuesto-tipo-nueva-ocasion").val(1); motoSeleccionada(data); if (data["mesesFinanciacion"] != undefined) { $("#bloque-intereses").removeClass("d-none"); Web.intereses = data["mesesFinanciacion"]; let campoMeses = $("#frm-presupuesto-plazo-meses"); let valorMes = campoMeses.val(); eliminarOpcionesSelect(campoMeses); campoMeses.append(""); $.each(Web.intereses, function(i, e) { campoMeses.append(""); }); campoMeses.val(valorMes); campoMeses.selectpicker("refresh"); rellenaFinanciacion(); } if (input != undefined) { $.each(data["opciones"], function (id, opc) { input.append(""); }); if (selectedValue !== undefined) { input.val(selectedValue); if (data["moto"] == undefined && input.attr("id") == "frm-presupuesto-color") cargarOpciones(); } input.selectpicker("refresh"); if (data["cilindradas"] != undefined) { $.each(data["cilindradas"], function (id, opc) { campoCilindrada.append(""); }); campoCilindrada.selectpicker("refresh"); } } } } }); } function motoSeleccionada(data, primeraVez) { if (data == undefined) return; if (primeraVez == undefined) primeraVez = false; if (data["moto"] != undefined) { $(".extra-dato-moto").prop("readonly", false); let moto = data["moto"]; $("#frm-presupuesto-moto").val(moto.id); $("#frm-presupuesto-moto-precio").attr("data-precio", moto.precio); //Si no ha cambiado el IVA actualizamos if ($("#frm-presupuesto-moto-iva").prop("readonly") && !primeraVez) $("#frm-presupuesto-moto-iva").val(moto.porcentajeIVA); //Si no ha cambiado el IMPUESTO actualizamos if ($("#frm-presupuesto-moto-impuesto").prop("readonly")) $("#frm-presupuesto-moto-impuesto").val(moto.porcentajeMatriculacion); $("#bloque-importe-presupuesto").addClass("open"); calculaPrecios(); } if (data["opcsFinanciacion"] != undefined) { Web.intereses = data["opcsFinanciacion"]; } } function calculaPrecios() { let precioSinIVAMoto = $("#frm-presupuesto-moto-precio").attr("data-precio"); let porcIVAMoto = $("#frm-presupuesto-moto-iva").val()*1; let porcImpuestoMoto = $("#frm-presupuesto-moto-impuesto").val()*1; Web.PVP = 0; Web.PVPDescuento = 0; Web.financiacionMes = 0; //Reviso que este bien if (precioSinIVAMoto != undefined && !isNaN(porcIVAMoto)) { let pvp = precioSinIVAMoto*(1 + porcIVAMoto / 100); let totalIva = pvp - precioSinIVAMoto; let impuestoMatriculacion = precioSinIVAMoto * (porcImpuestoMoto / 100); pvp += impuestoMatriculacion; Web.PVP = round(pvp); $("#frm-presupuesto-moto-precio").val(Utils.number_format(pvp, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})).attr("data-pvp", round(pvp)).attr("data-preciodescuento", 0); //Calculo precio sobre porcDescuento /*let porcDescuento = parseInt(inpPorcDescuento.val()) || 0; if (porcDescuento > 0) { precioSinIVAMoto = precioSinIVAMoto * (1 - porcDescuento / 100); pvp = precioSinIVAMoto*(1 + porcIVAMoto / 100); totalIva = pvp - precioSinIVAMoto; }*/ //Por importe descuento seria mas exacto let importeDescuento = parseFloat(inpImporteDescuento.val()) || 0 if (importeDescuento > 0) { inpFinalDescuento.val(round(Utils.number_format(pvp - importeDescuento, {decimalSeparator: ".", thousandSeparator: ""}))); pvp = pvp - importeDescuento; let precioSinImpuestos = pvp / (1 + ((porcIVAMoto + porcImpuestoMoto) / 100)); inpFinalDescuento.val(round(Utils.number_format(pvp, {decimalSeparator: ".", thousandSeparator: ""}))); $("#frm-presupuesto-moto-precio").attr("data-preciodescuento", precioSinImpuestos); Web.PVPDescuento = round(pvp); } rellenaFinanciacion(); } } function rellenaFinanciacion() { $("#bloque-intereses").removeClass("d-none"); let pvpDescuento = Web.PVPDescuento ? Web.PVPDescuento : Web.PVP; let sumarAccesorios = $("#frm-presupuesto-anadir-accesorios").is(":checked"); let sumarGestoria = $("#frm-presupuesto-anadir-gestoria").is(":checked"); $(".importe-moto-descuento").text(Utils.number_format(pvpDescuento, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); let PVPAccesorios = 0; let PVPGestoria = 0; let PVPTasacion = $("#frm-presupuesto-tasacion-precio").val()*1 || 0; if (sumarAccesorios) { $.each(Web.importeAccesorios, function (i, e) { PVPAccesorios += e.pvp; }); } $(".importe-accesorios-impuestos").text(Utils.number_format(PVPAccesorios, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); if (sumarGestoria) PVPGestoria = $("#frm-presupuesto-gestoria-precio").val()*1 || 0; $(".importe-gestoria").text(Utils.number_format(PVPGestoria, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); let importeTotal = pvpDescuento+PVPAccesorios+PVPGestoria; $(".importe-total").text(Utils.number_format(importeTotal, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); $(".importe-tasacion").text(Utils.number_format(PVPTasacion*-1, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); let entrada = $("#frm-presupuesto-entrada").val()*1 || 0; let importeFinanciar = importeTotal-entrada-PVPTasacion; $(".importe-financiar").text(Utils.number_format(importeFinanciar, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); //FINANCIACION POR MES let mes = $("#frm-presupuesto-plazo-meses").val(); if (mes == undefined || mes == '') mes = $("#frm-presupuesto-plazo-meses option").last().attr('value'); let financiacion = round(importeFinanciar * Web.intereses[mes]); Web.financiacionMes = financiacion; $(".resumen-financiacion-precio span").text(Utils.number_format(financiacion, {decimalSeparator: ",", thousandSeparator: "."})); $(".item-resumen-entrada").text(Utils.number_format(entrada, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); $(".item-resumen-plazo-meses").text(mes+" meses"); if (mes == -1) { $(".resumen-financiacion, .item-resumen-financiacion").addClass("d-none"); } else { $(".resumen-financiacion, .item-resumen-financiacion").removeClass("d-none"); } rellenaResumenPresupuesto(); } function rellenaResumenPresupuesto() { let PVP = Web.PVP; let PVPDescuento = Web.PVPDescuento; let ivas = {}; let porcentajeIVAMoto = $("#frm-presupuesto-moto-iva").val() * 1; let PVPSinIVANiDescuento = $("#frm-presupuesto-moto-precio").attr("data-precio") * 1; let PVPSinIVA = PVPSinIVANiDescuento; $(".item-resumen-pvp").text(Utils.number_format(PVPSinIVA, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); if (PVPDescuento > 0) { PVPSinIVA = $("#frm-presupuesto-moto-precio").attr("data-preciodescuento") * 1; let importeDescuentoSinIVA = PVPSinIVANiDescuento - PVPSinIVA; $(".item-resumen-presupuesto-descuento").removeClass("d-none"); $(".item-resumen-descuento").text(Utils.number_format(importeDescuentoSinIVA*-1, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); $(".item-resumen-total-descuento").text(Utils.number_format(PVPSinIVA, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); //PVP = PVPDescuento; } else { $(".item-resumen-presupuesto-descuento").addClass("d-none"); } let IVAMoto = round(PVPSinIVA * (porcentajeIVAMoto / 100)); PVP = PVPSinIVA + IVAMoto; if (ivas[porcentajeIVAMoto] == undefined) ivas[porcentajeIVAMoto] = 0; ivas[porcentajeIVAMoto] += IVAMoto; let PVPTodosAccesorios = 0; let precioAccesorios = 0; let precioOtros = 0; $.each(Web.importeAccesorios, function (i, e) { if (ivas[i] == undefined) ivas[i] = 0; precioAccesorios += e.precio; PVPTodosAccesorios += e.pvp; ivas[i] += e.iva; }); $.each(Web.otrosAccesorios, function (i, e) { if (ivas[i] == undefined) ivas[i] = 0; precioOtros += e.precio; PVPTodosAccesorios += e.pvp; ivas[i] += e.iva; }); $(".item-resumen-accesorios").text(Utils.number_format(precioAccesorios, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); $(".item-resumen-otros").text(Utils.number_format(precioOtros, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); $(".item-resumen-presupuesto-ivas > div").remove(); $.each(ivas, function (i, e) { $(".item-resumen-presupuesto-ivas").append("
    IVA "+i+"%:"+Utils.number_format(e, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})+"
    "); }); let porcentajeMatriculacion = $("#frm-presupuesto-moto-impuesto").val()*1 || 0; let impuestoMatriculacion = PVPSinIVA * (porcentajeMatriculacion / 100); $(".item-resumen-matriculacion").text(Utils.number_format(impuestoMatriculacion, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); let gestoria = $("#frm-presupuesto-gestoria-precio").val()*1 || 0; $(".item-resumen-gestoria").text(Utils.number_format(gestoria, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); $(".item-resumen-total").text(Utils.number_format(PVP + PVPTodosAccesorios + impuestoMatriculacion + gestoria, {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); $(".item-resumen-tasacion").text(Utils.number_format(-1*($("#frm-presupuesto-tasacion-precio").val()*1 || 0), {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); $(".item-resumen-seguro").text(Utils.number_format(($("#frm-presupuesto-seguro-precio").val()*1 || 0), {decimalSeparator: ",", thousandSeparator: ".", symbol: "€"})); } function validaInpNumero(inp, defecto) { inp.val(inp.val().replace(",", ".")); let valor = inp.val(); if (isNaN(valor)) inp.val(defecto); } function round(num) { return Math.round(num * 100) / 100; } function eliminarOpcionesSelect(input) { Web.eliminarOpcionesSelect(input); } } static eliminarOpcionesSelect(input) { input.children("option:not(.disabled)").remove(); input.val(0); input.selectpicker("refresh"); } static initAgenda() { Web.FC_RESERVAR = 1; Web.FC_EDITAR = 2; Web.FC_NUEVA = 3; Web.FC_AGENDA = 4; Web.FC_CITA_RECURRENTE = 5; $(document).ready(function() { Web.resourceData = []; Web.visibleResourceIds = []; $(".item-usuario-filtro input").each(function () { Web.resourceData.push({ id: $(this).attr("data-id"), title: $(this).attr("data-usuario"), "eventClassNames":$(this).attr("data-color")+" active showOnAgenda" }); Web.visibleResourceIds.push($(this).attr("data-id")); $(this).change(function () { $(this).toggleClass("active"); toggleResource($(this).attr("data-id")); }); }); Web.fullCalendar = new FullCalendar.Calendar($("#calendar")[0], { //timeZone: "America/New_York", timeZone: "Europe/Madrid", schedulerLicenseKey: "0221401364-fcs-1627045855", headerToolbar: { left: 'prev,next today', center: 'title', right: "dayGridMonth timeGridWeek timeGridDay", }, views: { resourceTimeGridDay: { // name of view titleFormat: {year: 'numeric', month: 'long', day: 'numeric', weekday: 'long'} } }, dayMaxEvents: 3, //dayPopoverFormat: {month: 'long', day: 'numeric', year: 'numeric'}, locale: 'es', allDaySlot: false, initialDate: new Date().toISOString(), initialView: 'dayGridMonth', nowIndicator: true, eventSources: [ { url: "ajax/Usuarios.agenda.php", method: 'POST', extraParams: { "CSRF": CSRF, }, failure: function () { ClassBlockUI.abrirBlockUIEstandarMensaje("", true); }, success: function (content, xhr) { let currentUnixtime = new Date().getTime() / 1000; return content.eventArray; } }, ], eventTimeFormat: { // like '14:30:00' hour: '2-digit', minute: '2-digit', //omitZeroMinute: true, //second: '2-digit', meridiem: false }, resources: function (fetchInfo, successCallback, failureCallback) { // Filter resources by whether their id is in visibleResourceIds. var filteredResources = []; if (Web.resourceData) { filteredResources = Web.resourceData.filter(function (x) { return Web.visibleResourceIds.indexOf(x.id) !== -1; }); } successCallback(filteredResources); }, editable: false, selectable: true, loading: function (bool) { if (bool) { $(".loadingText").remove(); } }, selectConstraint: "businessHours", eventConstraint: "businessHours", eventOrder: 'numOrder,start', dateClick: function (info) { Web.lastDateSelected = moment(info.dateStr); $("#btn-anadir").attr("href", $("#btn-anadir").attr("data-url")+"?fecha="+Web.lastDateSelected.format("DD/MM/YYYY")); }, //eventMouseEnter eventClick: function (info) { let infoCalendar = $('.infoCalendar'); if (infoCalendar.length !== 1) { return; } let event = info.event; let jsEvent = info.jsEvent; let view = info.view; // let parent = $(jsEvent.target).closest(view.type === "dayGridMonth" ? '.fc-daygrid-event' : '.fc-timegrid-event'); //let parent = $(jsEvent.target).closest('.fc-timegrid-event'); if (!parent.hasClass("tooltipstered")) { let colorClass = $(".form-check-input[data-id=" + event.extendedProps.idUsuario + "]").attr("data-color"); colorClass = colorClass !== undefined ? colorClass : "ownAgenda"; //let childToolTipstered = null; let content = $("
    "); var extraClass = ""; content.addClass("infoCalendarOnToolTipster " + extraClass); content.append( infoCalendar.html() .replace("%colorClass%", colorClass + " active") .replace("%0%", !event.extendedProps.esEditable ? "d-none" : "") .replace("%1%", ""+event.extendedProps.usuario+"
    "+event.extendedProps.descripcion) .replace("%2%", event.extendedProps.fecha) .replace("%3%", ""+event.extendedProps.cliente+"") .replace("%4%", "editar-evento.html?id="+event.extendedProps.idEvento) ); content.data("event", event); parent.tooltipster({ autoClose: false, hideOnClick: false, contentAsHTML: true, trigger: "custom", content: content, minWidth: 325, maxWidth: 325, theme: "infoCalendarToolTipster", interactive: true, functionReady: function (instance, helper) { $(helper.tooltip).find(".btnCalendarButtonClose").unbind("click").bind("click", function () { parent.tooltipster("hide"); //instance.close(); }); $(helper.tooltip).data("instance", instance); $(".infoCalendarOnToolTipster .tooltipOver").tooltipster({ multiple: true, animation: 'grow', interactive: true, position: 'bottom' }); }, functionBefore: function (origin, continueTooltip) { $.each($.tooltipster.instances(), function (i, instance) { instance.close(); }); }/*, functionAfter: function(origin) { }*/ }); } parent.tooltipster("show"); }, height: "100%" }); Web.fullCalendar.render(); function toggleResource(resourceId) { var index = Web.visibleResourceIds.indexOf(resourceId); if (index !== -1) { Web.visibleResourceIds.splice(index, 1); } else { Web.visibleResourceIds.push(resourceId); } Web.fullCalendar.refetchResources(); } }); } static refrescaTabla(idTabla) { $(".tooltipStandard").not(".tooltipstered").tooltipster({animation: 'grow',interactive:true, position:'bottom', contentAsHTML: true}); $(".inputIconLupa, .inputMostrar, #filtros").removeClass("d-none"); $(".form-control").removeClass().addClass("form-control-b"); var numItems = 0; let tabla = eval("tabla"+idTabla); if (typeof tabla != "undefined") { numItems = tabla.page.info().recordsDisplay; } else if ($.fn.dataTable.isDataTable( '#'+idTabla )) { tabla = $('#'+idTabla).DataTable(); numItems = tabla.page.info().recordsDisplay; } let itemsMostrando = $("#"+idTabla+"_length select").length > 0 ? $("#"+idTabla+"_length select").val() : 10; if (numItems > itemsMostrando) { $("#"+idTabla+"_wrapper .pagination-footer").removeClass("opacity-0"); } else { $("#"+idTabla+"_wrapper .pagination-footer").addClass("opacity-0"); } //Formato movil const numColumnaMv = 1; const numColumnas = tabla.columns()[0].length; if ($("#"+idTabla).hasClass("tablaMovil")) { const w = $(window).outerWidth(); if (w <= 767) //Ocultar { for(let i = 0; i < numColumnas; i++) { tabla.column(i).visible((numColumnaMv == i ? true : false)); } } else //Mostrar { for(let i = 0; i < numColumnas; i++) { let txt = $(tabla.columns(i).header()).text(); tabla.column(i).visible((txt == "oculto" || numColumnaMv == i ? false : true)); } } } } static notify(msg, error = false) { const type = error ? "danger" : "success"; console.log(type); $.notify({ message: msg, }, { type: type, placement: { from: "bottom", align: "right" }, delay: 2000 }); } } $(document).ready(function () { $(".editar-campo").click(function() { let element = $(this).parent().next(); element.prop("readonly", false); if (element.hasClass("bootstrap-select")) { let select = element.find("select"); select.prop("disabled", false); select.selectpicker('refresh'); } }); if ($.fn.dataTable != undefined) { $.fn.dataTable.ext.errMode = function (settings, helpPage, message) { $.notify( { title: "Error: ", message: "Se ha producido un error inesperado", }, { type: 'danger', placement: { from: "top", align: "center" }, delay: 10000 }); }; $.extend($.fn.dataTable.defaults, { "language": { "sProcessing": "Procesando...", "sLengthMenu": "Filas por página: _MENU_", "sZeroRecords": "No se han encontrado resultados", "sEmptyTable": "Sin datos todavía", "sInfo": "_START_-_END_ de _TOTAL_", "sInfoEmpty": "Todavía no hay datos", "sInfoFiltered": "()", "sSearchPlaceholder": "Buscar", "sInfoPostFix": "", "sSearch": "", "sUrl": "", "oPaginate": { "sFirst": " ", "sPrevious": " ", "sNext": " ", "sLast": " " } } }); } }); /* ClassBlockUI.abrirBlockUIEstandar(contenedorIDAMostrar[, accionCerrar, headerText, extraClass, restaurarElemento]); ClassBlockUI.abrirBlockUIEstandarMensaje(mensaje[, isAlertOrButtons, onClose]); ClassBlockUI.abrirBlockUIConfirm(mensaje, textoBotonAceptar, accionBotonAceptar, textoBotonCancelar[, accionBotonCancelar]); //accionBotonCancelar="close" ClassBlockUI.abrirBlockUIEsperePorFavor:([mensaje]); */ var ClassBlockUI = { restaurarElemento: function() { var data = $("body").data('blockUIEstandar.history'); if (data) { data.el.style.display = data.display; data.el.style.position = data.position; if (data.parent) data.parent.appendChild(data.el); $("body").removeData('blockUIEstandar.history'); $("#"+data.generatedId).remove(); } }, abrirBlockUIEstandar: function(contenedorIDAMostrar, accionCerrar, headerText, extraClass, restaurarElemento) { if(restaurarElemento || restaurarElemento == undefined) { ClassBlockUI.restaurarElemento(); } $(".modalAutoHide").modal("hide"); if($(".modal").length>0){$("body").addClass("modal-open")} if(contenedorIDAMostrar == undefined || $("#"+contenedorIDAMostrar).length == 0){return;} //var blockUIId="blockUI_"+new Date().getTime(); var blockUIId="blockUI_"+contenedorIDAMostrar; extraClass = extraClass == undefined ? "" : extraClass; //modal-lg var object = $("#"+contenedorIDAMostrar); var node = object[0]; var data = {}; $("body").data('blockUIEstandar.history', data); data.el = node; data.parent = node.parentNode; data.display = node.style.display; data.position = node.style.position; data.generatedId = blockUIId; data.object = object; if (data.parent) data.parent.removeChild(node); var header = headerText != undefined ? headerText : ""; var message = ''+ ''; $("body").append(message); var modal = $("#"+blockUIId); modal.find(".modal-body").append(node); modal.find(".modal-dialog").addClass("jackInTheBox"); modal.on('hidden.bs.modal', function () { ClassBlockUI.restaurarElemento(); }) var myModal = new bootstrap.Modal($(modal)[0], { keyboard: false }) myModal.show(); if(accionCerrar==undefined) //boton cerrar tiene accion por defecto { $("#"+blockUIId+" .btnCerrarModalEquis").click(function(){ myModal.hide(); if($(".modal").length>0){$("body").addClass("modal-open")} }); } else if(accionCerrar==false) //oculta el boton cerrar { $("#"+blockUIId+" .btnCerrarModalEquis").hide(); } else //boton cerrar con accion especial { $("#"+blockUIId+" .btnCerrarModalEquis").click(accionCerrar); } return modal; }, abrirBlockUIEstandarMensaje: function(mensaje, isAlertOrButtons, onClose, extraClass, title) { $(".modalAutoHide").modal("hide"); if($(".modal").length>0){$("body").addClass("modal-open")} var blockUIId="blockUI_"+new Date().getTime(); extraClass = extraClass == null || extraClass == undefined ? "" : extraClass; //modal-lg title = title == null || title == undefined ? "Aviso" : title; if(isAlertOrButtons==undefined) isAlertOrButtons=false; if(onClose==undefined) onClose=false; var botonera = ""; var botoneraEspecial = false; if(isAlertOrButtons === false) { botonera = ""; } else if (isAlertOrButtons === true) { botonera = "
    Aceptar
    "; } else { botoneraEspecial = true; botonera = "
    "; for(var index in isAlertOrButtons) { botonera += " "+isAlertOrButtons[index]["text"]+" "; } botonera += "
    "; } var message = ''; message += ''; $("body").append(message); var modal = $("#"+blockUIId); modal.find(".modal-dialog").css("animation-duration", "500ms").addClass("zoomIn"); modal.on('hidden.bs.modal', function () { modal.remove(); }) var myModal = new bootstrap.Modal($(modal)[0], { keyboard: false }); myModal.show(); //Acciones de los botones especiales if(botoneraEspecial) { for(var index in isAlertOrButtons) { if(isAlertOrButtons[index]["action"] == "close") { isAlertOrButtons[index]["action"] = function(){ myModal.hide(); if($(".modal").length>0){$("body").addClass("modal-open")} }; } $("#"+blockUIId+" ."+index).unbind("click").click(isAlertOrButtons[index]["action"]); } } var fnOnClose; if(onClose==false) { fnOnClose = function(){ myModal.hide(); if($(".modal").length>0){$("body").addClass("modal-open")} }; } else if (typeof onClose === "function") { fnOnClose = function(){onClose()}; } else if (onClose == "location") { fnOnClose = function(){window.location.reload()}; } else if (onClose == "back") { fnOnClose = function(){history.go(-1);}; } else { fnOnClose = function(){window.location = onClose}; } $("#"+blockUIId+" .btnCerrarBlockUIAlert, #"+blockUIId+" .btnCerrarModalEquis").unbind("click").click(fnOnClose); return modal; }, abrirBlockUIConfirm: function(mensaje, textoAceptar, accionAceptar, textoCancelar, accionCancelar, extraClass, title) { accionCancelar = accionCancelar == undefined ? "close" : accionCancelar; extraClass = extraClass == null || extraClass == undefined ? "" : extraClass; var buttons = { "btnAceptarBUI_CONFIRM": { "text": textoAceptar, "action": accionAceptar }, "btnCancelarBUI_CONFIRM": { "text": textoCancelar, "action": accionCancelar } }; return ClassBlockUI.abrirBlockUIEstandarMensaje(mensaje, buttons, false, extraClass, title); }, abrirBlockUIEsperePorFavor: function(mensaje) { if(mensaje == undefined){ mensaje = "
    Espere por favor...
    "; }; return ClassBlockUI.abrirBlockUIEstandarMensaje(mensaje, undefined, false, "modalEspere"); } }; var ClassUsuarios = { guardaClaveOlvidoPass: function () { var opciones_validacion= { showLabels: false, rules: { passwordOlvido: { required: true, minlength: 6 }, password2: { equalTo: "#passwordOlvido" } } }; Utils.sendStandardAjax("form_olvido", "ajax/Usuarios.guardaClave.php?CSRF="+CSRF, {opcionesValidacion: opciones_validacion, successCallback: "https://gestion.vespaturia.es/acceder.html"}); }, enviarOlvido: function() { Utils.sendStandardAjax("frmEnviarOlvido", "ajax/Usuarios.olvidarContrasena.php", {successCallback: null, resetFormOnSuccess: true}); }, initAcceso: function() { let validacionLogin; $(document).ready(function() { $("#btnAcceder").click(login); $("#emailLogin").pressEnter(login); $("#passwordLogin").pressEnter(login); const opciones_validacion_login = {showLabels: false}; validacionLogin = $("#frmLogin").validate(opciones_validacion_login); }); function login() { var validation = $("#frmLogin").valid(); if(!validation) { ClassBlockUI.abrirBlockUIEstandarMensaje("Por favor revise los campos marcados en distinto color porque se han detectado lo siguientes errores

    "+validacionLogin.invalidMessages("
    "), true, undefined, ""); return; } var opcionesDatos = { type:"POST", dataType:"json", url:"ajax/Usuarios.login.php", data: $("#frmLogin").serialize(), success: function(data, textStatus, XMLHttpRequest) { //Registro a mitad if(data["error_number"]>=0) { window.location = data["urlOnLogin"].replace(/&/,"&"); } //Login error else { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, undefined, ""); $("#passwordLogin").val(""); } } }; ClassBlockUI.abrirBlockUIEsperePorFavor(); $.ajax(opcionesDatos); } }, initListado: function() { $(document).ready(function () { $("#btn-anadir").click(function () { $("#frm-usuario")[0].reset(); $("#frm-usuario-id").val(-1); $("#bloque-usuario .bloque-flotante-header").text("Añadir Usuario"); $("#btn-guardar-usuario").text("Añadir"); $("#frm-usuario-contrasena, #frm-usuario-contrasena2").addClass("required"); }); $("body").on("click", ".editar-usuario", function(e) { e.preventDefault(); $("#frm-usuario")[0].reset(); $("#bloque-usuario .bloque-flotante-header").text("Editar Usuario"); $("#btn-guardar-usuario").text("Editar"); let datos = JSON.parse($(this).attr("data-datos")); $("#frm-usuario-id").val(datos.id); $("#frm-usuario-nombre").val(datos.nombre); $("#frm-usuario-email").val(datos.email); $("#frm-usuario-telefono").val(datos.telefono); $("#frm-usuario-rol").val(datos.rol); $("#frm-usuario-rol").selectpicker('refresh'); $("#frm-usuario-contrasena, #frm-usuario-contrasena2").removeClass("required"); Web.abreBloque("bloque-usuario"); }); $("#btn-guardar-usuario").click(function () { let opciones_validacion = { showLabels: false, rules: { "frm-usuario-contrasena": { minlength: 6 }, "frm-usuario-contrasena2": { equalTo: "#frm-usuario-contrasena" } } }; const successCallback = function (data, textStatus, XMLHttpRequest) { $(".modal").modal("hide"); ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, undefined); if (data["error_number"] >= 0) { Web.cerrarBloque("bloque-usuario"); tablatablaUsuarios.ajax.reload(); } }; Utils.sendStandardAjax("frm-usuario", "ajax/Usuarios.modificar.php?CSRF="+CSRF, {opcionesValidacion: opciones_validacion, successCallback: successCallback}); }); }); }, };