const { useState, useMemo, useEffect } = React; window.AdminSubsidios = function({ globalUsers = [], settings = {}, refreshData }) { const [subsidies, setSubsidies] = useState([]); const [showModal, setShowModal] = useState(false); const [userId, setUserId] = useState(''); const [startDate, setStartDate] = useState(window.getNICDate()); const [endDate, setEndDate] = useState(window.getNICDate()); const [diagnosis, setDiagnosis] = useState(''); const [ticketNum, setTicketNum] = useState(''); const [carenciaAction, setCarenciaAction] = useState('vacaciones'); // 'vacaciones', 'con_goce', 'sin_goce' const [isSaving, setIsSaving] = useState(false); const loadSubsidies = async () => { const res = await window.apiCall('get_subsidies', {}); if (res && res.success) setSubsidies(res.subsidies || []); }; useEffect(() => { loadSubsidies(); }, []); const totalDays = useMemo(() => { return window.getDaysDiff(startDate, endDate); }, [startDate, endDate]); const carenciaDays = Math.min(3, totalDays); const inssCoveredDays = Math.max(0, totalDays - 3); const handleSaveSubsidy = async (e) => { e.preventDefault(); if (!userId) return alert("Selecciona un colaborador."); setIsSaving(true); const res = await window.apiCall('save_subsidy', { user_id: userId, start_date: startDate, end_date: endDate, total_days: totalDays, diagnosis: diagnosis || 'Reposo Médico INSS', carencia_action: carenciaAction, inss_ticket_num: ticketNum }); setIsSaving(false); if (res && res.success) { setShowModal(false); setDiagnosis(''); setTicketNum(''); loadSubsidies(); if (refreshData) await refreshData(); } else { alert("Error al registrar subsidio: " + (res?.error || "")); } }; return (
Gestión de Carencia (Días 1-3) • Cobertura INSS (Día 4 en adelante) • Protección Salarial
| Colaborador | Período de Reposo | Días Totales | Tratamiento Legal | Diagnóstico / No. Boleta | Acción |
|---|---|---|---|---|---|
| No hay registros de subsidios activos ni históricos. | |||||
| {s.user_name} | {window.formatDateToNIC(s.start_date)} al {window.formatDateToNIC(s.end_date)} | {s.total_days} d |
• Carencia (1-3 d): {s.carencia_days} d ({s.carencia_action.toUpperCase()})
{s.inss_covered_days > 0 ? (
• INSS Cubre: {s.inss_covered_days} d (Subsidio Económico)
) : (
• Sin cobertura INSS (≤ 3 días)
)}
|
{s.diagnosis} {s.inss_ticket_num && Boleta: {s.inss_ticket_num}} | |
Normativa de Seguridad Social de Nicaragua