Guardar en db
This commit is contained in:
+87
-73
@@ -1,17 +1,15 @@
|
||||
//// PASAR DE UN BOTON A OTRO BOTON
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const menuButtons = document.querySelectorAll('.menu-btn');
|
||||
const sections = document.querySelectorAll('.section');
|
||||
const sectionTitle = document.getElementById('section-title');
|
||||
|
||||
const titles = {
|
||||
seguimiento: 'Seguimiento',
|
||||
trabajadores: 'Trabajadores',
|
||||
nominas: 'Nóminas',
|
||||
liquidaciones: 'Liquidaciones',
|
||||
configuraciones: 'Configuraciones',
|
||||
licencia: 'Licencia',
|
||||
historial: 'Historial'
|
||||
historial: 'Historial',
|
||||
licencia: 'Licencia'
|
||||
};
|
||||
|
||||
menuButtons.forEach(button => {
|
||||
@@ -28,8 +26,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
});
|
||||
});
|
||||
|
||||
//// MODULO DE TRABAJADORES
|
||||
const trabajadores = [];
|
||||
let trabajadores = [];
|
||||
let editandoId = null;
|
||||
|
||||
const modalTrabajador = document.getElementById('modal-trabajador');
|
||||
@@ -42,27 +39,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
const chkSmv = document.getElementById('chk-smv');
|
||||
const inputSalario = document.getElementById('trabajador-salario');
|
||||
|
||||
let configuracionGlobal = {
|
||||
id: null,
|
||||
nombre_empresa: '',
|
||||
salario_minimo: '',
|
||||
auxilio_transporte: '',
|
||||
horas_semanales: '',
|
||||
horas_mensuales: '',
|
||||
dia_inicio_mes: '',
|
||||
dia_fin_mes: '',
|
||||
tiempo_almuerzo: '',
|
||||
valor_hora_ordinaria: '',
|
||||
valor_hora_extra: '',
|
||||
valor_hora_extra_nocturna: ''
|
||||
};
|
||||
|
||||
function formatearPesos(valor) {
|
||||
const partes = Number(valor).toFixed(2).split('.');
|
||||
const entera = partes[0].replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
||||
const decimal = ',' + partes[1];
|
||||
return entera + decimal;
|
||||
}
|
||||
let configuracionGlobal = {};
|
||||
|
||||
function formatearPesosSinDecimales(valor) {
|
||||
const numero = Number(valor);
|
||||
@@ -100,7 +77,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
<td>${t.id}</td>
|
||||
<td>${t.nombre} ${t.apellidos}</td>
|
||||
<td>${t.puesto || '-'}</td>
|
||||
<td>${t.salario_mensual ? formatearPesos(Number(t.salario_mensual)) : '-'}</td>
|
||||
<td>${t.salario_mensual ? formatearPesosSinDecimales(Number(t.salario_mensual)) : '-'}</td>
|
||||
<td>
|
||||
<span class="badge ${t.activo == 1 ? 'badge-active' : 'badge-inactive'}">
|
||||
${t.activo == 1 ? 'Activo' : 'Inactivo'}
|
||||
@@ -119,7 +96,17 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
});
|
||||
}
|
||||
|
||||
function guardarTrabajador(e) {
|
||||
async function cargarTrabajadores() {
|
||||
try {
|
||||
const resp = await fetch(`${API_URL}/trabajadores`);
|
||||
trabajadores = await resp.json();
|
||||
renderTabla();
|
||||
} catch (err) {
|
||||
console.error('Error cargando trabajadores:', err);
|
||||
}
|
||||
}
|
||||
|
||||
async function guardarTrabajador(e) {
|
||||
e.preventDefault();
|
||||
|
||||
const datos = {
|
||||
@@ -133,22 +120,37 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
activo: document.getElementById('trabajador-activo').value
|
||||
};
|
||||
|
||||
if (editandoId !== null) {
|
||||
const index = trabajadores.findIndex(t => t.id === editandoId);
|
||||
if (index !== -1) {
|
||||
trabajadores[index] = { ...datos, idOriginal: editandoId };
|
||||
try {
|
||||
if (editandoId !== null) {
|
||||
await fetch(`${API_URL}/trabajadores/${editandoId}`, {
|
||||
method: 'PUT',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(datos)
|
||||
});
|
||||
} else {
|
||||
await fetch(`${API_URL}/trabajadores`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(datos)
|
||||
});
|
||||
}
|
||||
} else {
|
||||
const existe = trabajadores.some(t => t.id === datos.id);
|
||||
if (existe) {
|
||||
alert('Ya existe un trabajador con ese documento de identidad.');
|
||||
return;
|
||||
}
|
||||
trabajadores.push(datos);
|
||||
cerrarModal();
|
||||
await cargarTrabajadores();
|
||||
} catch (err) {
|
||||
alert('Error al guardar trabajador');
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
cerrarModal();
|
||||
renderTabla();
|
||||
async function eliminarTrabajador(id) {
|
||||
if (!confirm('¿Estás seguro de eliminar este trabajador?')) return;
|
||||
try {
|
||||
await fetch(`${API_URL}/trabajadores/${id}`, { method: 'DELETE' });
|
||||
await cargarTrabajadores();
|
||||
} catch (err) {
|
||||
alert('Error al eliminar trabajador');
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
function cargarEdicion(id) {
|
||||
@@ -166,16 +168,10 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
document.getElementById('trabajador-seguridad').value = t.seguridad_social;
|
||||
document.getElementById('trabajador-activo').value = t.activo;
|
||||
|
||||
abrirModal('editar');
|
||||
}
|
||||
if (chkSmv) chkSmv.checked = false;
|
||||
if (inputSalario) inputSalario.disabled = false;
|
||||
|
||||
function eliminarTrabajador(id) {
|
||||
if (!confirm('¿Estás seguro de eliminar este trabajador?')) return;
|
||||
const index = trabajadores.findIndex(t => t.id === id);
|
||||
if (index !== -1) {
|
||||
trabajadores.splice(index, 1);
|
||||
renderTabla();
|
||||
}
|
||||
abrirModal('editar');
|
||||
}
|
||||
|
||||
btnNuevoTrabajador.addEventListener('click', () => abrirModal('nuevo'));
|
||||
@@ -200,11 +196,10 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
});
|
||||
}
|
||||
|
||||
renderTabla();
|
||||
cargarTrabajadores();
|
||||
|
||||
// --- Módulo de Configuraciones ---
|
||||
const formConfiguraciones = document.getElementById('form-configuraciones');
|
||||
const btnGuardarConfiguraciones = document.getElementById('btn-guardar-configuraciones');
|
||||
const cfgMensaje = document.getElementById('cfg-mensaje');
|
||||
|
||||
const camposPesosSinDecimales = [
|
||||
@@ -215,9 +210,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
const inputHorasSemanales = document.getElementById('cfg-horas-semanales');
|
||||
const inputHorasMensuales = document.getElementById('cfg-horas-mensuales');
|
||||
const inputDiaInicio = document.getElementById('cfg-dia-inicio');
|
||||
const inputDiaFin = document.getElementById('cfg-dia-fin');
|
||||
const inputTiempoAlmuerzo = document.getElementById('cfg-tiempo-almuerzo');
|
||||
|
||||
const inputHoraOrdinaria = document.getElementById('cfg-hora-ordinaria');
|
||||
const inputHoraExtra = document.getElementById('cfg-hora-extra');
|
||||
const inputHoraExtraNocturna = document.getElementById('cfg-hora-extra-nocturna');
|
||||
@@ -245,24 +238,36 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
}
|
||||
}
|
||||
|
||||
async function cargarConfiguracion() {
|
||||
try {
|
||||
const resp = await fetch(`${API_URL}/configuracion`);
|
||||
const data = await resp.json();
|
||||
if (data && Object.keys(data).length > 0) {
|
||||
configuracionGlobal = data;
|
||||
cargarConfiguracionEnFormulario();
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Error cargando configuración:', err);
|
||||
}
|
||||
}
|
||||
|
||||
function cargarConfiguracionEnFormulario() {
|
||||
document.getElementById('cfg-nombre-empresa').value = configuracionGlobal.nombre_empresa;
|
||||
document.getElementById('cfg-nombre-empresa').value = configuracionGlobal.nombre_empresa || '';
|
||||
document.getElementById('cfg-salario-minimo').value = configuracionGlobal.salario_minimo ? formatearPesosSinDecimales(configuracionGlobal.salario_minimo) : '';
|
||||
document.getElementById('cfg-auxilio-transporte').value = configuracionGlobal.auxilio_transporte ? formatearPesosSinDecimales(configuracionGlobal.auxilio_transporte) : '';
|
||||
document.getElementById('cfg-horas-semanales').value = configuracionGlobal.horas_semanales;
|
||||
document.getElementById('cfg-horas-mensuales').value = configuracionGlobal.horas_mensuales;
|
||||
document.getElementById('cfg-dia-inicio').value = configuracionGlobal.dia_inicio_mes;
|
||||
document.getElementById('cfg-dia-fin').value = configuracionGlobal.dia_fin_mes;
|
||||
document.getElementById('cfg-tiempo-almuerzo').value = configuracionGlobal.tiempo_almuerzo;
|
||||
document.getElementById('cfg-horas-semanales').value = configuracionGlobal.horas_semanales || '';
|
||||
document.getElementById('cfg-horas-mensuales').value = configuracionGlobal.horas_mensuales || '';
|
||||
document.getElementById('cfg-dia-inicio').value = configuracionGlobal.dia_inicio_mes || '';
|
||||
document.getElementById('cfg-dia-fin').value = configuracionGlobal.dia_fin_mes || '';
|
||||
document.getElementById('cfg-tiempo-almuerzo').value = configuracionGlobal.tiempo_almuerzo || '';
|
||||
document.getElementById('cfg-hora-ordinaria').value = configuracionGlobal.valor_hora_ordinaria ? formatearPesosSinDecimales(configuracionGlobal.valor_hora_ordinaria) : '';
|
||||
calcularCamposDependientes();
|
||||
}
|
||||
|
||||
function guardarConfiguracion(e) {
|
||||
async function guardarConfiguracion(e) {
|
||||
e.preventDefault();
|
||||
|
||||
configuracionGlobal = {
|
||||
id: configuracionGlobal.id || 1,
|
||||
const datos = {
|
||||
nombre_empresa: document.getElementById('cfg-nombre-empresa').value.trim(),
|
||||
salario_minimo: limpiarFormatoPesos(document.getElementById('cfg-salario-minimo').value),
|
||||
auxilio_transporte: limpiarFormatoPesos(document.getElementById('cfg-auxilio-transporte').value),
|
||||
@@ -276,11 +281,20 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
valor_hora_extra_nocturna: limpiarFormatoPesos(document.getElementById('cfg-hora-extra-nocturna').value)
|
||||
};
|
||||
|
||||
cargarConfiguracionEnFormulario();
|
||||
|
||||
if (cfgMensaje) {
|
||||
cfgMensaje.textContent = 'Configuración guardada correctamente.';
|
||||
setTimeout(() => { cfgMensaje.textContent = ''; }, 3000);
|
||||
try {
|
||||
await fetch(`${API_URL}/configuracion`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(datos)
|
||||
});
|
||||
await cargarConfiguracion();
|
||||
if (cfgMensaje) {
|
||||
cfgMensaje.textContent = 'Configuración guardada correctamente.';
|
||||
setTimeout(() => { cfgMensaje.textContent = ''; }, 3000);
|
||||
}
|
||||
} catch (err) {
|
||||
alert('Error al guardar configuración');
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -293,12 +307,12 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
});
|
||||
|
||||
inputHorasSemanales.addEventListener('input', calcularCamposDependientes);
|
||||
inputHoraOrdinaria.addEventListener('blur', function () {
|
||||
aplicarFormatoPesosSinDecimales(this);
|
||||
inputHoraOrdinaria.addEventListener('blur', () => {
|
||||
aplicarFormatoPesosSinDecimales(inputHoraOrdinaria);
|
||||
calcularCamposDependientes();
|
||||
});
|
||||
|
||||
formConfiguraciones.addEventListener('submit', guardarConfiguracion);
|
||||
cargarConfiguracionEnFormulario();
|
||||
cargarConfiguracion();
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user