From c84ad6c4db4276d8157c1b9100c7e0c77f408dac Mon Sep 17 00:00:00 2001 From: Horux Dev Date: Mon, 25 May 2026 16:57:10 +0000 Subject: [PATCH] feat(sidebar): Configuracion visible para auxiliar y cliente MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Sidebars/topnav: agrega 'auxiliar' y 'cliente' a la opción Configuracion - /configuracion/page.tsx: auxiliar y cliente solo ven Información de Usuario, Información de Empresa y Seguridad (cambio de contraseña). Todo lo demás (FIEL, Obligaciones, Notificaciones, Facturación, CSD) queda restringido a owner/cfo/supervisor --- .../app/(dashboard)/configuracion/page.tsx | 203 +++++++++--------- .../components/layouts/sidebar-compact.tsx | 2 +- .../components/layouts/sidebar-floating.tsx | 2 +- apps/web/components/layouts/sidebar.tsx | 2 +- apps/web/components/layouts/topnav.tsx | 2 +- 5 files changed, 108 insertions(+), 103 deletions(-) diff --git a/apps/web/app/(dashboard)/configuracion/page.tsx b/apps/web/app/(dashboard)/configuracion/page.tsx index b654db3..824cd4c 100644 --- a/apps/web/app/(dashboard)/configuracion/page.tsx +++ b/apps/web/app/(dashboard)/configuracion/page.tsx @@ -379,6 +379,7 @@ export default function ConfiguracionPage() { const empresaNombre = viewingTenantName || user?.tenantName; const isGlobalAdmin = isGlobalAdminRfc(user?.tenantRfc, user?.role, user?.platformRoles); const isDespacho = isDespachoTenant(user?.tenantRfc); + const showFullConfig = ['owner', 'cfo', 'supervisor'].includes(user?.role || ''); return ( <> @@ -456,88 +457,112 @@ export default function ConfiguracionPage() { ) )} - {/* SAT Configuration */} - - - - - - Sincronizacion SAT - - - Configura tu FIEL y la sincronizacion automatica de CFDIs con el SAT - - - -

- Descarga automaticamente tus facturas emitidas y recibidas directamente del portal del SAT. -

-
-
- + {showFullConfig && ( + <> + {/* SAT Configuration */} + + + + + + Sincronizacion SAT + + + Configura tu FIEL y la sincronizacion automatica de CFDIs con el SAT + + + +

+ Descarga automaticamente tus facturas emitidas y recibidas directamente del portal del SAT. +

+
+
+ - {/* Obligaciones Fiscales */} - {(user?.role === 'owner' || user?.role === 'cfo' || user?.role === 'supervisor') && ( - - - - - - Obligaciones Fiscales - - - Gestiona las obligaciones fiscales de tus contribuyentes - - - -

- Recibe recomendaciones basadas en el régimen fiscal, agrega o elimina obligaciones según las necesidades de cada RFC. -

-
-
- + {/* Obligaciones Fiscales */} + {(user?.role === 'owner' || user?.role === 'cfo' || user?.role === 'supervisor') && ( + + + + + + Obligaciones Fiscales + + + Gestiona las obligaciones fiscales de tus contribuyentes + + + +

+ Recibe recomendaciones basadas en el régimen fiscal, agrega o elimina obligaciones según las necesidades de cada RFC. +

+
+
+ + )} + + {/* Notificaciones */} + + + + + + Notificaciones + + + Activa o desactiva los correos informativos por contribuyente + + + +

+ Controla qué correos quieres recibir por cada cliente: documentos subidos, reporte semanal, recordatorios fiscales, vencimiento de suscripción. +

+
+
+ + + {/* Preferencias de Facturación */} + + + + + + Preferencias de Facturación + + + Define cómo facturamos los pagos de tu suscripción a Horux 360 + + + +

+ Elige si tus facturas salen con tus datos fiscales o como Público en General. Configura el uso CFDI (G03 Gastos en general / S01 Sin obligaciones) y el régimen a usar si tienes varios activos. +

+
+
+ + + {/* CSD / Facturapi */} + + + + + + Certificado de Sello Digital (CSD) + + + Configura tu CSD para emitir facturas electrónicas desde Horux360 + + + +

+ Sube tu certificado y llave privada para timbrar CFDIs directamente desde la plataforma. +

+
+
+ + )} - {/* Notificaciones */} - - - - - - Notificaciones - - - Activa o desactiva los correos informativos por contribuyente - - - -

- Controla qué correos quieres recibir por cada cliente: documentos subidos, reporte semanal, recordatorios fiscales, vencimiento de suscripción. -

-
-
- - - {/* Preferencias de Facturación (auto-emisión de pagos de suscripción) */} - - - - - - Preferencias de Facturación - - - Define cómo facturamos los pagos de tu suscripción a Horux 360 - - - -

- Elige si tus facturas salen con tus datos fiscales o como Público en General. Configura el uso CFDI (G03 Gastos en general / S01 Sin obligaciones) y el régimen a usar si tienes varios activos. -

-
-
- - {/* Seguridad */} @@ -558,26 +583,6 @@ export default function ConfiguracionPage() { - {/* CSD / Facturapi */} - - - - - - Certificado de Sello Digital (CSD) - - - Configura tu CSD para emitir facturas electrónicas desde Horux360 - - - -

- Sube tu certificado y llave privada para timbrar CFDIs directamente desde la plataforma. -

-
-
- - {/* Admin global: edición de precios */} {isGlobalAdmin && ( <> diff --git a/apps/web/components/layouts/sidebar-compact.tsx b/apps/web/components/layouts/sidebar-compact.tsx index 1428c46..05e6f02 100644 --- a/apps/web/components/layouts/sidebar-compact.tsx +++ b/apps/web/components/layouts/sidebar-compact.tsx @@ -59,7 +59,7 @@ const navigation: NavItem[] = [ { name: 'Usuarios', href: '/usuarios', icon: Users, roles: ['owner', 'cfo'] }, { name: 'Tareas', href: '/tareas', icon: CheckSquare2, roles: ['owner', 'cfo', 'contador', 'auxiliar', 'supervisor'] }, { name: 'Planes', href: '/configuracion/planes-despacho', icon: CreditCard, roles: ['owner', 'cfo'] }, - { name: 'Configuracion', href: '/configuracion', icon: Settings, roles: ['owner', 'cfo', 'supervisor'] }, + { name: 'Configuracion', href: '/configuracion', icon: Settings, roles: ['owner', 'cfo', 'supervisor', 'auxiliar', 'cliente'] }, ]; const adminNavigation: NavItem[] = [ diff --git a/apps/web/components/layouts/sidebar-floating.tsx b/apps/web/components/layouts/sidebar-floating.tsx index ef31c0e..438d332 100644 --- a/apps/web/components/layouts/sidebar-floating.tsx +++ b/apps/web/components/layouts/sidebar-floating.tsx @@ -58,7 +58,7 @@ const navigation: NavItem[] = [ { name: 'Usuarios', href: '/usuarios', icon: Users, roles: ['owner', 'cfo'] }, { name: 'Tareas', href: '/tareas', icon: CheckSquare2, roles: ['owner', 'cfo', 'contador', 'auxiliar', 'supervisor'] }, { name: 'Planes', href: '/configuracion/planes-despacho', icon: CreditCard, roles: ['owner', 'cfo'] }, - { name: 'Configuracion', href: '/configuracion', icon: Settings, roles: ['owner', 'cfo', 'supervisor'] }, + { name: 'Configuracion', href: '/configuracion', icon: Settings, roles: ['owner', 'cfo', 'supervisor', 'auxiliar', 'cliente'] }, ]; const adminNavigation: NavItem[] = [ diff --git a/apps/web/components/layouts/sidebar.tsx b/apps/web/components/layouts/sidebar.tsx index b9c7fbe..35fb976 100644 --- a/apps/web/components/layouts/sidebar.tsx +++ b/apps/web/components/layouts/sidebar.tsx @@ -62,7 +62,7 @@ const navigation: NavItem[] = [ { name: 'Usuarios', href: '/usuarios', icon: Users, roles: ['owner', 'cfo'] }, { name: 'Tareas', href: '/tareas', icon: CheckSquare2, roles: ['owner', 'cfo', 'contador', 'auxiliar', 'supervisor'] }, { name: 'Planes', href: '/configuracion/planes-despacho', icon: CreditCard, roles: ['owner', 'cfo'] }, - { name: 'Configuracion', href: '/configuracion', icon: Settings, roles: ['owner', 'cfo', 'supervisor'] }, + { name: 'Configuracion', href: '/configuracion', icon: Settings, roles: ['owner', 'cfo', 'supervisor', 'auxiliar', 'cliente'] }, ]; const adminNavigation: NavItem[] = [ diff --git a/apps/web/components/layouts/topnav.tsx b/apps/web/components/layouts/topnav.tsx index 43d8f15..2cd20c7 100644 --- a/apps/web/components/layouts/topnav.tsx +++ b/apps/web/components/layouts/topnav.tsx @@ -59,7 +59,7 @@ const navigation: NavItem[] = [ { name: 'Usuarios', href: '/usuarios', icon: Users, roles: ['owner', 'cfo'] }, { name: 'Tareas', href: '/tareas', icon: CheckSquare2, roles: ['owner', 'cfo', 'contador', 'auxiliar', 'supervisor'] }, { name: 'Planes', href: '/configuracion/planes-despacho', icon: CreditCard, roles: ['owner', 'cfo'] }, - { name: 'Configuracion', href: '/configuracion', icon: Settings, roles: ['owner', 'cfo', 'supervisor'] }, + { name: 'Configuracion', href: '/configuracion', icon: Settings, roles: ['owner', 'cfo', 'supervisor', 'auxiliar', 'cliente'] }, ]; const adminNavigation: NavItem[] = [