@softdin/portal-admin 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +95 -2
- package/dist-lib/chunks/AppLayout-COCPfLWo.js +303 -0
- package/dist-lib/chunks/AuditoriaView-Bcf_kOqI.js +643 -0
- package/dist-lib/chunks/CarnetView-BsdUtYeu.js +450 -0
- package/dist-lib/chunks/CarteleraView-CRnVjt-S.js +996 -0
- package/dist-lib/chunks/CertificadosView-DvHDflcN.js +549 -0
- package/dist-lib/chunks/ChatBandejaView-HqhdSw7G.js +274 -0
- package/dist-lib/chunks/ChatConfiguracionView-BdH5gDdR.js +716 -0
- package/dist-lib/chunks/ChatConocimientoView-nKTAKxFa.js +263 -0
- package/dist-lib/chunks/ChatConversacionView-Do74V09l.js +477 -0
- package/dist-lib/chunks/ChatInformeView-BIiAH9L_.js +280 -0
- package/dist-lib/chunks/ChatRespuestasView-QFXbyg8U.js +183 -0
- package/dist-lib/chunks/EmpleadosView-BtqrO5-8.js +311 -0
- package/dist-lib/chunks/HomologacionView-UCZk4u6R.js +949 -0
- package/dist-lib/chunks/IngresoSsoView-BKkcnrYO.js +98 -0
- package/dist-lib/chunks/SolicitudesView-CYPD2A1s.js +900 -0
- package/dist-lib/chunks/TiposSolicitudView-CrWTVizl.js +168 -0
- package/dist-lib/chunks/ToggleSwitch-BYrIyheq.js +55 -0
- package/dist-lib/chunks/_plugin-vue_export-helper-BOaGB7Aw.js +8 -0
- package/dist-lib/chunks/api-M7D1c3IT.js +97 -0
- package/dist-lib/chunks/apiError-BHGbwz97.js +15 -0
- package/dist-lib/chunks/auth.store-BrGKZg-7.js +220 -0
- package/dist-lib/chunks/chat.service-C7ZQf4w3.js +241 -0
- package/dist-lib/chunks/cliente-interno.store-De39VsEE.js +203 -0
- package/dist-lib/chunks/homologacion-CoeHD7cB.js +131 -0
- package/dist-lib/chunks/portal-empleado-6KQrnsQJ.js +120 -0
- package/dist-lib/chunks/tipos-D93bLfFC.js +22 -0
- package/dist-lib/portal-admin.js +196 -0
- package/dist-lib/style.css +4813 -0
- package/dist-lib/types/App.vue.d.ts +3 -0
- package/dist-lib/types/components/AppLayout.vue.d.ts +3 -0
- package/dist-lib/types/components/CarnetClientesInternos.vue.d.ts +11 -0
- package/dist-lib/types/components/InvitacionPortalModal.vue.d.ts +20 -0
- package/dist-lib/types/components/MenuUsuario.vue.d.ts +3 -0
- package/dist-lib/types/components/VistoBuenoPortalModal.vue.d.ts +23 -0
- package/dist-lib/types/components/auditoria/AuditoriaFila.vue.d.ts +16 -0
- package/dist-lib/types/components/auditoria/AuditoriaFiltros.vue.d.ts +30 -0
- package/dist-lib/types/components/auditoria/AuditoriaPaginador.vue.d.ts +14 -0
- package/dist-lib/types/components/cartelera/PaginaCarteleraImagen.vue.d.ts +14 -0
- package/dist-lib/types/components/cartelera/PublicacionFormModal.vue.d.ts +27 -0
- package/dist-lib/types/components/cartelera/VistaCelularCartelera.vue.d.ts +34 -0
- package/dist-lib/types/components/certificados/AtenderCertificadoModal.vue.d.ts +22 -0
- package/dist-lib/types/components/certificados/RechazarCertificadoModal.vue.d.ts +18 -0
- package/dist-lib/types/components/certificados/ResumenSolicitudCertificado.vue.d.ts +8 -0
- package/dist-lib/types/components/chat/ChatClientesInternos.vue.d.ts +21 -0
- package/dist-lib/types/components/chat/ChatHorarioCampos.vue.d.ts +21 -0
- package/dist-lib/types/components/forms/ExportExcelButton.vue.d.ts +30 -0
- package/dist-lib/types/components/forms/ToggleSwitch.vue.d.ts +17 -0
- package/dist-lib/types/components/homologacion/HomologacionFila.vue.d.ts +30 -0
- package/dist-lib/types/components/homologacion/TipoPermisoFormModal.vue.d.ts +26 -0
- package/dist-lib/types/components/homologacion/TipoSolicitudFormModal.vue.d.ts +27 -0
- package/dist-lib/types/lib/auditoria.d.ts +25 -0
- package/dist-lib/types/lib/cartelera-paginas.d.ts +26 -0
- package/dist-lib/types/lib/cartelera-vigencia.d.ts +3 -0
- package/dist-lib/types/lib/export-excel-csv.d.ts +4 -0
- package/dist-lib/types/lib/export-excel.d.ts +9 -0
- package/dist-lib/types/lib/exportar-listado.d.ts +68 -0
- package/dist-lib/types/lib/homologacion.d.ts +41 -0
- package/dist-lib/types/lib/portal-empleado.d.ts +32 -0
- package/dist-lib/types/modulo.d.ts +31 -0
- package/dist-lib/types/portal-admin/config.d.ts +17 -0
- package/dist-lib/types/portal-admin/rutas.d.ts +17 -0
- package/dist-lib/types/portal-admin/tipos.d.ts +68 -0
- package/dist-lib/types/router/index.d.ts +7 -0
- package/dist-lib/types/services/api.d.ts +29 -0
- package/dist-lib/types/services/auditoria.service.d.ts +63 -0
- package/dist-lib/types/services/auth.service.d.ts +61 -0
- package/dist-lib/types/services/carnet.service.d.ts +56 -0
- package/dist-lib/types/services/cartelera.service.d.ts +69 -0
- package/dist-lib/types/services/chat.service.d.ts +279 -0
- package/dist-lib/types/services/configuracion-cliente-interno.service.d.ts +23 -0
- package/dist-lib/types/services/homologacion.service.d.ts +105 -0
- package/dist-lib/types/services/portal-empleado.service.d.ts +112 -0
- package/dist-lib/types/services/solicitudes-certificado.service.d.ts +59 -0
- package/dist-lib/types/stores/auth.store.d.ts +125 -0
- package/dist-lib/types/stores/cliente-interno.store.d.ts +65 -0
- package/dist-lib/types/utils/apiError.d.ts +4 -0
- package/dist-lib/types/views/AuditoriaView.vue.d.ts +3 -0
- package/dist-lib/types/views/CarnetView.vue.d.ts +3 -0
- package/dist-lib/types/views/CarteleraView.vue.d.ts +3 -0
- package/dist-lib/types/views/CertificadosView.vue.d.ts +3 -0
- package/dist-lib/types/views/EmpleadosView.vue.d.ts +3 -0
- package/dist-lib/types/views/HomologacionView.vue.d.ts +4 -0
- package/dist-lib/types/views/IngresoSsoView.vue.d.ts +3 -0
- package/dist-lib/types/views/LoginView.vue.d.ts +3 -0
- package/dist-lib/types/views/OlvideView.vue.d.ts +3 -0
- package/dist-lib/types/views/RestablecerView.vue.d.ts +3 -0
- package/dist-lib/types/views/SolicitudesView.vue.d.ts +3 -0
- package/dist-lib/types/views/TiposSolicitudView.vue.d.ts +3 -0
- package/dist-lib/types/views/chat/ChatBandejaView.vue.d.ts +3 -0
- package/dist-lib/types/views/chat/ChatConfiguracionView.vue.d.ts +3 -0
- package/dist-lib/types/views/chat/ChatConocimientoView.vue.d.ts +3 -0
- package/dist-lib/types/views/chat/ChatConversacionView.vue.d.ts +11 -0
- package/dist-lib/types/views/chat/ChatInformeView.vue.d.ts +3 -0
- package/dist-lib/types/views/chat/ChatRespuestasView.vue.d.ts +3 -0
- package/package.json +66 -4
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Carnet digital del cliente interno elegido en la barra superior: hereda el valor de todo el
|
|
3
|
+
* tenant o tiene el suyo (encendido o apagado), que prevalece para sus empleados.
|
|
4
|
+
*/
|
|
5
|
+
type __VLS_Props = {
|
|
6
|
+
clienteId: number;
|
|
7
|
+
tenantActivo: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
|
+
declare const _default: typeof __VLS_export;
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Invitación al portal de un empleado: QR presencial o reenvío por correo. El
|
|
3
|
+
* empleado activa su cuenta con el enlace y además confirma su documento y fecha
|
|
4
|
+
* de nacimiento (softdin-api/docs/portal-empleado.md, «Primer ingreso»).
|
|
5
|
+
*/
|
|
6
|
+
type __VLS_Props = {
|
|
7
|
+
empleoId: number | null;
|
|
8
|
+
empleado: string;
|
|
9
|
+
};
|
|
10
|
+
type __VLS_ModelProps = {
|
|
11
|
+
'open': boolean;
|
|
12
|
+
};
|
|
13
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
14
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
15
|
+
"update:open": (value: boolean) => any;
|
|
16
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
17
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
18
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
19
|
+
declare const _default: typeof __VLS_export;
|
|
20
|
+
export default _default;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type SolicitudPortal } from '../services/portal-empleado.service';
|
|
2
|
+
/**
|
|
3
|
+
* Visto bueno de nómina sobre una solicitud del portal ya aprobada en su flujo.
|
|
4
|
+
* Viaja firmado a SoftDIN, donde la novedad se creó inactiva: dar el visto bueno
|
|
5
|
+
* la activa (entra en la liquidación); no darlo la deja inactiva y el comentario
|
|
6
|
+
* le llega al empleado.
|
|
7
|
+
*/
|
|
8
|
+
type __VLS_Props = {
|
|
9
|
+
solicitud: SolicitudPortal | null;
|
|
10
|
+
};
|
|
11
|
+
type __VLS_ModelProps = {
|
|
12
|
+
'open': boolean;
|
|
13
|
+
};
|
|
14
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
15
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
16
|
+
"update:open": (value: boolean) => any;
|
|
17
|
+
decidida: () => any;
|
|
18
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
19
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
20
|
+
onDecidida?: (() => any) | undefined;
|
|
21
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
22
|
+
declare const _default: typeof __VLS_export;
|
|
23
|
+
export default _default;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { RegistroAuditoria } from '../../services/auditoria.service';
|
|
2
|
+
/**
|
|
3
|
+
* Un registro de la auditoría: la fila de la tabla y, al expandirla, otra fila con el detalle
|
|
4
|
+
* saneado que guardó el servidor y el navegador desde el que se hizo.
|
|
5
|
+
*/
|
|
6
|
+
type __VLS_Props = {
|
|
7
|
+
registro: RegistroAuditoria;
|
|
8
|
+
expandido: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
11
|
+
alternar: () => any;
|
|
12
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
13
|
+
onAlternar?: (() => any) | undefined;
|
|
14
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
15
|
+
declare const _default: typeof __VLS_export;
|
|
16
|
+
export default _default;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AccionAuditoria, ActorTipo, ResultadoAuditoria } from '../../services/auditoria.service';
|
|
2
|
+
/**
|
|
3
|
+
* Filtros de la auditoría. El cliente no está aquí: es el selector global de la barra
|
|
4
|
+
* superior. Los selectores y las fechas aplican al cambiar; la búsqueda, al pulsar «Buscar».
|
|
5
|
+
*/
|
|
6
|
+
export interface FiltrosFormulario {
|
|
7
|
+
actor_tipo: ActorTipo | '';
|
|
8
|
+
accion: string;
|
|
9
|
+
resultado: ResultadoAuditoria | '';
|
|
10
|
+
desde: string;
|
|
11
|
+
hasta: string;
|
|
12
|
+
q: string;
|
|
13
|
+
}
|
|
14
|
+
type __VLS_Props = {
|
|
15
|
+
acciones: AccionAuditoria[];
|
|
16
|
+
deshabilitado?: boolean;
|
|
17
|
+
};
|
|
18
|
+
type __VLS_ModelProps = {
|
|
19
|
+
modelValue: FiltrosFormulario;
|
|
20
|
+
};
|
|
21
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
22
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
23
|
+
buscar: () => any;
|
|
24
|
+
"update:modelValue": (value: FiltrosFormulario) => any;
|
|
25
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
26
|
+
onBuscar?: (() => any) | undefined;
|
|
27
|
+
"onUpdate:modelValue"?: ((value: FiltrosFormulario) => any) | undefined;
|
|
28
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
29
|
+
declare const _default: typeof __VLS_export;
|
|
30
|
+
export default _default;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** «Mostrando a–b de N» con Anterior / Siguiente. Las páginas cuentan desde 1. */
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
pagina: number;
|
|
4
|
+
porPagina: number;
|
|
5
|
+
total: number;
|
|
6
|
+
deshabilitado?: boolean;
|
|
7
|
+
};
|
|
8
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
9
|
+
cambiar: (pagina: number) => any;
|
|
10
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
11
|
+
onCambiar?: ((pagina: number) => any) | undefined;
|
|
12
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
13
|
+
declare const _default: typeof __VLS_export;
|
|
14
|
+
export default _default;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Una página ya guardada de una publicación. La imagen pide autenticación, así que se
|
|
3
|
+
* descarga como blob; `version` cambia cuando la publicación cambia y obliga a volver
|
|
4
|
+
* a pedirla.
|
|
5
|
+
*/
|
|
6
|
+
type __VLS_Props = {
|
|
7
|
+
publicacionId: number;
|
|
8
|
+
n: number;
|
|
9
|
+
version: number | null;
|
|
10
|
+
alt: string;
|
|
11
|
+
};
|
|
12
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
13
|
+
declare const _default: typeof __VLS_export;
|
|
14
|
+
export default _default;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type PublicacionCartelera } from '../../services/cartelera.service';
|
|
2
|
+
import type { ClienteInterno } from '../../services/portal-empleado.service';
|
|
3
|
+
type __VLS_Props = {
|
|
4
|
+
publicacion: PublicacionCartelera | null;
|
|
5
|
+
clientesInternos: ClienteInterno[];
|
|
6
|
+
/** Cliente interno con el que se abre una nueva (el elegido en la barra superior). */
|
|
7
|
+
clienteInicial?: number | null;
|
|
8
|
+
empresa?: string;
|
|
9
|
+
};
|
|
10
|
+
type __VLS_ModelProps = {
|
|
11
|
+
/**
|
|
12
|
+
* Crear o editar una publicación de la cartelera. Se sube una imagen o un PDF; el PDF se
|
|
13
|
+
* convierte aquí mismo en una imagen por página y a la derecha se ve cómo quedará en el
|
|
14
|
+
* celular del empleado, antes de guardar. Una nueva queda en borrador.
|
|
15
|
+
*/
|
|
16
|
+
'open'?: boolean;
|
|
17
|
+
};
|
|
18
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
19
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
20
|
+
"update:open": (value: boolean) => any;
|
|
21
|
+
saved: (publicacion: PublicacionCartelera) => any;
|
|
22
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
23
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
24
|
+
onSaved?: ((publicacion: PublicacionCartelera) => any) | undefined;
|
|
25
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
26
|
+
declare const _default: typeof __VLS_export;
|
|
27
|
+
export default _default;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vista previa de la cartelera tal como la ve el empleado en la app «Portal de
|
|
3
|
+
* autogestión»: un marco de celular con las publicaciones en tarjetas y sus páginas una
|
|
4
|
+
* debajo de otra. Cada página llega por el slot `pagina` (una imagen recién convertida
|
|
5
|
+
* o una ya guardada).
|
|
6
|
+
*/
|
|
7
|
+
export interface TarjetaVistaPrevia {
|
|
8
|
+
clave: string | number;
|
|
9
|
+
titulo: string;
|
|
10
|
+
resumen: string | null;
|
|
11
|
+
destacada: boolean;
|
|
12
|
+
vigencia: string;
|
|
13
|
+
paginas: number;
|
|
14
|
+
}
|
|
15
|
+
type __VLS_Props = {
|
|
16
|
+
tarjetas: TarjetaVistaPrevia[];
|
|
17
|
+
empresa?: string;
|
|
18
|
+
};
|
|
19
|
+
declare var __VLS_3: {
|
|
20
|
+
tarjeta: TarjetaVistaPrevia;
|
|
21
|
+
n: number;
|
|
22
|
+
};
|
|
23
|
+
type __VLS_Slots = {} & {
|
|
24
|
+
pagina?: (props: typeof __VLS_3) => any;
|
|
25
|
+
};
|
|
26
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
27
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
28
|
+
declare const _default: typeof __VLS_export;
|
|
29
|
+
export default _default;
|
|
30
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
31
|
+
new (): {
|
|
32
|
+
$slots: S;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type SolicitudCertificadoRrhh } from '../../services/solicitudes-certificado.service';
|
|
2
|
+
/**
|
|
3
|
+
* Atender una solicitud de certificado: RRHH sube el PDF, que se guarda en SoftDIN y el
|
|
4
|
+
* empleado ve en «Documentos» de su app, con un título y una respuesta opcionales. Si
|
|
5
|
+
* falla (p. ej. 503 porque SoftDIN no respondió) se muestra el mensaje y el modal sigue abierto.
|
|
6
|
+
*/
|
|
7
|
+
type __VLS_Props = {
|
|
8
|
+
solicitud: SolicitudCertificadoRrhh | null;
|
|
9
|
+
};
|
|
10
|
+
type __VLS_ModelProps = {
|
|
11
|
+
'open': boolean;
|
|
12
|
+
};
|
|
13
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
14
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
15
|
+
"update:open": (value: boolean) => any;
|
|
16
|
+
atendida: () => any;
|
|
17
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
18
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
19
|
+
onAtendida?: (() => any) | undefined;
|
|
20
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
21
|
+
declare const _default: typeof __VLS_export;
|
|
22
|
+
export default _default;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type SolicitudCertificadoRrhh } from '../../services/solicitudes-certificado.service';
|
|
2
|
+
/** Rechazar una solicitud de certificado: el motivo es obligatorio y el empleado lo ve en su app. */
|
|
3
|
+
type __VLS_Props = {
|
|
4
|
+
solicitud: SolicitudCertificadoRrhh | null;
|
|
5
|
+
};
|
|
6
|
+
type __VLS_ModelProps = {
|
|
7
|
+
'open': boolean;
|
|
8
|
+
};
|
|
9
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
10
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
11
|
+
rechazada: () => any;
|
|
12
|
+
"update:open": (value: boolean) => any;
|
|
13
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
14
|
+
onRechazada?: (() => any) | undefined;
|
|
15
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
16
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
17
|
+
declare const _default: typeof __VLS_export;
|
|
18
|
+
export default _default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type SolicitudCertificadoRrhh } from '../../services/solicitudes-certificado.service';
|
|
2
|
+
/** Lo que pidió el empleado, común a los modales de atender y rechazar. */
|
|
3
|
+
type __VLS_Props = {
|
|
4
|
+
solicitud: SolicitudCertificadoRrhh;
|
|
5
|
+
};
|
|
6
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
7
|
+
declare const _default: typeof __VLS_export;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type AjusteClienteInternoChat, type ConfiguracionChat } from '../../services/chat.service';
|
|
2
|
+
/**
|
|
3
|
+
* Ajustes del chat por cliente interno: cada cliente usa lo general (encendido, horario y
|
|
4
|
+
* mensaje fuera de horario) salvo lo que se le ajuste, que prevalece para sus empleados. Un
|
|
5
|
+
* cliente se puede apagar aunque el general esté encendido, pero no al revés. Lista todo el
|
|
6
|
+
* catálogo de clientes internos del tenant (con el elegido en la barra superior, solo ese);
|
|
7
|
+
* solo el admin la cambia.
|
|
8
|
+
*/
|
|
9
|
+
type __VLS_Props = {
|
|
10
|
+
/** Lo general ya guardado: lo que hereda cada cliente sin ajuste. */
|
|
11
|
+
general: ConfiguracionChat;
|
|
12
|
+
ajustes: AjusteClienteInternoChat[];
|
|
13
|
+
admin: boolean;
|
|
14
|
+
};
|
|
15
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
16
|
+
actualizados: (ajustes: AjusteClienteInternoChat[]) => any;
|
|
17
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
18
|
+
onActualizados?: ((ajustes: AjusteClienteInternoChat[]) => any) | undefined;
|
|
19
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
20
|
+
declare const _default: typeof __VLS_export;
|
|
21
|
+
export default _default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type HorarioChat } from '../../services/chat.service';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
/** Prefijo de los id de los campos, para que no se repitan en la misma pantalla. */
|
|
4
|
+
id: string;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
};
|
|
7
|
+
type __VLS_ModelProps = {
|
|
8
|
+
/**
|
|
9
|
+
* Campos del horario de atención del chat: días, desde y hasta. Los usan la configuración
|
|
10
|
+
* general y el ajuste por cliente interno.
|
|
11
|
+
*/
|
|
12
|
+
modelValue: HorarioChat;
|
|
13
|
+
};
|
|
14
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
15
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
16
|
+
"update:modelValue": (value: HorarioChat) => any;
|
|
17
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
18
|
+
"onUpdate:modelValue"?: ((value: HorarioChat) => any) | undefined;
|
|
19
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
20
|
+
declare const _default: typeof __VLS_export;
|
|
21
|
+
export default _default;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Botón redondo de descarga que despliega en qué formato exportar.
|
|
3
|
+
*
|
|
4
|
+
* Antes exportaba a un solo formato y el botón no lo decía: quien lo pulsaba se
|
|
5
|
+
* enteraba del formato cuando el archivo ya estaba en Descargas. Ahora el botón
|
|
6
|
+
* no exporta —pregunta—, y el formato lo elige quien va a abrir el archivo.
|
|
7
|
+
*
|
|
8
|
+
* Los dos formatos no son el mismo dato en dos envases. `.xlsx` es un libro de
|
|
9
|
+
* Excel de verdad, con tipos: los números llegan como números y las fechas no se
|
|
10
|
+
* reinterpretan. `.csv` es texto, lo abre cualquier cosa y viaja a cualquier
|
|
11
|
+
* sistema, pero Excel decide por su cuenta qué es cada columna. Por eso se
|
|
12
|
+
* ofrecen los dos en vez de elegir uno «mejor».
|
|
13
|
+
*/
|
|
14
|
+
export type FormatoExportacion = 'csv' | 'xlsx';
|
|
15
|
+
type __VLS_Props = {
|
|
16
|
+
label?: string;
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
loading?: boolean;
|
|
19
|
+
};
|
|
20
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
21
|
+
exportar: (formato: FormatoExportacion) => any;
|
|
22
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
23
|
+
onExportar?: ((formato: FormatoExportacion) => any) | undefined;
|
|
24
|
+
}>, {
|
|
25
|
+
label: string;
|
|
26
|
+
disabled: boolean;
|
|
27
|
+
loading: boolean;
|
|
28
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
29
|
+
declare const _default: typeof __VLS_export;
|
|
30
|
+
export default _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
disabled?: boolean;
|
|
3
|
+
label?: string;
|
|
4
|
+
ariaLabel?: string;
|
|
5
|
+
id?: string;
|
|
6
|
+
};
|
|
7
|
+
type __VLS_ModelProps = {
|
|
8
|
+
modelValue?: boolean;
|
|
9
|
+
};
|
|
10
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
11
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
12
|
+
"update:modelValue": (value: boolean) => any;
|
|
13
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
14
|
+
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
|
15
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
|
+
declare const _default: typeof __VLS_export;
|
|
17
|
+
export default _default;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ConceptoSeguridadSocial, FilaHomologacion } from '../../services/homologacion.service';
|
|
2
|
+
/**
|
|
3
|
+
* Una fila de la homologación: lo del portal y el COMBO con los conceptos de seguridad social para elegir su
|
|
4
|
+
* homólogo. Se guarda por fila. Si la variable del concepto no es la que exige la PILA, avisa (no bloquea).
|
|
5
|
+
*/
|
|
6
|
+
type __VLS_Props = {
|
|
7
|
+
fila: FilaHomologacion;
|
|
8
|
+
conceptos: ConceptoSeguridadSocial[];
|
|
9
|
+
/** Cliente elegido en la barra (null = todo el tenant). */
|
|
10
|
+
clienteInterno: number | null;
|
|
11
|
+
/** Rol admin del portal: solo él cambia la homologación. */
|
|
12
|
+
puedeEditar: boolean;
|
|
13
|
+
/** Otra fila se está guardando. */
|
|
14
|
+
ocupado: boolean;
|
|
15
|
+
/** La fila se está guardando. */
|
|
16
|
+
guardando: boolean;
|
|
17
|
+
/** Se puede editar el tipo (permiso o tipo de solicitud) desde la fila. */
|
|
18
|
+
editableTipo: boolean;
|
|
19
|
+
};
|
|
20
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
21
|
+
guardar: (idconceptonovedad: number | null) => any;
|
|
22
|
+
heredar: () => any;
|
|
23
|
+
editar: () => any;
|
|
24
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
25
|
+
onGuardar?: ((idconceptonovedad: number | null) => any) | undefined;
|
|
26
|
+
onHeredar?: (() => any) | undefined;
|
|
27
|
+
onEditar?: (() => any) | undefined;
|
|
28
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
29
|
+
declare const _default: typeof __VLS_export;
|
|
30
|
+
export default _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type TipoPermisoPortal } from '../../services/homologacion.service';
|
|
2
|
+
import './homologacion.css';
|
|
3
|
+
type __VLS_Props = {
|
|
4
|
+
/** null = crear. */
|
|
5
|
+
permiso: TipoPermisoPortal | null;
|
|
6
|
+
clienteInterno: number | null;
|
|
7
|
+
nombreCliente: string;
|
|
8
|
+
};
|
|
9
|
+
type __VLS_ModelProps = {
|
|
10
|
+
/**
|
|
11
|
+
* Crear un permiso nuevo o editar uno existente, en SoftDIN (`TiposPermisoService`). Los de la ley se pueden mejorar
|
|
12
|
+
* (nombre, tope más alto, soporte, desactivar si no es obligatorio), nunca empeorar: lo demás lo fija la ley y aquí se
|
|
13
|
+
* ve bloqueado. SoftDIN vuelve a validar y responde 422 con el motivo si algo baja un mínimo de ley.
|
|
14
|
+
*/
|
|
15
|
+
'open': boolean;
|
|
16
|
+
};
|
|
17
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
18
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
19
|
+
"update:open": (value: boolean) => any;
|
|
20
|
+
guardado: (permiso: TipoPermisoPortal) => any;
|
|
21
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
22
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
23
|
+
onGuardado?: ((permiso: TipoPermisoPortal) => any) | undefined;
|
|
24
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
25
|
+
declare const _default: typeof __VLS_export;
|
|
26
|
+
export default _default;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type TipoSolicitudConSoporte } from '../../services/homologacion.service';
|
|
2
|
+
import './homologacion.css';
|
|
3
|
+
type __VLS_Props = {
|
|
4
|
+
/** null = crear. */
|
|
5
|
+
tipo: TipoSolicitudConSoporte | null;
|
|
6
|
+
clienteInterno: number | null;
|
|
7
|
+
/** Nombre de lo elegido en la barra, para decir a quién aplica. */
|
|
8
|
+
nombreCliente: string;
|
|
9
|
+
};
|
|
10
|
+
type __VLS_ModelProps = {
|
|
11
|
+
/**
|
|
12
|
+
* Crear o editar un tipo de solicitud nuevo del portal (los `t_…`). Se tramita como un permiso genérico: pasa por el
|
|
13
|
+
* flujo de aprobación y, al aprobarse, SoftDIN crea la novedad con el concepto que se le homologue. Primero se crea en
|
|
14
|
+
* SoftDIN y después en el portal: si SoftDIN falla, no se crea nada.
|
|
15
|
+
*/
|
|
16
|
+
'open': boolean;
|
|
17
|
+
};
|
|
18
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
19
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
20
|
+
"update:open": (value: boolean) => any;
|
|
21
|
+
guardado: (tipo: TipoSolicitudConSoporte) => any;
|
|
22
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
23
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
24
|
+
onGuardado?: ((tipo: TipoSolicitudConSoporte) => any) | undefined;
|
|
25
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
26
|
+
declare const _default: typeof __VLS_export;
|
|
27
|
+
export default _default;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ActorTipo, ResultadoAuditoria } from '../services/auditoria.service';
|
|
2
|
+
/** Textos de la auditoría del portal, como los ve RRHH. */
|
|
3
|
+
export declare const ACTORES_AUDITORIA: Record<ActorTipo, string>;
|
|
4
|
+
export declare const RESULTADOS_AUDITORIA: Record<ResultadoAuditoria, {
|
|
5
|
+
texto: string;
|
|
6
|
+
clase: string;
|
|
7
|
+
}>;
|
|
8
|
+
/** Fecha local `YYYY-MM-DD` (sin pasar por UTC, que en Colombia corre el día por la noche). */
|
|
9
|
+
export declare function fechaIso(d: Date): string;
|
|
10
|
+
/** Por defecto: los últimos 7 días contando hoy. */
|
|
11
|
+
export declare function rangoPorDefecto(hoy?: Date): {
|
|
12
|
+
desde: string;
|
|
13
|
+
hasta: string;
|
|
14
|
+
};
|
|
15
|
+
/** Mismo límite que el servidor: el rango no puede pasar de un año. */
|
|
16
|
+
export declare function errorRango(desde: string, hasta: string): string | null;
|
|
17
|
+
/**
|
|
18
|
+
* `2026-10-09 14:05:33.120` o `2026-10-09T14:05:33-05:00` → `09/10/2026 14:05:33`. Se lee el texto
|
|
19
|
+
* tal cual (ya viene en hora de Colombia): convertir con Date lo movería a la zona del navegador.
|
|
20
|
+
*/
|
|
21
|
+
export declare function fechaHora(valor: string | null): string;
|
|
22
|
+
/** Guarda un Blob como archivo con el nombre dado. */
|
|
23
|
+
export declare function descargarArchivo(blob: Blob, nombre: string): void;
|
|
24
|
+
/** El detalle saneado, legible: cada clave en su línea; objetos anidados como JSON con sangría. */
|
|
25
|
+
export declare function detalleLegible(detalle: unknown): [string, string][];
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convierte lo que RRHH sube a la cartelera del portal en las imágenes que se publican.
|
|
3
|
+
*
|
|
4
|
+
* - Un PDF se dibuja página por página (pdf.js) y cada una se vuelve una imagen.
|
|
5
|
+
* - Una imagen se reduce si es muy grande.
|
|
6
|
+
*
|
|
7
|
+
* Todo ocurre en el navegador: el servidor recibe solo imágenes listas para mostrarse en la
|
|
8
|
+
* app del empleado, sin visor de PDF y sin depender de programas en el servidor.
|
|
9
|
+
*/
|
|
10
|
+
export interface PaginaCartelera {
|
|
11
|
+
blob: Blob;
|
|
12
|
+
ancho: number;
|
|
13
|
+
alto: number;
|
|
14
|
+
/** URL local para la vista previa; liberar con `liberarPaginas`. */
|
|
15
|
+
url: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const MAX_PAGINAS = 30;
|
|
18
|
+
export declare const MAX_ARCHIVO_MB = 20;
|
|
19
|
+
export declare function esPdf(archivo: File): boolean;
|
|
20
|
+
export declare function esImagenAdmitida(archivo: File): boolean;
|
|
21
|
+
/** Revisa peso y tipo antes de convertir: dice qué es o lanza el motivo del rechazo. */
|
|
22
|
+
export declare function validarArchivo(archivo: File): 'pdf' | 'imagen';
|
|
23
|
+
/** Un PDF de más de `MAX_PAGINAS` páginas no se publica (el servidor tampoco lo acepta). */
|
|
24
|
+
export declare function validarCantidadPaginas(paginas: number): void;
|
|
25
|
+
export declare function convertirArchivo(archivo: File, alAvanzar?: (hecho: number, total: number) => void): Promise<PaginaCartelera[]>;
|
|
26
|
+
export declare function liberarPaginas(paginas: PaginaCartelera[]): void;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exportador nativo a Microsoft Excel (.xlsx) en TypeScript puro.
|
|
3
|
+
* Genera un archivo OpenXML (.xlsx) empaquetado en ZIP con compresión DEFLATE estándar.
|
|
4
|
+
* Se abre directamente en Microsoft Excel sin advertencias ni conversión de delimitadores.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Genera y descarga un archivo Microsoft Excel (.xlsx) nativo.
|
|
8
|
+
*/
|
|
9
|
+
export declare function exportRowsToXlsx(filename: string, headers: string[], rows: Array<Array<string | number | null | undefined>>, sheetName?: string): Promise<void>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { FormatoExportacion } from '../components/forms/ExportExcelButton.vue';
|
|
2
|
+
export type CeldaExportable = string | number | null | undefined;
|
|
3
|
+
/**
|
|
4
|
+
* Baja un listado en el formato que eligió quien pulsó el botón.
|
|
5
|
+
*
|
|
6
|
+
* Los dos formatos ya existían por separado (`exportRowsToExcelCsv` y
|
|
7
|
+
* `exportRowsToXlsx`); lo que faltaba era un sitio donde vivieran juntos. Cada
|
|
8
|
+
* pantalla que exporta repetía el mismo `if (formato === 'csv')`, y con más de
|
|
9
|
+
* cincuenta listados esa decisión —qué función va con qué formato, y que el
|
|
10
|
+
* `.xlsx` hay que esperarlo— se habría copiado cincuenta veces. Aquí se toma
|
|
11
|
+
* una sola vez y las vistas solo dicen qué datos quieren bajar.
|
|
12
|
+
*
|
|
13
|
+
* `hoja` nombra la pestaña del libro de Excel; el `.csv` no tiene pestañas y lo
|
|
14
|
+
* ignora. Sin ella, Excel abre el archivo con una pestaña llamada «Datos».
|
|
15
|
+
*/
|
|
16
|
+
export declare function exportarListado(formato: FormatoExportacion, archivo: string, encabezados: string[], filas: CeldaExportable[][], hoja?: string): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Valor de una celda para el archivo, no para la pantalla.
|
|
19
|
+
*
|
|
20
|
+
* En la tabla un dato ausente se pinta como «—» y un booleano como un
|
|
21
|
+
* interruptor; en una hoja de cálculo eso estorba: el guion largo no es un dato
|
|
22
|
+
* y hay que borrarlo a mano antes de sumar o filtrar. Aquí el vacío se queda
|
|
23
|
+
* vacío y el booleano se dice con palabras.
|
|
24
|
+
*/
|
|
25
|
+
export declare function celdaTexto(valor: unknown): string;
|
|
26
|
+
/**
|
|
27
|
+
* Lector de CSV citado (RFC 4180) con separador configurable.
|
|
28
|
+
*
|
|
29
|
+
* Hace falta para los listados que el servidor exporta por su cuenta: el
|
|
30
|
+
* archivo llega hecho CSV y, para ofrecer también `.xlsx`, hay que desarmarlo
|
|
31
|
+
* aquí en vez de volver a consultar la lista —que viene paginada y daría otra
|
|
32
|
+
* cosa—. Partir por `split(';')` rompía filas: los mensajes de error de la
|
|
33
|
+
* auditoría traen puntos y comas y saltos de línea dentro del campo, y el
|
|
34
|
+
* servidor los escribe entrecomillados.
|
|
35
|
+
*/
|
|
36
|
+
export declare function leerCsv(texto: string, separador: string): string[][];
|
|
37
|
+
/**
|
|
38
|
+
* Celda de un CSV ya leído, para que Excel la trate como número.
|
|
39
|
+
*
|
|
40
|
+
* El CSV llega todo como texto, y con «Duración (ms)» o «HTTP» en texto Excel
|
|
41
|
+
* no ordena ni suma esa columna. Solo se convierte lo que es exactamente un
|
|
42
|
+
* entero: los identificadores no son numéricos y las fechas van en ISO, así que
|
|
43
|
+
* ninguna de las dos se toca.
|
|
44
|
+
*/
|
|
45
|
+
export declare function celdaNumericaSiAplica(valor: string): string | number;
|
|
46
|
+
/** Lo máximo que se baja de un listado que vive en el servidor. */
|
|
47
|
+
export declare const TOPE_DE_EXPORTACION = 5000;
|
|
48
|
+
/**
|
|
49
|
+
* Junta todas las páginas de un listado paginado en el servidor.
|
|
50
|
+
*
|
|
51
|
+
* Las pantallas que piden páginas al backend solo tienen en memoria la que se
|
|
52
|
+
* está viendo, y un archivo con veinticinco filas de trescientas no es lo que
|
|
53
|
+
* pide quien exporta. Esto recorre las páginas con los mismos filtros hasta
|
|
54
|
+
* juntarlas todas, con un tope para que un listado enorme no deje el navegador
|
|
55
|
+
* pidiendo páginas durante minutos; `recortado` avisa cuando ese tope actuó, y
|
|
56
|
+
* quien llama lo dice en pantalla en vez de dejar creer que bajó todo.
|
|
57
|
+
*/
|
|
58
|
+
export declare function reunirPaginas<T>(pedirPagina: (pagina: number, porPagina: number) => Promise<{
|
|
59
|
+
data: T[];
|
|
60
|
+
meta: {
|
|
61
|
+
total: number;
|
|
62
|
+
last_page: number;
|
|
63
|
+
};
|
|
64
|
+
}>, tope?: number): Promise<{
|
|
65
|
+
filas: T[];
|
|
66
|
+
total: number;
|
|
67
|
+
recortado: boolean;
|
|
68
|
+
}>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ConceptoSeguridadSocial, FilaHomologacion, GrupoHomologacion, LineaParentesco, PeriodoTopePermiso, TipoPermisoPortal, TipoSolicitudConSoporte, UnidadPermiso } from '../services/homologacion.service';
|
|
2
|
+
/** Grupos de la pantalla «Homologación», en el orden en que se muestran. */
|
|
3
|
+
export declare const GRUPOS_HOMOLOGACION: {
|
|
4
|
+
grupo: GrupoHomologacion;
|
|
5
|
+
titulo: string;
|
|
6
|
+
}[];
|
|
7
|
+
/** `IGE (45)`; si no es una de las conocidas, el nombre que mande SoftDIN con algún concepto de esa variable. */
|
|
8
|
+
export declare function nombreVariable(variable: number | null | undefined, conceptos?: ConceptoSeguridadSocial[]): string;
|
|
9
|
+
/** Texto del concepto en el combo: código – nombre – variable. */
|
|
10
|
+
export declare function textoConcepto(c: ConceptoSeguridadSocial, conceptos?: ConceptoSeguridadSocial[]): string;
|
|
11
|
+
/**
|
|
12
|
+
* Aviso (no bloquea) cuando el concepto elegido no liquida con la variable que exige la PILA para la fila, p. ej. una
|
|
13
|
+
* incapacidad laboral (IRP) homologada con un concepto IGE. SoftDIN guarda la misma advertencia al guardar.
|
|
14
|
+
*/
|
|
15
|
+
export declare function avisoVariable(fila: Pick<FilaHomologacion, 'nombre' | 'variable_esperada'>, concepto: ConceptoSeguridadSocial | null | undefined, conceptos?: ConceptoSeguridadSocial[]): string | null;
|
|
16
|
+
/** Los tipos de solicitud que crea el administrador del portal llevan el prefijo `t_`. */
|
|
17
|
+
export declare function esTipoNuevo(tipo: string): boolean;
|
|
18
|
+
/** Clave de homologación de un tipo de solicitud nuevo, y al revés. */
|
|
19
|
+
export declare function claveDeTipo(tipo: string): string;
|
|
20
|
+
export declare function tipoDeClave(clave: string): string | null;
|
|
21
|
+
/** Cuándo pide soporte un tipo de solicitud nuevo, para las tablas. */
|
|
22
|
+
export declare function soporteDeTipoNuevo(t: Pick<TipoSolicitudConSoporte, 'requiere_soporte' | 'plazo_soporte_dias'>): string;
|
|
23
|
+
export declare const UNIDADES_PERMISO: {
|
|
24
|
+
valor: UnidadPermiso;
|
|
25
|
+
texto: string;
|
|
26
|
+
}[];
|
|
27
|
+
export declare const PERIODOS_TOPE: {
|
|
28
|
+
valor: PeriodoTopePermiso;
|
|
29
|
+
texto: string;
|
|
30
|
+
}[];
|
|
31
|
+
/** Líneas de parentesco (Código Civil, arts. 35 a 50) y el grado máximo que se puede pedir en cada una. */
|
|
32
|
+
export declare const LINEAS_PARENTESCO: {
|
|
33
|
+
linea: LineaParentesco;
|
|
34
|
+
texto: string;
|
|
35
|
+
maximo: number;
|
|
36
|
+
}[];
|
|
37
|
+
/**
|
|
38
|
+
* El permiso sale de la plantilla de la ley (tal cual o ajustado): se mejora, no se empeora, y solo se ajustan
|
|
39
|
+
* nombre, tope, soporte y si está activo. Los propios (del cliente o creados en el portal) se cambian completos.
|
|
40
|
+
*/
|
|
41
|
+
export declare function esPermisoDeLey(p: Pick<TipoPermisoPortal, 'origen' | 'legal'>): boolean;
|