/**
 * Datos canónicos del refactor de seguridad — Fase 1.
 *
 * Estructura jerárquica: Módulo raíz → Submódulo → Privilegio.
 *
 * Reglas (decisiones del plan):
 *  - Cada privilegio pertenece a UN único submódulo.
 *  - Códigos del estándar nuevo: <MODULO>_<RECURSO>_<ACCION>.
 *    Acciones canónicas: VER, CREAR, EDITAR, ELIMINAR, ANULAR,
 *    APROBAR, CONFIRMAR, REVERTIR, EXPORTAR, IMPRIMIR,
 *    CONFIGURAR, ASIGNAR, PROCESAR.
 *  - Los códigos legacy prefijados (POS_*, CONT_*, TES_*, IMP_*)
 *    se preservan donde aplican y solo se les asigna submódulo.
 *  - Submódulos `es_addon=true` son cobrables aparte (Decisión 3).
 */

export type SeedPrivilegio = {
  codigo: string;
  desc: string;
  recurso: string;
  accion: string;
};

export type SeedSubmodulo = {
  codigo: string;
  descripcion: string;
  icono?: string;
  es_addon?: boolean;
  precio_addon?: number;
  privilegios: SeedPrivilegio[];
};

export type SeedModulo = {
  codigo: string;
  descripcion: string;
  icono: string;
  submodulos: SeedSubmodulo[];
};

export const SEGURIDAD_SEED: SeedModulo[] = [
  {
    codigo: 'VENTAS',
    descripcion: 'Ventas',
    icono: 'mdi:cash-register',
    submodulos: [
      {
        codigo: 'VEN_AGENTES_TRANSPORTE',
        descripcion: 'Agentes de Transporte',
        icono: 'mdi:account-tie',
        privilegios: [
          { codigo: 'VEN_AGT_AGENTE_CREAR', desc: 'Crear agente de transporte', recurso: 'AGENTE_TRANSPORTE', accion: 'CREAR' },
          { codigo: 'VEN_AGT_AGENTE_EDITAR', desc: 'Editar agente de transporte', recurso: 'AGENTE_TRANSPORTE', accion: 'EDITAR' },
          { codigo: 'VEN_AGT_AGENTE_ELIMINAR', desc: 'Eliminar agente de transporte', recurso: 'AGENTE_TRANSPORTE', accion: 'ELIMINAR' },
          { codigo: 'VEN_AGT_AGENTE_VER', desc: 'Ver agentes de transporte', recurso: 'AGENTE_TRANSPORTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'VEN_CHOFERES',
        descripcion: 'Choferes',
        icono: 'mdi:account-hard-hat',
        privilegios: [
          { codigo: 'VEN_CHO_CHOFER_CREAR', desc: 'Crear chofer', recurso: 'CHOFER', accion: 'CREAR' },
          { codigo: 'VEN_CHO_CHOFER_EDITAR', desc: 'Editar chofer', recurso: 'CHOFER', accion: 'EDITAR' },
          { codigo: 'VEN_CHO_CHOFER_ELIMINAR', desc: 'Eliminar chofer', recurso: 'CHOFER', accion: 'ELIMINAR' },
          { codigo: 'VEN_CHO_CHOFER_VER', desc: 'Ver choferes', recurso: 'CHOFER', accion: 'VER' },
        ],
      },
      {
        codigo: 'VEN_SUPERVISOR',
        descripcion: 'Panel Supervisor',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'VEN_SUP_AUTORIZACION_VER', desc: 'Ver autorizaciones pendientes/historial', recurso: 'AUTORIZACION', accion: 'VER' },
          { codigo: 'VEN_SUP_DESCUENTO_AUTORIZAR', desc: 'Autorizar descuentos en tiempo real', recurso: 'DESCUENTO', accion: 'AUTORIZAR' },
          { codigo: 'VEN_SUP_PANEL_VER', desc: 'Acceder al Panel Supervisor', recurso: 'PANEL', accion: 'VER' },
        ],
      },
      {
        codigo: 'VENTAS_AUTOFACTURA',
        descripcion: 'Autofactura',
        icono: 'mdi:receipt',
        privilegios: [
          { codigo: 'VEN_AUTOFAC_ANULAR', desc: 'Anular autofactura', recurso: 'AUTOFAC', accion: 'ANULAR' },
          { codigo: 'VEN_AUTOFAC_CREAR', desc: 'Crear autofactura', recurso: 'AUTOFAC', accion: 'CREAR' },
          { codigo: 'VEN_AUTOFAC_SIFEN_CANCELAR', desc: 'Cancelar autofactura en SIFEN', recurso: 'SIFEN', accion: 'CANCELAR' },
          { codigo: 'VEN_AUTOFAC_SIFEN_ENVIAR', desc: 'Enviar autofactura al middleware SIFEN', recurso: 'SIFEN', accion: 'ENVIAR' },
          { codigo: 'VEN_AUTOFAC_SIFEN_EVENTO', desc: 'Registrar evento SIFEN de autofactura', recurso: 'SIFEN', accion: 'EVENTO' },
          { codigo: 'VEN_AUTOFAC_SIFEN_INUTILIZAR', desc: 'Inutilizar numeración de autofactura', recurso: 'SIFEN', accion: 'INUTILIZAR' },
          { codigo: 'VEN_AUTOFAC_VER', desc: 'Ver autofacturas', recurso: 'AUTOFAC', accion: 'VER' },
        ],
      },
      {
        codigo: 'VENTAS_CLIENTES',
        descripcion: 'Clientes',
        icono: 'mdi:account-multiple',
        privilegios: [
          { codigo: 'VEN_CLI_CLIENTE_CREAR', desc: 'Crear cliente', recurso: 'CLIENTE', accion: 'CREAR' },
          { codigo: 'VEN_CLI_CLIENTE_EDITAR', desc: 'Editar cliente', recurso: 'CLIENTE', accion: 'EDITAR' },
          { codigo: 'VEN_CLI_CLIENTE_ELIMINAR', desc: 'Eliminar cliente', recurso: 'CLIENTE', accion: 'ELIMINAR' },
          { codigo: 'VEN_CLI_CLIENTE_EXPORTAR', desc: 'Exportar clientes', recurso: 'CLIENTE', accion: 'EXPORTAR' },
          { codigo: 'VEN_CLI_CLIENTE_VER', desc: 'Ver cliente', recurso: 'CLIENTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'VENTAS_FACTURACION',
        descripcion: 'Facturación',
        icono: 'mdi:file-document-edit',
        privilegios: [
          { codigo: 'VEN_FAC_FACTURA_ANULAR', desc: 'Anular factura', recurso: 'FACTURA', accion: 'ANULAR' },
          { codigo: 'VEN_FAC_FACTURA_CREAR', desc: 'Crear factura', recurso: 'FACTURA', accion: 'CREAR' },
          { codigo: 'VEN_FAC_FACTURA_EDITAR', desc: 'Editar factura', recurso: 'FACTURA', accion: 'EDITAR' },
          { codigo: 'VEN_FAC_FACTURA_EXPORTAR', desc: 'Exportar facturas', recurso: 'FACTURA', accion: 'EXPORTAR' },
          { codigo: 'VEN_FAC_FACTURA_IMPRIMIR', desc: 'Imprimir factura', recurso: 'FACTURA', accion: 'IMPRIMIR' },
          { codigo: 'VEN_FAC_FACTURA_VER', desc: 'Ver factura', recurso: 'FACTURA', accion: 'VER' },
          { codigo: 'VEN_FAC_PRECIO_MODIFICAR', desc: 'Modificar precio al facturar', recurso: 'PRECIO', accion: 'MODIFICAR' },
          { codigo: 'VEN_FAC_SIFEN_CANCELAR', desc: 'Cancelar factura en SIFEN', recurso: 'SIFEN', accion: 'CANCELAR' },
          { codigo: 'VEN_FAC_SIFEN_ENVIAR', desc: 'Enviar factura al middleware SIFEN', recurso: 'SIFEN', accion: 'ENVIAR' },
          { codigo: 'VEN_FAC_SIFEN_EVENTO', desc: 'Registrar evento SIFEN de factura', recurso: 'SIFEN', accion: 'EVENTO' },
          { codigo: 'VEN_FAC_SIFEN_INUTILIZAR', desc: 'Inutilizar numeración de factura', recurso: 'SIFEN', accion: 'INUTILIZAR' },
          { codigo: 'VEN_FAC_SIFEN_NOMINAR', desc: 'Nominar factura en SIFEN', recurso: 'SIFEN', accion: 'NOMINAR' },
        ],
      },
      {
        codigo: 'VENTAS_LISTA_PRECIOS',
        descripcion: 'Lista de precios',
        icono: 'mdi:receipt',
        privilegios: [
          { codigo: 'VEN_LISTA_CREAR', desc: 'Crear lista de precios', recurso: 'LISTA', accion: 'CREAR' },
          { codigo: 'VEN_LISTA_EDITAR', desc: 'Editar lista de precios', recurso: 'LISTA', accion: 'EDITAR' },
          { codigo: 'VEN_LISTA_ELIMINAR', desc: 'Eliminar lista de precios', recurso: 'LISTA', accion: 'ELIMINAR' },
          { codigo: 'VEN_LISTA_VER', desc: 'Ver listas de precios', recurso: 'LISTA', accion: 'VER' },
        ],
      },
      {
        codigo: 'VENTAS_NOTA_REMISION',
        descripcion: 'Notas de Remisión',
        icono: 'mdi:truck-fast',
        privilegios: [
          { codigo: 'VEN_NR_NOTA_REMISION_ANULAR', desc: 'Anular nota de remisión', recurso: 'NOTA_REMISION', accion: 'ANULAR' },
          { codigo: 'VEN_NR_NOTA_REMISION_CREAR', desc: 'Crear nota_remision', recurso: 'NOTA_REMISION', accion: 'CREAR' },
          { codigo: 'VEN_NR_NOTA_REMISION_EDITAR', desc: 'Editar nota_remision', recurso: 'NOTA_REMISION', accion: 'EDITAR' },
          { codigo: 'VEN_NR_NOTA_REMISION_ELIMINAR', desc: 'Eliminar nota_remision', recurso: 'NOTA_REMISION', accion: 'ELIMINAR' },
          { codigo: 'VEN_NR_NOTA_REMISION_IMPRIMIR', desc: 'Imprimir nota de remisión', recurso: 'NOTA_REMISION', accion: 'IMPRIMIR' },
          { codigo: 'VEN_NR_NOTA_REMISION_VER', desc: 'Ver nota_remision', recurso: 'NOTA_REMISION', accion: 'VER' },
          { codigo: 'VEN_REMISION_ANULAR', desc: 'Anular nota de remisión', recurso: 'REMISION', accion: 'ANULAR' },
          { codigo: 'VEN_REMISION_CREAR', desc: 'Crear nota de remisión', recurso: 'REMISION', accion: 'CREAR' },
          { codigo: 'VEN_REMISION_IMPRIMIR', desc: 'Imprimir nota de remisión', recurso: 'REMISION', accion: 'IMPRIMIR' },
          { codigo: 'VEN_REMISION_SIFEN_CANCELAR', desc: 'Cancelar remisión en SIFEN', recurso: 'SIFEN', accion: 'CANCELAR' },
          { codigo: 'VEN_REMISION_SIFEN_ENVIAR', desc: 'Enviar remisión al middleware SIFEN', recurso: 'SIFEN', accion: 'ENVIAR' },
          { codigo: 'VEN_REMISION_SIFEN_EVENTO', desc: 'Registrar evento SIFEN de remisión', recurso: 'SIFEN', accion: 'EVENTO' },
          { codigo: 'VEN_REMISION_SIFEN_INUTILIZAR', desc: 'Inutilizar numeración de remisión', recurso: 'SIFEN', accion: 'INUTILIZAR' },
          { codigo: 'VEN_REMISION_VER', desc: 'Ver notas de remisión', recurso: 'REMISION', accion: 'VER' },
        ],
      },
      {
        codigo: 'VENTAS_NOTAS_CREDITO',
        descripcion: 'Notas de Crédito',
        icono: 'mdi:receipt-text-minus',
        privilegios: [
          { codigo: 'VEN_NC_NOTA_CREDITO_ANULAR', desc: 'Anular nota_credito', recurso: 'NOTA_CREDITO', accion: 'ANULAR' },
          { codigo: 'VEN_NC_NOTA_CREDITO_CREAR', desc: 'Crear nota_credito', recurso: 'NOTA_CREDITO', accion: 'CREAR' },
          { codigo: 'VEN_NC_NOTA_CREDITO_IMPRIMIR', desc: 'Imprimir NC', recurso: 'NOTA_CREDITO', accion: 'IMPRIMIR' },
          { codigo: 'VEN_NC_NOTA_CREDITO_VER', desc: 'Ver nota_credito', recurso: 'NOTA_CREDITO', accion: 'VER' },
          { codigo: 'VEN_NC_SIFEN_CANCELAR', desc: 'Cancelar NC en SIFEN', recurso: 'SIFEN', accion: 'CANCELAR' },
          { codigo: 'VEN_NC_SIFEN_ENVIAR', desc: 'Enviar NC al middleware SIFEN', recurso: 'SIFEN', accion: 'ENVIAR' },
          { codigo: 'VEN_NC_SIFEN_EVENTO', desc: 'Registrar evento SIFEN de NC', recurso: 'SIFEN', accion: 'EVENTO' },
          { codigo: 'VEN_NC_SIFEN_INUTILIZAR', desc: 'Inutilizar numeración de NC', recurso: 'SIFEN', accion: 'INUTILIZAR' },
        ],
      },
      {
        codigo: 'VENTAS_NOTAS_DEBITO',
        descripcion: 'Notas de Débito',
        icono: 'mdi:receipt-text-plus',
        privilegios: [
          { codigo: 'VEN_ND_NOTA_DEBITO_ANULAR', desc: 'Anular nota_debito', recurso: 'NOTA_DEBITO', accion: 'ANULAR' },
          { codigo: 'VEN_ND_NOTA_DEBITO_CREAR', desc: 'Crear nota_debito', recurso: 'NOTA_DEBITO', accion: 'CREAR' },
          { codigo: 'VEN_ND_NOTA_DEBITO_IMPRIMIR', desc: 'Imprimir ND', recurso: 'NOTA_DEBITO', accion: 'IMPRIMIR' },
          { codigo: 'VEN_ND_NOTA_DEBITO_VER', desc: 'Ver nota_debito', recurso: 'NOTA_DEBITO', accion: 'VER' },
          { codigo: 'VEN_ND_SIFEN_CANCELAR', desc: 'Cancelar ND en SIFEN', recurso: 'SIFEN', accion: 'CANCELAR' },
          { codigo: 'VEN_ND_SIFEN_ENVIAR', desc: 'Enviar ND al middleware SIFEN', recurso: 'SIFEN', accion: 'ENVIAR' },
          { codigo: 'VEN_ND_SIFEN_EVENTO', desc: 'Registrar evento SIFEN de ND', recurso: 'SIFEN', accion: 'EVENTO' },
          { codigo: 'VEN_ND_SIFEN_INUTILIZAR', desc: 'Inutilizar numeración de ND', recurso: 'SIFEN', accion: 'INUTILIZAR' },
        ],
      },
      {
        codigo: 'VENTAS_OFERTAS',
        descripcion: 'Ofertas y promociones',
        icono: 'mdi:receipt',
        privilegios: [
          { codigo: 'VEN_OFERTA_CREAR', desc: 'Crear oferta', recurso: 'OFERTA', accion: 'CREAR' },
          { codigo: 'VEN_OFERTA_EDITAR', desc: 'Editar oferta', recurso: 'OFERTA', accion: 'EDITAR' },
          { codigo: 'VEN_OFERTA_ELIMINAR', desc: 'Eliminar oferta', recurso: 'OFERTA', accion: 'ELIMINAR' },
          { codigo: 'VEN_OFERTA_VER', desc: 'Ver ofertas y promociones', recurso: 'OFERTA', accion: 'VER' },
        ],
      },
      {
        codigo: 'VENTA_SOLICITUD_CREDITO',
        descripcion: 'Solicitudes de Crédito',
        icono: 'mdi:file-document-check',
        privilegios: [
          { codigo: 'VEN_SOL_SOLICITUD_VER', desc: 'Ver solicitud', recurso: 'SOLICITUD', accion: 'VER' },
          { codigo: 'VEN_SOL_SOLICITUD_CREAR', desc: 'Crear solicitud', recurso: 'SOLICITUD', accion: 'CREAR' },
          { codigo: 'VEN_SOL_SOLICITUD_EDITAR', desc: 'Editar solicitud', recurso: 'SOLICITUD', accion: 'EDITAR' },
          { codigo: 'VEN_SOL_SOLICITUD_ELIMINAR', desc: 'Eliminar solicitud', recurso: 'SOLICITUD', accion: 'ELIMINAR' },
          { codigo: 'VEN_SOL_SOLICITUD_APROBAR', desc: 'Aprobar/rechazar solicitud de crédito', recurso: 'SOLICITUD', accion: 'APROBAR' },
          { codigo: 'VEN_SOL_PRECIO_EDITAR', desc: 'Editar a mano el precio unitario de un producto en la solicitud', recurso: 'PRECIO_SOLICITUD', accion: 'EDITAR' },
        ],
      },
      {
        codigo: 'VENTA_PLANES_CUOTAS',
        descripcion: 'Planes de Cuotas Automáticos (con interés)',
        icono: 'mdi:calculator',
        es_addon: true,
        precio_addon: 80000,
        privilegios: [
          { codigo: 'VEN_PCA_PLAN_VER', desc: 'Ver planes de cuotas automáticos', recurso: 'PLAN_CUOTA', accion: 'VER' },
          { codigo: 'VEN_PCA_PLAN_CREAR', desc: 'Crear plan de cuotas automático', recurso: 'PLAN_CUOTA', accion: 'CREAR' },
          { codigo: 'VEN_PCA_PLAN_EDITAR', desc: 'Editar plan de cuotas automático', recurso: 'PLAN_CUOTA', accion: 'EDITAR' },
          { codigo: 'VEN_PCA_PLAN_ELIMINAR', desc: 'Eliminar plan de cuotas automático', recurso: 'PLAN_CUOTA', accion: 'ELIMINAR' },
          { codigo: 'VEN_PCA_PLAN_USAR', desc: 'Usar un plan de cuotas automático al facturar o crear una solicitud de crédito', recurso: 'PLAN_CUOTA', accion: 'USAR' },
        ],
      },
      {
        codigo: 'VENTAS_ORDEN_VENTA',
        descripcion: 'Órdenes de Venta',
        icono: 'mdi:clipboard-list',
        privilegios: [
          { codigo: 'VEN_OV_ANULAR', desc: 'Anular orden de venta', recurso: 'OV', accion: 'ANULAR' },
          { codigo: 'VEN_OV_CONVERTIR', desc: 'Convertir OV a factura', recurso: 'OV', accion: 'CONVERTIR' },
          { codigo: 'VEN_OV_CREAR', desc: 'Crear orden de venta', recurso: 'OV', accion: 'CREAR' },
          { codigo: 'VEN_OV_EDITAR', desc: 'Editar orden de venta', recurso: 'OV', accion: 'EDITAR' },
          { codigo: 'VEN_OV_ORDEN_VENTA_CREAR', desc: 'Crear orden_venta', recurso: 'ORDEN_VENTA', accion: 'CREAR' },
          { codigo: 'VEN_OV_ORDEN_VENTA_EDITAR', desc: 'Editar orden_venta', recurso: 'ORDEN_VENTA', accion: 'EDITAR' },
          { codigo: 'VEN_OV_ORDEN_VENTA_ELIMINAR', desc: 'Eliminar orden_venta', recurso: 'ORDEN_VENTA', accion: 'ELIMINAR' },
          { codigo: 'VEN_OV_ORDEN_VENTA_FACTURAR', desc: 'Facturar orden de venta', recurso: 'ORDEN_VENTA', accion: 'PROCESAR' },
          { codigo: 'VEN_OV_ORDEN_VENTA_VER', desc: 'Ver orden_venta', recurso: 'ORDEN_VENTA', accion: 'VER' },
          { codigo: 'VEN_OV_VER', desc: 'Ver órdenes de venta', recurso: 'OV', accion: 'VER' },
        ],
      },
      {
        codigo: 'VENTAS_PEDIDOS',
        descripcion: 'Pedidos Mayorista',
        icono: 'mdi:clipboard-text',
        privilegios: [
          { codigo: 'VEN_PED_PEDIDO_CREAR', desc: 'Crear pedido', recurso: 'PEDIDO', accion: 'CREAR' },
          { codigo: 'VEN_PED_PEDIDO_EDITAR', desc: 'Editar pedido', recurso: 'PEDIDO', accion: 'EDITAR' },
          { codigo: 'VEN_PED_PEDIDO_ELIMINAR', desc: 'Eliminar pedido', recurso: 'PEDIDO', accion: 'ELIMINAR' },
          { codigo: 'VEN_PED_PEDIDO_FACTURAR', desc: 'Facturar pedido', recurso: 'PEDIDO', accion: 'PROCESAR' },
          { codigo: 'VEN_PED_PEDIDO_VER', desc: 'Ver pedido', recurso: 'PEDIDO', accion: 'VER' },
        ],
      },
      {
        codigo: 'VENTAS_POS',
        descripcion: 'Punto de Venta',
        icono: 'mdi:point-of-sale',
        privilegios: [
          { codigo: 'VEN_POS_CIERRE_CAJA', desc: 'Cierre de caja', recurso: 'CAJA', accion: 'PROCESAR' },
          { codigo: 'VEN_POS_DESCUENTO', desc: 'Aplicar descuento', recurso: 'VENTA', accion: 'CONFIGURAR' },
          { codigo: 'VEN_POS_POS_CONFIGURAR', desc: 'Configurar POS por caja', recurso: 'POS', accion: 'CONFIGURAR' },
          { codigo: 'VEN_POS_PRECIO_MODIFICAR', desc: 'Modificar precio al facturar (POS)', recurso: 'PRECIO', accion: 'MODIFICAR' },
          { codigo: 'VEN_POS_REIMPRIMIR', desc: 'Reimprimir comprobante', recurso: 'VENTA', accion: 'IMPRIMIR' },
          { codigo: 'VEN_POS_VENTA_ANULAR', desc: 'Anular venta', recurso: 'VENTA', accion: 'ANULAR' },
          { codigo: 'VEN_POS_VENTA_CREAR', desc: 'Crear venta', recurso: 'VENTA', accion: 'CREAR' },
          { codigo: 'VEN_POS_VENTA_CREDITO', desc: 'Vender a crédito', recurso: 'VENTA', accion: 'CONFIGURAR' },
          { codigo: 'VEN_POS_VENTA_VER', desc: 'Ver venta', recurso: 'VENTA', accion: 'VER' },
        ],
      },
      {
        codigo: 'VENTAS_PRESUPUESTOS',
        descripcion: 'Presupuestos',
        icono: 'mdi:file-document-outline',
        privilegios: [
          { codigo: 'VEN_PRE_PRESUPUESTO_APROBAR', desc: 'Aprobar presupuesto', recurso: 'PRESUPUESTO', accion: 'APROBAR' },
          { codigo: 'VEN_PRE_PRESUPUESTO_CREAR', desc: 'Crear presupuesto', recurso: 'PRESUPUESTO', accion: 'CREAR' },
          { codigo: 'VEN_PRE_PRESUPUESTO_EDITAR', desc: 'Editar presupuesto', recurso: 'PRESUPUESTO', accion: 'EDITAR' },
          { codigo: 'VEN_PRE_PRESUPUESTO_ELIMINAR', desc: 'Eliminar presupuesto', recurso: 'PRESUPUESTO', accion: 'ELIMINAR' },
          { codigo: 'VEN_PRE_PRESUPUESTO_FACTURAR', desc: 'Convertir a factura', recurso: 'PRESUPUESTO', accion: 'PROCESAR' },
          { codigo: 'VEN_PRE_PRESUPUESTO_IMPRIMIR', desc: 'Imprimir presupuesto', recurso: 'PRESUPUESTO', accion: 'IMPRIMIR' },
          { codigo: 'VEN_PRE_PRESUPUESTO_VER', desc: 'Ver presupuesto', recurso: 'PRESUPUESTO', accion: 'VER' },
        ],
      },
      {
        codigo: 'VENTAS_SIFEN',
        descripcion: 'Facturacion Electronica',
        icono: 'mdi:receipt',
        privilegios: [
          { codigo: 'VEN_SIFEN_CANCELAR', desc: 'Cancelar DE en SIFEN', recurso: 'SIFEN', accion: 'CANCELAR' },
          { codigo: 'VEN_SIFEN_ENVIAR', desc: 'Enviar DE a SIFEN', recurso: 'SIFEN', accion: 'ENVIAR' },
          { codigo: 'VEN_SIFEN_INUTILIZAR', desc: 'Inutilizar numeración SIFEN', recurso: 'SIFEN', accion: 'INUTILIZAR' },
          { codigo: 'VEN_SIFEN_REENVIAR', desc: 'Reenviar DE a SIFEN', recurso: 'SIFEN', accion: 'REENVIAR' },
          { codigo: 'VEN_SIFEN_VER', desc: 'Ver documentos SIFEN', recurso: 'SIFEN', accion: 'VER' },
        ],
      },
      {
        codigo: 'VENTAS_VENDEDOR_COBRADOR',
        descripcion: 'Vendedor/Cobrador',
        icono: 'mdi:account-cash',
        privilegios: [
          { codigo: 'ADM_VENDCOB_ASIGNAR', desc: 'Asignar vendedor/cobrador', recurso: 'VENDCOB', accion: 'ASIGNAR' },
          { codigo: 'ADM_VENDCOB_VER', desc: 'Ver vendedores/cobradores', recurso: 'VENDCOB', accion: 'VER' },
          { codigo: 'VEN_VEND_VENDEDOR_CREAR', desc: 'Crear vendedor', recurso: 'VENDEDOR', accion: 'CREAR' },
          { codigo: 'VEN_VEND_VENDEDOR_EDITAR', desc: 'Editar vendedor', recurso: 'VENDEDOR', accion: 'EDITAR' },
          { codigo: 'VEN_VEND_VENDEDOR_ELIMINAR', desc: 'Eliminar vendedor', recurso: 'VENDEDOR', accion: 'ELIMINAR' },
        ],
      },
      {
        codigo: 'VEN_TRANSPORTISTAS',
        descripcion: 'Transportistas',
        icono: 'mdi:truck-delivery',
        privilegios: [
          { codigo: 'VEN_TRP_TRANSPORTISTA_CREAR', desc: 'Crear transportista', recurso: 'TRANSPORTISTA', accion: 'CREAR' },
          { codigo: 'VEN_TRP_TRANSPORTISTA_EDITAR', desc: 'Editar transportista', recurso: 'TRANSPORTISTA', accion: 'EDITAR' },
          { codigo: 'VEN_TRP_TRANSPORTISTA_ELIMINAR', desc: 'Eliminar transportista', recurso: 'TRANSPORTISTA', accion: 'ELIMINAR' },
          { codigo: 'VEN_TRP_TRANSPORTISTA_VER', desc: 'Ver transportistas', recurso: 'TRANSPORTISTA', accion: 'VER' },
        ],
      },
      {
        codigo: 'VEN_VEHICULOS',
        descripcion: 'Vehículos',
        icono: 'mdi:truck',
        privilegios: [
          { codigo: 'VEN_VEH_VEHICULO_CREAR', desc: 'Crear vehículo', recurso: 'VEHICULO', accion: 'CREAR' },
          { codigo: 'VEN_VEH_VEHICULO_EDITAR', desc: 'Editar vehículo', recurso: 'VEHICULO', accion: 'EDITAR' },
          { codigo: 'VEN_VEH_VEHICULO_ELIMINAR', desc: 'Eliminar vehículo', recurso: 'VEHICULO', accion: 'ELIMINAR' },
          { codigo: 'VEN_VEH_VEHICULO_VER', desc: 'Ver vehículos', recurso: 'VEHICULO', accion: 'VER' },
        ],
      },
    ],
  },
  {
    codigo: 'COBRANZAS',
    descripcion: 'Cobranzas',
    icono: 'mdi:hand-coin',
    submodulos: [
      {
        codigo: 'COB_ASIGNACION',
        descripcion: 'Asignación de Cobranza',
        icono: 'mdi:account-arrow-right',
        privilegios: [
          { codigo: 'COB_ASG_ASIGNACION_CREAR', desc: 'Asignar cobro a CxC', recurso: 'ASIGNACION', accion: 'CREAR' },
          { codigo: 'COB_ASG_ASIGNACION_ELIMINAR', desc: 'Quitar asignación de cobro', recurso: 'ASIGNACION', accion: 'ELIMINAR' },
          { codigo: 'COB_ASG_ASIGNACION_VER', desc: 'Ver asignaciones de cobros', recurso: 'ASIGNACION', accion: 'VER' },
        ],
      },
      {
        codigo: 'COB_AUTORIZACIONES',
        descripcion: 'Autorizaciones de Descuento',
        icono: 'mdi:check-decagram',
        privilegios: [
          { codigo: 'COB_AUT_AUTORIZACION_AUTORIZAR', desc: 'Aprobar/rechazar autorización de descuento', recurso: 'AUTORIZACION', accion: 'APROBAR' },
          { codigo: 'COB_AUT_AUTORIZACION_SOLICITAR', desc: 'Solicitar autorización de descuento', recurso: 'AUTORIZACION', accion: 'CREAR' },
          { codigo: 'COB_AUT_AUTORIZACION_VER', desc: 'Ver autorizaciones de descuento', recurso: 'AUTORIZACION', accion: 'VER' },
        ],
      },
      {
        codigo: 'COB_CARTERA_INTELIGENTE',
        descripcion: 'Cartera Inteligente',
        icono: 'mdi:brain',
        privilegios: [
          { codigo: 'COB_CART_VER', desc: 'Ver módulo Cartera Inteligente', recurso: 'CARTERA', accion: 'VER' },
          { codigo: 'COB_CART_CONFIGURAR', desc: 'Configurar Cartera Inteligente', recurso: 'CARTERA', accion: 'EDITAR' },
        ],
      },
      {
        codigo: 'COB_COBRADORES',
        descripcion: 'Cobradores',
        icono: 'mdi:account-tie',
        privilegios: [
          { codigo: 'COB_CBR_COBRADOR_CREAR', desc: 'Crear cobrador', recurso: 'COBRADOR', accion: 'CREAR' },
          { codigo: 'COB_CBR_COBRADOR_EDITAR', desc: 'Editar cobrador', recurso: 'COBRADOR', accion: 'EDITAR' },
          { codigo: 'COB_CBR_COBRADOR_ELIMINAR', desc: 'Eliminar cobrador', recurso: 'COBRADOR', accion: 'ELIMINAR' },
          { codigo: 'COB_CBR_COBRADOR_VER', desc: 'Ver cobrador', recurso: 'COBRADOR', accion: 'VER' },
          { codigo: 'COB_CBR_PANEL_COBRADOR_VER', desc: 'Acceder al Panel Cobrador', recurso: 'PANEL', accion: 'VER' },
        ],
      },
      {
        codigo: 'COB_COMISIONES',
        descripcion: 'Comisiones',
        icono: 'mdi:percent',
        privilegios: [
          { codigo: 'COB_COM_COMISION_ELIMINAR', desc: 'Eliminar comisión', recurso: 'COMISION', accion: 'ELIMINAR' },
          { codigo: 'COB_COM_COMISION_GENERAR', desc: 'Generar comisiones', recurso: 'COMISION', accion: 'PROCESAR' },
          { codigo: 'COB_COM_COMISION_VER', desc: 'Ver comisiones', recurso: 'COMISION', accion: 'VER' },
          { codigo: 'COB_COM_LIQUIDACION_ANULAR', desc: 'Anular liquidación', recurso: 'LIQUIDACION', accion: 'ANULAR' },
          { codigo: 'COB_COM_LIQUIDACION_GENERAR', desc: 'Generar liquidación', recurso: 'LIQUIDACION', accion: 'PROCESAR' },
          { codigo: 'COB_COM_LIQUIDACION_PAGAR', desc: 'Pagar liquidación', recurso: 'LIQUIDACION', accion: 'PROCESAR' },
          { codigo: 'COB_COM_LIQUIDACION_VER', desc: 'Ver liquidaciones', recurso: 'LIQUIDACION', accion: 'VER' },
        ],
      },
      {
        codigo: 'COB_CONFIG_MORA',
        descripcion: 'Configuración de Mora',
        icono: 'mdi:cog-clockwise',
        privilegios: [
          { codigo: 'COB_CFM_CONFIG_EDITAR', desc: 'Editar configuración de mora', recurso: 'CONFIG', accion: 'EDITAR' },
          { codigo: 'COB_CFM_CONFIG_VER', desc: 'Ver configuración de mora', recurso: 'CONFIG', accion: 'VER' },
        ],
      },
      {
        codigo: 'COB_INTERESES_MORATORIOS',
        descripcion: 'Intereses Moratorios (comprobante fiscal)',
        icono: 'mdi:receipt-text-clock',
        privilegios: [
          { codigo: 'COB_INT_CONFIG_VER', desc: 'Ver configuración de intereses moratorios', recurso: 'CONFIG', accion: 'VER' },
          { codigo: 'COB_INT_CONFIG_EDITAR', desc: 'Editar configuración de intereses moratorios', recurso: 'CONFIG', accion: 'EDITAR' },
          { codigo: 'COB_INT_PREVIEW', desc: 'Calcular preview de interés por cuota', recurso: 'INTERES', accion: 'VER' },
          { codigo: 'COB_INT_VER', desc: 'Ver intereses moratorios cobrados', recurso: 'INTERES', accion: 'VER' },
          { codigo: 'COB_INT_EXONERAR', desc: 'Solicitar exoneración de interés moratorio', recurso: 'INTERES', accion: 'EXONERAR' },
        ],
      },
      {
        codigo: 'COB_CUENTAS_COBRAR',
        descripcion: 'Cuentas por Cobrar',
        icono: 'mdi:account-cash',
        privilegios: [
          { codigo: 'COB_CC_CUENTA_COBRAR_EDITAR', desc: 'Editar cuenta_cobrar', recurso: 'CUENTA_COBRAR', accion: 'EDITAR' },
          { codigo: 'COB_CC_INTERES_MANUAL_CARGAR', desc: 'Cargar interés manual a una cuenta o cuota', recurso: 'INTERES_MANUAL', accion: 'CREAR' },
          { codigo: 'COB_CC_CUENTA_COBRAR_EXPORTAR', desc: 'Exportar CxC', recurso: 'CUENTA_COBRAR', accion: 'EXPORTAR' },
          { codigo: 'COB_CC_CUENTA_COBRAR_VER', desc: 'Ver cuenta_cobrar', recurso: 'CUENTA_COBRAR', accion: 'VER' },
        ],
      },
      {
        codigo: 'COB_HOJA_RUTA',
        descripcion: 'Hoja de Ruta Diaria',
        icono: 'mdi:map-marker-path',
        privilegios: [
          { codigo: 'COB_HR_HOJA_RUTA_CERRAR', desc: 'Cerrar hoja de ruta', recurso: 'HOJA_RUTA', accion: 'CERRAR' },
          { codigo: 'COB_HR_HOJA_RUTA_GENERAR', desc: 'Generar hoja de ruta', recurso: 'HOJA_RUTA', accion: 'GENERAR' },
          { codigo: 'COB_HR_HOJA_RUTA_IMPRIMIR', desc: 'Imprimir hoja de ruta', recurso: 'HOJA_RUTA', accion: 'IMPRIMIR' },
          { codigo: 'COB_HR_HOJA_RUTA_VER', desc: 'Ver hoja de ruta', recurso: 'HOJA_RUTA', accion: 'VER' },
        ],
      },
      {
        codigo: 'COB_PRINT_MOBILE',
        descripcion: 'Impresión móvil (Novasis Print)',
        icono: 'mdi:printer-wireless',
        es_addon: true,
        privilegios: [
        ],
      },
      {
        codigo: 'COB_PROMESAS',
        descripcion: 'Promesas de Pago',
        icono: 'mdi:handshake',
        privilegios: [
          { codigo: 'COB_PRM_PROMESA_CREAR', desc: 'Registrar promesa de pago', recurso: 'PROMESA', accion: 'CREAR' },
          { codigo: 'COB_PRM_PROMESA_EDITAR', desc: 'Actualizar estado de promesa', recurso: 'PROMESA', accion: 'EDITAR' },
          { codigo: 'COB_PRM_PROMESA_VER', desc: 'Ver promesas de pago', recurso: 'PROMESA', accion: 'VER' },
          { codigo: 'COB_PRM_PROMESA_CANCELAR', desc: 'Cancelar promesa de pago', recurso: 'PROMESA', accion: 'CANCELAR' },
          { codigo: 'COB_PRM_PROMESA_RENEGOCIAR', desc: 'Renegociar promesa (crear nueva enlazada)', recurso: 'PROMESA', accion: 'RENEGOCIAR' },
          { codigo: 'COB_PRM_AUTORIZAR_VENTA_CON_INCUMPLIMIENTOS', desc: 'Autorizar venta a cliente con promesas incumplidas', recurso: 'PROMESA', accion: 'AUTORIZAR_VENTA' },
          { codigo: 'COB_PRM_REPORTE_CUMPLIMIENTO', desc: 'Ver reporte de cumplimiento de promesas', recurso: 'PROMESA', accion: 'REPORTE' },
        ],
      },
      {
        codigo: 'COB_RECIBOS',
        descripcion: 'Recibos de Cobro',
        icono: 'mdi:receipt',
        privilegios: [
          { codigo: 'COB_REC_DESCUENTO_APLICAR', desc: 'Aplicar descuento al registrar cobro', recurso: 'DESCUENTO', accion: 'APLICAR' },
          { codigo: 'COB_REC_NC_FLEXIBLE', desc: 'Aplicar NC a otra factura del cliente (modo flexible)', recurso: 'NC_FLEXIBLE', accion: 'APLICAR' },
          { codigo: 'COB_REC_RECIBO_ANULAR', desc: 'Anular recibo', recurso: 'RECIBO', accion: 'ANULAR' },
          { codigo: 'COB_REC_RECIBO_CREAR', desc: 'Crear recibo', recurso: 'RECIBO', accion: 'CREAR' },
          { codigo: 'COB_REC_RECIBO_IMPRIMIR', desc: 'Imprimir recibo', recurso: 'RECIBO', accion: 'IMPRIMIR' },
          { codigo: 'COB_REC_RECIBO_VER', desc: 'Ver recibo', recurso: 'RECIBO', accion: 'VER' },
          { codigo: 'COB_REC_GASTOS', desc: 'Asociar gastos documentados a recibos multi', recurso: 'GASTOS_RECIBO', accion: 'APLICAR' },
        ],
      },
      {
        codigo: 'COB_RENDICIONES',
        descripcion: 'Rendiciones',
        icono: 'mdi:file-document-check',
        privilegios: [
          { codigo: 'COB_RND_RENDICION_APROBAR', desc: 'Aprobar rendición', recurso: 'RENDICION', accion: 'APROBAR' },
          { codigo: 'COB_RND_RENDICION_CREAR', desc: 'Crear rendicion', recurso: 'RENDICION', accion: 'CREAR' },
          { codigo: 'COB_RND_RENDICION_VER', desc: 'Ver rendicion', recurso: 'RENDICION', accion: 'VER' },
        ],
      },
      {
        codigo: 'COB_REPORTES',
        descripcion: 'Reportes de Cobranzas',
        icono: 'mdi:chart-box',
        privilegios: [
          { codigo: 'COB_REP_REPORTE_EXPORTAR', desc: 'Exportar reportes', recurso: 'REPORTE', accion: 'EXPORTAR' },
          { codigo: 'COB_REP_REPORTE_VER', desc: 'Ver reportes de cobranzas', recurso: 'REPORTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'COB_RETENCIONES',
        descripcion: 'Libro de Retenciones',
        icono: 'mdi:book-open-variant',
        privilegios: [
          { codigo: 'COB_RET_RETENCION_ANULAR', desc: 'Anular retencion', recurso: 'RETENCION', accion: 'ANULAR' },
          { codigo: 'COB_RET_RETENCION_CREAR', desc: 'Crear retencion', recurso: 'RETENCION', accion: 'CREAR' },
          { codigo: 'COB_RET_RETENCION_EXPORTAR', desc: 'Exportar libro de retenciones', recurso: 'RETENCION', accion: 'EXPORTAR' },
          { codigo: 'COB_RET_RETENCION_VER', desc: 'Ver retencion', recurso: 'RETENCION', accion: 'VER' },
        ],
      },
      {
        codigo: 'COB_RUTAS',
        descripcion: 'Rutas de Cobro',
        icono: 'mdi:map-marker-path',
        es_addon: true,
        precio_addon: 30000,
        privilegios: [
          { codigo: 'COB_RUT_RUTA_CREAR', desc: 'Crear ruta', recurso: 'RUTA', accion: 'CREAR' },
          { codigo: 'COB_RUT_RUTA_EDITAR', desc: 'Editar ruta', recurso: 'RUTA', accion: 'EDITAR' },
          { codigo: 'COB_RUT_RUTA_ELIMINAR', desc: 'Eliminar ruta', recurso: 'RUTA', accion: 'ELIMINAR' },
          { codigo: 'COB_RUT_RUTA_VER', desc: 'Ver ruta', recurso: 'RUTA', accion: 'VER' },
        ],
      },
      {
        codigo: 'COB_SALDOS_FAVOR',
        descripcion: 'Saldos a Favor',
        icono: 'mdi:wallet-plus',
        privilegios: [
          { codigo: 'COB_SF_SALDO_AJUSTAR', desc: 'Ajustar saldo a favor', recurso: 'SALDO_FAVOR', accion: 'AJUSTAR' },
          { codigo: 'COB_SF_SALDO_APLICAR', desc: 'Aplicar saldo a favor a CxC', recurso: 'SALDO_FAVOR', accion: 'APLICAR' },
          { codigo: 'COB_SF_SALDO_VER', desc: 'Ver saldos a favor', recurso: 'SALDO_FAVOR', accion: 'VER' },
        ],
      },
      {
        codigo: 'COB_GMR',
        descripcion: 'Gestion de Mora Avanzada',
        icono: 'mdi:gavel',
        privilegios: [
          { codigo: 'COB_GMR_GESTION_MORA_VER', desc: 'Ver gestiones de mora', recurso: 'GESTION_MORA', accion: 'VER' },
          { codigo: 'COB_GMR_GESTION_MORA_REGISTRAR', desc: 'Registrar gestion de mora', recurso: 'GESTION_MORA', accion: 'CREAR' },
          { codigo: 'COB_GMR_REPORTAR_INFORMCONF', desc: 'Reportar cliente a Informconf', recurso: 'INFORMCONF', accion: 'CREAR' },
          { codigo: 'COB_GMR_RETIRAR_INFORMCONF', desc: 'Retirar cliente de Informconf', recurso: 'INFORMCONF', accion: 'ELIMINAR' },
          { codigo: 'COB_GMR_REGISTRAR_DEMANDA', desc: 'Registrar demanda judicial', recurso: 'DEMANDA', accion: 'CREAR' },
          { codigo: 'COB_GMR_DECLARAR_INCOBRABLE', desc: 'Declarar deuda incobrable', recurso: 'INCOBRABLE', accion: 'CREAR' },
          { codigo: 'COB_GMR_REVERTIR_ESTADO', desc: 'Revertir estado de gestion de mora', recurso: 'GESTION_MORA', accion: 'REVERTIR' },
          { codigo: 'COB_GMR_EXPORTAR', desc: 'Exportar reportes de gestion de mora', recurso: 'GESTION_MORA', accion: 'EXPORTAR' },
        ],
      },
      {
        codigo: 'COB_REF',
        descripcion: 'Refinanciacion de Deuda',
        icono: 'mdi:file-replace-outline',
        privilegios: [
          { codigo: 'COB_REF_REFINANCIACION_VER', desc: 'Ver refinanciaciones', recurso: 'REFINANCIACION', accion: 'VER' },
          { codigo: 'COB_REF_REFINANCIACION_CREAR', desc: 'Crear borrador de refinanciacion', recurso: 'REFINANCIACION', accion: 'CREAR' },
          { codigo: 'COB_REF_REFINANCIACION_APROBAR', desc: 'Aprobar/ejecutar refinanciacion', recurso: 'REFINANCIACION', accion: 'APROBAR' },
          { codigo: 'COB_REF_REFINANCIACION_ANULAR', desc: 'Anular refinanciacion', recurso: 'REFINANCIACION', accion: 'ANULAR' },
          { codigo: 'COB_REF_REPORTE', desc: 'Exportar reportes de refinanciacion', recurso: 'REFINANCIACION', accion: 'EXPORTAR' },
        ],
      },
      {
        codigo: 'COB_WORKFLOW',
        descripcion: 'Workflow de cobranza (gestiones)',
        icono: 'mdi:clipboard-check-multiple-outline',
        privilegios: [
          { codigo: 'COB_WFL_GESTION_VER', desc: 'Ver gestiones de cobranza', recurso: 'GESTION_COBRANZA', accion: 'VER' },
          { codigo: 'COB_WFL_GESTION_REGISTRAR', desc: 'Registrar gestion de cobranza', recurso: 'GESTION_COBRANZA', accion: 'CREAR' },
          { codigo: 'COB_WFL_GESTION_EDITAR', desc: 'Editar gestion (solo dia de creacion; despues supervisor)', recurso: 'GESTION_COBRANZA', accion: 'EDITAR' },
          { codigo: 'COB_WFL_GESTION_ANULAR', desc: 'Anular gestion de cobranza', recurso: 'GESTION_COBRANZA', accion: 'ANULAR' },
          { codigo: 'COB_WFL_REPORTE_PRODUCTIVIDAD', desc: 'Ver reporte de productividad de cobradores', recurso: 'GESTION_COBRANZA', accion: 'REPORTE' },
          { codigo: 'COB_WFL_VER_GESTIONES_AJENAS', desc: 'Ver gestiones de otros cobradores (supervisor)', recurso: 'GESTION_COBRANZA', accion: 'VER_AJENAS' },
        ],
      },
      {
        codigo: 'COB_MESA_GESTION',
        descripcion: 'Mesa de Gestión (cobranza de oficina)',
        icono: 'mdi:headset',
        privilegios: [
          { codigo: 'COB_MG_WORKLIST_VER', desc: 'Ver worklist de Mesa de Gestión', recurso: 'MESA_GESTION', accion: 'VER' },
          { codigo: 'COB_MG_PASAR_A_RUTA', desc: 'Marcar cliente para cobrador de ruta', recurso: 'MESA_GESTION', accion: 'PASAR_A_RUTA' },
          { codigo: 'COB_MG_EXPORTAR', desc: 'Exportar worklist', recurso: 'MESA_GESTION', accion: 'EXPORTAR' },
        ],
      },
      {
        codigo: 'COB_ZONAS',
        descripcion: 'Zonas de Cobranza',
        icono: 'mdi:map-marker-radius',
        privilegios: [
          { codigo: 'COB_ZON_ZONA_CREAR', desc: 'Crear zona', recurso: 'ZONA', accion: 'CREAR' },
          { codigo: 'COB_ZON_ZONA_EDITAR', desc: 'Editar zona', recurso: 'ZONA', accion: 'EDITAR' },
          { codigo: 'COB_ZON_ZONA_ELIMINAR', desc: 'Eliminar zona', recurso: 'ZONA', accion: 'ELIMINAR' },
          { codigo: 'COB_ZON_ZONA_VER', desc: 'Ver zona', recurso: 'ZONA', accion: 'VER' },
        ],
      },
    ],
  },
  {
    codigo: 'COMPRAS',
    descripcion: 'Compras',
    icono: 'mdi:cart-arrow-down',
    submodulos: [
      {
        codigo: 'COMP_CUENTAS_PAGAR',
        descripcion: 'Cuentas por Pagar',
        icono: 'mdi:account-cash-outline',
        privilegios: [
          { codigo: 'CMP_CXP_CUENTA_PAGAR_EDITAR', desc: 'Editar cuenta a pagar', recurso: 'CUENTA_PAGAR', accion: 'EDITAR' },
          { codigo: 'CMP_CXP_CUENTA_PAGAR_EXPORTAR', desc: 'Exportar cuentas a pagar', recurso: 'CUENTA_PAGAR', accion: 'EXPORTAR' },
          { codigo: 'CMP_CXP_CUENTA_PAGAR_VER', desc: 'Ver cuentas a pagar', recurso: 'CUENTA_PAGAR', accion: 'VER' },
        ],
      },
      {
        codigo: 'COMP_FACTURAS',
        descripcion: 'Facturas de Proveedor',
        icono: 'mdi:file-document',
        privilegios: [
          { codigo: 'CMP_FAC_FACTURA_PROV_CREAR', desc: 'Crear factura_prov', recurso: 'FACTURA_PROV', accion: 'CREAR' },
          { codigo: 'CMP_FAC_FACTURA_PROV_EDITAR', desc: 'Editar factura_prov', recurso: 'FACTURA_PROV', accion: 'EDITAR' },
          { codigo: 'CMP_FAC_FACTURA_PROV_ELIMINAR', desc: 'Eliminar factura_prov', recurso: 'FACTURA_PROV', accion: 'ELIMINAR' },
          { codigo: 'CMP_FAC_FACTURA_PROV_VER', desc: 'Ver factura_prov', recurso: 'FACTURA_PROV', accion: 'VER' },
        ],
      },
      {
        codigo: 'COMP_NOTAS_CREDITO',
        descripcion: 'Notas de Crédito de Compra',
        icono: 'mdi:file-document-minus',
        privilegios: [
          { codigo: 'CMP_NCC_NOTA_CREDITO_ANULAR', desc: 'Anular nota de crédito de compra', recurso: 'NOTA_CREDITO_COMPRA', accion: 'ANULAR' },
          { codigo: 'CMP_NCC_NOTA_CREDITO_CREAR', desc: 'Crear nota de crédito de compra', recurso: 'NOTA_CREDITO_COMPRA', accion: 'CREAR' },
          { codigo: 'CMP_NCC_NOTA_CREDITO_VER', desc: 'Ver notas de crédito de compra', recurso: 'NOTA_CREDITO_COMPRA', accion: 'VER' },
        ],
      },
      {
        codigo: 'COMP_ORDENES',
        descripcion: 'Órdenes de Compra',
        icono: 'mdi:clipboard-list',
        privilegios: [
          { codigo: 'CMP_OC_ORDEN_COMPRA_APROBAR', desc: 'Aprobar OC', recurso: 'ORDEN_COMPRA', accion: 'APROBAR' },
          { codigo: 'CMP_OC_ORDEN_COMPRA_CREAR', desc: 'Crear orden_compra', recurso: 'ORDEN_COMPRA', accion: 'CREAR' },
          { codigo: 'CMP_OC_ORDEN_COMPRA_EDITAR', desc: 'Editar orden_compra', recurso: 'ORDEN_COMPRA', accion: 'EDITAR' },
          { codigo: 'CMP_OC_ORDEN_COMPRA_ELIMINAR', desc: 'Eliminar orden_compra', recurso: 'ORDEN_COMPRA', accion: 'ELIMINAR' },
          { codigo: 'CMP_OC_ORDEN_COMPRA_VER', desc: 'Ver orden_compra', recurso: 'ORDEN_COMPRA', accion: 'VER' },
        ],
      },
      {
        codigo: 'COMP_ORDEN_PAGO',
        descripcion: 'Órdenes de Pago',
        icono: 'mdi:invoice-text-arrow-right',
        privilegios: [
          { codigo: 'CMP_OP_ORDEN_PAGO_ANULAR', desc: 'Anular orden de pago', recurso: 'ORDEN_PAGO', accion: 'ANULAR' },
          { codigo: 'CMP_OP_ORDEN_PAGO_APROBAR', desc: 'Aprobar orden de pago', recurso: 'ORDEN_PAGO', accion: 'APROBAR' },
          { codigo: 'CMP_OP_ORDEN_PAGO_CREAR', desc: 'Crear orden de pago', recurso: 'ORDEN_PAGO', accion: 'CREAR' },
          { codigo: 'CMP_OP_ORDEN_PAGO_PAGAR', desc: 'Pagar orden de pago', recurso: 'ORDEN_PAGO', accion: 'PAGAR' },
          { codigo: 'CMP_OP_ORDEN_PAGO_VER', desc: 'Ver órdenes de pago', recurso: 'ORDEN_PAGO', accion: 'VER' },
        ],
      },
      {
        codigo: 'COMP_PAGOS',
        descripcion: 'Pagos a Proveedor',
        icono: 'mdi:cash-fast',
        privilegios: [
          { codigo: 'CMP_PAG_PAGO_PROV_ANULAR', desc: 'Anular pago_prov', recurso: 'PAGO_PROV', accion: 'ANULAR' },
          { codigo: 'CMP_PAG_PAGO_PROV_CREAR', desc: 'Crear pago_prov', recurso: 'PAGO_PROV', accion: 'CREAR' },
          { codigo: 'CMP_PAG_PAGO_PROV_VER', desc: 'Ver pago_prov', recurso: 'PAGO_PROV', accion: 'VER' },
        ],
      },
      {
        codigo: 'COMP_PROVEEDORES',
        descripcion: 'Proveedores',
        icono: 'mdi:domain',
        privilegios: [
          { codigo: 'CMP_PRV_PROVEEDOR_CREAR', desc: 'Crear proveedor', recurso: 'PROVEEDOR', accion: 'CREAR' },
          { codigo: 'CMP_PRV_PROVEEDOR_EDITAR', desc: 'Editar proveedor', recurso: 'PROVEEDOR', accion: 'EDITAR' },
          { codigo: 'CMP_PRV_PROVEEDOR_ELIMINAR', desc: 'Eliminar proveedor', recurso: 'PROVEEDOR', accion: 'ELIMINAR' },
          { codigo: 'CMP_PRV_PROVEEDOR_VER', desc: 'Ver proveedor', recurso: 'PROVEEDOR', accion: 'VER' },
        ],
      },
      {
        codigo: 'COMP_RECEPCIONES',
        descripcion: 'Recepciones',
        icono: 'mdi:truck-delivery',
        privilegios: [
          { codigo: 'CMP_REC_RECEPCION_ANULAR', desc: 'Anular recepcion', recurso: 'RECEPCION', accion: 'ANULAR' },
          { codigo: 'CMP_REC_RECEPCION_CREAR', desc: 'Crear recepcion', recurso: 'RECEPCION', accion: 'CREAR' },
          { codigo: 'CMP_REC_RECEPCION_VER', desc: 'Ver recepcion', recurso: 'RECEPCION', accion: 'VER' },
        ],
      },
      {
        codigo: 'COMP_REQUISICIONES',
        descripcion: 'Requisiciones',
        icono: 'mdi:clipboard-edit',
        privilegios: [
          { codigo: 'CMP_REQ_REQUISICION_APROBAR', desc: 'Aprobar requisición', recurso: 'REQUISICION', accion: 'APROBAR' },
          { codigo: 'CMP_REQ_REQUISICION_CREAR', desc: 'Crear requisicion', recurso: 'REQUISICION', accion: 'CREAR' },
          { codigo: 'CMP_REQ_REQUISICION_EDITAR', desc: 'Editar requisicion', recurso: 'REQUISICION', accion: 'EDITAR' },
          { codigo: 'CMP_REQ_REQUISICION_ELIMINAR', desc: 'Eliminar requisicion', recurso: 'REQUISICION', accion: 'ELIMINAR' },
          { codigo: 'CMP_REQ_REQUISICION_VER', desc: 'Ver requisicion', recurso: 'REQUISICION', accion: 'VER' },
        ],
      },
      {
        // Gastos: compra simplificada (proveedor → CxP → orden de pago). Vive bajo
        // COMPRAS por dominio. Los códigos conservan el prefijo TES_ por historia
        // (antes colgaba de TESORERIA); ver migración de reparent de submódulo.
        codigo: 'TES_GASTOS',
        descripcion: 'Gastos',
        icono: 'mdi:cash-minus',
        privilegios: [
          { codigo: 'TES_GAS_GASTO_ANULAR', desc: 'Anular gasto', recurso: 'GASTO', accion: 'ANULAR' },
          { codigo: 'TES_GAS_GASTO_CREAR', desc: 'Crear gasto', recurso: 'GASTO', accion: 'CREAR' },
          { codigo: 'TES_GAS_GASTO_VER', desc: 'Ver gasto', recurso: 'GASTO', accion: 'VER' },
          { codigo: 'TES_GAS_GASTO_IMPORTAR', desc: 'Importar gastos desde Excel', recurso: 'GASTO', accion: 'IMPORTAR' },
        ],
      },
    ],
  },
  {
    codigo: 'INVENTARIO',
    descripcion: 'Inventario',
    icono: 'mdi:package-variant',
    submodulos: [
      {
        codigo: 'INV_AJUSTES',
        descripcion: 'Ajustes de Inventario',
        icono: 'mdi:tune-variant',
        privilegios: [
          { codigo: 'INV_AJU_AJUSTE_ANULAR', desc: 'Anular ajuste', recurso: 'AJUSTE', accion: 'ANULAR' },
          { codigo: 'INV_AJU_AJUSTE_APROBAR', desc: 'Aprobar ajuste', recurso: 'AJUSTE', accion: 'APROBAR' },
          { codigo: 'INV_AJU_AJUSTE_CREAR', desc: 'Crear ajuste', recurso: 'AJUSTE', accion: 'CREAR' },
          { codigo: 'INV_AJU_AJUSTE_VER', desc: 'Ver ajuste', recurso: 'AJUSTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'INV_ATRIBUTOS',
        descripcion: 'Atributos y Presentaciones',
        icono: 'mdi:format-list-bulleted-type',
        privilegios: [
          { codigo: 'INV_ATR_ATRIBUTO_CREAR', desc: 'Crear atributo', recurso: 'ATRIBUTO', accion: 'CREAR' },
          { codigo: 'INV_ATR_ATRIBUTO_EDITAR', desc: 'Editar atributo', recurso: 'ATRIBUTO', accion: 'EDITAR' },
          { codigo: 'INV_ATR_ATRIBUTO_ELIMINAR', desc: 'Eliminar atributo', recurso: 'ATRIBUTO', accion: 'ELIMINAR' },
          { codigo: 'INV_ATR_ATRIBUTO_VER', desc: 'Ver atributo', recurso: 'ATRIBUTO', accion: 'VER' },
          { codigo: 'INV_ATR_PRESENTACION_CREAR', desc: 'Crear presentacion', recurso: 'PRESENTACION', accion: 'CREAR' },
          { codigo: 'INV_ATR_PRESENTACION_EDITAR', desc: 'Editar presentacion', recurso: 'PRESENTACION', accion: 'EDITAR' },
          { codigo: 'INV_ATR_PRESENTACION_ELIMINAR', desc: 'Eliminar presentacion', recurso: 'PRESENTACION', accion: 'ELIMINAR' },
          { codigo: 'INV_ATR_PRESENTACION_VER', desc: 'Ver presentacion', recurso: 'PRESENTACION', accion: 'VER' },
        ],
      },
      {
        codigo: 'INV_CATEGORIAS',
        descripcion: 'Categorías',
        icono: 'mdi:shape',
        privilegios: [
          { codigo: 'INV_CAT_CATEGORIA_CREAR', desc: 'Crear categoria', recurso: 'CATEGORIA', accion: 'CREAR' },
          { codigo: 'INV_CAT_CATEGORIA_EDITAR', desc: 'Editar categoria', recurso: 'CATEGORIA', accion: 'EDITAR' },
          { codigo: 'INV_CAT_CATEGORIA_ELIMINAR', desc: 'Eliminar categoria', recurso: 'CATEGORIA', accion: 'ELIMINAR' },
          { codigo: 'INV_CAT_CATEGORIA_VER', desc: 'Ver categoria', recurso: 'CATEGORIA', accion: 'VER' },
        ],
      },
      {
        codigo: 'INV_CONTEO_FISICO',
        descripcion: 'Conteo Físico',
        icono: 'mdi:clipboard-check',
        privilegios: [
          { codigo: 'INV_CON_CONTEO_CONFIRMAR', desc: 'Confirmar conteo', recurso: 'CONTEO', accion: 'CONFIRMAR' },
          { codigo: 'INV_CON_CONTEO_CREAR', desc: 'Crear conteo', recurso: 'CONTEO', accion: 'CREAR' },
          { codigo: 'INV_CON_CONTEO_VER', desc: 'Ver conteo', recurso: 'CONTEO', accion: 'VER' },
        ],
      },
      {
        codigo: 'INV_DEPOSITOS',
        descripcion: 'Depósitos',
        icono: 'mdi:warehouse',
        privilegios: [
          { codigo: 'INV_DEP_DEPOSITO_CREAR', desc: 'Crear deposito', recurso: 'DEPOSITO', accion: 'CREAR' },
          { codigo: 'INV_DEP_DEPOSITO_EDITAR', desc: 'Editar deposito', recurso: 'DEPOSITO', accion: 'EDITAR' },
          { codigo: 'INV_DEP_DEPOSITO_ELIMINAR', desc: 'Eliminar deposito', recurso: 'DEPOSITO', accion: 'ELIMINAR' },
          { codigo: 'INV_DEP_DEPOSITO_VER', desc: 'Ver deposito', recurso: 'DEPOSITO', accion: 'VER' },
        ],
      },
      {
        codigo: 'INV_LISTAS_PRECIOS',
        descripcion: 'Listas de Precios',
        icono: 'mdi:tag-multiple',
        privilegios: [
          { codigo: 'INV_LP_LISTA_CREAR', desc: 'Crear listas de precios', recurso: 'LISTA', accion: 'CREAR' },
          { codigo: 'INV_LP_LISTA_EDITAR', desc: 'Editar listas de precios', recurso: 'LISTA', accion: 'EDITAR' },
          { codigo: 'INV_LP_LISTA_ELIMINAR', desc: 'Eliminar listas de precios', recurso: 'LISTA', accion: 'ELIMINAR' },
          { codigo: 'INV_LP_LISTA_VER', desc: 'Ver listas de precios', recurso: 'LISTA', accion: 'VER' },
        ],
      },
      {
        codigo: 'INV_REGLAS_PRECIO',
        descripcion: 'Reglas de Precio (marcación desde costo)',
        icono: 'mdi:calculator-variant',
        es_addon: true,
        precio_addon: 80000,
        privilegios: [
          { codigo: 'INV_RGP_REGLA_CREAR', desc: 'Crear regla de precio', recurso: 'REGLA', accion: 'CREAR' },
          { codigo: 'INV_RGP_REGLA_EDITAR', desc: 'Editar regla de precio y recalcular listas', recurso: 'REGLA', accion: 'EDITAR' },
          { codigo: 'INV_RGP_REGLA_ELIMINAR', desc: 'Desactivar regla de precio', recurso: 'REGLA', accion: 'ELIMINAR' },
          { codigo: 'INV_RGP_REGLA_VER', desc: 'Ver reglas de precio', recurso: 'REGLA', accion: 'VER' },
          { codigo: 'INV_RGP_PRECIO_EDITAR', desc: 'Editar manualmente el precio sugerido de un producto (override)', recurso: 'PRECIO_PRODUCTO', accion: 'EDITAR' },
        ],
      },
      {
        codigo: 'INV_LOGISTICA',
        descripcion: 'Logística',
        icono: 'mdi:truck-fast',
        es_addon: true,
        precio_addon: 80000,
        privilegios: [
          { codigo: 'INV_LOG_LOGISTICA_CREAR', desc: 'Crear logistica', recurso: 'LOGISTICA', accion: 'CREAR' },
          { codigo: 'INV_LOG_LOGISTICA_EDITAR', desc: 'Editar logistica', recurso: 'LOGISTICA', accion: 'EDITAR' },
          { codigo: 'INV_LOG_LOGISTICA_ELIMINAR', desc: 'Eliminar logistica', recurso: 'LOGISTICA', accion: 'ELIMINAR' },
          { codigo: 'INV_LOG_LOGISTICA_VER', desc: 'Ver logistica', recurso: 'LOGISTICA', accion: 'VER' },
        ],
      },
      {
        codigo: 'INV_LOTES',
        descripcion: 'Lotes y Vencimientos',
        icono: 'mdi:calendar-alert',
        es_addon: true,
        precio_addon: 40000,
        privilegios: [
          { codigo: 'INV_LOT_LOTE_CREAR', desc: 'Crear lote', recurso: 'LOTE', accion: 'CREAR' },
          { codigo: 'INV_LOT_LOTE_EDITAR', desc: 'Editar lote', recurso: 'LOTE', accion: 'EDITAR' },
          { codigo: 'INV_LOT_LOTE_ELIMINAR', desc: 'Eliminar lote', recurso: 'LOTE', accion: 'ELIMINAR' },
          { codigo: 'INV_LOT_LOTE_VER', desc: 'Ver lote', recurso: 'LOTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'INV_MARCAS',
        descripcion: 'Marcas',
        icono: 'mdi:tag-multiple',
        privilegios: [
          { codigo: 'INV_MAR_MARCA_CREAR', desc: 'Crear marca', recurso: 'MARCA', accion: 'CREAR' },
          { codigo: 'INV_MAR_MARCA_EDITAR', desc: 'Editar marca', recurso: 'MARCA', accion: 'EDITAR' },
          { codigo: 'INV_MAR_MARCA_ELIMINAR', desc: 'Eliminar marca', recurso: 'MARCA', accion: 'ELIMINAR' },
          { codigo: 'INV_MAR_MARCA_VER', desc: 'Ver marca', recurso: 'MARCA', accion: 'VER' },
        ],
      },
      {
        codigo: 'INV_PRM',
        descripcion: 'Proveedor-Marca',
        icono: 'mdi:link-variant',
        privilegios: [
          { codigo: 'INV_PRM_PROVEEDOR_MARCA_VER', desc: 'Ver proveedor-marca', recurso: 'PROVEEDOR_MARCA', accion: 'VER' },
          { codigo: 'INV_PRM_PROVEEDOR_MARCA_VINCULAR', desc: 'Vincular proveedor-marca', recurso: 'PROVEEDOR_MARCA', accion: 'VINCULAR' },
          { codigo: 'INV_PRM_PROVEEDOR_MARCA_DESVINCULAR', desc: 'Desvincular proveedor-marca', recurso: 'PROVEEDOR_MARCA', accion: 'DESVINCULAR' },
          { codigo: 'INV_PRM_PROVEEDOR_MARCA_EXPORTAR', desc: 'Exportar proveedor-marca', recurso: 'PROVEEDOR_MARCA', accion: 'EXPORTAR' },
          { codigo: 'INV_PRM_PROVEEDOR_MARCA_BACKFILL', desc: 'Ejecutar backfill histórico', recurso: 'PROVEEDOR_MARCA', accion: 'BACKFILL' },
        ],
      },
      {
        codigo: 'INV_RPR',
        descripcion: 'Reportes por Proveedor',
        icono: 'mdi:file-chart-outline',
        privilegios: [
          { codigo: 'INV_RPR_REPORTE_VENCIDOS_PROVEEDOR_VER', desc: 'Ver vencidos por proveedor', recurso: 'REPORTE_VENCIDOS_PROVEEDOR', accion: 'VER' },
          { codigo: 'INV_RPR_REPORTE_PROXIMOS_VENCER_VER', desc: 'Ver próximos a vencer por proveedor', recurso: 'REPORTE_PROXIMOS_VENCER', accion: 'VER' },
          { codigo: 'INV_RPR_REPORTE_STOCK_POR_PROVEEDOR_VER', desc: 'Ver stock de marcas por proveedor', recurso: 'REPORTE_STOCK_POR_PROVEEDOR', accion: 'VER' },
          { codigo: 'INV_RPR_REPORTE_EXPORTAR', desc: 'Exportar reportes por proveedor', recurso: 'REPORTE_PROVEEDOR', accion: 'EXPORTAR' },
          { codigo: 'INV_RPR_REPORTE_ENVIAR_EMAIL', desc: 'Enviar reporte al proveedor por email', recurso: 'REPORTE_PROVEEDOR', accion: 'ENVIAR_EMAIL' },
        ],
      },
      {
        codigo: 'INV_MOVIMIENTOS',
        descripcion: 'Movimientos de Stock',
        icono: 'mdi:swap-horizontal',
        privilegios: [
          { codigo: 'INV_MOV_MOVIMIENTO_EXPORTAR', desc: 'Exportar movimientos', recurso: 'MOVIMIENTO', accion: 'EXPORTAR' },
          { codigo: 'INV_MOV_MOVIMIENTO_VER', desc: 'Ver movimientos de inventario', recurso: 'MOVIMIENTO', accion: 'VER' },
        ],
      },
      {
        codigo: 'INV_OFERTAS',
        descripcion: 'Ofertas y Promociones',
        icono: 'mdi:sale',
        privilegios: [
          { codigo: 'INV_OFE_OFERTA_CREAR', desc: 'Crear oferta', recurso: 'OFERTA', accion: 'CREAR' },
          { codigo: 'INV_OFE_OFERTA_EDITAR', desc: 'Editar oferta', recurso: 'OFERTA', accion: 'EDITAR' },
          { codigo: 'INV_OFE_OFERTA_ELIMINAR', desc: 'Eliminar oferta', recurso: 'OFERTA', accion: 'ELIMINAR' },
          { codigo: 'INV_OFE_OFERTA_VER', desc: 'Ver oferta', recurso: 'OFERTA', accion: 'VER' },
        ],
      },
      {
        codigo: 'INV_PRODUCTOS',
        descripcion: 'Productos',
        icono: 'mdi:package',
        privilegios: [
          { codigo: 'INV_PRD_COSTO_EDITAR', desc: 'Editar costo de producto', recurso: 'COSTO', accion: 'EDITAR' },
          { codigo: 'INV_PRD_PRECIO_BASE_EDITAR', desc: 'Editar el precio base (referencia manual) del producto', recurso: 'PRECIO_BASE', accion: 'EDITAR' },
          { codigo: 'INV_PRD_CUOTA_EDITAR', desc: 'Definir/editar las opciones de precios a cuotas de un producto', recurso: 'CUOTA_PRODUCTO', accion: 'EDITAR' },
          { codigo: 'INV_PRD_PRODUCTO_CREAR', desc: 'Crear producto', recurso: 'PRODUCTO', accion: 'CREAR' },
          { codigo: 'INV_PRD_PRODUCTO_EDITAR', desc: 'Editar producto', recurso: 'PRODUCTO', accion: 'EDITAR' },
          { codigo: 'INV_PRD_EDICION_MASIVA', desc: 'Editar productos en masa desde la grilla de edición masiva', recurso: 'PRODUCTO', accion: 'EDITAR_MASIVO' },
          { codigo: 'INV_PRD_PRODUCTO_ELIMINAR', desc: 'Eliminar producto', recurso: 'PRODUCTO', accion: 'ELIMINAR' },
          { codigo: 'INV_PRD_PRODUCTO_EXPORTAR', desc: 'Exportar productos', recurso: 'PRODUCTO', accion: 'EXPORTAR' },
          { codigo: 'INV_PRD_PRODUCTO_IMPORTAR', desc: 'Importar productos masivo', recurso: 'PRODUCTO', accion: 'IMPORTAR' },
          { codigo: 'INV_PRD_PRODUCTO_VER', desc: 'Ver producto', recurso: 'PRODUCTO', accion: 'VER' },
        ],
      },
      {
        codigo: 'INV_IMAGENES_IA',
        descripcion: 'Imágenes de productos con IA',
        icono: 'mdi:image-search',
        es_addon: true,
        precio_addon: 0,
        privilegios: [
          { codigo: 'INV_IMG_SUGERENCIA_VER', desc: 'Ver búsquedas y sugerencias de imágenes', recurso: 'SUGERENCIA', accion: 'VER' },
          { codigo: 'INV_IMG_BUSQUEDA_CREAR', desc: 'Lanzar una búsqueda de imágenes (consume IA)', recurso: 'BUSQUEDA', accion: 'CREAR' },
          { codigo: 'INV_IMG_SUGERENCIA_APROBAR', desc: 'Aprobar o rechazar imágenes sugeridas', recurso: 'SUGERENCIA', accion: 'APROBAR' },
        ],
      },
      {
        codigo: 'INV_STOCK',
        descripcion: 'Stock',
        icono: 'mdi:warehouse',
        privilegios: [
          { codigo: 'INV_STK_COSTO_VER', desc: 'Ver costos y valorización', recurso: 'COSTO', accion: 'VER' },
          { codigo: 'INV_STK_STOCK_AJUSTAR', desc: 'Ajustar stock (límites/reservas)', recurso: 'STOCK', accion: 'AJUSTAR' },
          { codigo: 'INV_STK_STOCK_EXPORTAR', desc: 'Exportar stock', recurso: 'STOCK', accion: 'EXPORTAR' },
          { codigo: 'INV_STK_STOCK_VER', desc: 'Ver stock', recurso: 'STOCK', accion: 'VER' },
        ],
      },
      {
        codigo: 'INV_TRANSFERENCIAS',
        descripcion: 'Transferencias',
        icono: 'mdi:transit-transfer',
        privilegios: [
          { codigo: 'INV_TRF_TRANSFERENCIA_ANULAR', desc: 'Anular transferencia', recurso: 'TRANSFERENCIA', accion: 'ANULAR' },
          { codigo: 'INV_TRF_TRANSFERENCIA_CREAR', desc: 'Crear transferencia', recurso: 'TRANSFERENCIA', accion: 'CREAR' },
          { codigo: 'INV_TRF_TRANSFERENCIA_VER', desc: 'Ver transferencia', recurso: 'TRANSFERENCIA', accion: 'VER' },
        ],
      },
    ],
  },
  {
    // Módulo que habilita el control de lotes (capas de costo FIFO). El gate de
    // `LotesService.isEnabledForEmpresa` exige este código: sin él, el switch
    // "Maneja lotes" de la sucursal no hace nada. Ver
    // docs/plan-motor-precios-rentabilidad.md.
    codigo: 'LOTES',
    descripcion: 'Lotes y Costeo FIFO',
    icono: 'mdi:layers-triple',
    submodulos: [
      {
        codigo: 'INV_LOTES',
        descripcion: 'Lotes de Producto',
        icono: 'mdi:layers-triple',
        privilegios: [
          { codigo: 'INV_LOT_LOTE_VER', desc: 'Ver lotes y su stock por depósito', recurso: 'LOTE', accion: 'VER' },
          { codigo: 'INV_LOT_LOTE_EDITAR', desc: 'Editar datos de un lote (vencimiento, fabricación)', recurso: 'LOTE', accion: 'EDITAR' },
        ],
      },
    ],
  },
  {
    codigo: 'CONTABILIDAD',
    descripcion: 'Contabilidad',
    icono: 'mdi:book-account',
    submodulos: [
      {
        codigo: 'CONTABILIDAD_CONCILIACION',
        descripcion: 'Conciliación Contable',
        icono: 'mdi:sync-alert',
        privilegios: [
          { codigo: 'CONT_CONC_PENDIENTES_VER', desc: 'Ver movimientos sin asiento contable',    recurso: 'CONC_PENDIENTES', accion: 'VER' },
          { codigo: 'CONT_CONC_REGENERAR',      desc: 'Regenerar asientos pendientes en lote',    recurso: 'CONC_PENDIENTES', accion: 'PROCESAR' },
        ],
      },
      {
        codigo: 'CONT_ASIENTOS',
        descripcion: 'Asientos Contables',
        icono: 'mdi:notebook-edit',
        privilegios: [
          { codigo: 'CONT_ASI_ASIENTO_APROBAR', desc: 'Aprobar asiento', recurso: 'ASIENTO', accion: 'APROBAR' },
          { codigo: 'CONT_ASI_ASIENTO_CONFIRMAR', desc: 'Confirmar asiento', recurso: 'ASIENTO', accion: 'CONFIRMAR' },
          { codigo: 'CONT_ASI_ASIENTO_CREAR', desc: 'Crear asiento', recurso: 'ASIENTO', accion: 'CREAR' },
          { codigo: 'CONT_ASI_ASIENTO_EDITAR', desc: 'Editar asiento', recurso: 'ASIENTO', accion: 'EDITAR' },
          { codigo: 'CONT_ASI_ASIENTO_ELIMINAR', desc: 'Eliminar asiento', recurso: 'ASIENTO', accion: 'ELIMINAR' },
          { codigo: 'CONT_ASI_ASIENTO_EXPORTAR', desc: 'Exportar asientos', recurso: 'ASIENTO', accion: 'EXPORTAR' },
          { codigo: 'CONT_ASI_ASIENTO_REVERTIR', desc: 'Revertir asiento', recurso: 'ASIENTO', accion: 'REVERTIR' },
          { codigo: 'CONT_ASI_ASIENTO_VER', desc: 'Ver asiento', recurso: 'ASIENTO', accion: 'VER' },
        ],
      },
      {
        codigo: 'CONT_CENTROS_COSTO',
        descripcion: 'Centros de Costo',
        icono: 'mdi:office-building',
        privilegios: [
          { codigo: 'CONT_CC_CENTRO_COSTO_CREAR', desc: 'Crear centro_costo', recurso: 'CENTRO_COSTO', accion: 'CREAR' },
          { codigo: 'CONT_CC_CENTRO_COSTO_EDITAR', desc: 'Editar centro_costo', recurso: 'CENTRO_COSTO', accion: 'EDITAR' },
          { codigo: 'CONT_CC_CENTRO_COSTO_ELIMINAR', desc: 'Eliminar centro_costo', recurso: 'CENTRO_COSTO', accion: 'ELIMINAR' },
          { codigo: 'CONT_CC_CENTRO_COSTO_VER', desc: 'Ver centro_costo', recurso: 'CENTRO_COSTO', accion: 'VER' },
        ],
      },
      {
        codigo: 'CONT_EJERCICIOS',
        descripcion: 'Ejercicios Contables',
        icono: 'mdi:calendar-range',
        privilegios: [
          { codigo: 'CONT_EJE_EJERCICIO_CERRAR', desc: 'Cerrar ejercicio', recurso: 'EJERCICIO', accion: 'PROCESAR' },
          { codigo: 'CONT_EJE_EJERCICIO_CREAR', desc: 'Crear ejercicio', recurso: 'EJERCICIO', accion: 'CREAR' },
          { codigo: 'CONT_EJE_EJERCICIO_EDITAR', desc: 'Editar ejercicio', recurso: 'EJERCICIO', accion: 'EDITAR' },
          { codigo: 'CONT_EJE_EJERCICIO_VER', desc: 'Ver ejercicio', recurso: 'EJERCICIO', accion: 'VER' },
        ],
      },
      {
        codigo: 'CONT_MAPEO',
        descripcion: 'Mapeo de Cuentas',
        icono: 'mdi:link-variant',
        privilegios: [
          { codigo: 'CONT_MAP_MAPEO_EDITAR', desc: 'Editar mapeo', recurso: 'MAPEO', accion: 'EDITAR' },
          { codigo: 'CONT_MAP_MAPEO_VER', desc: 'Ver mapeo', recurso: 'MAPEO', accion: 'VER' },
        ],
      },
      {
        codigo: 'CONT_PERIODOS',
        descripcion: 'Períodos Contables',
        icono: 'mdi:calendar-clock',
        privilegios: [
          { codigo: 'CONT_PER_PERIODO_BLOQUEAR', desc: 'Bloquear período', recurso: 'PERIODO', accion: 'PROCESAR' },
          { codigo: 'CONT_PER_PERIODO_CERRAR', desc: 'Cerrar período', recurso: 'PERIODO', accion: 'PROCESAR' },
          { codigo: 'CONT_PER_PERIODO_REABRIR', desc: 'Reabrir período', recurso: 'PERIODO', accion: 'PROCESAR' },
          { codigo: 'CONT_PER_PERIODO_VER', desc: 'Ver períodos', recurso: 'PERIODO', accion: 'VER' },
        ],
      },
      {
        codigo: 'CONT_PLAN_CUENTAS',
        descripcion: 'Plan de Cuentas',
        icono: 'mdi:format-list-bulleted',
        privilegios: [
          { codigo: 'CONT_PC_CUENTA_CREAR', desc: 'Crear cuenta', recurso: 'CUENTA', accion: 'CREAR' },
          { codigo: 'CONT_PC_CUENTA_EDITAR', desc: 'Editar cuenta', recurso: 'CUENTA', accion: 'EDITAR' },
          { codigo: 'CONT_PC_CUENTA_ELIMINAR', desc: 'Eliminar cuenta', recurso: 'CUENTA', accion: 'ELIMINAR' },
          { codigo: 'CONT_PC_CUENTA_EXPORTAR', desc: 'Exportar plan de cuentas', recurso: 'CUENTA', accion: 'EXPORTAR' },
          { codigo: 'CONT_PC_CUENTA_IMPORTAR', desc: 'Importar plan de cuentas', recurso: 'CUENTA', accion: 'PROCESAR' },
          { codigo: 'CONT_PC_CUENTA_VER', desc: 'Ver cuenta', recurso: 'CUENTA', accion: 'VER' },
        ],
      },
      {
        codigo: 'CONT_REPORTES',
        descripcion: 'Reportes Contables',
        icono: 'mdi:chart-line',
        privilegios: [
          { codigo: 'CONT_REP_REPORTE_EXPORTAR', desc: 'Exportar reportes', recurso: 'REPORTE', accion: 'EXPORTAR' },
          { codigo: 'CONT_REP_REPORTE_VER', desc: 'Ver reportes', recurso: 'REPORTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'CONT_TIPO_CAMBIO',
        descripcion: 'Tipo de Cambio',
        icono: 'mdi:currency-usd',
        privilegios: [
          { codigo: 'CONT_TC_TIPO_CAMBIO_CREAR', desc: 'Registrar tipo cambio', recurso: 'TIPO_CAMBIO', accion: 'CREAR' },
          { codigo: 'CONT_TC_TIPO_CAMBIO_EDITAR', desc: 'Editar tipo cambio', recurso: 'TIPO_CAMBIO', accion: 'EDITAR' },
          { codigo: 'CONT_TC_TIPO_CAMBIO_ELIMINAR', desc: 'Eliminar tipo cambio', recurso: 'TIPO_CAMBIO', accion: 'ELIMINAR' },
          { codigo: 'CONT_TC_TIPO_CAMBIO_VER', desc: 'Ver tipos de cambio', recurso: 'TIPO_CAMBIO', accion: 'VER' },
        ],
      },
    ],
  },
  {
    codigo: 'TESORERIA',
    descripcion: 'Tesorería',
    icono: 'mdi:bank',
    submodulos: [
      {
        codigo: 'TES_BANCOS',
        descripcion: 'Bancos (catálogo)',
        icono: 'mdi:bank',
        privilegios: [
          { codigo: 'TES_BCO_BANCO_CREAR', desc: 'Crear banco', recurso: 'BANCO', accion: 'CREAR' },
          { codigo: 'TES_BCO_BANCO_EDITAR', desc: 'Editar banco', recurso: 'BANCO', accion: 'EDITAR' },
          { codigo: 'TES_BCO_BANCO_ELIMINAR', desc: 'Eliminar banco', recurso: 'BANCO', accion: 'ELIMINAR' },
          { codigo: 'TES_BCO_BANCO_VER', desc: 'Ver banco', recurso: 'BANCO', accion: 'VER' },
        ],
      },
      {
        codigo: 'TES_CAJA',
        descripcion: 'Caja del Día',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'TES_CJA_CAJA_ABRIR', desc: 'Abrir caja', recurso: 'CAJA', accion: 'ABRIR' },
          { codigo: 'TES_CJA_CAJA_CERRAR', desc: 'Cerrar caja', recurso: 'CAJA', accion: 'CERRAR' },
          { codigo: 'TES_CJA_CAJA_VER', desc: 'Ver cajas y movimientos', recurso: 'CAJA', accion: 'VER' },
          { codigo: 'TES_CJA_ENTRADA_CREAR', desc: 'Registrar entrada manual de caja', recurso: 'ENTRADA', accion: 'CREAR' },
          { codigo: 'TES_CJA_SALIDA_CREAR', desc: 'Registrar salida manual de caja', recurso: 'SALIDA', accion: 'CREAR' },
        ],
      },
      {
        codigo: 'TES_CAJAS',
        descripcion: 'Cajas',
        icono: 'mdi:cash-register',
        privilegios: [
          { codigo: 'TES_CAJ_CAJA_ABRIR', desc: 'Abrir caja', recurso: 'CAJA', accion: 'PROCESAR' },
          { codigo: 'TES_CAJ_CAJA_ARQUEAR', desc: 'Arquear caja', recurso: 'CAJA', accion: 'PROCESAR' },
          { codigo: 'TES_CAJ_CAJA_CERRAR', desc: 'Cerrar caja', recurso: 'CAJA', accion: 'PROCESAR' },
          { codigo: 'TES_CAJ_CAJA_CREAR', desc: 'Crear caja', recurso: 'CAJA', accion: 'CREAR' },
          { codigo: 'TES_CAJ_CAJA_EDITAR', desc: 'Editar caja', recurso: 'CAJA', accion: 'EDITAR' },
          { codigo: 'TES_CAJ_CAJA_ELIMINAR', desc: 'Eliminar caja', recurso: 'CAJA', accion: 'ELIMINAR' },
          { codigo: 'TES_CAJ_CAJA_VER', desc: 'Ver caja', recurso: 'CAJA', accion: 'VER' },
        ],
      },
      {
        codigo: 'TES_CATEGORIAS',
        descripcion: 'Categorías Financieras',
        icono: 'mdi:tag-multiple',
        privilegios: [
          { codigo: 'TES_CAT_CATEGORIA_CREAR', desc: 'Crear categoria', recurso: 'CATEGORIA', accion: 'CREAR' },
          { codigo: 'TES_CAT_CATEGORIA_EDITAR', desc: 'Editar categoria', recurso: 'CATEGORIA', accion: 'EDITAR' },
          { codigo: 'TES_CAT_CATEGORIA_ELIMINAR', desc: 'Eliminar categoria', recurso: 'CATEGORIA', accion: 'ELIMINAR' },
          { codigo: 'TES_CAT_CATEGORIA_VER', desc: 'Ver categoria', recurso: 'CATEGORIA', accion: 'VER' },
        ],
      },
      {
        codigo: 'TES_CHEQUES',
        descripcion: 'Cheques',
        icono: 'mdi:checkbook',
        privilegios: [
          { codigo: 'TES_CHQ_CHEQUE_ANULAR', desc: 'Anular cheque', recurso: 'CHEQUE', accion: 'ANULAR' },
          { codigo: 'TES_CHQ_CHEQUE_CREAR', desc: 'Crear cheque', recurso: 'CHEQUE', accion: 'CREAR' },
          { codigo: 'TES_CHQ_CHEQUE_DEPOSITAR', desc: 'Depositar cheque', recurso: 'CHEQUE', accion: 'PROCESAR' },
          { codigo: 'TES_CHQ_CHEQUE_EDITAR', desc: 'Editar cheque', recurso: 'CHEQUE', accion: 'EDITAR' },
          { codigo: 'TES_CHQ_CHEQUE_ELIMINAR', desc: 'Eliminar cheque', recurso: 'CHEQUE', accion: 'ELIMINAR' },
          { codigo: 'TES_CHQ_CHEQUE_VER', desc: 'Ver cheque', recurso: 'CHEQUE', accion: 'VER' },
        ],
      },
      {
        codigo: 'TES_CONCILIACION',
        descripcion: 'Conciliación Bancaria',
        icono: 'mdi:bank-check',
        privilegios: [
          { codigo: 'TES_CONC_CONCILIACION_PROCESAR', desc: 'Conciliar', recurso: 'CONCILIACION', accion: 'PROCESAR' },
          { codigo: 'TES_CONC_CONCILIACION_VER', desc: 'Ver conciliaciones', recurso: 'CONCILIACION', accion: 'VER' },
        ],
      },
      {
        codigo: 'TES_CUENTAS',
        descripcion: 'Cuentas Bancarias',
        icono: 'mdi:credit-card-multiple',
        privilegios: [
          { codigo: 'TES_CTA_CUENTA_BANCARIA_CREAR', desc: 'Crear cuenta_bancaria', recurso: 'CUENTA_BANCARIA', accion: 'CREAR' },
          { codigo: 'TES_CTA_CUENTA_BANCARIA_EDITAR', desc: 'Editar cuenta_bancaria', recurso: 'CUENTA_BANCARIA', accion: 'EDITAR' },
          { codigo: 'TES_CTA_CUENTA_BANCARIA_ELIMINAR', desc: 'Eliminar cuenta_bancaria', recurso: 'CUENTA_BANCARIA', accion: 'ELIMINAR' },
          { codigo: 'TES_CTA_CUENTA_BANCARIA_VER', desc: 'Ver cuenta_bancaria', recurso: 'CUENTA_BANCARIA', accion: 'VER' },
        ],
      },
      {
        codigo: 'TES_MOVIMIENTOS',
        descripcion: 'Movimientos',
        icono: 'mdi:swap-horizontal',
        privilegios: [
          { codigo: 'TES_MOV_MOVIMIENTO_ANULAR', desc: 'Anular movimiento', recurso: 'MOVIMIENTO', accion: 'ANULAR' },
          { codigo: 'TES_MOV_MOVIMIENTO_APROBAR', desc: 'Aprobar movimiento', recurso: 'MOVIMIENTO', accion: 'APROBAR' },
          { codigo: 'TES_MOV_MOVIMIENTO_CREAR', desc: 'Crear movimiento', recurso: 'MOVIMIENTO', accion: 'CREAR' },
          { codigo: 'TES_MOV_MOVIMIENTO_ELIMINAR', desc: 'Eliminar movimiento en borrador', recurso: 'MOVIMIENTO', accion: 'ELIMINAR' },
          { codigo: 'TES_MOV_MOVIMIENTO_EDITAR', desc: 'Editar fecha y descripción de un movimiento', recurso: 'MOVIMIENTO', accion: 'EDITAR' },
          { codigo: 'TES_MOV_MOVIMIENTO_VER', desc: 'Ver movimiento', recurso: 'MOVIMIENTO', accion: 'VER' },
        ],
      },
      {
        codigo: 'TES_PARAMETROS',
        descripcion: 'Parámetros de Tesorería',
        icono: 'mdi:cog',
        privilegios: [
          { codigo: 'TES_PAR_PARAMETRO_CONFIGURAR', desc: 'Configurar parámetros', recurso: 'PARAMETRO', accion: 'CONFIGURAR' },
          { codigo: 'TES_PAR_PARAMETRO_VER', desc: 'Ver parámetros', recurso: 'PARAMETRO', accion: 'VER' },
        ],
      },
      {
        codigo: 'TES_REGLAS_AUTO',
        descripcion: 'Reglas de conciliación automática',
        icono: 'mdi:auto-fix',
        privilegios: [
          { codigo: 'TES_REG_REGLA_CONCILIACION_CREAR', desc: 'Crear regla_conciliacion', recurso: 'REGLA_CONCILIACION', accion: 'CREAR' },
          { codigo: 'TES_REG_REGLA_CONCILIACION_EDITAR', desc: 'Editar regla_conciliacion', recurso: 'REGLA_CONCILIACION', accion: 'EDITAR' },
          { codigo: 'TES_REG_REGLA_CONCILIACION_ELIMINAR', desc: 'Eliminar regla_conciliacion', recurso: 'REGLA_CONCILIACION', accion: 'ELIMINAR' },
          { codigo: 'TES_REG_REGLA_CONCILIACION_VER', desc: 'Ver regla_conciliacion', recurso: 'REGLA_CONCILIACION', accion: 'VER' },
        ],
      },
      {
        codigo: 'TES_REPORTES',
        descripcion: 'Reportes de Tesorería',
        icono: 'mdi:chart-box',
        privilegios: [
          { codigo: 'TES_REP_FLUJO_CAJA_VER', desc: 'Ver flujo de caja', recurso: 'FLUJO_CAJA', accion: 'VER' },
          { codigo: 'TES_REP_LIBRO_BANCO_VER', desc: 'Ver libro de bancos', recurso: 'LIBRO_BANCO', accion: 'VER' },
          { codigo: 'TES_REP_LIBRO_CAJA_VER', desc: 'Ver libro de caja', recurso: 'LIBRO_CAJA', accion: 'VER' },
          { codigo: 'TES_REP_REPORTE_EXPORTAR', desc: 'Exportar reportes', recurso: 'REPORTE', accion: 'EXPORTAR' },
        ],
      },
      {
        codigo: 'TES_RETENCION',
        descripcion: 'Retenciones',
        icono: 'mdi:cash-minus',
        privilegios: [
          { codigo: 'TES_RET_ANULAR', desc: 'Anular retención', recurso: 'RET', accion: 'ANULAR' },
          { codigo: 'TES_RET_CREAR', desc: 'Crear retención', recurso: 'RET', accion: 'CREAR' },
          { codigo: 'TES_RET_VER', desc: 'Ver retenciones', recurso: 'RET', accion: 'VER' },
        ],
      },
      {
        codigo: 'TES_TRANSFERENCIAS',
        descripcion: 'Transferencias',
        icono: 'mdi:bank-transfer',
        privilegios: [
          { codigo: 'TES_TRF_TRANSFERENCIA_ANULAR', desc: 'Anular transferencia', recurso: 'TRANSFERENCIA', accion: 'ANULAR' },
          { codigo: 'TES_TRF_TRANSFERENCIA_CREAR', desc: 'Crear transferencia', recurso: 'TRANSFERENCIA', accion: 'CREAR' },
          { codigo: 'TES_TRF_TRANSFERENCIA_VER', desc: 'Ver transferencia', recurso: 'TRANSFERENCIA', accion: 'VER' },
        ],
      },
    ],
  },
  {
    codigo: 'RRHH',
    descripcion: 'RRHH',
    icono: 'mdi:account-group',
    submodulos: [
      {
        codigo: 'RRHH_ANTICIPOS',
        descripcion: 'Anticipos y Préstamos',
        icono: 'mdi:cash-fast',
        privilegios: [
          { codigo: 'RH_ANT_ANTICIPO_CREAR', desc: 'Crear anticipo', recurso: 'ANTICIPO', accion: 'CREAR' },
          { codigo: 'RH_ANT_ANTICIPO_EDITAR', desc: 'Editar anticipo', recurso: 'ANTICIPO', accion: 'EDITAR' },
          { codigo: 'RH_ANT_ANTICIPO_ELIMINAR', desc: 'Eliminar anticipo', recurso: 'ANTICIPO', accion: 'ELIMINAR' },
          { codigo: 'RH_ANT_ANTICIPO_VER', desc: 'Ver anticipo', recurso: 'ANTICIPO', accion: 'VER' },
          { codigo: 'RH_ANT_PRESTAMO_CREAR', desc: 'Crear prestamo', recurso: 'PRESTAMO', accion: 'CREAR' },
          { codigo: 'RH_ANT_PRESTAMO_EDITAR', desc: 'Editar prestamo', recurso: 'PRESTAMO', accion: 'EDITAR' },
          { codigo: 'RH_ANT_PRESTAMO_ELIMINAR', desc: 'Eliminar prestamo', recurso: 'PRESTAMO', accion: 'ELIMINAR' },
          { codigo: 'RH_ANT_PRESTAMO_VER', desc: 'Ver prestamo', recurso: 'PRESTAMO', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_BANCARIO',
        descripcion: 'Acreditaciones Bancarias',
        icono: 'mdi:bank-transfer',
        privilegios: [
          { codigo: 'RH_BAN_ACREDITACION_GENERAR', desc: 'Generar acreditaciones', recurso: 'ACREDITACION', accion: 'PROCESAR' },
          { codigo: 'RH_BAN_ACREDITACION_VER', desc: 'Ver acreditaciones', recurso: 'ACREDITACION', accion: 'VER' },
          { codigo: 'RH_BAN_FORMATO_EDITAR', desc: 'Editar formatos bancarios', recurso: 'FORMATO', accion: 'EDITAR' },
        ],
      },
      {
        codigo: 'RRHH_COMISIONES',
        descripcion: 'Comisiones (nómina)',
        icono: 'mdi:cash-multiple',
        privilegios: [
          { codigo: 'RH_COM_COMISION_VER', desc: 'Ver comisiones de nómina', recurso: 'COMISION', accion: 'VER' },
          { codigo: 'RH_COM_COMISION_IMPORTAR', desc: 'Importar comisiones del módulo comercial', recurso: 'COMISION', accion: 'PROCESAR' },
          { codigo: 'RH_COM_COMISION_REVISAR', desc: 'Aprobar / rechazar comisiones', recurso: 'COMISION', accion: 'EDITAR' },
        ],
      },
      {
        codigo: 'RRHH_CONCEPTOS',
        descripcion: 'Conceptos de Nómina',
        icono: 'mdi:format-list-checks',
        privilegios: [
          { codigo: 'RH_CON_CONCEPTO_CREAR', desc: 'Crear concepto', recurso: 'CONCEPTO', accion: 'CREAR' },
          { codigo: 'RH_CON_CONCEPTO_EDITAR', desc: 'Editar concepto', recurso: 'CONCEPTO', accion: 'EDITAR' },
          { codigo: 'RH_CON_CONCEPTO_ELIMINAR', desc: 'Eliminar concepto', recurso: 'CONCEPTO', accion: 'ELIMINAR' },
          { codigo: 'RH_CON_CONCEPTO_VER', desc: 'Ver concepto', recurso: 'CONCEPTO', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_CONFIG',
        descripcion: 'Configuración RRHH',
        icono: 'mdi:cog',
        privilegios: [
          { codigo: 'RH_CFG_CATALOGO_EDITAR', desc: 'Editar catálogos', recurso: 'CATALOGO', accion: 'EDITAR' },
          { codigo: 'RH_CFG_CATALOGO_VER', desc: 'Ver catálogos', recurso: 'CATALOGO', accion: 'VER' },
          { codigo: 'RH_CFG_PARAMETRO_EDITAR', desc: 'Editar parámetros', recurso: 'PARAMETRO', accion: 'EDITAR' },
          { codigo: 'RH_CFG_PARAMETRO_VER', desc: 'Ver parámetros', recurso: 'PARAMETRO', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_DESVINCULACIONES',
        descripcion: 'Desvinculaciones',
        icono: 'mdi:account-remove',
        privilegios: [
          { codigo: 'RH_DES_DESVINCULACION_CREAR', desc: 'Crear desvinculacion', recurso: 'DESVINCULACION', accion: 'CREAR' },
          { codigo: 'RH_DES_DESVINCULACION_EDITAR', desc: 'Editar desvinculacion', recurso: 'DESVINCULACION', accion: 'EDITAR' },
          { codigo: 'RH_DES_DESVINCULACION_PROCESAR', desc: 'Procesar desvinculación', recurso: 'DESVINCULACION', accion: 'PROCESAR' },
          { codigo: 'RH_DES_DESVINCULACION_VER', desc: 'Ver desvinculacion', recurso: 'DESVINCULACION', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_EMPLEADOS',
        descripcion: 'Empleados',
        icono: 'mdi:badge-account',
        privilegios: [
          { codigo: 'RH_EMP_EMPLEADO_CREAR', desc: 'Crear empleado', recurso: 'EMPLEADO', accion: 'CREAR' },
          { codigo: 'RH_EMP_EMPLEADO_EDITAR', desc: 'Editar empleado', recurso: 'EMPLEADO', accion: 'EDITAR' },
          { codigo: 'RH_EMP_EMPLEADO_ELIMINAR', desc: 'Eliminar empleado', recurso: 'EMPLEADO', accion: 'ELIMINAR' },
          { codigo: 'RH_EMP_EMPLEADO_EXPORTAR', desc: 'Exportar empleados', recurso: 'EMPLEADO', accion: 'EXPORTAR' },
          { codigo: 'RH_EMP_EMPLEADO_VER', desc: 'Ver empleado', recurso: 'EMPLEADO', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_IPS',
        descripcion: 'IPS',
        icono: 'mdi:hospital-building',
        privilegios: [
          { codigo: 'RH_IPS_IPS_EXPORTAR', desc: 'Exportar IPS', recurso: 'IPS', accion: 'EXPORTAR' },
          { codigo: 'RH_IPS_IPS_GENERAR', desc: 'Generar IPS', recurso: 'IPS', accion: 'PROCESAR' },
          { codigo: 'RH_IPS_IPS_VER', desc: 'Ver IPS', recurso: 'IPS', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_LEGAJOS',
        descripcion: 'Legajos y Documentos',
        icono: 'mdi:folder-account',
        privilegios: [
          { codigo: 'RH_LEG_DOCUMENTO_CREAR', desc: 'Subir documentos', recurso: 'DOCUMENTO', accion: 'CREAR' },
          { codigo: 'RH_LEG_DOCUMENTO_ELIMINAR', desc: 'Eliminar documentos', recurso: 'DOCUMENTO', accion: 'ELIMINAR' },
          { codigo: 'RH_LEG_DOCUMENTO_VER', desc: 'Ver documentos', recurso: 'DOCUMENTO', accion: 'VER' },
          { codigo: 'RH_LEG_LEGAJO_CREAR', desc: 'Crear legajo', recurso: 'LEGAJO', accion: 'CREAR' },
          { codigo: 'RH_LEG_LEGAJO_EDITAR', desc: 'Editar legajo', recurso: 'LEGAJO', accion: 'EDITAR' },
          { codigo: 'RH_LEG_LEGAJO_ELIMINAR', desc: 'Eliminar legajo', recurso: 'LEGAJO', accion: 'ELIMINAR' },
          { codigo: 'RH_LEG_LEGAJO_VER', desc: 'Ver legajo', recurso: 'LEGAJO', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_LIQUIDACIONES',
        descripcion: 'Liquidaciones',
        icono: 'mdi:cash-multiple',
        privilegios: [
          { codigo: 'RH_LIQ_LIQUIDACION_ANULAR', desc: 'Anular liquidacion', recurso: 'LIQUIDACION', accion: 'ANULAR' },
          { codigo: 'RH_LIQ_LIQUIDACION_APROBAR', desc: 'Aprobar liquidación', recurso: 'LIQUIDACION', accion: 'APROBAR' },
          { codigo: 'RH_LIQ_LIQUIDACION_CREAR', desc: 'Crear liquidacion', recurso: 'LIQUIDACION', accion: 'CREAR' },
          { codigo: 'RH_LIQ_LIQUIDACION_PAGAR', desc: 'Pagar liquidación', recurso: 'LIQUIDACION', accion: 'PROCESAR' },
          { codigo: 'RH_LIQ_LIQUIDACION_VER', desc: 'Ver liquidacion', recurso: 'LIQUIDACION', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_LIQUIDACIONES_IA',
        descripcion: 'Liquidaciones IA',
        icono: 'mdi:robot',
        es_addon: true,
        precio_addon: 70000,
        privilegios: [
          { codigo: 'RH_LIA_LIQ_IA_PROCESAR', desc: 'Procesar IA', recurso: 'LIQ_IA', accion: 'PROCESAR' },
          { codigo: 'RH_LIA_LIQ_IA_VER', desc: 'Ver predicciones IA', recurso: 'LIQ_IA', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_VIATICOS',
        descripcion: 'Rendición de Viáticos',
        icono: 'mdi:briefcase-account',
        privilegios: [
          { codigo: 'RH_VIA_RENDICION_VER',      desc: 'Ver rendiciones + saldos + reportes',    recurso: 'RENDICION_VIATICO', accion: 'VER' },
          { codigo: 'RH_VIA_RENDICION_CREAR',    desc: 'Crear rendiciones y adelantos',          recurso: 'RENDICION_VIATICO', accion: 'CREAR' },
          { codigo: 'RH_VIA_RENDICION_APROBAR',  desc: 'Aprobar/rechazar rendiciones (supervisor)', recurso: 'RENDICION_VIATICO', accion: 'APROBAR' },
          { codigo: 'RH_VIA_RENDICION_ANULAR',   desc: 'Anular rendición completa',              recurso: 'RENDICION_VIATICO', accion: 'ANULAR' },
          { codigo: 'RH_VIA_GASTO_CARGAR',       desc: 'Cargar y anular gastos rendidos',        recurso: 'GASTO_VIATICO',     accion: 'PROCESAR' },
          { codigo: 'RH_VIA_CIERRE_EJECUTAR',    desc: 'Cerrar rendición (devolución/reintegro)', recurso: 'RENDICION_VIATICO', accion: 'PROCESAR' },
          { codigo: 'RH_VIA_CXP_PAGAR',          desc: 'Pagar CxP a empleado (reintegro diferido)', recurso: 'CXP_EMPLEADO',    accion: 'PROCESAR' },
          { codigo: 'RH_VIA_CONFIG_EDITAR',      desc: 'Editar configuración de viáticos',       recurso: 'CONFIG_VIATICO',    accion: 'EDITAR' },
        ],
      },
      {
        codigo: 'RRHH_MARCACIONES',
        descripcion: 'Marcaciones y Presentismo',
        icono: 'mdi:fingerprint',
        privilegios: [
          { codigo: 'RH_MAR_MARCACION_CREAR', desc: 'Crear marcacion', recurso: 'MARCACION', accion: 'CREAR' },
          { codigo: 'RH_MAR_MARCACION_EDITAR', desc: 'Editar marcacion', recurso: 'MARCACION', accion: 'EDITAR' },
          { codigo: 'RH_MAR_MARCACION_ELIMINAR', desc: 'Eliminar marcacion', recurso: 'MARCACION', accion: 'ELIMINAR' },
          { codigo: 'RH_MAR_MARCACION_EXPORTAR', desc: 'Exportar marcaciones', recurso: 'MARCACION', accion: 'EXPORTAR' },
          { codigo: 'RH_MAR_MARCACION_VER', desc: 'Ver marcacion', recurso: 'MARCACION', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_NOVEDADES',
        descripcion: 'Novedades',
        icono: 'mdi:bell-alert',
        privilegios: [
          { codigo: 'RH_NOV_NOVEDAD_CREAR', desc: 'Crear novedad', recurso: 'NOVEDAD', accion: 'CREAR' },
          { codigo: 'RH_NOV_NOVEDAD_EDITAR', desc: 'Editar novedad', recurso: 'NOVEDAD', accion: 'EDITAR' },
          { codigo: 'RH_NOV_NOVEDAD_ELIMINAR', desc: 'Eliminar novedad', recurso: 'NOVEDAD', accion: 'ELIMINAR' },
          { codigo: 'RH_NOV_NOVEDAD_VER', desc: 'Ver novedad', recurso: 'NOVEDAD', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_PERMISOS',
        descripcion: 'Permisos de Presentismo',
        icono: 'mdi:calendar-remove',
        privilegios: [
          { codigo: 'RH_PER_PERMISO_APROBAR', desc: 'Aprobar permisos', recurso: 'PERMISO', accion: 'APROBAR' },
          { codigo: 'RH_PER_PERMISO_CREAR', desc: 'Crear permiso', recurso: 'PERMISO', accion: 'CREAR' },
          { codigo: 'RH_PER_PERMISO_EDITAR', desc: 'Editar permiso', recurso: 'PERMISO', accion: 'EDITAR' },
          { codigo: 'RH_PER_PERMISO_ELIMINAR', desc: 'Eliminar permiso', recurso: 'PERMISO', accion: 'ELIMINAR' },
          { codigo: 'RH_PER_PERMISO_VER', desc: 'Ver permiso', recurso: 'PERMISO', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_PLANILLAS',
        descripcion: 'Planillas MTESS',
        icono: 'mdi:file-document-multiple',
        privilegios: [
          { codigo: 'RH_PLA_PLANILLA_EXPORTAR', desc: 'Exportar planilla', recurso: 'PLANILLA', accion: 'EXPORTAR' },
          { codigo: 'RH_PLA_PLANILLA_GENERAR', desc: 'Generar planilla MTESS', recurso: 'PLANILLA', accion: 'PROCESAR' },
          { codigo: 'RH_PLA_PLANILLA_VER', desc: 'Ver planillas MTESS', recurso: 'PLANILLA', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_REPORTES',
        descripcion: 'Reportes RRHH',
        icono: 'mdi:chart-box-outline',
        privilegios: [
          { codigo: 'RH_REP_REPORTE_EXPORTAR', desc: 'Exportar reportes', recurso: 'REPORTE', accion: 'EXPORTAR' },
          { codigo: 'RH_REP_REPORTE_VER', desc: 'Ver reportes', recurso: 'REPORTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_TURNOS',
        descripcion: 'Turnos y Tolerancias',
        icono: 'mdi:calendar-clock-outline',
        privilegios: [
          { codigo: 'RH_TUR_TURNO_CREAR', desc: 'Crear turno', recurso: 'TURNO', accion: 'CREAR' },
          { codigo: 'RH_TUR_TURNO_EDITAR', desc: 'Editar turno', recurso: 'TURNO', accion: 'EDITAR' },
          { codigo: 'RH_TUR_TURNO_ELIMINAR', desc: 'Eliminar turno', recurso: 'TURNO', accion: 'ELIMINAR' },
          { codigo: 'RH_TUR_TURNO_VER', desc: 'Ver turno', recurso: 'TURNO', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_VACACIONES',
        descripcion: 'Vacaciones',
        icono: 'mdi:beach',
        privilegios: [
          { codigo: 'RH_VAC_VACACION_APROBAR', desc: 'Aprobar vacaciones', recurso: 'VACACION', accion: 'APROBAR' },
          { codigo: 'RH_VAC_VACACION_CREAR', desc: 'Crear vacacion', recurso: 'VACACION', accion: 'CREAR' },
          { codigo: 'RH_VAC_VACACION_EDITAR', desc: 'Editar vacacion', recurso: 'VACACION', accion: 'EDITAR' },
          { codigo: 'RH_VAC_VACACION_ELIMINAR', desc: 'Eliminar vacacion', recurso: 'VACACION', accion: 'ELIMINAR' },
          { codigo: 'RH_VAC_VACACION_VER', desc: 'Ver vacacion', recurso: 'VACACION', accion: 'VER' },
        ],
      },
      {
        codigo: 'RRHH_VENCIMIENTOS',
        descripcion: 'Vencimientos',
        icono: 'mdi:calendar-clock',
        privilegios: [
          { codigo: 'RH_VEN_VENCIMIENTO_VER', desc: 'Ver vencimiento', recurso: 'VENCIMIENTO', accion: 'VER' },
        ],
      },
    ],
  },
  {
    codigo: 'IMPORTACIONES',
    descripcion: 'Importaciones',
    icono: 'mdi:ferry',
    submodulos: [
      {
        codigo: 'IMP_CONFIG',
        descripcion: 'Configuración Importación',
        icono: 'mdi:cog-outline',
        privilegios: [
          { codigo: 'IMP_CFG_CONFIG_EDITAR', desc: 'Editar config', recurso: 'CONFIG', accion: 'EDITAR' },
          { codigo: 'IMP_CFG_CONFIG_VER', desc: 'Ver config', recurso: 'CONFIG', accion: 'VER' },
        ],
      },
      {
        codigo: 'IMP_COSTOS',
        descripcion: 'Costos de Importación',
        icono: 'mdi:cash-100',
        privilegios: [
          { codigo: 'IMP_COS_COSTO_CREAR', desc: 'Crear costo', recurso: 'COSTO', accion: 'CREAR' },
          { codigo: 'IMP_COS_COSTO_EDITAR', desc: 'Editar costo', recurso: 'COSTO', accion: 'EDITAR' },
          { codigo: 'IMP_COS_COSTO_VER', desc: 'Ver costo', recurso: 'COSTO', accion: 'VER' },
        ],
      },
      {
        codigo: 'IMP_DESPACHOS',
        descripcion: 'Despachos',
        icono: 'mdi:package-variant-closed',
        privilegios: [
          { codigo: 'IMP_DES_DESPACHO_CREAR', desc: 'Crear despacho', recurso: 'DESPACHO', accion: 'CREAR' },
          { codigo: 'IMP_DES_DESPACHO_EDITAR', desc: 'Editar despacho', recurso: 'DESPACHO', accion: 'EDITAR' },
          { codigo: 'IMP_DES_DESPACHO_ELIMINAR', desc: 'Eliminar despacho', recurso: 'DESPACHO', accion: 'ELIMINAR' },
          { codigo: 'IMP_DES_DESPACHO_PROCESAR', desc: 'Confirmar despacho aduanero', recurso: 'DESPACHO', accion: 'PROCESAR' },
          { codigo: 'IMP_DES_DESPACHO_VER', desc: 'Ver despacho', recurso: 'DESPACHO', accion: 'VER' },
        ],
      },
      {
        codigo: 'IMP_EMBARQUES',
        descripcion: 'Embarques',
        icono: 'mdi:ship-wheel',
        privilegios: [
          { codigo: 'IMP_EMB_EMBARQUE_CERRAR', desc: 'Cerrar embarque', recurso: 'EMBARQUE', accion: 'PROCESAR' },
          { codigo: 'IMP_EMB_EMBARQUE_CREAR', desc: 'Crear embarque', recurso: 'EMBARQUE', accion: 'CREAR' },
          { codigo: 'IMP_EMB_EMBARQUE_EDITAR', desc: 'Editar embarque', recurso: 'EMBARQUE', accion: 'EDITAR' },
          { codigo: 'IMP_EMB_EMBARQUE_ELIMINAR', desc: 'Eliminar embarque', recurso: 'EMBARQUE', accion: 'ELIMINAR' },
          { codigo: 'IMP_EMB_EMBARQUE_VER', desc: 'Ver embarque', recurso: 'EMBARQUE', accion: 'VER' },
        ],
      },
      {
        codigo: 'IMP_REPORTES',
        descripcion: 'Reportes Importación',
        icono: 'mdi:chart-areaspline',
        privilegios: [
          { codigo: 'IMP_REP_REPORTE_EXPORTAR', desc: 'Exportar reportes', recurso: 'REPORTE', accion: 'EXPORTAR' },
          { codigo: 'IMP_REP_REPORTE_VER', desc: 'Ver reportes', recurso: 'REPORTE', accion: 'VER' },
        ],
      },
    ],
  },
  {
    codigo: 'CRM',
    descripcion: 'CRM 360',
    icono: 'mdi:account-heart',
    submodulos: [
      {
        codigo: 'CRM_CONFIG',
        descripcion: 'Configuración CRM',
        icono: 'mdi:cog-outline',
        privilegios: [
          { codigo: 'CRM_CFG_PIPELINE_CREAR', desc: 'Crear pipeline', recurso: 'PIPELINE', accion: 'CREAR' },
          { codigo: 'CRM_CFG_PIPELINE_EDITAR', desc: 'Editar pipeline', recurso: 'PIPELINE', accion: 'EDITAR' },
          { codigo: 'CRM_CFG_PIPELINE_ELIMINAR', desc: 'Dar de baja pipeline', recurso: 'PIPELINE', accion: 'ELIMINAR' },
          { codigo: 'CRM_CFG_PIPELINE_VER', desc: 'Ver pipelines', recurso: 'PIPELINE', accion: 'VER' },
          { codigo: 'CRM_CFG_ETAPA_CREAR', desc: 'Crear etapa', recurso: 'ETAPA', accion: 'CREAR' },
          { codigo: 'CRM_CFG_ETAPA_EDITAR', desc: 'Editar y reordenar etapas', recurso: 'ETAPA', accion: 'EDITAR' },
          { codigo: 'CRM_CFG_ETAPA_ELIMINAR', desc: 'Dar de baja etapa', recurso: 'ETAPA', accion: 'ELIMINAR' },
          { codigo: 'CRM_CFG_ETAPA_VER', desc: 'Ver etapas', recurso: 'ETAPA', accion: 'VER' },
          { codigo: 'CRM_CFG_PRUEBA_INICIAR', desc: 'Iniciar período de prueba de un add-on', recurso: 'PRUEBA', accion: 'ACTIVAR' },
          { codigo: 'CRM_CFG_CONFIG_SEMBRAR', desc: 'Sembrar configuración por defecto', recurso: 'CONFIG', accion: 'PROCESAR' },
        ],
      },
    ],
  },
  {
    codigo: 'ADMINISTRACION',
    descripcion: 'Administración',
    icono: 'mdi:cog',
    submodulos: [
      {
        codigo: 'ADM_AUDITORIA',
        descripcion: 'Auditoría',
        icono: 'mdi:file-search',
        privilegios: [
          { codigo: 'ADM_AUD_AUDITORIA_EXPORTAR', desc: 'Exportar auditoría', recurso: 'AUDITORIA', accion: 'EXPORTAR' },
          { codigo: 'ADM_AUD_AUDITORIA_VER', desc: 'Ver auditoría', recurso: 'AUDITORIA', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_BANCARD_VPOS',
        descripcion: 'Bancard VPOS',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'ADM_BVP_CONFIG_EDITAR', desc: 'Editar configuración Bancard VPOS', recurso: 'CONFIG_BANCARD', accion: 'EDITAR' },
          { codigo: 'ADM_BVP_CONFIG_VER', desc: 'Ver configuración Bancard VPOS', recurso: 'CONFIG_BANCARD', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_BANCOS',
        descripcion: 'Bancos',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'ADM_BAN_BANCO_CREAR', desc: 'Crear banco', recurso: 'BANCO', accion: 'CREAR' },
          { codigo: 'ADM_BAN_BANCO_EDITAR', desc: 'Editar banco', recurso: 'BANCO', accion: 'EDITAR' },
          { codigo: 'ADM_BAN_BANCO_ELIMINAR', desc: 'Eliminar banco', recurso: 'BANCO', accion: 'ELIMINAR' },
          { codigo: 'ADM_BAN_BANCO_VER', desc: 'Ver bancos', recurso: 'BANCO', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_BOT_MARANGATU',
        descripcion: 'Bot de Marangatu',
        icono: 'mdi:robot-excited',
        privilegios: [
          { codigo: 'ADM_BOT_CONFIG', desc: 'Configurar bot Marangatu', recurso: 'BOT', accion: 'CONFIG' },
          { codigo: 'ADM_BOT_EJECUTAR', desc: 'Ejecutar bot Marangatu', recurso: 'BOT', accion: 'EJECUTAR' },
          { codigo: 'ADM_BOT_VER', desc: 'Ver bot Marangatu', recurso: 'BOT', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_COMPRAS_CFG',
        descripcion: 'Configuración de Compras',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'ADM_CCFG_CONFIG_EDITAR', desc: 'Editar configuración de compras', recurso: 'CONFIG_COMPRAS', accion: 'EDITAR' },
          { codigo: 'ADM_CCFG_CONFIG_VER', desc: 'Ver configuración de compras', recurso: 'CONFIG_COMPRAS', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_COND_PAGO',
        descripcion: 'Condicion de pagos',
        icono: 'mdi:robot-excited',
        privilegios: [
          { codigo: 'ADM_CONDPAGO_CREAR', desc: 'Crear condición de pago', recurso: 'CONDPAGO', accion: 'CREAR' },
          { codigo: 'ADM_CONDPAGO_EDITAR', desc: 'Editar condición de pago', recurso: 'CONDPAGO', accion: 'EDITAR' },
          { codigo: 'ADM_CONDPAGO_ELIMINAR', desc: 'Eliminar condición de pago', recurso: 'CONDPAGO', accion: 'ELIMINAR' },
          { codigo: 'ADM_CONDPAGO_VER', desc: 'Ver condiciones de pago', recurso: 'CONDPAGO', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_CONFIG',
        descripcion: 'Configuración General',
        icono: 'mdi:tune',
        privilegios: [
          { codigo: 'ADM_CFG_CONFIG_EDITAR', desc: 'Editar config', recurso: 'CONFIG', accion: 'EDITAR' },
          { codigo: 'ADM_CFG_CONFIG_VER', desc: 'Ver config', recurso: 'CONFIG', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_CONFIG_POS',
        descripcion: 'Configuracion pos',
        icono: 'mdi:robot-excited',
        privilegios: [
          { codigo: 'ADM_POSCFG_EDITAR', desc: 'Editar configuración POS', recurso: 'POSCFG', accion: 'EDITAR' },
          { codigo: 'ADM_POSCFG_VER', desc: 'Ver configuración POS', recurso: 'POSCFG', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_EMPRESA_ASOCIADA',
        descripcion: 'Empresas Asociadas',
        icono: 'mdi:robot-excited',
        privilegios: [
          { codigo: 'ADM_EMPASOC_CAMBIAR_CONTEXTO', desc: 'Cambiar de empresa (contexto activo)', recurso: 'CONTEXTO', accion: 'CAMBIAR' },
          { codigo: 'ADM_EMPASOC_DESVINCULAR', desc: 'Desvincular empresa asociada', recurso: 'EMPASOC', accion: 'DESVINCULAR' },
          { codigo: 'ADM_EMPASOC_EDITAR', desc: 'Editar datos de empresa asociada', recurso: 'EMPRESA_ASOC', accion: 'EDITAR' },
          { codigo: 'ADM_EMPASOC_VER', desc: 'Ver empresas asociadas', recurso: 'EMPASOC', accion: 'VER' },
          { codigo: 'ADM_EMPASOC_VINCULAR', desc: 'Vincular empresa asociada', recurso: 'EMPASOC', accion: 'VINCULAR' },
        ],
      },
      {
        codigo: 'ADM_EMPRESAS',
        descripcion: 'Empresas',
        icono: 'mdi:office-building-marker',
        privilegios: [
          { codigo: 'ADM_EMP_EMPRESA_ACTIVAR', desc: 'Activar/desactivar empresa', recurso: 'EMPRESA', accion: 'ACTIVAR' },
          { codigo: 'ADM_EMP_EMPRESA_CREAR', desc: 'Crear empresa', recurso: 'EMPRESA', accion: 'CREAR' },
          { codigo: 'ADM_EMP_EMPRESA_EDITAR', desc: 'Editar empresa', recurso: 'EMPRESA', accion: 'EDITAR' },
          { codigo: 'ADM_EMP_EMPRESA_ELIMINAR', desc: 'Eliminar empresa', recurso: 'EMPRESA', accion: 'ELIMINAR' },
          { codigo: 'ADM_EMP_EMPRESA_VER', desc: 'Ver empresa', recurso: 'EMPRESA', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_IMPORTACIONES_CFG',
        descripcion: 'Configuración Importaciones',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'ADM_IMC_CONFIG_EDITAR', desc: 'Editar configuración de importaciones', recurso: 'CONFIG_IMPORTACIONES', accion: 'EDITAR' },
          { codigo: 'ADM_IMC_CONFIG_VER', desc: 'Ver configuración de importaciones', recurso: 'CONFIG_IMPORTACIONES', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_INTERES_MORA',
        descripcion: 'Intereses y Mora',
        icono: 'mdi:robot-excited',
        privilegios: [
          { codigo: 'ADM_MORA_EDITAR', desc: 'Editar interés y mora', recurso: 'MORA', accion: 'EDITAR' },
          { codigo: 'ADM_MORA_VER', desc: 'Ver interés y mora', recurso: 'MORA', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_MEDIOS_PAGO',
        descripcion: 'Medios de pago',
        icono: 'mdi:robot-excited',
        privilegios: [
          { codigo: 'ADM_MEDPAGO_CREAR', desc: 'Crear medio de pago', recurso: 'MEDPAGO', accion: 'CREAR' },
          { codigo: 'ADM_MEDPAGO_EDITAR', desc: 'Editar medio de pago', recurso: 'MEDPAGO', accion: 'EDITAR' },
          { codigo: 'ADM_MEDPAGO_ELIMINAR', desc: 'Eliminar medio de pago', recurso: 'MEDPAGO', accion: 'ELIMINAR' },
          { codigo: 'ADM_MEDPAGO_VER', desc: 'Ver medios de pago', recurso: 'MEDPAGO', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_MI_SUSCRIPCION',
        descripcion: 'Mi Suscripción',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'ADM_SUSC_SUSCRIPCION_CAMBIAR_PLAN', desc: 'Cambiar de plan', recurso: 'SUSCRIPCION', accion: 'CAMBIAR_PLAN' },
          { codigo: 'ADM_SUSC_SUSCRIPCION_CONTRATAR', desc: 'Contratar plan', recurso: 'SUSCRIPCION', accion: 'CONTRATAR' },
          { codigo: 'ADM_SUSC_SUSCRIPCION_RENOVAR', desc: 'Renovar suscripción', recurso: 'SUSCRIPCION', accion: 'RENOVAR' },
          { codigo: 'ADM_SUSC_SUSCRIPCION_VER', desc: 'Ver mi suscripción', recurso: 'SUSCRIPCION', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_MONEDA_COTIZACION',
        descripcion: 'Moneda Cotizacion',
        icono: 'mdi:robot-excited',
        privilegios: [
          { codigo: 'ADM_COTIZ_IMPORTAR', desc: 'Importar cotización', recurso: 'COTIZ', accion: 'IMPORTAR' },
          { codigo: 'ADM_COTIZ_REGISTRAR', desc: 'Registrar cotización', recurso: 'COTIZ', accion: 'REGISTRAR' },
          { codigo: 'ADM_COTIZ_VER', desc: 'Ver cotizaciones', recurso: 'COTIZ', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_NOVAIA_HOLDING',
        descripcion: 'Asistente NovaIA (Holding)',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'ADM_NIA_NOVAIA_CONFIGURAR', desc: 'Configurar Asistente NovaIA', recurso: 'NOVAIA', accion: 'CONFIGURAR' },
          { codigo: 'ADM_NIA_NOVAIA_VER', desc: 'Ver Asistente NovaIA', recurso: 'NOVAIA', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_NUMERACIONES',
        descripcion: 'Numeraciones / Timbrados',
        icono: 'mdi:numeric',
        privilegios: [
          { codigo: 'ADM_NUM_NUMERACION_CREAR', desc: 'Crear numeracion', recurso: 'NUMERACION', accion: 'CREAR' },
          { codigo: 'ADM_NUM_NUMERACION_EDITAR', desc: 'Editar numeracion', recurso: 'NUMERACION', accion: 'EDITAR' },
          { codigo: 'ADM_NUM_NUMERACION_ELIMINAR', desc: 'Eliminar numeracion', recurso: 'NUMERACION', accion: 'ELIMINAR' },
          { codigo: 'ADM_NUM_NUMERACION_VER', desc: 'Ver numeracion', recurso: 'NUMERACION', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_ORDEN_VENTA_CFG',
        descripcion: 'Configuración Órdenes de Venta',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'ADM_OVC_CONFIG_EDITAR', desc: 'Editar configuración de órdenes de venta', recurso: 'CONFIG_ORDEN_VENTA', accion: 'EDITAR' },
          { codigo: 'ADM_OVC_CONFIG_VER', desc: 'Ver configuración de órdenes de venta', recurso: 'CONFIG_ORDEN_VENTA', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_PERFILES',
        descripcion: 'Perfiles y Permisos',
        icono: 'mdi:shield-account',
        privilegios: [
          { codigo: 'ADM_PER_PERFIL_CLONAR', desc: 'Clonar perfil', recurso: 'PERFIL', accion: 'CREAR' },
          { codigo: 'ADM_PER_PERFIL_CREAR', desc: 'Crear perfil', recurso: 'PERFIL', accion: 'CREAR' },
          { codigo: 'ADM_PER_PERFIL_EDITAR', desc: 'Editar perfil', recurso: 'PERFIL', accion: 'EDITAR' },
          { codigo: 'ADM_PER_PERFIL_ELIMINAR', desc: 'Eliminar perfil', recurso: 'PERFIL', accion: 'ELIMINAR' },
          { codigo: 'ADM_PER_PERFIL_VER', desc: 'Ver perfil', recurso: 'PERFIL', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_PRESUPUESTOS_CFG',
        descripcion: 'Configuración Presupuestos',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'ADM_PRC_CONFIG_EDITAR', desc: 'Editar configuración de presupuestos', recurso: 'CONFIG_PRESUPUESTOS', accion: 'EDITAR' },
          { codigo: 'ADM_PRC_CONFIG_VER', desc: 'Ver configuración de presupuestos', recurso: 'CONFIG_PRESUPUESTOS', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_REGLAS_AUTO',
        descripcion: 'Reglas Automáticas',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'ADM_RGA_REGLA_CREAR', desc: 'Crear regla automática', recurso: 'REGLA_AUTO', accion: 'CREAR' },
          { codigo: 'ADM_RGA_REGLA_EDITAR', desc: 'Editar regla automática', recurso: 'REGLA_AUTO', accion: 'EDITAR' },
          { codigo: 'ADM_RGA_REGLA_ELIMINAR', desc: 'Eliminar regla automática', recurso: 'REGLA_AUTO', accion: 'ELIMINAR' },
          { codigo: 'ADM_RGA_REGLA_VER', desc: 'Ver reglas automáticas', recurso: 'REGLA_AUTO', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_RUBROS',
        descripcion: 'Rubros',
        icono: 'mdi:shape-outline',
        privilegios: [
          { codigo: 'ADM_RUB_RUBRO_CREAR', desc: 'Crear rubro', recurso: 'RUBRO', accion: 'CREAR' },
          { codigo: 'ADM_RUB_RUBRO_EDITAR', desc: 'Editar rubro', recurso: 'RUBRO', accion: 'EDITAR' },
          { codigo: 'ADM_RUB_RUBRO_ELIMINAR', desc: 'Dar de baja rubro', recurso: 'RUBRO', accion: 'ELIMINAR' },
          { codigo: 'ADM_RUB_RUBRO_VER', desc: 'Ver rubros', recurso: 'RUBRO', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_SUCURSALES',
        descripcion: 'Sucursales',
        icono: 'mdi:store',
        privilegios: [
          { codigo: 'ADM_SUC_SUCURSAL_CREAR', desc: 'Crear sucursal', recurso: 'SUCURSAL', accion: 'CREAR' },
          { codigo: 'ADM_SUC_SUCURSAL_EDITAR', desc: 'Editar sucursal', recurso: 'SUCURSAL', accion: 'EDITAR' },
          { codigo: 'ADM_SUC_SUCURSAL_ELIMINAR', desc: 'Eliminar sucursal', recurso: 'SUCURSAL', accion: 'ELIMINAR' },
          { codigo: 'ADM_SUC_SUCURSAL_VER', desc: 'Ver sucursal', recurso: 'SUCURSAL', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_TESORERIA_CFG',
        descripcion: 'Parámetros de Tesorería',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'ADM_TCFG_CONFIG_EDITAR', desc: 'Editar parámetros de tesorería', recurso: 'CONFIG_TESORERIA', accion: 'EDITAR' },
          { codigo: 'ADM_TCFG_CONFIG_VER', desc: 'Ver parámetros de tesorería', recurso: 'CONFIG_TESORERIA', accion: 'VER' },
        ],
      },
      {
        codigo: 'ADM_USUARIOS',
        descripcion: 'Usuarios',
        icono: 'mdi:account-cog',
        privilegios: [
          { codigo: 'ADM_USR_USUARIO_CREAR', desc: 'Crear usuario', recurso: 'USUARIO', accion: 'CREAR' },
          { codigo: 'ADM_USR_USUARIO_EDITAR', desc: 'Editar usuario', recurso: 'USUARIO', accion: 'EDITAR' },
          { codigo: 'ADM_USR_USUARIO_ELIMINAR', desc: 'Eliminar usuario', recurso: 'USUARIO', accion: 'ELIMINAR' },
          { codigo: 'ADM_USR_USUARIO_RESET_PWD', desc: 'Restablecer contraseña', recurso: 'USUARIO', accion: 'CONFIGURAR' },
          { codigo: 'ADM_USR_USUARIO_VER', desc: 'Ver usuario', recurso: 'USUARIO', accion: 'VER' },
        ],
      },
    ],
  },
  {
    codigo: 'FISCAL',
    descripcion: 'Fiscal / SIFEN',
    icono: 'mdi:shield-check',
    submodulos: [
      {
        codigo: 'FIS_BANCARD',
        descripcion: 'Bancard (pasarela)',
        icono: 'mdi:credit-card-outline',
        privilegios: [
          { codigo: 'FIS_BAN_BANCARD_CONFIG', desc: 'Configurar Bancard', recurso: 'BANCARD', accion: 'CONFIGURAR' },
          { codigo: 'FIS_BAN_BANCARD_VER', desc: 'Ver transacciones Bancard', recurso: 'BANCARD', accion: 'VER' },
        ],
      },
      {
        codigo: 'FIS_MARANGATU',
        descripcion: 'Marangatú',
        icono: 'mdi:file-document-multiple',
        privilegios: [
          { codigo: 'FIS_MAR_MARANGATU_EXPORTAR', desc: 'Exportar Marangatú', recurso: 'MARANGATU', accion: 'EXPORTAR' },
          { codigo: 'FIS_MAR_MARANGATU_GENERAR', desc: 'Generar libros', recurso: 'MARANGATU', accion: 'PROCESAR' },
          { codigo: 'FIS_MAR_MARANGATU_VER', desc: 'Ver Marangatú', recurso: 'MARANGATU', accion: 'VER' },
        ],
      },
      {
        codigo: 'FIS_SIFEN',
        descripcion: 'SIFEN',
        icono: 'mdi:cloud-upload',
        privilegios: [
          { codigo: 'FIS_SIF_SIFEN_PROCESAR', desc: 'Reenviar a SIFEN', recurso: 'SIFEN', accion: 'PROCESAR' },
          { codigo: 'FIS_SIF_SIFEN_VER', desc: 'Ver estado SIFEN', recurso: 'SIFEN', accion: 'VER' },
          // Destrabar un evento que SIFEN no registró o que es incoherente con el documento.
          { codigo: 'FIS_SIF_EVENTO_LIBERAR', desc: 'Liberar evento SIFEN trabado', recurso: 'SIFEN', accion: 'LIBERAR' },
        ],
      },
    ],
  },
  {
    codigo: 'HOLDING',
    descripcion: 'Holding',
    icono: 'business',
    submodulos: [
      {
        codigo: 'HOL_COMISIONES',
        descripcion: 'Comisiones Holding',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'HOL_COM_COMISION_PAGAR', desc: 'Pagar comisión del holding', recurso: 'COMISION', accion: 'PAGAR' },
          { codigo: 'HOL_COM_COMISION_VER', desc: 'Ver comisiones del holding', recurso: 'COMISION', accion: 'VER' },
        ],
      },
      {
        codigo: 'HOL_COMPROBANTES',
        descripcion: 'Comprobantes de pago',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'HOL_CMP_COMPROBANTE_RECHAZAR', desc: 'Rechazar comprobante de pago', recurso: 'COMPROBANTE', accion: 'RECHAZAR' },
          { codigo: 'HOL_CMP_COMPROBANTE_VALIDAR', desc: 'Validar comprobante de pago', recurso: 'COMPROBANTE', accion: 'VALIDAR' },
          { codigo: 'HOL_CMP_COMPROBANTE_VER', desc: 'Ver comprobantes de pago', recurso: 'COMPROBANTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'HOL_METRICAS',
        descripcion: 'Métricas',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'HOL_MET_METRICAS_VER', desc: 'Ver dashboard ejecutivo del holding', recurso: 'METRICAS', accion: 'VER' },
        ],
      },
      {
        codigo: 'HOL_PLANES',
        descripcion: 'Planes',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'HOL_PLN_PLAN_CREAR', desc: 'Crear plan', recurso: 'PLAN', accion: 'CREAR' },
          { codigo: 'HOL_PLN_PLAN_EDITAR', desc: 'Editar plan', recurso: 'PLAN', accion: 'EDITAR' },
          { codigo: 'HOL_PLN_PLAN_ELIMINAR', desc: 'Eliminar plan', recurso: 'PLAN', accion: 'ELIMINAR' },
          { codigo: 'HOL_PLN_PLAN_VER', desc: 'Ver planes', recurso: 'PLAN', accion: 'VER' },
        ],
      },
      {
        codigo: 'HOL_RED_EMPRESARIAL',
        descripcion: 'Red Empresarial',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'HOL_RED_RED_VER', desc: 'Ver red empresarial', recurso: 'RED', accion: 'VER' },
        ],
      },
      {
        codigo: 'HOL_RESELLERS',
        descripcion: 'Resellers',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'HOL_RES_RESELLER_CREAR', desc: 'Crear reseller', recurso: 'RESELLER', accion: 'CREAR' },
          { codigo: 'HOL_RES_RESELLER_EDITAR', desc: 'Editar reseller', recurso: 'RESELLER', accion: 'EDITAR' },
          { codigo: 'HOL_RES_RESELLER_ELIMINAR', desc: 'Eliminar reseller', recurso: 'RESELLER', accion: 'ELIMINAR' },
          { codigo: 'HOL_RES_RESELLER_VER', desc: 'Ver resellers', recurso: 'RESELLER', accion: 'VER' },
        ],
      },
    ],
  },
  {
    codigo: 'NOTIFICACIONES',
    descripcion: 'Notificaciones',
    icono: 'mdi:bell',
    submodulos: [
      {
        codigo: 'NOT_BANDEJA',
        descripcion: 'Bandeja',
        icono: 'mdi:inbox',
        privilegios: [
          { codigo: 'NOT_BAN_NOTIFICACION_EDITAR', desc: 'Marcar como leída', recurso: 'NOTIFICACION', accion: 'EDITAR' },
          { codigo: 'NOT_BAN_NOTIFICACION_ELIMINAR', desc: 'Eliminar notificación', recurso: 'NOTIFICACION', accion: 'ELIMINAR' },
          { codigo: 'NOT_BAN_NOTIFICACION_VER', desc: 'Ver notificaciones', recurso: 'NOTIFICACION', accion: 'VER' },
        ],
      },
      {
        codigo: 'NOT_CONFIG',
        descripcion: 'Configuración Notificaciones',
        icono: 'mdi:cog',
        privilegios: [
          { codigo: 'NOT_CFG_CONFIG_EDITAR', desc: 'Editar config', recurso: 'CONFIG', accion: 'EDITAR' },
          { codigo: 'NOT_CFG_CONFIG_VER', desc: 'Ver config', recurso: 'CONFIG', accion: 'VER' },
        ],
      },
    ],
  },
  {
    codigo: 'PLAN_SUSCRIPCION',
    descripcion: 'Plan y Suscripción',
    icono: 'mdi:credit-card',
    submodulos: [
      {
        codigo: 'SUS_CUOTAS',
        descripcion: 'Cuotas',
        icono: 'mdi:cash-multiple',
        privilegios: [
          { codigo: 'SUS_CUO_CUOTA_PAGAR', desc: 'Pagar cuota', recurso: 'CUOTA', accion: 'PROCESAR' },
          { codigo: 'SUS_CUO_CUOTA_VER', desc: 'Ver cuotas', recurso: 'CUOTA', accion: 'VER' },
        ],
      },
      {
        codigo: 'SUS_LIMITES',
        descripcion: 'Límites del plan',
        icono: 'mdi:gauge',
        privilegios: [
          { codigo: 'SUS_LIM_LIMITE_VER', desc: 'Ver límites', recurso: 'LIMITE', accion: 'VER' },
        ],
      },
      {
        codigo: 'SUS_PLAN',
        descripcion: 'Plan actual',
        icono: 'mdi:package-variant',
        privilegios: [
          { codigo: 'SUS_PLA_PLAN_EDITAR', desc: 'Cambiar plan', recurso: 'PLAN', accion: 'EDITAR' },
          { codigo: 'SUS_PLA_PLAN_VER', desc: 'Ver plan', recurso: 'PLAN', accion: 'VER' },
        ],
      },
    ],
  },
  {
    codigo: 'REPORTES',
    descripcion: 'Reportes',
    icono: 'mdi:chart-box',
    submodulos: [
      {
        codigo: 'REP_ADMIN_FIN',
        descripcion: 'Administrativos y Financieros',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'REP_AF_REPORTE_EXPORTAR', desc: 'Exportar reportes admin/financieros', recurso: 'REPORTE', accion: 'EXPORTAR' },
          { codigo: 'REP_AF_REPORTE_VER', desc: 'Ver reportes admin/financieros', recurso: 'REPORTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'REP_AUDITORIA',
        descripcion: 'Auditoría y Seguridad',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'REP_AUD_REPORTE_EXPORTAR', desc: 'Exportar reportes de auditoría', recurso: 'REPORTE', accion: 'EXPORTAR' },
          { codigo: 'REP_AUD_REPORTE_VER', desc: 'Ver reportes de auditoría', recurso: 'REPORTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'REP_AYUDA_IA',
        descripcion: 'Ayuda IA (chatbot soporte)',
        icono: 'mdi:lifebuoy',
        es_addon: true,
        precio_addon: 50000,
        privilegios: [
          { codigo: 'REP_AIA_AYUDA_CONFIG', desc: 'Configurar Ayuda IA', recurso: 'AYUDA', accion: 'CONFIGURAR' },
          { codigo: 'REP_AIA_AYUDA_USAR', desc: 'Usar chatbot soporte', recurso: 'AYUDA', accion: 'VER' },
        ],
      },
      {
        codigo: 'REP_COBRANZAS',
        descripcion: 'Cobranzas',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'REP_COB_REPORTE_EXPORTAR', desc: 'Exportar reportes de cobranzas', recurso: 'REPORTE', accion: 'EXPORTAR' },
          { codigo: 'REP_COB_REPORTE_VER', desc: 'Ver reportes de cobranzas', recurso: 'REPORTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'REP_CONTABILIDAD',
        descripcion: 'Contabilidad Financiera',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'REP_CTB_REPORTE_EXPORTAR', desc: 'Exportar reportes contables', recurso: 'REPORTE', accion: 'EXPORTAR' },
          { codigo: 'REP_CTB_REPORTE_VER', desc: 'Ver reportes contables', recurso: 'REPORTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'REP_DASHBOARD_IA',
        descripcion: 'Dashboard IA',
        icono: 'mdi:robot-excited',
        es_addon: true,
        precio_addon: 100000,
        privilegios: [
          { codigo: 'REP_DIA_DASHBOARD_CONFIG', desc: 'Configurar IA', recurso: 'DASHBOARD', accion: 'CONFIGURAR' },
          { codigo: 'REP_DIA_DASHBOARD_VER', desc: 'Ver dashboard IA', recurso: 'DASHBOARD', accion: 'VER' },
        ],
      },
      {
        codigo: 'REP_FACTURACION',
        descripcion: 'Reportes de Facturación',
        icono: 'mdi:file-chart',
        privilegios: [
          { codigo: 'REP_FAC_REPORTE_EXPORTAR', desc: 'Exportar reportes', recurso: 'REPORTE', accion: 'EXPORTAR' },
          { codigo: 'REP_FAC_REPORTE_VER', desc: 'Ver reportes', recurso: 'REPORTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'REP_FISCAL',
        descripcion: 'Fiscal e Impuestos',
        icono: 'mdi:circle-small',
        privilegios: [
          { codigo: 'REP_FIS_REPORTE_EXPORTAR', desc: 'Exportar reportes fiscales', recurso: 'REPORTE', accion: 'EXPORTAR' },
          { codigo: 'REP_FIS_REPORTE_VER', desc: 'Ver reportes fiscales', recurso: 'REPORTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'REP_INVENTARIO',
        descripcion: 'Reportes de Inventario',
        icono: 'mdi:chart-pie',
        privilegios: [
          { codigo: 'REP_INV_REPORTE_EXPORTAR', desc: 'Exportar reportes', recurso: 'REPORTE', accion: 'EXPORTAR' },
          { codigo: 'REP_INV_REPORTE_VER', desc: 'Ver reportes', recurso: 'REPORTE', accion: 'VER' },
        ],
      },
      {
        codigo: 'REP_OPERACION_CREDITO',
        descripcion: 'Costos de Operación a Crédito (rentabilidad neta)',
        icono: 'mdi:cash-minus',
        privilegios: [
          { codigo: 'REP_ROC_CONFIG_VER', desc: 'Ver configuración de costos de operación a crédito', recurso: 'CONFIG', accion: 'VER' },
          { codigo: 'REP_ROC_CONFIG_EDITAR', desc: 'Editar configuración de costos de operación a crédito', recurso: 'CONFIG', accion: 'EDITAR' },
        ],
      },
    ],
  },

  // ── Ecommerce ───────────────────────────────────────────────────────────
  // La separación clave es entre lo que MUEVE PLATA Y STOCK y lo que no:
  // confirmar un pago crea el pedido ERP y reserva stock; cancelar lo libera;
  // sincronizar contra el gateway puede confirmar el pago. Esos tres NO pueden
  // quedar en la misma bolsa que "ver la bandeja" o "cambiar el color del botón".
  {
    codigo: 'ECOMMERCE',
    descripcion: 'Tienda Online',
    icono: 'mdi:storefront',
    submodulos: [
      {
        codigo: 'ECOMMERCE_PEDIDOS',
        descripcion: 'Pedidos de la Tienda',
        icono: 'mdi:shopping',
        privilegios: [
          { codigo: 'EC_PED_PEDIDO_VER', desc: 'Ver la bandeja de pedidos de la tienda', recurso: 'PEDIDO', accion: 'VER' },
          { codigo: 'EC_PED_PAGO_CONFIRMAR', desc: 'Confirmar el pago de un pedido (crea el pedido ERP y reserva stock)', recurso: 'PAGO', accion: 'CONFIRMAR' },
          { codigo: 'EC_PED_PEDIDO_PROCESAR', desc: 'Preparar el pedido (verificar, preparar, empaquetar, dejar listo)', recurso: 'PEDIDO', accion: 'PROCESAR' },
          { codigo: 'EC_PED_DESPACHO', desc: 'Despacho de delivery: marcar en camino y entregado', recurso: 'PEDIDO', accion: 'DESPACHAR' },
          { codigo: 'EC_PED_MOSTRADOR', desc: 'Retiro en mostrador: confirmar que el cliente retiró el pedido', recurso: 'PEDIDO', accion: 'RETIRAR' },
          { codigo: 'EC_PED_INCIDENCIA', desc: 'Marcar un pedido con incidencia que lo saca del flujo (supervisor)', recurso: 'PEDIDO', accion: 'INCIDENCIA' },
          { codigo: 'EC_PED_PEDIDO_CANCELAR', desc: 'Cancelar un pedido (libera el stock reservado)', recurso: 'PEDIDO', accion: 'ANULAR' },
          { codigo: 'EC_PED_PEDIDO_ERP_CREAR', desc: 'Reintentar la creación del pedido ERP', recurso: 'PEDIDO', accion: 'CREAR' },
        ],
      },
      {
        codigo: 'ECOMMERCE_PAGOS',
        descripcion: 'Pagos de la Tienda',
        icono: 'mdi:credit-card-outline',
        privilegios: [
          { codigo: 'EC_PAG_PAGO_VER', desc: 'Ver los cobros de la tienda y los webhooks del gateway', recurso: 'PAGO', accion: 'VER' },
          { codigo: 'EC_PAG_PAGO_SINCRONIZAR', desc: 'Reconciliar un cobro contra el gateway (puede confirmar el pago)', recurso: 'PAGO', accion: 'PROCESAR' },
        ],
      },
      {
        codigo: 'ECOMMERCE_TIENDA',
        descripcion: 'Configuración y Diseño de la Tienda',
        icono: 'mdi:palette',
        privilegios: [
          { codigo: 'EC_CFG_TIENDA_VER', desc: 'Ver la configuración y el diseño de la tienda', recurso: 'TIENDA', accion: 'VER' },
          { codigo: 'EC_CFG_TIENDA_EDITAR', desc: 'Editar el borrador de la tienda (diseño, catálogo, promociones, páginas)', recurso: 'TIENDA', accion: 'EDITAR' },
          { codigo: 'EC_CFG_TIENDA_PUBLICAR', desc: 'Publicar los cambios a la tienda en vivo (o revertir a una versión)', recurso: 'TIENDA', accion: 'CONFIGURAR' },
        ],
      },
      {
        codigo: 'ECOMMERCE_NOVEDADES',
        descripcion: 'Novedades de la Tienda',
        icono: 'mdi:newspaper-variant-outline',
        privilegios: [
          { codigo: 'EC_NOV_NOVEDAD_VER', desc: 'Ver novedades', recurso: 'NOVEDAD', accion: 'VER' },
          { codigo: 'EC_NOV_NOVEDAD_EDITAR', desc: 'Crear, editar y eliminar novedades', recurso: 'NOVEDAD', accion: 'EDITAR' },
        ],
      },
    ],
  },
  {
    codigo: 'CONCILIACION_IA',
    descripcion: 'Conciliación Bancaria con IA',
    icono: 'mdi:file-compare',
    submodulos: [
      {
        codigo: 'CONC_IA_SESIONES',
        descripcion: 'Conciliaciones',
        icono: 'mdi:file-compare',
        privilegios: [
          { codigo: 'CONC_IA_VER', desc: 'Ver conciliaciones y resultados', recurso: 'CONC_IA', accion: 'VER' },
          { codigo: 'CONC_IA_CREAR', desc: 'Crear una conciliación', recurso: 'CONC_IA', accion: 'CREAR' },
          { codigo: 'CONC_IA_CARGAR', desc: 'Subir y corregir archivos interpretados', recurso: 'CONC_IA', accion: 'CARGAR' },
          { codigo: 'CONC_IA_CONCILIAR', desc: 'Conciliar/desconciliar movimientos', recurso: 'CONC_IA', accion: 'PROCESAR' },
          { codigo: 'CONC_IA_ELIMINAR', desc: 'Eliminar una conciliación', recurso: 'CONC_IA', accion: 'ELIMINAR' },
        ],
      },
    ],
  },
  // ───────────────────────────────────────────────────────────────────────────
  // Novasis Pay — pasarela de cobros propia. El módulo ya existía en `modulos` y
  // el controller exige estos privilegios (@RequirePermission('NOVASIS_PAY', …)),
  // pero faltaban en el catálogo: sin ellos la pantalla queda de solo lectura
  // para todos menos el superadmin (que bypasea la capa de perfil).
  // ───────────────────────────────────────────────────────────────────────────
  {
    codigo: 'NOVASIS_PAY',
    descripcion: 'Novasis Pay',
    icono: 'lucide:credit-card',
    submodulos: [
      {
        codigo: 'NOVASIS_PAY_CUENTA',
        descripcion: 'Configuración de la cuenta',
        icono: 'mdi:key-chain-variant',
        privilegios: [
          { codigo: 'NOV_CFG_CUENTA_VER', desc: 'Ver la configuración de la cuenta de Novasis Pay', recurso: 'CUENTA', accion: 'VER' },
          { codigo: 'NOV_CFG_CUENTA_EDITAR', desc: 'Editar credenciales, ambiente y pasarela preferida', recurso: 'CUENTA', accion: 'EDITAR' },
        ],
      },
      {
        codigo: 'NOVASIS_PAY_COBROS',
        descripcion: 'Cobros',
        icono: 'mdi:cash-fast',
        privilegios: [
          { codigo: 'NOV_COBROS_VER', desc: 'Ver los cobros y su estado', recurso: 'COBRO', accion: 'VER' },
          { codigo: 'NOV_COBROS_CREAR', desc: 'Generar links y QR de cobro', recurso: 'COBRO', accion: 'CREAR' },
        ],
      },
    ],
  },
];

/**
 * Perfiles de sistema sugeridos (Decisión 4.2).
 * Patrón de selección:
 *  - "*" = todos
 *  - "<MODULO_RAIZ>.*" = todos los privilegios de los submódulos de ese módulo raíz
 *  - "<SUBMODULO>.*" = todos los privilegios de ese submódulo
 *  - "*.VER" = todos los privilegios con accion VER
 *  - código exacto = ese privilegio puntual
 */
export type SeedPerfil = {
  perfil: string;
  desc: string;
  selectores: string[];
  /**
   * Si es true, el bootstrap crea este perfil automáticamente en las empresas
   * que ya usan perfiles del sistema (tienen al menos uno), sin esperar a que
   * alguien toque "Cargar perfiles sugeridos". Se usa para perfiles nuevos que
   * habilitan permisos recién agregados (p. ej. la operación de ecommerce).
   */
  autoProvision?: boolean;
};

export const PERFILES_SISTEMA_SEED: SeedPerfil[] = [
  {
    perfil: 'Administrador',
    desc: 'Acceso total al sistema',
    selectores: ['*'],
  },
  {
    perfil: 'Cajero',
    desc: 'POS, apertura/cierre de caja y cobros con descuento',
    selectores: [
      'VENTAS_POS.*',
      'VEN_FAC_FACTURA_VER',
      'VEN_FAC_FACTURA_CREAR',
      'VEN_FAC_FACTURA_IMPRIMIR',
      'TES_CAJAS.*',
      'COB_RECIBOS.*',
      'COB_REC_DESCUENTO_APLICAR',
      'VENTAS_CLIENTES.VER',
    ],
  },
  {
    perfil: 'Vendedor',
    desc: 'Facturación, presupuestos y datos de transporte para remisiones',
    selectores: [
      'VENTAS_FACTURACION.*',
      'VENTAS_PRESUPUESTOS.*',
      'VENTAS_PEDIDOS.*',
      'VENTAS_ORDEN_VENTA.*',
      'VENTAS_NOTA_REMISION.*',
      'VENTAS_NOTAS_CREDITO.*',
      'VENTAS_NOTAS_DEBITO.*',
      'VENTAS_CLIENTES.VER',
      'VENTA_SOLICITUD_CREDITO.VER',
      'VEN_SOL_SOLICITUD_CREAR',
      'VEN_SOL_SOLICITUD_EDITAR',
      'VEN_TRANSPORTISTAS.VER',
      'VEN_CHOFERES.VER',
      'VEN_VEHICULOS.VER',
      'VEN_AGENTES_TRANSPORTE.VER',
    ],
  },
  {
    perfil: 'Supervisor',
    desc: 'Autoriza descuentos en tiempo real y supervisa cajas',
    selectores: [
      'VEN_SUPERVISOR.*',
      'TES_CAJAS.VER',
      'VENTAS_POS.VER',
      'COB_RECIBOS.VER',
      '*.VER',
    ],
  },
  {
    perfil: 'Cobrador',
    desc: 'Cobranzas, rendiciones y panel de cobrador',
    // El cobrador cobra el interés manual, pero cargarlo es del administrativo.
    selectores: ['COBRANZAS.*', '!COB_CC_INTERES_MANUAL_CARGAR'],
  },
  {
    perfil: 'Tesorero',
    desc: 'Gestión de tesorería, bancos y conciliación',
    selectores: [
      'TESORERIA.*',
    ],
  },
  {
    perfil: 'Contador',
    desc: 'Contabilidad y reportes financieros',
    selectores: [
      'CONTABILIDAD.*',
      'REPORTES.*',
      'TES_MOVIMIENTOS.VER',
      'TES_CONCILIACION.VER',
    ],
  },
  {
    perfil: 'Encargado Stock',
    desc: 'Inventario completo',
    selectores: ['INVENTARIO.*'],
  },
  {
    perfil: 'Encargado Compras',
    desc: 'Compras, proveedores y órdenes de pago',
    selectores: ['COMPRAS.*'],
  },
  {
    perfil: 'Solo Lectura',
    desc: 'Consulta de todas las pantallas',
    selectores: ['*.VER'],
  },
  {
    perfil: 'Gestor de Tienda',
    desc: 'Diseña, publica y mantiene la tienda y las novedades. Ve pedidos y pagos, sin operarlos.',
    selectores: ['ECOMMERCE_TIENDA.*', 'ECOMMERCE_NOVEDADES.*', 'EC_PED_PEDIDO_VER', 'EC_PAG_PAGO_VER'],
    autoProvision: true,
  },
  {
    perfil: 'Operador Ecommerce',
    desc: 'Operación completa de pedidos: prepara, despacha, retiros, incidencias y cancelación.',
    selectores: ['ECOMMERCE_PEDIDOS.*', 'EC_PAG_PAGO_VER'],
    autoProvision: true,
  },
  {
    perfil: 'Despacho Ecommerce',
    desc: 'Prepara y despacha pedidos de delivery (en camino / entregado). No atiende mostrador ni cancela',
    selectores: ['EC_PED_PEDIDO_VER', 'EC_PED_PEDIDO_PROCESAR', 'EC_PED_DESPACHO'],
    autoProvision: true,
  },
  {
    perfil: 'Mostrador Ecommerce',
    desc: 'Prepara y confirma retiros en el local. No despacha delivery ni cancela',
    selectores: ['EC_PED_PEDIDO_VER', 'EC_PED_PEDIDO_PROCESAR', 'EC_PED_MOSTRADOR'],
    autoProvision: true,
  },
];
