<?php
return [
    'estructura' => [
        'titulo' => 'Estructura organizacional',
        'descripcion' => 'Departamentos y áreas de la organización.',
        'tabla' => 'departamentos',
        'icono' => 'fa-sitemap',
        'campos' => [
            'nombre' => ['label' => 'Departamento', 'required' => true],
            'descripcion' => ['label' => 'Descripción'],
            'activo' => ['label' => 'Activo', 'type' => 'checkbox'],
        ],
        'columnas' => ['nombre' => 'Departamento', 'descripcion' => 'Descripción', 'activo' => 'Activo'],
    ],
    'cargos' => [
        'titulo' => 'Cargos',
        'descripcion' => 'Puestos, dependencia y salario de referencia.',
        'tabla' => 'cargos',
        'icono' => 'fa-briefcase',
        'campos' => [
            'departamento_id' => ['label'=>'Departamento','type'=>'select_sql','sql'=>'SELECT id, nombre FROM departamentos WHERE activo=1 ORDER BY nombre'],
            'nombre' => ['label'=>'Cargo','required'=>true],
            'descripcion' => ['label'=>'Descripción'],
            'salario_referencia' => ['label'=>'Salario de referencia','type'=>'number','format'=>'numero'],
            'activo' => ['label'=>'Activo','type'=>'checkbox'],
        ],
        'list_sql' => "SELECT c.id,c.nombre,COALESCE(d.nombre,'—') departamento,c.descripcion,c.salario_referencia,c.activo FROM cargos c LEFT JOIN departamentos d ON d.id=c.departamento_id ORDER BY d.nombre,c.nombre",
        'columnas' => ['nombre'=>'Cargo','departamento'=>'Departamento','descripcion'=>'Descripción','salario_referencia'=>'Salario de referencia','activo'=>'Activo'],
        'formatos' => ['salario_referencia'=>'numero'],
    ],
    'colaboradores' => [
        'titulo' => 'Colaboradores',
        'descripcion' => 'Legajos y datos laborales del personal.',
        'tabla' => 'colaboradores',
        'icono' => 'fa-id-card',
        'campos' => [
            'codigo' => ['label'=>'Código de legajo','required'=>true,'seccion'=>'Identificación personal'],
            'nombres' => ['label'=>'Nombres','required'=>true,'seccion'=>'Identificación personal'],
            'apellidos' => ['label'=>'Apellidos','required'=>true,'seccion'=>'Identificación personal'],
            'tipo_documento' => ['label'=>'Tipo de documento','type'=>'select','options'=>['Cédula paraguaya','Pasaporte','Documento extranjero'],'seccion'=>'Identificación personal'],
            'documento' => ['label'=>'Número de documento','required'=>true,'seccion'=>'Identificación personal'],
            'ruc' => ['label'=>'RUC','seccion'=>'Identificación personal'],
            'fecha_nacimiento' => ['label'=>'Fecha de nacimiento','type'=>'date','seccion'=>'Identificación personal'],
            'nacionalidad' => ['label'=>'Nacionalidad','seccion'=>'Identificación personal'],
            'lugar_nacimiento' => ['label'=>'Lugar de nacimiento','seccion'=>'Identificación personal'],
            'sexo' => ['label'=>'Sexo','type'=>'select','options'=>['Femenino','Masculino','Otro','Prefiere no indicar'],'seccion'=>'Identificación personal'],
            'estado_civil' => ['label'=>'Estado civil','type'=>'select','options'=>['Soltero/a','Casado/a','Unión de hecho','Divorciado/a','Viudo/a'],'seccion'=>'Identificación personal'],
            'email' => ['label'=>'Correo electrónico','type'=>'email','seccion'=>'Contacto y domicilio'],
            'telefono' => ['label'=>'Teléfono principal','seccion'=>'Contacto y domicilio'],
            'telefono_alternativo' => ['label'=>'Teléfono alternativo','seccion'=>'Contacto y domicilio'],
            'direccion' => ['label'=>'Dirección','seccion'=>'Contacto y domicilio'],
            'ciudad' => ['label'=>'Ciudad','seccion'=>'Contacto y domicilio'],
            'contacto_emergencia' => ['label'=>'Contacto de emergencia','seccion'=>'Emergencia y familia'],
            'contacto_emergencia_parentesco' => ['label'=>'Parentesco','seccion'=>'Emergencia y familia'],
            'telefono_emergencia' => ['label'=>'Teléfono de emergencia','seccion'=>'Emergencia y familia'],
            'contacto_emergencia_email' => ['label'=>'Correo del contacto','type'=>'email','seccion'=>'Emergencia y familia'],
            'cantidad_hijos' => ['label'=>'Cantidad de hijos','type'=>'number','seccion'=>'Emergencia y familia'],
            'dependientes' => ['label'=>'Personas dependientes','type'=>'number','seccion'=>'Emergencia y familia'],
            'departamento_id' => ['label'=>'Departamento','type'=>'select_sql','sql'=>'SELECT id, nombre FROM departamentos WHERE activo=1 ORDER BY nombre','seccion'=>'Información laboral'],
            'cargo_id' => ['label'=>'Cargo','type'=>'select_sql','sql'=>'SELECT id, nombre FROM cargos WHERE activo=1 ORDER BY nombre','seccion'=>'Información laboral'],
            'supervisor' => ['label'=>'Jefe o supervisor directo','seccion'=>'Información laboral'],
            'sede' => ['label'=>'Sede o lugar de trabajo','seccion'=>'Información laboral'],
            'modalidad_trabajo' => ['label'=>'Modalidad','type'=>'select','options'=>['Presencial','Híbrida','Remota'],'seccion'=>'Información laboral'],
            'turno' => ['label'=>'Turno u horario','seccion'=>'Información laboral'],
            'jornada_horas' => ['label'=>'Horas de jornada','type'=>'number','seccion'=>'Información laboral'],
            'fecha_ingreso' => ['label'=>'Fecha de ingreso','type'=>'date','seccion'=>'Información laboral'],
            'fecha_fin_contrato' => ['label'=>'Fin de contrato','type'=>'date','seccion'=>'Información laboral'],
            'periodo_prueba_hasta' => ['label'=>'Periodo de prueba hasta','type'=>'date','seccion'=>'Información laboral'],
            'tipo_contrato' => ['label'=>'Tipo de contrato','type'=>'select','options'=>['Indefinido','Plazo fijo','Temporal','Servicios'],'seccion'=>'Información laboral'],
            'salario_base' => ['label'=>'Salario base','type'=>'number','format'=>'numero','seccion'=>'Información laboral'],
            'estado' => ['label'=>'Estado','type'=>'select','options'=>['Activo','Inactivo','Suspendido','Desvinculado'],'seccion'=>'Información laboral'],
            'nro_ips' => ['label'=>'Número IPS','seccion'=>'Previsión y cobertura'],
            'seguro_medico' => ['label'=>'Seguro médico','seccion'=>'Previsión y cobertura'],
            'nro_seguro_medico' => ['label'=>'Número de asegurado','seccion'=>'Previsión y cobertura'],
            'banco' => ['label'=>'Banco','seccion'=>'Datos bancarios'],
            'cuenta' => ['label'=>'Número de cuenta','seccion'=>'Datos bancarios'],
            'tipo_cuenta_bancaria' => ['label'=>'Tipo de cuenta','type'=>'select','options'=>['Caja de ahorro','Cuenta corriente','Billetera'],'seccion'=>'Datos bancarios'],
            'moneda_cuenta' => ['label'=>'Moneda','type'=>'select','options'=>['PYG','USD'],'seccion'=>'Datos bancarios'],
            'alias_cuenta' => ['label'=>'Alias','seccion'=>'Datos bancarios'],
            'titular_cuenta' => ['label'=>'Titular de la cuenta','seccion'=>'Datos bancarios'],
            'nivel_educativo' => ['label'=>'Nivel educativo','type'=>'select','options'=>['Primario','Secundario','Técnico','Universitario','Posgrado'],'seccion'=>'Formación'],
            'profesion' => ['label'=>'Profesión o especialidad','seccion'=>'Formación'],
            'grupo_sanguineo' => ['label'=>'Grupo sanguíneo','seccion'=>'Salud ocupacional'],
            'alergias' => ['label'=>'Alergias relevantes','type'=>'textarea','seccion'=>'Salud ocupacional'],
            'observaciones_medicas' => ['label'=>'Observaciones médicas relevantes','type'=>'textarea','seccion'=>'Salud ocupacional'],
            'fecha_egreso' => ['label'=>'Fecha de egreso','type'=>'date','seccion'=>'Desvinculación y observaciones'],
            'motivo_egreso' => ['label'=>'Motivo de egreso','type'=>'textarea','seccion'=>'Desvinculación y observaciones'],
            'observaciones_legajo' => ['label'=>'Observaciones generales del legajo','type'=>'textarea','seccion'=>'Desvinculación y observaciones'],
        ],
        'list_sql' => "SELECT c.id, c.codigo, CONCAT(c.nombres,' ',c.apellidos) nombre_completo,
                             c.documento, c.salario_base, c.email, c.telefono,
                             COALESCE(d.nombre,'—') departamento,
                             COALESCE(ca.nombre,'—') cargo, c.fecha_ingreso, c.estado
                      FROM colaboradores c
                      LEFT JOIN departamentos d ON d.id=c.departamento_id
                      LEFT JOIN cargos ca ON ca.id=c.cargo_id
                      ORDER BY c.apellidos,c.nombres",
        'columnas' => ['codigo'=>'Legajo','nombre_completo'=>'Colaborador','documento'=>'Documento','departamento'=>'Departamento','cargo'=>'Cargo','fecha_ingreso'=>'Ingreso','salario_base'=>'Salario','email'=>'Correo','telefono'=>'Teléfono','estado'=>'Estado'],
        'formatos' => ['salario_base'=>'numero'],
    ],
    'asistencia' => [
        'titulo' => 'Asistencia',
        'descripcion' => 'Marcaciones diarias, tardanzas y teletrabajo.',
        'tabla' => 'asistencias',
        'icono' => 'fa-clock',
        'campos' => [
            'colaborador_id' => ['label'=>'Colaborador','type'=>'select_sql','sql'=>"SELECT id, CONCAT(apellidos, ', ', nombres) nombre FROM colaboradores WHERE estado='Activo' ORDER BY apellidos,nombres",'required'=>true],
            'fecha' => ['label'=>'Fecha','type'=>'date','required'=>true],
            'hora_entrada' => ['label'=>'Hora de entrada','type'=>'time'],
            'hora_salida' => ['label'=>'Hora de salida','type'=>'time'],
            'estado' => ['label'=>'Estado','type'=>'select','options'=>['Presente','Ausente','Tardanza','Teletrabajo']],
            'observacion' => ['label'=>'Observación'],
        ],
        'list_sql' => "SELECT a.id, CONCAT(c.apellidos,', ',c.nombres) colaborador,a.fecha,a.hora_entrada,a.hora_salida,a.estado,a.observacion FROM asistencias a JOIN colaboradores c ON c.id=a.colaborador_id ORDER BY a.fecha DESC,c.apellidos",
        'columnas' => ['colaborador'=>'Colaborador','fecha'=>'Fecha','hora_entrada'=>'Entrada','hora_salida'=>'Salida','estado'=>'Estado','observacion'=>'Observación'],
    ],
    'ausencias' => [
        'titulo' => 'Permisos y vacaciones',
        'descripcion' => 'Solicitudes, aprobaciones y saldos de ausencias.',
        'tabla' => 'ausencias',
        'icono' => 'fa-calendar-check',
        'campos' => [
            'colaborador_id' => ['label'=>'Colaborador','type'=>'select_sql','sql'=>"SELECT id, CONCAT(apellidos, ', ', nombres) nombre FROM colaboradores WHERE estado='Activo' ORDER BY apellidos,nombres",'required'=>true],
            'tipo' => ['label'=>'Tipo','type'=>'select','options'=>['Vacaciones','Permiso','Reposo médico','Maternidad/Paternidad','Otro']],
            'fecha_desde' => ['label'=>'Desde','type'=>'date','required'=>true],
            'fecha_hasta' => ['label'=>'Hasta','type'=>'date','required'=>true],
            'dias' => ['label'=>'Días','type'=>'number','step'=>'0.5'],
            'motivo' => ['label'=>'Motivo'],
            'estado' => ['label'=>'Estado','type'=>'select','options'=>['Pendiente','Aprobado','Rechazado']],
        ],
        'list_sql' => "SELECT a.id,CONCAT(c.apellidos,', ',c.nombres) colaborador,a.tipo,a.fecha_desde,a.fecha_hasta,a.dias,a.estado FROM ausencias a JOIN colaboradores c ON c.id=a.colaborador_id ORDER BY a.fecha_desde DESC",
        'columnas' => ['colaborador'=>'Colaborador','tipo'=>'Tipo','fecha_desde'=>'Desde','fecha_hasta'=>'Hasta','dias'=>'Días','estado'=>'Estado'],
        'formatos' => ['dias'=>'numero'],
    ],
    'descuentos' => [
        'titulo' => 'Descuentos recurrentes',
        'descripcion' => 'Conceptos que se aplican automáticamente al generar cada Planilla de Salarios mensual.',
        'tabla' => 'descuentos_recurrentes',
        'icono' => 'fa-receipt',
        'campos' => [
            'colaborador_id' => ['label'=>'Colaborador','type'=>'select_sql','sql'=>"SELECT id, CONCAT(apellidos, ', ', nombres) nombre FROM colaboradores WHERE estado='Activo' ORDER BY apellidos,nombres",'required'=>true],
            'concepto' => ['label'=>'Concepto','required'=>true],
            'monto' => ['label'=>'Monto mensual','type'=>'number','format'=>'numero','required'=>true],
            'desde_periodo' => ['label'=>'Desde el periodo','type'=>'month','required'=>true],
            'hasta_periodo' => ['label'=>'Hasta el periodo (opcional)','type'=>'month'],
            'activo' => ['label'=>'Activo','type'=>'checkbox'],
        ],
        'list_sql' => "SELECT d.id,CONCAT(c.apellidos,', ',c.nombres) colaborador,d.concepto,d.monto,d.desde_periodo,COALESCE(d.hasta_periodo,'Sin límite') hasta_periodo,d.activo FROM descuentos_recurrentes d JOIN colaboradores c ON c.id=d.colaborador_id ORDER BY c.apellidos,d.concepto",
        'columnas' => ['colaborador'=>'Colaborador','concepto'=>'Concepto','monto'=>'Monto mensual','desde_periodo'=>'Desde','hasta_periodo'=>'Hasta','activo'=>'Activo'],
        'formatos' => ['monto'=>'numero'],
    ],
    'adicionales' => [
        'titulo' => 'Carga de adicionales',
        'descripcion' => 'Conceptos adicionales que se aplican automáticamente a la Planilla de Salarios del periodo.',
        'tabla' => 'adicionales_recurrentes',
        'icono' => 'fa-circle-plus',
        'campos' => [
            'colaborador_id' => ['label'=>'Colaborador','type'=>'select_sql','sql'=>"SELECT id, CONCAT(apellidos, ', ', nombres) nombre FROM colaboradores WHERE estado='Activo' ORDER BY apellidos,nombres",'required'=>true],
            'concepto' => ['label'=>'Concepto','required'=>true],
            'monto' => ['label'=>'Monto mensual','type'=>'number','format'=>'numero','required'=>true],
            'desde_periodo' => ['label'=>'Desde el periodo','type'=>'month','required'=>true],
            'hasta_periodo' => ['label'=>'Hasta el periodo (opcional)','type'=>'month'],
            'activo' => ['label'=>'Activo','type'=>'checkbox'],
        ],
        'list_sql' => "SELECT a.id,CONCAT(c.apellidos,', ',c.nombres) colaborador,a.concepto,a.monto,a.desde_periodo,COALESCE(a.hasta_periodo,'Sin límite') hasta_periodo,a.activo FROM adicionales_recurrentes a JOIN colaboradores c ON c.id=a.colaborador_id ORDER BY c.apellidos,a.concepto",
        'columnas' => ['colaborador'=>'Colaborador','concepto'=>'Concepto','monto'=>'Monto mensual','desde_periodo'=>'Desde','hasta_periodo'=>'Hasta','activo'=>'Activo'],
        'formatos' => ['monto'=>'numero'],
    ],
    'documentos' => [
        'titulo' => 'Contratos y documentos',
        'descripcion' => 'Registro y vencimiento de documentos del legajo.',
        'tabla' => 'documentos_rrhh',
        'icono' => 'fa-file-contract',
        'campos' => [
            'colaborador_id' => ['label'=>'Colaborador','type'=>'select_sql','sql'=>"SELECT id, CONCAT(apellidos, ', ', nombres) nombre FROM colaboradores ORDER BY apellidos,nombres",'required'=>true],
            'tipo' => ['label'=>'Tipo','type'=>'select','options'=>['Solicitud de empleo','Currículum vitae','Cédula de identidad','Pasaporte','RUC','Antecedente policial','Antecedente judicial','Certificado de vida y residencia','Título académico','Certificado de estudios','Constancia laboral','Contrato de trabajo','Adenda contractual','Inscripción IPS','Examen médico admisional','Certificado médico','Declaración de beneficiarios','Reglamento interno recibido','Acuerdo de confidencialidad','Entrega de equipos','Recibo de salario','Evaluación de desempeño','Amonestación o sanción','Vacaciones y permisos','Documento de desvinculación','Otro']],
            'nombre' => ['label'=>'Nombre del documento','required'=>true],
            'fecha_emision' => ['label'=>'Fecha de emisión','type'=>'date'],
            'fecha_vencimiento' => ['label'=>'Fecha de vencimiento','type'=>'date'],
            'referencia' => ['label'=>'Referencia, enlace o ubicación física'],
            'observacion' => ['label'=>'Observación'],
        ],
        'list_sql' => "SELECT d.id,CONCAT(c.apellidos,', ',c.nombres) colaborador,d.tipo,d.nombre,d.fecha_emision,d.fecha_vencimiento,d.referencia FROM documentos_rrhh d JOIN colaboradores c ON c.id=d.colaborador_id ORDER BY d.fecha_vencimiento",
        'columnas' => ['colaborador'=>'Colaborador','tipo'=>'Tipo','nombre'=>'Documento','fecha_emision'=>'Emisión','fecha_vencimiento'=>'Vencimiento','referencia'=>'Referencia'],
    ],
    'evaluaciones' => [
        'titulo' => 'Evaluaciones de desempeño',
        'descripcion' => 'Seguimiento periódico del desempeño y planes de mejora.',
        'tabla' => 'evaluaciones',
        'icono' => 'fa-chart-line',
        'campos' => [
            'colaborador_id' => ['label'=>'Colaborador','type'=>'select_sql','sql'=>"SELECT id, CONCAT(apellidos, ', ', nombres) nombre FROM colaboradores WHERE estado='Activo' ORDER BY apellidos,nombres",'required'=>true],
            'periodo' => ['label'=>'Periodo','required'=>true],
            'fecha' => ['label'=>'Fecha','type'=>'date','required'=>true],
            'evaluador' => ['label'=>'Evaluador','required'=>true],
            'puntaje' => ['label'=>'Puntaje (0 a 100)','type'=>'number','step'=>'0.01'],
            'fortalezas' => ['label'=>'Fortalezas','type'=>'textarea'],
            'mejoras' => ['label'=>'Oportunidades de mejora','type'=>'textarea'],
            'estado' => ['label'=>'Estado','type'=>'select','options'=>['Borrador','Finalizada']],
        ],
        'list_sql' => "SELECT e.id,CONCAT(c.apellidos,', ',c.nombres) colaborador,e.periodo,e.fecha,e.evaluador,e.puntaje,e.estado FROM evaluaciones e JOIN colaboradores c ON c.id=e.colaborador_id ORDER BY e.fecha DESC",
        'columnas' => ['colaborador'=>'Colaborador','periodo'=>'Periodo','fecha'=>'Fecha','evaluador'=>'Evaluador','puntaje'=>'Puntaje','estado'=>'Estado'],
        'formatos' => ['puntaje'=>'numero'],
    ],
    'capacitaciones' => [
        'titulo' => 'Capacitaciones',
        'descripcion' => 'Plan anual, proveedores, horas y costos de formación.',
        'tabla' => 'capacitaciones',
        'icono' => 'fa-graduation-cap',
        'campos' => [
            'nombre' => ['label'=>'Capacitación','required'=>true],
            'colaboradores_ids' => ['label'=>'Colaboradores participantes','type'=>'multiselect_sql','sql'=>"SELECT id, CONCAT(apellidos, ', ', nombres) nombre FROM colaboradores WHERE estado='Activo' ORDER BY apellidos,nombres",'virtual'=>true,'required'=>true],
            'proveedor' => ['label'=>'Proveedor'],
            'fecha_inicio' => ['label'=>'Fecha de inicio','type'=>'date','required'=>true],
            'fecha_fin' => ['label'=>'Fecha de fin','type'=>'date'],
            'horas' => ['label'=>'Horas','type'=>'number','step'=>'0.5'],
            'costo' => ['label'=>'Costo','type'=>'number','step'=>'0.01'],
            'estado' => ['label'=>'Estado','type'=>'select','options'=>['Planificada','En curso','Finalizada','Cancelada']],
            'observacion' => ['label'=>'Observación'],
        ],
        'list_sql' => "SELECT ca.id,ca.nombre,COALESCE(GROUP_CONCAT(CONCAT(c.apellidos, ', ', c.nombres) ORDER BY c.apellidos SEPARATOR ' | '),'Sin participantes') colaboradores,ca.proveedor,ca.fecha_inicio,ca.fecha_fin,ca.horas,ca.costo,ca.estado FROM capacitaciones ca LEFT JOIN capacitacion_colaboradores cc ON cc.capacitacion_id=ca.id LEFT JOIN colaboradores c ON c.id=cc.colaborador_id GROUP BY ca.id ORDER BY ca.fecha_inicio DESC",
        'columnas' => ['nombre'=>'Capacitación','colaboradores'=>'Colaboradores','proveedor'=>'Proveedor','fecha_inicio'=>'Inicio','fecha_fin'=>'Fin','horas'=>'Horas','costo'=>'Costo','estado'=>'Estado'],
        'formatos' => ['horas'=>'numero','costo'=>'numero'],
    ],
];
