void;
+ irDireccion: () => void;
+ irProgramas: () => void;
+ irConfig: () => void;
+ guardar: () => void;
+ cancelar: () => void;
+}): ShortcutDef[] => [
+ {
+ key: 'Alt+Digit1',
+ description: 'Tab General',
+ action: acciones.irGeneral
+ },
+ {
+ key: 'Alt+Digit2',
+ description: 'Tab Dirección',
+ action: acciones.irDireccion
+ },
+ {
+ key: 'Alt+Digit3',
+ description: 'Tab Programas',
+ action: acciones.irProgramas
+ },
+ {
+ key: 'Alt+Digit4',
+ description: 'Tab Configuración',
+ action: acciones.irConfig
+ },
+ {
+ key: 'Ctrl+S',
+ description: 'Guardar',
+ action: acciones.guardar
+ },
+ {
+ key: 'Escape',
+ description: 'Cancelar / Volver',
+ action: acciones.cancelar
+ }
+ ];
diff --git a/frontend/src/lib/config/shortcuts/dashboard/clients_and_providers/list.ts b/frontend/src/lib/config/shortcuts/dashboard/clients_and_providers/list.ts
new file mode 100644
index 00000000..6de7f9f2
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/clients_and_providers/list.ts
@@ -0,0 +1,38 @@
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaSocios = (acciones: {
+ filtrarTodos: () => void;
+ filtrarClientes: () => void;
+ filtrarProveedores: () => void;
+ nuevo: () => void;
+ recargar: () => void;
+}): ShortcutDef[] => [
+ {
+ key: 'Alt+Digit1',
+ description: 'Ver Todos',
+ action: acciones.filtrarTodos,
+ context: 'Clients Providers Navigation'
+ },
+ {
+ key: 'Alt+Digit2',
+ description: 'Ver Clientes',
+ action: acciones.filtrarClientes,
+ context: 'Clients Providers Navigation'
+ },
+ {
+ key: 'Alt+Digit3',
+ description: 'Ver Proveedores',
+ action: acciones.filtrarProveedores,
+ context: 'Clients Providers Navigation'
+ },
+ {
+ key: 'Alt+Shift+N',
+ description: 'Nuevo Socio',
+ action: acciones.nuevo
+ },
+ {
+ key: 'Alt+Shift+R',
+ description: 'Actualizar Lista',
+ action: acciones.recargar
+ }
+ ];
diff --git a/frontend/src/lib/config/shortcuts/customs-broker-edit-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/customs_brokers/edit.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/customs-broker-edit-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/customs_brokers/edit.ts
diff --git a/frontend/src/lib/config/shortcuts/customs-brokers-list-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/customs_brokers/list.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/customs-brokers-list-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/customs_brokers/list.ts
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/classification/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/classification/edit.ts
new file mode 100644
index 00000000..3aa6ba5f
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/classification/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioClasificacion = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/classification/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/classification/list.ts
new file mode 100644
index 00000000..8af6dc23
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/classification/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaClasificacion = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/common/factory.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/common/factory.ts
new file mode 100644
index 00000000..0f96d351
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/common/factory.ts
@@ -0,0 +1,86 @@
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+/**
+ * Reusable shortcuts for simple catalogs with a standard list and a create/edit dialog.
+ */
+export const obtenerAtajosCatalogoSimple = (acciones: {
+ manejarNuevo: () => void;
+ manejarActualizar: () => void;
+ manejarEditar?: () => void;
+ manejarEliminar?: () => void;
+}): ShortcutDef[] => {
+ const atajos: ShortcutDef[] = [
+ {
+ key: 'Alt+Shift+N',
+ description: 'Nuevo Registro',
+ action: acciones.manejarNuevo
+ },
+ {
+ key: 'Alt+Shift+R',
+ description: 'Actualizar Lista',
+ action: acciones.manejarActualizar
+ }
+ ];
+
+ if (acciones.manejarEditar) {
+ atajos.push({
+ key: 'Alt+Shift+E',
+ description: 'Editar Seleccionado',
+ action: acciones.manejarEditar
+ });
+ }
+
+ if (acciones.manejarEliminar) {
+ atajos.push({
+ key: 'Alt+Shift+D',
+ description: 'Eliminar Seleccionado',
+ action: acciones.manejarEliminar
+ });
+ }
+
+ return atajos;
+};
+
+/**
+ * Reusable shortcuts for dialogs/forms within catalogs.
+ */
+export const obtenerAtajosDialogoCatalogo = (acciones: {
+ manejarGuardar: () => void;
+ manejarCerrar: () => void;
+ cambiarPestana?: (pestana: string) => void;
+ pestanas?: string[];
+}): ShortcutDef[] => {
+ const atajos: ShortcutDef[] = [
+ {
+ key: 'Control+KeyS',
+ description: 'Guardar',
+ action: (e: any) => {
+ if (e && typeof e.preventDefault === 'function') {
+ e.preventDefault();
+ }
+ acciones.manejarGuardar();
+ }
+ },
+ {
+ key: 'Escape',
+ description: 'Cerrar / Cancelar',
+ action: acciones.manejarCerrar
+ }
+ ];
+
+ // Add Alt+DigitN for tab switching if applicable
+ if (acciones.cambiarPestana && acciones.pestanas) {
+ acciones.pestanas.forEach((pestana, index) => {
+ const digit = index + 1;
+ if (digit <= 9) {
+ atajos.push({
+ key: `Alt+Digit${digit}`,
+ description: `Pestaña ${pestana}`,
+ action: () => acciones.cambiarPestana!(pestana)
+ });
+ }
+ });
+ }
+
+ return atajos;
+};
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/company_information/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/company_information/edit.ts
new file mode 100644
index 00000000..4abae76c
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/company_information/edit.ts
@@ -0,0 +1,25 @@
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioEmpresa = (acciones: {
+ cambiarPestana: (pestana: string) => void;
+ manejarGuardar: () => void;
+ manejarCerrar: () => void;
+}): ShortcutDef[] => [
+ { key: 'Alt+Digit1', description: 'Pestaña General', action: () => acciones.cambiarPestana('general') },
+ { key: 'Alt+Digit2', description: 'Pestaña Programas', action: () => acciones.cambiarPestana('programas') },
+ { key: 'Alt+Digit3', description: 'Pestaña Responsable', action: () => acciones.cambiarPestana('responsable') },
+ { key: 'Alt+Digit4', description: 'Pestaña Config', action: () => acciones.cambiarPestana('config') },
+ {
+ key: 'Control+KeyS',
+ description: 'Guardar Empresa',
+ action: (e) => {
+ e.preventDefault();
+ acciones.manejarGuardar();
+ }
+ },
+ {
+ key: 'Escape',
+ description: 'Cerrar / Cancelar',
+ action: acciones.manejarCerrar
+ }
+ ];
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/company_information/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/company_information/list.ts
new file mode 100644
index 00000000..948daa8f
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/company_information/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaEmpresa = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/concepts/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/concepts/edit.ts
new file mode 100644
index 00000000..af2d719e
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/concepts/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioConceptos = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/concepts/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/concepts/list.ts
new file mode 100644
index 00000000..8a568c18
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/concepts/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaConceptos = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/customs_broker_concepts/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/customs_broker_concepts/edit.ts
new file mode 100644
index 00000000..36837de7
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/customs_broker_concepts/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioConceptosAA = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/customs_broker_concepts/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/customs_broker_concepts/list.ts
new file mode 100644
index 00000000..9bf5f4b7
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/customs_broker_concepts/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaConceptosAA = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/doda/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/doda/edit.ts
new file mode 100644
index 00000000..4038a9c5
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/doda/edit.ts
@@ -0,0 +1,27 @@
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioDoda = (acciones: {
+ cambiarPestana: (pestana: string) => void;
+ manejarGuardar: () => void;
+ manejarCerrar: () => void;
+}): ShortcutDef[] => [
+ { key: 'Alt+Digit1', description: 'Pestaña General', action: () => acciones.cambiarPestana('general') },
+ { key: 'Alt+Digit2', description: 'Pestaña Aduana/Transp.', action: () => acciones.cambiarPestana('transport') },
+ { key: 'Alt+Digit3', description: 'Pestaña SAT / Digital', action: () => acciones.cambiarPestana('sat') },
+ { key: 'Alt+Digit4', description: 'Pestaña Otros', action: () => acciones.cambiarPestana('other') },
+ {
+ key: 'Control+KeyS',
+ description: 'Guardar DODA',
+ action: (e: any) => {
+ if (e && typeof e.preventDefault === 'function') {
+ e.preventDefault();
+ }
+ acciones.manejarGuardar();
+ }
+ },
+ {
+ key: 'Escape',
+ description: 'Cerrar / Cancelar',
+ action: acciones.manejarCerrar
+ }
+ ];
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/doda/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/doda/list.ts
new file mode 100644
index 00000000..6b9340bc
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/doda/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaDoda = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/electronic_notices/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/electronic_notices/edit.ts
new file mode 100644
index 00000000..e19c79f0
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/electronic_notices/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioAvisosElectrónicos = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/electronic_notices/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/electronic_notices/list.ts
new file mode 100644
index 00000000..960b1908
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/electronic_notices/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaAvisosElectrónicos = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/equivalencies/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/equivalencies/edit.ts
new file mode 100644
index 00000000..0a13bdf4
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/equivalencies/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioEquivalencias = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/equivalencies/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/equivalencies/list.ts
new file mode 100644
index 00000000..7babea2f
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/equivalencies/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaEquivalencias = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/error_catalogs/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/error_catalogs/edit.ts
new file mode 100644
index 00000000..b6266a1c
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/error_catalogs/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioErrores = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/error_catalogs/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/error_catalogs/list.ts
new file mode 100644
index 00000000..692aff5a
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/error_catalogs/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaErrores = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/exchange_rate/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/exchange_rate/edit.ts
new file mode 100644
index 00000000..d9800868
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/exchange_rate/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioTiposCambio = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/exchange_rate/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/exchange_rate/list.ts
new file mode 100644
index 00000000..37b9e0f6
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/exchange_rate/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaTiposCambio = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/identifiers/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/identifiers/edit.ts
new file mode 100644
index 00000000..8e922f56
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/identifiers/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioIdentificadores = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/identifiers/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/identifiers/list.ts
new file mode 100644
index 00000000..6a33eb6f
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/identifiers/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaIdentificadores = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/inpc/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/inpc/edit.ts
new file mode 100644
index 00000000..cf913392
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/inpc/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioInpc = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/inpc/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/inpc/list.ts
new file mode 100644
index 00000000..478d9fe3
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/inpc/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaInpc = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/legends/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/legends/edit.ts
new file mode 100644
index 00000000..96255546
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/legends/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioLeyendas = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/legends/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/legends/list.ts
new file mode 100644
index 00000000..4c1de30b
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/legends/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaLeyendas = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/locations/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/locations/edit.ts
new file mode 100644
index 00000000..2c3bed63
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/locations/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioLocalidades = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/locations/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/locations/list.ts
new file mode 100644
index 00000000..0a0e0cf0
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/locations/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaLocalidades = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/multi_currency_types/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/multi_currency_types/edit.ts
new file mode 100644
index 00000000..763562b4
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/multi_currency_types/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioMonedas = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/multi_currency_types/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/multi_currency_types/list.ts
new file mode 100644
index 00000000..64bf8618
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/multi_currency_types/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaMonedas = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/packages/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/packages/edit.ts
new file mode 100644
index 00000000..ffcce569
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/packages/edit.ts
@@ -0,0 +1,7 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioBultos = (acciones: {
+ manejarGuardar: () => void;
+ manejarCerrar: () => void;
+}): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/packages/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/packages/list.ts
new file mode 100644
index 00000000..a4406d24
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/packages/list.ts
@@ -0,0 +1,9 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaBultos = (acciones: {
+ manejarNuevo: () => void;
+ manejarActualizar: () => void;
+ manejarEditar: () => void;
+ manejarEliminar: () => void;
+}): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/ports/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/ports/edit.ts
new file mode 100644
index 00000000..883606b3
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/ports/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioPuertos = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/ports/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/ports/list.ts
new file mode 100644
index 00000000..1582bdf1
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/ports/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaPuertos = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/prevalidators/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/prevalidators/edit.ts
new file mode 100644
index 00000000..9f9e7814
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/prevalidators/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioPrevalidadores = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/prevalidators/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/prevalidators/list.ts
new file mode 100644
index 00000000..7e1c6942
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/prevalidators/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaPrevalidadores = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/seal/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/seal/edit.ts
new file mode 100644
index 00000000..5c4f9f39
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/seal/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioSellos = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/seal/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/seal/list.ts
new file mode 100644
index 00000000..deac562f
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/seal/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaSellos = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/signatures/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/signatures/edit.ts
new file mode 100644
index 00000000..b76a85e3
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/signatures/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioFirmas = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/signatures/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/signatures/list.ts
new file mode 100644
index 00000000..28cc6f5b
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/signatures/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaFirmas = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/tariff_fractions/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/tariff_fractions/list.ts
new file mode 100644
index 00000000..2bdf7dda
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/tariff_fractions/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaFracciones = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/unit_conversions/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/unit_conversions/edit.ts
new file mode 100644
index 00000000..f161967d
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/unit_conversions/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioConversiones = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/unit_conversions/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/unit_conversions/list.ts
new file mode 100644
index 00000000..5c166e9e
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/unit_conversions/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaConversiones = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/ace/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/ace/edit.ts
new file mode 100644
index 00000000..263e2113
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/ace/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioUnidadesACE = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/ace/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/ace/list.ts
new file mode 100644
index 00000000..a3b96992
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/ace/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaUnidadesACE = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/american/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/american/edit.ts
new file mode 100644
index 00000000..565aa5d3
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/american/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioUnidadesAmericanas = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/american/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/american/list.ts
new file mode 100644
index 00000000..0e971645
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/american/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaUnidadesAmericanas = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/commercial/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/commercial/edit.ts
new file mode 100644
index 00000000..cc5f17a4
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/commercial/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioUnidadesComerciales = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/commercial/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/commercial/list.ts
new file mode 100644
index 00000000..bcdcccac
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/commercial/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaUnidadesComerciales = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/customs/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/customs/edit.ts
new file mode 100644
index 00000000..c3708127
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/customs/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioUnidadesAduanas = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/customs/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/customs/list.ts
new file mode 100644
index 00000000..a0ac6a51
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/customs/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaUnidadesAduanas = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/general/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/general/edit.ts
new file mode 100644
index 00000000..54dfcea2
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/general/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioUnidadesGeneral = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/general/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/general/list.ts
new file mode 100644
index 00000000..df85c464
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/general/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaUnidadesGeneral = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/oma/edit.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/oma/edit.ts
new file mode 100644
index 00000000..ac0a00c8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/oma/edit.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosDialogoCatalogo } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosFormularioUnidadesOMA = (acciones: any): ShortcutDef[] => obtenerAtajosDialogoCatalogo(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/oma/list.ts b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/oma/list.ts
new file mode 100644
index 00000000..ee37948c
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/general_catalogs/units_of_measure/oma/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosCatalogoSimple } from '$lib/config/shortcuts/dashboard/general_catalogs/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosListaUnidadesOMA = (acciones: any): ShortcutDef[] => obtenerAtajosCatalogoSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/goods-edit-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/goods/edit.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/goods-edit-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/goods/edit.ts
diff --git a/frontend/src/lib/config/shortcuts/goods-list-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/goods/list.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/goods-list-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/goods/list.ts
diff --git a/frontend/src/lib/config/shortcuts/invoice-edit-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/invoices/edit.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/invoice-edit-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/invoices/edit.ts
diff --git a/frontend/src/lib/config/shortcuts/invoice-item-fa-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/invoices/item/fixed_asset.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/invoice-item-fa-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/invoices/item/fixed_asset.ts
diff --git a/frontend/src/lib/config/shortcuts/invoice-item-inv-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/invoices/item/inventory.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/invoice-item-inv-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/invoices/item/inventory.ts
diff --git a/frontend/src/lib/config/shortcuts/invoice-item-list-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/invoices/item/list.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/invoice-item-list-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/invoices/item/list.ts
diff --git a/frontend/src/lib/config/shortcuts/invoice-list-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/invoices/list.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/invoice-list-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/invoices/list.ts
diff --git a/frontend/src/lib/config/shortcuts/pedimento-edit-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/pedimentos/edit.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/pedimento-edit-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/pedimentos/edit.ts
diff --git a/frontend/src/lib/config/shortcuts/pedimento-list-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/pedimentos/list.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/pedimento-list-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/pedimentos/list.ts
diff --git a/frontend/src/lib/config/shortcuts/contributions-tab-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/pedimentos/tabs/contributions.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/contributions-tab-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/pedimentos/tabs/contributions.ts
diff --git a/frontend/src/lib/config/shortcuts/general-tab-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/pedimentos/tabs/general.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/general-tab-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/pedimentos/tabs/general.ts
diff --git a/frontend/src/lib/config/shortcuts/other-data-shortcuts.ts b/frontend/src/lib/config/shortcuts/dashboard/pedimentos/tabs/other_data.ts
similarity index 100%
rename from frontend/src/lib/config/shortcuts/other-data-shortcuts.ts
rename to frontend/src/lib/config/shortcuts/dashboard/pedimentos/tabs/other_data.ts
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/code_pedimento_regimens/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/code_pedimento_regimens/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/code_pedimento_regimens/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/common/factory.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/common/factory.ts
new file mode 100644
index 00000000..562c133e
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/common/factory.ts
@@ -0,0 +1,22 @@
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+/**
+ * Reusable shortcuts for simple reference data catalogs.
+ */
+export const obtenerAtajosReferenceDataSimple = (acciones: {
+ manejarNuevo: () => void;
+ manejarActualizar: () => void;
+}): ShortcutDef[] => {
+ return [
+ {
+ key: 'Alt+Shift+N',
+ description: 'Nuevo Registro',
+ action: acciones.manejarNuevo
+ },
+ {
+ key: 'Alt+Shift+R',
+ description: 'Actualizar Lista',
+ action: acciones.manejarActualizar
+ }
+ ];
+};
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/containers/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/containers/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/containers/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/countries/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/countries/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/countries/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/currency_types/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/currency_types/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/currency_types/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/customs_sections/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/customs_sections/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/customs_sections/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/customs_warehouses/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/customs_warehouses/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/customs_warehouses/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/incoterms/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/incoterms/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/incoterms/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/invoice_types/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/invoice_types/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/invoice_types/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/material_types/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/material_types/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/material_types/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/payment_methods/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/payment_methods/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/payment_methods/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/pedimento_codes/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/pedimento_codes/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/pedimento_codes/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/pedimento_regimens/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/pedimento_regimens/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/pedimento_regimens/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/sectors/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/sectors/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/sectors/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/states/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/states/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/states/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/transport_modes/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/transport_modes/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/transport_modes/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/transport_types/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/transport_types/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/transport_types/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/config/shortcuts/dashboard/reference_data/valuation_methods/list.ts b/frontend/src/lib/config/shortcuts/dashboard/reference_data/valuation_methods/list.ts
new file mode 100644
index 00000000..71b48bd8
--- /dev/null
+++ b/frontend/src/lib/config/shortcuts/dashboard/reference_data/valuation_methods/list.ts
@@ -0,0 +1,4 @@
+import { obtenerAtajosReferenceDataSimple } from '$lib/config/shortcuts/dashboard/reference_data/common/factory';
+import type { ShortcutDef } from '$lib/stores/shortcut-store';
+
+export const obtenerAtajosLista = (acciones: any): ShortcutDef[] => obtenerAtajosReferenceDataSimple(acciones);
diff --git a/frontend/src/lib/hooks/use-shortcuts.ts b/frontend/src/lib/hooks/use-shortcuts.ts
index bd0cc204..c9776d1e 100644
--- a/frontend/src/lib/hooks/use-shortcuts.ts
+++ b/frontend/src/lib/hooks/use-shortcuts.ts
@@ -1,14 +1,30 @@
import { onMount, onDestroy } from 'svelte';
import { shortcutStore, type ShortcutDef } from '$lib/stores/shortcut-store';
+import { page } from '$app/stores';
+import { get } from 'svelte/store';
+import { browser } from '$app/environment';
/**
* Hook to register shortcuts for a component lifecycle.
+ * Only works when user is authenticated (inside /dashboard routes).
* @param context Name of the context (e.g., 'Goods List')
* @param shortcuts Array of shortcut definitions
*/
export function useShortcuts(context: string, shortcuts: ShortcutDef[]) {
onMount(() => {
- shortcutStore.register(context, shortcuts);
+ // Solo registrar atajos si estamos en una ruta autenticada
+ if (!browser) return;
+
+ const currentPath = get(page)?.url?.pathname || '';
+ const isAuthenticatedRoute = currentPath.startsWith('/dashboard');
+
+ // Verificar también que haya un token de acceso
+ const hasAccessToken = document.cookie.includes('access_token=') ||
+ localStorage.getItem('access_token');
+
+ if (isAuthenticatedRoute && hasAccessToken) {
+ shortcutStore.register(context, shortcuts);
+ }
});
onDestroy(() => {
diff --git a/frontend/src/lib/server/api.ts b/frontend/src/lib/server/api.ts
index 19ed846f..a338dc06 100644
--- a/frontend/src/lib/server/api.ts
+++ b/frontend/src/lib/server/api.ts
@@ -156,7 +156,7 @@ export async function authenticatedFetch(
}
// Construir URL completa
- const url = endpoint.startsWith('http') ? endpoint : `${baseUrl}${endpoint}`;
+ const url = endpoint.startsWith('http') ? endpoint : `${baseUrl}${endpoint}`;
// Crear AbortController para timeout
const controller = new AbortController();
@@ -171,7 +171,7 @@ export async function authenticatedFetch(
const headers = isFormData
? { 'Authorization': `Bearer ${accessToken}`, ...(options.headers as Record
|| {}) }
: createAuthHeaders(accessToken, options.headers as Record);
-
+
let response = await fetch(url, {
...options,
headers,
@@ -202,7 +202,7 @@ export async function authenticatedFetch(
const newHeaders = isFormData
? { 'Authorization': `Bearer ${newToken}`, ...(options.headers as Record || {}) }
: createAuthHeaders(newToken, options.headers as Record);
-
+
response = await fetch(url, {
...options,
headers: newHeaders,
@@ -263,7 +263,7 @@ export async function validateAuth(
}
const keycloakData = await response.json();
-
+
// Obtener perfil adicional del usuario (avatar, bio, etc.)
try {
const profileResponse = await authenticatedFetch(
@@ -272,7 +272,7 @@ export async function validateAuth(
cookies,
fetch
);
-
+
if (profileResponse.ok) {
const profileData = await profileResponse.json();
// Combinar datos de Keycloak con datos del perfil
@@ -287,7 +287,7 @@ export async function validateAuth(
} catch (profileError) {
console.warn('⚠️ [API] No se pudo cargar el perfil del usuario, usando solo datos de Keycloak');
}
-
+
return keycloakData;
} catch (error) {
// Si es un redirect, re-lanzarlo
@@ -365,14 +365,14 @@ export async function handleApiResponse(
if (response.status === 204) {
return { data: null as T };
}
-
+
const data = await response.json();
return { data };
}
// Manejar errores
const errorData = await response.json().catch(() => ({ detail: 'Error desconocido' }));
-
+
const error = {
detail: errorData.detail || errorData.message || 'Error en la petición',
status: response.status,
diff --git a/frontend/src/routes/dashboard/clients_and_providers/+page.svelte b/frontend/src/routes/dashboard/clients_and_providers/+page.svelte
index 173101a7..f38de0c8 100644
--- a/frontend/src/routes/dashboard/clients_and_providers/+page.svelte
+++ b/frontend/src/routes/dashboard/clients_and_providers/+page.svelte
@@ -3,7 +3,10 @@
import { browser } from '$app/environment';
import { goto } from '$app/navigation';
import { page } from '$app/stores';
- import { clientsProvidersApi, type ClientProvider } from '$lib/api/dashboard/a76/clients-providers';
+ import {
+ clientsProvidersApi,
+ type ClientProvider
+ } from '$lib/api/dashboard/a76/clients-providers';
import { Button } from '$lib/components/ui/button';
import * as Card from '$lib/components/ui/card';
import { Input } from '$lib/components/ui/input';
@@ -21,7 +24,7 @@
let items = $state(data.items || []);
let selectedItem = $state(null);
let isLoading = $state(false);
-
+
// Server-side filtering/pagination parameters
let currentPage = $state(data.page || 1);
let pageSize = $state(50);
@@ -37,7 +40,7 @@
let error = $state(data.error || null);
// --- Lifecycle ---
-
+
onMount(() => {
if (browser) {
// Sincronizar token de cookies a localStorage si es necesario
@@ -49,7 +52,8 @@
};
const cookieToken = getCookie('access_token');
const localToken = localStorage.getItem('access_token');
- if (cookieToken && cookieToken !== localToken) localStorage.setItem('access_token', cookieToken);
+ if (cookieToken && cookieToken !== localToken)
+ localStorage.setItem('access_token', cookieToken);
// Listen for company changes
const handleCompanyChange = () => loadItems(1); // Reload from page 1
@@ -68,9 +72,9 @@
try {
const filters: any = {};
if (searchType !== 'both') filters.type = searchType;
- // Note: The API technically supports name/rfc fitlering if backend implements it.
- // Assuming backend supports 'name' and 'rfc' query params based on standard patterns,
- // or we filter client side if the list is small.
+ // Note: The API technically supports name/rfc fitlering if backend implements it.
+ // Assuming backend supports 'name' and 'rfc' query params based on standard patterns,
+ // or we filter client side if the list is small.
// Given pagination, we should try sending them. If backend ignores them, we might need client filtering.
// Ideally backend should handle this. I will assume backend filters for now or add query params.
if (searchName) filters.name = searchName;
@@ -105,7 +109,7 @@
searchType = value;
loadItems(1);
}
-
+
function handleSearch() {
loadItems(1);
}
@@ -118,10 +122,13 @@
if (selectedItem) goto(`/dashboard/clients_and_providers/edit/${selectedItem.id}`);
}
+ import { useShortcuts } from '$lib/hooks/use-shortcuts';
+ import { obtenerAtajosListaSocios } from '$lib/config/shortcuts/dashboard/clients_and_providers/list';
+
async function handleDelete() {
if (!selectedItem || !companyStore.activeCompany?.id) return;
if (!confirm('¿Estás seguro de eliminar este registro?')) return;
-
+
try {
await clientsProvidersApi.delete(selectedItem.id, companyStore.activeCompany.id);
toast.success('Registro eliminado');
@@ -132,6 +139,16 @@
}
}
+ useShortcuts(
+ 'Clients Providers List',
+ obtenerAtajosListaSocios({
+ filtrarTodos: () => handleTypeChange('both'),
+ filtrarClientes: () => handleTypeChange('client'),
+ filtrarProveedores: () => handleTypeChange('provider'),
+ nuevo: () => goto('/dashboard/clients_and_providers/edit/new'),
+ recargar: () => loadItems(1)
+ })
+ );
@@ -145,7 +162,9 @@
{#if error}
-
+
Error
@@ -168,18 +187,18 @@
Nombre / Razón Social
- e.key === 'Enter' && handleSearch()}
/>
RFC
- e.key === 'Enter' && handleSearch()}
/>
@@ -188,7 +207,11 @@
Tipo
- {searchType === 'both' ? 'Todos' : searchType === 'client' ? 'Clientes' : 'Proveedores'}
+ {searchType === 'both'
+ ? 'Todos'
+ : searchType === 'client'
+ ? 'Clientes'
+ : 'Proveedores'}
Todos
@@ -234,13 +257,23 @@
{#if isLoading}
- Cargando...
+ Cargando...
{:else if items.length === 0}
- No se encontraron registros
+ No se encontraron registros
{:else}
{#each items as item (item.id)}
- selectItem(item)}
>
{item.id}
@@ -248,15 +281,28 @@
{item.name}
{#if item.client_or_provider === 'client'}
- Cliente
+ Cliente
{:else if item.client_or_provider === 'provider'}
- Proveedor
+ Proveedor
{:else}
- Ambos
+ Ambos
{/if}
-
+
{item.is_active ? 'Activo' : 'Inactivo'}
@@ -266,113 +312,140 @@
-
-
- loadItems(currentPage - 1)}
- >
- Anterior
-
-
- Página {currentPage} de {Math.ceil(totalItems / pageSize)}
-
- loadItems(currentPage + 1)}
- >
- Siguiente
-
-
+
+
+ loadItems(currentPage - 1)}
+ >
+ Anterior
+
+
+ Página {currentPage} de {Math.ceil(totalItems / pageSize)}
+
+ loadItems(currentPage + 1)}
+ >
+ Siguiente
+
+
-
+
-
Detalles del Registro
-
+
+ Detalles del Registro
+
+
{selectedItem?.name || '---'}
-
- {selectedItem?.rfc || ''}
-
+
+ {selectedItem?.rfc || ''}
+
{#if selectedItem}
-
-
- Tipo
-
-
{selectedItem.client_or_provider}
-
-
- {#if selectedItem.address}
-
-
- Dirección
-
-
-
{selectedItem.address.streets || ''} {selectedItem.address.exterior_number || ''} {selectedItem.address.interior_number ? 'Int ' + selectedItem.address.interior_number : ''}
-
{selectedItem.address.neighborhood || ''}
-
{selectedItem.address.city || ''}, {selectedItem.address.state || ''}
-
{selectedItem.address.postal_code || ''}, {selectedItem.address.country || ''}
-
-
-
-
-
- Contacto
-
- {#if selectedItem.address.email}
-
-
- {selectedItem.address.email}
-
- {/if}
- {#if selectedItem.address.phone}
-
-
-
{selectedItem.address.phone}
-
- {/if}
-
- {:else}
-
-
Sin dirección registrada
-
- {/if}
+
+
+ Tipo
+
+
{selectedItem.client_or_provider}
+
- {#if selectedItem.programs}
-
-
- Programas
-
-
-
- Programa
- {selectedItem.programs.program || '-'}
-
-
- Número
- {selectedItem.programs.program_number || '-'}
-
-
- TAX ID
- {selectedItem.programs.tax_id || '-'}
-
-
-
- {/if}
+ {#if selectedItem.address}
+
+
+ Dirección
+
+
+
+ {selectedItem.address.streets || ''}
+ {selectedItem.address.exterior_number || ''}
+ {selectedItem.address.interior_number
+ ? 'Int ' + selectedItem.address.interior_number
+ : ''}
+
+
{selectedItem.address.neighborhood || ''}
+
{selectedItem.address.city || ''}, {selectedItem.address.state || ''}
+
+ {selectedItem.address.postal_code || ''}, {selectedItem.address.country || ''}
+
+
+
+
+
+
+ Contacto
+
+ {#if selectedItem.address.email}
+
+
+ {selectedItem.address.email}
+
+ {/if}
+ {#if selectedItem.address.phone}
+
+
+
{selectedItem.address.phone}
+
+ {/if}
+
+ {:else}
+
+
Sin dirección registrada
+
+ {/if}
+
+ {#if selectedItem.programs}
+
+
+ Programas
+
+
+
+ Programa
+ {selectedItem.programs.program || '-'}
+
+
+ Número
+ {selectedItem.programs.program_number || '-'}
+
+
+ TAX ID
+ {selectedItem.programs.tax_id || '-'}
+
+
+
+ {/if}
{:else}
-
-
diff --git a/frontend/src/routes/dashboard/general_catalogs/electronic_notices/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/electronic_notices/+page.svelte
index 04b1d91a..3c3fa9f7 100644
--- a/frontend/src/routes/dashboard/general_catalogs/electronic_notices/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/electronic_notices/+page.svelte
@@ -1,86 +1,92 @@
-
-
-
Avisos Electrónicos
-
- Gestión del catálogo de avisos electrónicos
-
-
-
dialogOpen = true}>
-
- Nuevo Aviso
-
-
+
+
+
Avisos Electrónicos
+
Gestión del catálogo de avisos electrónicos
+
+
(dialogOpen = true)}>
+
+ Nuevo Aviso
+
+
-
+
-
-
-
+
+
+
-
+
diff --git a/frontend/src/routes/dashboard/general_catalogs/equivalencies/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/equivalencies/+page.svelte
index eba6d37e..af77bff5 100644
--- a/frontend/src/routes/dashboard/general_catalogs/equivalencies/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/equivalencies/+page.svelte
@@ -1,88 +1,94 @@
-
-
-
Equivalencias
-
- Catálogo de equivalencias
-
-
-
createDialogOpen = true}>
-
- Nueva Equivalencia
-
-
+
+
+
Equivalencias
+
Catálogo de equivalencias
+
+
(createDialogOpen = true)}>
+
+ Nueva Equivalencia
+
+
-
+
-
-
-
+
+
+
-
+
diff --git a/frontend/src/routes/dashboard/general_catalogs/error_catalogs/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/error_catalogs/+page.svelte
index d678fcd8..2472cbdf 100644
--- a/frontend/src/routes/dashboard/general_catalogs/error_catalogs/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/error_catalogs/+page.svelte
@@ -1,87 +1,89 @@
-
-
-
Errores de Facturación
-
- Gestión del catálogo de errores de facturación
-
-
-
dialogOpen = true}>
-
- Nuevo Error
-
-
+
+
+
Errores de Facturación
+
Gestión del catálogo de errores de facturación
+
+
(dialogOpen = true)}>
+
+ Nuevo Error
+
+
-
+
-
-
-
+
+
+
-
+
diff --git a/frontend/src/routes/dashboard/general_catalogs/exchange-rate/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/exchange-rate/+page.svelte
index 3fcf7201..d2c20235 100644
--- a/frontend/src/routes/dashboard/general_catalogs/exchange-rate/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/exchange-rate/+page.svelte
@@ -1,84 +1,90 @@
-
-
-
Tipos de Cambio
-
- Catálogo de tipos de cambio
-
-
-
createDialogOpen = true}>
-
- Nuevo Tipo de Cambio
-
-
+
+
+
Tipos de Cambio
+
Catálogo de tipos de cambio
+
+
(createDialogOpen = true)}>
+
+ Nuevo Tipo de Cambio
+
+
-
+
-
-
-
+
+
+
-
-
\ No newline at end of file
+
+
diff --git a/frontend/src/routes/dashboard/general_catalogs/exchange-rate/new/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/exchange-rate/new/+page.svelte
index acacddcb..85ce9a09 100644
--- a/frontend/src/routes/dashboard/general_catalogs/exchange-rate/new/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/exchange-rate/new/+page.svelte
@@ -1,140 +1,157 @@
- Nuevo Tipo de Cambio - Anexo 76
+ Nuevo Tipo de Cambio - Anexo 76
-
-
-
-
-
-
Nuevo Tipo de Cambio
-
Registra un nuevo tipo de cambio en el sistema
-
-
+
+
+
+
+
+
Nuevo Tipo de Cambio
+
Registra un nuevo tipo de cambio en el sistema
+
+
-
-
- { e.preventDefault(); handleSubmit(); }} class="space-y-6">
-
- {#if error}
-
- {error}
-
- {/if}
+
+
+ {
+ e.preventDefault();
+ handleSubmit();
+ }}
+ class="space-y-6"
+ >
+ {#if error}
+
+ {error}
+
+ {/if}
-
-
-
- Fecha *
-
-
-
-
Valor *
-
-
Hasta 6 decimales de precisión.
-
-
+
+
+
+ Fecha *
+
+
+
+
Valor *
+
+
Hasta 6 decimales de precisión.
+
+
-
-
+
+
-
-
- Cancelar
-
-
- {loading ? 'Guardando...' : 'Guardar Tipo de Cambio'}
-
-
-
-
-
-
\ No newline at end of file
+
+
+ Cancelar
+
+
+ {loading ? 'Guardando...' : 'Guardar Tipo de Cambio'}
+
+
+
+
+
+
diff --git a/frontend/src/routes/dashboard/general_catalogs/identifiers/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/identifiers/+page.svelte
index b7601978..31be43a1 100644
--- a/frontend/src/routes/dashboard/general_catalogs/identifiers/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/identifiers/+page.svelte
@@ -1,88 +1,90 @@
-
-
-
Identificadores
-
- Catálogo de identificadores
-
-
-
createDialogOpen = true}>
-
- Nuevo Identificador
-
-
+
+
+
Identificadores
+
Catálogo de identificadores
+
+
(createDialogOpen = true)}>
+
+ Nuevo Identificador
+
+
-
+
-
-
-
+
+
+
-
+
diff --git a/frontend/src/routes/dashboard/general_catalogs/inpc/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/inpc/+page.svelte
index 53b31c87..bc626c29 100644
--- a/frontend/src/routes/dashboard/general_catalogs/inpc/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/inpc/+page.svelte
@@ -1,88 +1,86 @@
-
-
-
INPC
-
- Índice Nacional de Precios al Consumidor
-
-
-
createDialogOpen = true}>
-
- Nuevo INPC
-
-
+
+
+
INPC
+
Índice Nacional de Precios al Consumidor
+
+
(createDialogOpen = true)}>
+
+ Nuevo INPC
+
+
-
+
-
-
-
+
+
+
-
+
diff --git a/frontend/src/routes/dashboard/general_catalogs/legends/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/legends/+page.svelte
index b22b3535..2c9ecc30 100644
--- a/frontend/src/routes/dashboard/general_catalogs/legends/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/legends/+page.svelte
@@ -1,88 +1,90 @@
-
-
-
Leyendas Fijas
-
- Gestión del catálogo de leyendas fijas
-
-
-
dialogOpen = true}>
-
- Nueva Leyenda
-
-
+
+
+
Leyendas Fijas
+
Gestión del catálogo de leyendas fijas
+
+
(dialogOpen = true)}>
+
+ Nueva Leyenda
+
+
-
+
-
-
-
+
+
+
-
+
diff --git a/frontend/src/routes/dashboard/general_catalogs/locations/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/locations/+page.svelte
index 9039059a..3d413e70 100644
--- a/frontend/src/routes/dashboard/general_catalogs/locations/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/locations/+page.svelte
@@ -1,87 +1,89 @@
-
-
-
Ubicaciones
-
- Catálogo de ubicaciones de puertos
-
-
-
dialogOpen = true}>
-
- Nueva Ubicación
-
-
+
+
+
Ubicaciones
+
Catálogo de ubicaciones de puertos
+
+
(dialogOpen = true)}>
+
+ Nueva Ubicación
+
+
-
+
-
-
-
+
+
+
-
-
\ No newline at end of file
+
+
diff --git a/frontend/src/routes/dashboard/general_catalogs/multi_currency_types/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/multi_currency_types/+page.svelte
index 7032e41a..1dbfa9d1 100644
--- a/frontend/src/routes/dashboard/general_catalogs/multi_currency_types/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/multi_currency_types/+page.svelte
@@ -1,92 +1,90 @@
-
-
-
Tipos de Moneda Múltiple
-
- Gestión del catálogo de tipos de moneda múltiple
-
-
-
dialogOpen = true}>
-
- Nuevo Tipo
-
-
+
+
+
Tipos de Moneda Múltiple
+
Gestión del catálogo de tipos de moneda múltiple
+
+
(dialogOpen = true)}>
+
+ Nuevo Tipo
+
+
-
+
-
-
-
+
+
+
-
+
diff --git a/frontend/src/routes/dashboard/general_catalogs/packages/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/packages/+page.svelte
index c340635c..12777b93 100644
--- a/frontend/src/routes/dashboard/general_catalogs/packages/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/packages/+page.svelte
@@ -1,88 +1,93 @@
-
-
-
Bultos y Embalajes
-
- Gestión del catálogo de bultos y embalajes
-
-
-
dialogOpen = true}>
-
- Nuevo Bulto
-
-
+
+
+
Bultos y Embalajes
+
Gestión del catálogo de bultos y embalajes
+
+
(createDialogOpen = true)}>
+
+ Nuevo Bulto
+
+
-
+
-
-
-
+
+
+
-
+
diff --git a/frontend/src/routes/dashboard/general_catalogs/ports/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/ports/+page.svelte
index c870f080..88c42d3c 100644
--- a/frontend/src/routes/dashboard/general_catalogs/ports/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/ports/+page.svelte
@@ -1,92 +1,98 @@
-
-
-
Puertos
-
Catálogo de puertos
-
-
createDialogOpen = true}>
-
- Nuevo Puerto
-
-
+
+
+
Puertos
+
Catálogo de puertos
+
+
(createDialogOpen = true)}>
+
+ Nuevo Puerto
+
+
- {#if data.items?.error}
-
- {data.items.error}
-
- {/if}
+ {#if data.items?.error}
+
+ {data.items.error}
+
+ {/if}
-
+
-
-
-
+
+
+
-
+
diff --git a/frontend/src/routes/dashboard/general_catalogs/prevalidators/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/prevalidators/+page.svelte
index cec55233..81899bfd 100644
--- a/frontend/src/routes/dashboard/general_catalogs/prevalidators/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/prevalidators/+page.svelte
@@ -1,85 +1,87 @@
-
-
-
Prevalidadores
-
- Catálogo de prevalidadores
-
-
-
dialogOpen = true}>
-
- Nuevo Prevalidador
-
-
+
+
+
Prevalidadores
+
Catálogo de prevalidadores
+
+
(dialogOpen = true)}>
+
+ Nuevo Prevalidador
+
+
-
+
-
-
-
+
+
+
-
+
diff --git a/frontend/src/routes/dashboard/general_catalogs/seal/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/seal/+page.svelte
index 017562bc..562bb586 100644
--- a/frontend/src/routes/dashboard/general_catalogs/seal/+page.svelte
+++ b/frontend/src/routes/dashboard/general_catalogs/seal/+page.svelte
@@ -9,6 +9,8 @@
import type { Seal } from '$lib/api/dashboard/a76/general_catalogs/seal';
import { getSeals } from '$lib/api/dashboard/a76/general_catalogs/seal';
import { companyStore } from '$lib/stores/company.svelte';
+ import { useShortcuts } from '$lib/hooks/use-shortcuts';
+ import { obtenerAtajosListaSellos } from '$lib/config/shortcuts/dashboard/general_catalogs/seal/list';
let allItems = $state([]);
let loading = $state(false);
@@ -18,6 +20,15 @@
let dialogOpen = $state(false);
+ // Atajos
+ useShortcuts(
+ 'Lista Sellos',
+ obtenerAtajosListaSellos({
+ manejarNuevo: handleCreate,
+ manejarActualizar: loadInitialData
+ })
+ );
+
// Filters
let sealFilter = $state('');
@@ -42,14 +53,14 @@
setTimeout(checkAndLoad, 100);
}
};
-
+
checkAndLoad();
// Listen for company changes
const handleCompanyChange = () => {
loadInitialData();
};
-
+
window.addEventListener('companyChanged', handleCompanyChange);
return () => {
@@ -126,9 +137,7 @@
Sellos
-
- Gestiona los sellos de tu empresa
-
+
Gestiona los sellos de tu empresa
@@ -153,18 +162,9 @@
-