PERMS["materiales"] = "Almacén"; PERMS["materiales:edit"] = "> Editar"; PAGES.materiales = { navcss: "btn2", icon: "static/appico/shelf.png", AccessControl: true, Title: "Almacén", edit: function (mid) { if (!checkRole("materiales:edit")) { setUrlHash("materiales"); return; } var nameh1 = safeuuid(); var field_nombre = safeuuid(); var field_revision = safeuuid(); var field_cantidad = safeuuid(); var field_unidad = safeuuid(); var field_cantidad_min = safeuuid(); var field_ubicacion = safeuuid(); var field_notas = safeuuid(); var btn_guardar = safeuuid(); var btn_borrar = safeuuid(); var FECHA_ISO = new Date().toISOString().split("T")[0]; container.innerHTML = `

Material

${BuildQR("materiales," + mid, "Este Material")}

`; DB.get('materiales', mid).then((data) => { function load_data(data, ENC = "") { document.getElementById(nameh1).innerText = mid; document.getElementById(field_nombre).value = data["Nombre"] || ""; document.getElementById(field_unidad).value = data["Unidad"] || "unidad(es)"; document.getElementById(field_cantidad).value = data["Cantidad"] || ""; document.getElementById(field_cantidad_min).value = data["Cantidad_Minima"] || ""; document.getElementById(field_ubicacion).value = data["Ubicacion"] || "-"; document.getElementById(field_revision).value = data["Revision"] || "-"; document.getElementById(field_notas).value = data["Notas"] || ""; } if (typeof data == "string") { TS_decrypt(data, SECRET, (data, wasEncrypted) => { load_data(data, "%E"); }, 'materiales', mid); } else { load_data(data || {}); } }); document.getElementById(btn_guardar).onclick = () => { var data = { Nombre: document.getElementById(field_nombre).value, Unidad: document.getElementById(field_unidad).value, Cantidad: document.getElementById(field_cantidad).value, Cantidad_Minima: document.getElementById(field_cantidad_min).value, Ubicacion: document.getElementById(field_ubicacion).value, Revision: document.getElementById(field_revision).value, Notas: document.getElementById(field_notas).value, }; document.getElementById("actionStatus").style.display = "block"; DB.put('materiales', mid, data).then(() => { toastr.success("Guardado!"); setTimeout(() => { document.getElementById("actionStatus").style.display = "none"; setUrlHash("materiales"); }, SAVE_WAIT); }).catch((e) => { console.warn('DB.put error', e); }); }; document.getElementById(btn_borrar).onclick = () => { if (confirm("¿Quieres borrar este material?") == true) { DB.del('materiales', mid).then(() => { toastr.error("Borrado!"); setTimeout(() => { setUrlHash("materiales"); }, SAVE_WAIT); }); } }; }, index: function () { if (!checkRole("materiales")) { setUrlHash("index"); return; } var btn_new = safeuuid(); var select_ubicacion = safeuuid(); var check_lowstock = safeuuid(); var tableContainer = safeuuid(); container.innerHTML = `

Materiales del Almacén


`; const config = [ { key: "Revision", label: "Ult. Revisión", type: "fecha-diff", default: "" }, { key: "Nombre", label: "Nombre", type: "text", default: "" }, { key: "Ubicacion", label: "Ubicación", type: "text", default: "--" }, { key: "Cantidad", label: "Cantidad", type: "template", template: (data, element) => { const min = parseFloat(data.Cantidad_Minima); const act = parseFloat(data.Cantidad); const sma = act < min ? `- min. ${data.Cantidad_Minima || "?"}` : "" element.innerHTML = `${data.Cantidad || "?"} ${ data.Unidad || "?" } ${sma}`; }, default: "?", }, { key: "Notas", label: "Notas", type: "text", default: "" }, ]; // Obtener todas las ubicaciones únicas y poblar el