TprxMENUS MENU Component

De Pragma Wiki
Ir a la navegación Ir a la búsqueda

Introducción

El objeto TprxMENUS_MENU_Component (Componente para menús de usuario de explorador.) implementa funcionalidad para asistir en el armado de los menús de usuario del explorador (ver TTprxMENUS Frame). Se documentan las sentencias SQL usadas para armar el menú, y su contenido.

Identidad

  • Ancestro: TprxMENUS_Component
  • Carpeta: C:\DevelopPrx\frames
  • Archivo: prxMENUS_MENU_Component.pas

SQL para armar el menú en el árbol

Este SQL arma la estructura del menú en el árbol.

SELECT
Origen = 'MENU'
, MenuOrden = pMENU.FGRUPOORDEN
, Menu = pMENU.FCODIGO
, Leyenda = pMENU.FDESCRIPCION
, Imagen = pMENU.FIMAGEN
, Grupo = pMENU.FGRUPO
, GrupoOrden = pMENU.FGRUPOORDEN
, Objeto = NULL
, TS = pMENU.FTS
, Tipo = 'MENU'
, Orden = 0
, Nivel = 0
, Permiso = CAST(1 AS BIT)
, USUARIO_MENUS.FADMINISTRADOR
FROM pMENU, USUARIO_MENUS WHERE
pMENU.FCODIGO NOT IN ('MENU_STATS', 'MENU_FAVS')
AND pMENU.FACTIVO = 1
AND USUARIO_MENUS.FUSUARIO = SYSTEM_USER
AND USUARIO_MENUS.FMENU = pMENU.FCODIGO

/* pMENU_ARBOL.FOBJETO IS NULL... */

UNION SELECT
Origen = 'MENU'
, MenuOrden = pMENU.FGRUPOORDEN
, Menu = pMENU.FCODIGO
, Leyenda = pMENU_ARBOL.FLEYENDA
, Imagen = ISNULL(pMENU_ARBOL.FIMAGEN, 'folder')
, Grupo = pMENU.FGRUPO
, GrupoOrden = pMENU.FGRUPOORDEN
, Objeto = pMENU_ARBOL.FOBJETO
, TS = pMENU_ARBOL.FTS
, Tipo = 'NODO'
, Orden = pMENU_ARBOL.FORDEN
, Nivel = pMENU_ARBOL.FNIVEL
, Permiso = CAST(1 AS BIT)
, USUARIO_MENUS.FADMINISTRADOR
FROM pMENU, pMENU_ARBOL, USUARIO_MENUS WHERE
pMENU.FCODIGO NOT IN ('MENU_STATS', 'MENU_FAVS')
AND pMENU.FACTIVO = 1
AND pMENU_ARBOL.FMENU = pMENU.FCODIGO
AND pMENU_ARBOL.FOBJETO IS NULL
AND USUARIO_MENUS.FUSUARIO = SYSTEM_USER
AND USUARIO_MENUS.FMENU = pMENU.FCODIGO

/* pMENU_ARBOL.FOBJETO IS NOT NULL... */

UNION SELECT
Origen = 'MENU'
, MenuOrden = pMENU.FGRUPOORDEN
, Menu = pMENU.FCODIGO
, Leyenda = pOBJETOS.FDESCRIPCION
, Imagen = pOBJETO_TIPO.FIMAGEN
, Grupo = pMENU.FGRUPO
, GrupoOrden = pMENU.FGRUPOORDEN
, Objeto = pMENU_ARBOL.FOBJETO
, TS = pMENU_ARBOL.FTS
, Tipo = 'NODO'
, Orden = pMENU_ARBOL.FORDEN
, Nivel = pMENU_ARBOL.FNIVEL
, Permiso = CASE WHEN EXISTS
(
SELECT * FROM USUARIO_ROL_EXISTENTES WHERE
USUARIO_ROL_EXISTENTES.FUSUARIO = SYSTEM_USER
AND USUARIO_ROL_EXISTENTES.FOBJETO = pMENU_ARBOL.FOBJETO
AND USUARIO_ROL_EXISTENTES.FPERMISO = 'SELECT'
)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT)
END
, USUARIO_MENUS.FADMINISTRADOR
FROM pMENU, pMENU_ARBOL, pOBJETOS, pOBJETO_TIPO, USUARIO_MENUS WHERE
pMENU.FCODIGO NOT IN ('MENU_STATS', 'MENU_FAVS')
AND pMENU.FACTIVO = 1
AND pMENU_ARBOL.FMENU = pMENU.FCODIGO
AND pOBJETOS.FCODIGO = pMENU_ARBOL.FOBJETO
AND pOBJETO_TIPO.FCODIGO = pOBJETOS.FTIPO
AND USUARIO_MENUS.FUSUARIO = SYSTEM_USER
AND USUARIO_MENUS.FMENU = pMENU.FCODIGO

ORDER BY 2, 7, 3, 11

SQL para armar el contenido de la grilla

Este SQL carga el contenido de la opción de menú seleccionada a la grilla.

DECLARE @FACTIVEMENU VARCHAR(64) = 'pragma_contabilidad'
DECLARE @FACTIVEPATH VARCHAR(64) = 'Maestros'

SELECT
Img = NULL
, Menu = pMENU_OBJS.FMENU
, Descripcion = pOBJETOS.FDESCRIPCION
, Objeto = pMENU_OBJS.FOBJETO
, Clave = pMENU_OBJS.FCLAVE
, Orden = pMENU_OBJS.FORDEN
, Permiso = CASE
WHEN EXISTS
(
SELECT * FROM USUARIO_ROL_EXISTENTES WHERE
USUARIO_ROL_EXISTENTES.FUSUARIO = SYSTEM_USER
AND USUARIO_ROL_EXISTENTES.FOBJETO = pMENU_OBJS.FOBJETO
AND USUARIO_ROL_EXISTENTES.FPERMISO = 'SELECT'
)
THEN CAST(1 AS BIT)
ELSE CAST(0 AS BIT)
END
, Imagen = pOBJETO_TIPO.FIMAGEN
, Editable = pOBJETOS.FEDITABLE
, Tipo = pOBJETOS.FTIPO
FROM pMENU_OBJS, pOBJETOS, pOBJETO_TIPO WHERE
pMENU_OBJS.FMENU = @FACTIVEMENU
AND pMENU_OBJS.FCLAVE LIKE '%' + @FACTIVEPATH + '%'
AND pOBJETOS.FCODIGO = pMENU_OBJS.FOBJETO
AND pOBJETO_TIPO.FCODIGO = pOBJETOS.FTIPO
ORDER BY pMENU_OBJS.FORDEN, pMENU_OBJS.FOBJETO