Nóminas (`payroll/`)
Exportar contenido
Generar Nómina
Sección titulada «Generar Nómina»Ruta: /owner/hr/payroll
Sistema de generación de nóminas con cálculo automático de cotizaciones.
Conceptos Salariales
Sección titulada «Conceptos Salariales»Devengos:
- Salario base
- Complementos salariales
- Horas extras
- Bonus y incentivos
- Plus de transporte
- Plus de comida
- Otros complementos
Deducciones:
- Cotización a la Seguridad Social (empleado)
- Retención IRPF
- Anticipos
- Otras deducciones
Cotizaciones Empresa:
- Cotización SS empresa (separate)
- Formación profesional
- Desempleo
- FOGASA
Generación Manual
Sección titulada «Generación Manual»1. Acceso a módulo de nóminas2. Click en "Nueva Nómina"3. Seleccionar empleado4. Indicar período (mes/año)5. Rellenar conceptos salariales6. Sistema calcula automáticamente: - Cotización SS empleado (típico: 6.35%) - Cotización SS empresa (típico: 30%) - Retención IRPF (según % configurado) - Líquido a percibir7. Revisión de cálculos8. Generar PDF de nómina9. Enviar al empleado10. Marcar como pagadaGeneración Automática (Recurrente)
Sección titulada «Generación Automática (Recurrente)»El sistema permite configurar plantillas de nómina recurrente para empleados con salario fijo.
1. Crear "Plantilla Recurrente"2. Configurar: - Empleado - Conceptos fijos - Periodicidad (mensual, quincenal) - Fecha de generación automática3. Sistema genera automáticamente: - Edge Function ejecutada por CRON - Nómina en estado "borrador" - Notificación a RRHH4. Revisión y aprobación5. Envío al empleadoDetalles Técnicos - Edge Function de Nóminas
Edge Function: generate-recurring-payrolls
Ejecutada diariamente por CRON, genera nóminas de empleados con plantillas recurrentes:
interface RecurringPayroll { id: string; business_id: string; employee_id: string; interval: 'monthly' | 'biweekly' | 'weekly'; next_generation_date: string; gross_salary: number; ss_employee_contribution: number; ss_company_contribution: number; irpf_percentage: number; overtime_pay: number; bonus_pay: number; transport_allowance: number; meal_allowance: number; other_allowances: number; deductions: number;}
// Cálculo automático de líquidoconst irpfWithholding = (gross_salary * irpf_percentage) / 100;const extras = overtime_pay + bonus_pay + transport_allowance + meal_allowance + other_allowances;const netSalary = gross_salary - ss_employee_contribution - irpfWithholding + extras - deductions;Intervalo de Generación:
daily: Cada díaweekly: Cada 7 díasbiweekly: Cada 14 díasmonthly: Cada mes (mismo día)bimonthly: Cada 2 mesesquarterly: Cada 3 mesessemiannual: Cada 6 mesesannual: Cada año
Tablas:
recurring_payrolls- Plantillas configuradaspayrolls- Nóminas generadaspayroll_exports- Historial de exportaciones
Estados de Nómina:
draft- Borrador (editable)approved- Aprobada (lista para pago)paid- Pagada (marcada como pagada)cancelled- Cancelada
Exportar a A3/Sage
Sección titulada «Exportar a A3/Sage»El sistema permite exportar nóminas a formatos compatibles con A3 y Sage.
Edge Function: generate-payroll-export
Formatos Disponibles
Sección titulada «Formatos Disponibles»A3 NÓMINAplus:
- Archivo CSV con estructura específica
- Campos: empleado, conceptos, importes
- Importación directa en A3
Sage Despachos Conectados:
- Formato XML estándar
- Incluye todos los conceptos salariales
- Validación de estructura
Proceso de Exportación
Sección titulada «Proceso de Exportación»1. Seleccionar nóminas a exportar2. Elegir formato (A3 o Sage)3. Sistema genera archivo: - Validación de datos completos - Formato según especificación - Inclusión de metadatos4. Descargar archivo generado5. Importar en software contableDetalles Técnicos
Edge Function: generate-payroll-export
Ejemplo de Estructura A3:
"CIF/NIF","Nombre","Apellidos","SS","Concepto","Importe""12345678Z","Juan","Pérez García","123456789012","SALARIO_BASE","1500.00""12345678Z","Juan","Pérez García","123456789012","SS_EMPLEADO","-95.25""12345678Z","Juan","Pérez García","123456789012","IRPF","-180.00""12345678Z","Juan","Pérez García","123456789012","LIQUIDO","1224.75"Ejemplo de Estructura Sage (XML):
<Nominas> <Nomina> <Empleado> <NIF>12345678Z</NIF> <Nombre>Juan Pérez García</Nombre> <SS>123456789012</SS> </Empleado> <Periodo> <Mes>1</Mes> <Anio>2024</Anio> </Periodo> <Conceptos> <Concepto codigo="001" descripcion="Salario Base">1500.00</Concepto> <Concepto codigo="010" descripcion="SS Empleado">-95.25</Concepto> <Concepto codigo="020" descripcion="IRPF">-180.00</Concepto> </Conceptos> <Liquido>1224.75</Liquido> </Nomina></Nominas>Tabla: payroll_exports
Registro de todas las exportaciones:
CREATE TABLE payroll_exports ( id UUID PRIMARY KEY, business_id UUID NOT NULL, export_format TEXT NOT NULL, -- 'a3' | 'sage' payroll_ids UUID[] NOT NULL, file_url TEXT, created_at TIMESTAMP DEFAULT NOW(), created_by UUID);