Mecanismo I-1 (listarsup.php): Listados especiales

Este mecanismo se usa cuando se requieren listar varios registros almacenados en N2C, en un reporte de tipo especial, que no pueda ser hecho con el “Report writer” estándar de N2C. Aplica también cuando se requieren datos de distintas tablas.

El programa solicitante indica a través de campos de forma, como se explica abajo, qué registros se desean listar y este programa muestra en pantalla el reporte especial construido. Este reporte tiene el Look & Feel de N2C, sin embargo permite adaptar los colores mediante parámetros. Si se desea algo completamente distinto, se debe utilizar el mecanismo 3 y construir el reporte correspondiente, sin embargo se tendrán que programar manualmente varios aspectos tales como el ordenamiento de campos, el conteo de registros, los enlaces y las autorizaciones de acceso.

Este programa verifica que el usuario haya hecho login al sistema y que tiene acceso a todas las tablas que se están utilizando en el reporte.

Nota importante: A partir de la versión 4.0, el programa de manejor de reportes de Net2Client tiene un botón de "Mostrar", en "Parámetros Avanzados", en la parte de abajo, después de los campos de ordenamiento. Cuando se utiliza esta facilidad, hay un botón de "Generar HTML" que genera la mayoría de las instrucciones de HTML necesarias para ejecutar este programa. Se recomienda su utilización, como una forma rápida de generar nuevos reportes.

Parámetros (campos de la forma)
(Los campos en negrita son obligatorios)

PARÁMETROS PRINCIPALES
Nombre Uso
BD La base de datos que se está utilizando
COKCodigo El código del Cokie (">Ver anexo V)
TablasAListar La lista de tablas que deben ser leídas, separadas por comas
CamposAListar

La lista de campos que se deben listar, separados por comas. Usar los nombres internos (Ej. PERNombre,AR1Linea3...)

Opciones adicionales:

  • Si se desea que un campo sea modificable, se debe poner un asterisco delante del nombre del campo.
  • Si se desea un enlace a una vista extendida, escribir el nombre de la tabla seguido de "VerExtendido". Ej: PERVerExtendido
  • Para poner enlaces hacia abajo (registros dependientes), se debe escribir HijoX, en donde X es el número n de la tabla ARn, o P (PER), A (AGE), E (EVE), I (INT). Cuando se están listando varias tablas, el hijo se refiere siempre a la tabla del campo anterior. Esto supone que la tabla dependiente (hija) tiene un enlace hacia la tabla que se está listando. Por ej. para tener los enlaces hacia PER se escribe HijoP, y para AR2 se escribe Hijo2.
  • Cuando hay una sola tabla (en TablasAListar), se puede poner un botón de ELIMINAR, para que el USUARIO pueda eliminar un registro. Para ello, escribir “Del” (Delete), en la posición que se desea que aparezca el botón.
    Nota : Si el usuario tiene autorización para eliminar registros propios, pero no registros ajenos, los iconos de eliminación aparecerán solo cuando los registros sean propios. Sin embargo es requisito que entre los campos a listar esté el código del registro
  • Para campos calculados use CALXX (XX:01 al 09) (Más detalles abajo)

Nota:

El perfil del usuario debe tener autorizada la modificación o eliminación de registros para la tabla correspondiente.

Condiciones Las condiciones que se deben cumplir para listar registros. En caso de haber varias tablas a las cuales se les está haciendo un "join", deben aparecer aquí esas condiciones. Se debe usar la sintaxis de MySql, por ejemplo usando los "AND" y los "OR" que sean necesarios
Ordenamiento El Orden que se requiere en el reporte (Sort). Si se desea que un campo sea utilizado como ruptura de control (agrupación), poner un asterisco delante.
Titulo Título del reporte. Si no se incluye, el reporte sera desplegado sin barra de titulo.
CantAListar La cantidad de registros a listar por página. Si se omite, se usa el valor por defecto de la aplicación (que viene en la tabla de parámetros)
CantExacAListar La cantidad Exacta de registros a listar.Cuando este parámetro es utilizado, se ignora CantAListar y se utiliza este valor. Igualmente, no se incluyen las facilidades para pdf ni para bajar los datos a Excel.
RegistrosALeer Si se desean leer unos registros específicos, escriba los números de dichos registros separados por comas. Estos registros corresponden al código de registro en la primera tabla que aparezca en el parámetro "TablasAListar". Si se usa este registro se ignora el parámetro "Condiciones".
CamposALeer Los campos que normalmente aparecen en el SELECT son construidos directamente a partir de los CamposAListar. Este parámetro permite que no se tomen esos campos, sino los indicados por el usuario. Este es un parámetro delicado ya que listarsup muchas veces añade campos requeridos por alguna condición de seguridad y si no se añaden aquí, se puede producir un error.
VerConExtendido si el valor es SI y la persona tiene autorización para ver vistas extendidas, se invoca la vista extendida (verextendido.php) en vez de ver, cuando el usuario hace clic sobre el número del registro
RUPTURAS DE CONTROL
Totales Campos para los cuales se desea dar totales, separados por comas. Los campos deben ser numéricos (Tipo Cantidad o Monto). Los campos mencionados aquí, deben estar entre los “CamposAListar”.
Promedios Forma Abreviada: Indique A si desea totales con promedios, B promedios sin totales o deje en blanco si desea sólo los totales:
Forma detallada: Escriba 3 dígitos con posibles valores 0 y 1. 0 Indica no usar, 1 indica usar. La primera posición se refiere a los totales, la segunda a la cantidad de registros y la tercera a los promedios. Por ejemplo, 011 significa que no se desean totales, pero si cantidad de registros y promedios.
SoloTotales Escribir "SI", si se desea que solo aparezcan las líneas de Total. Debe usarse en conjunto con los campos que tienen un asterisco en el parámetro Ordenamiento.
OPCIONES A INCLUIR
Imagen Escribir "SI", si se desea que las imágenes sean mostradas, con cualquier otro valor, aparece un enlace con la palabra "Ver"
Calculadora Escribir "NO" si se desea que se omita la calculadora para saber cuantos registros existen.
IndicacionOrden Escribir "SI" si desea que se indique el ordenamiento que tiene el reporte (Ej: Ciudad (Ascendente), Edad (Descendente)) y que se muestra debajo del título
Tope Escribir "SI" si quiere que aparezcan en el tope del reporte, los iconos para obtener copia en excel, en pdf o para preparar cartas. Estos aparecerán siempre y cuando hayan más de 10 registros o no se hayan solicitado al Pie
SaltoRapido Escribir "SI" si quiere que aparezca, después de la indicación de cuales fueron los registros leídos, unas cajas para ir directamente a un registro y para cambiar la cantidad de registros mostrados por página.
Pie Escribir "NO" si se desea que se omita el panel de opciones para impresión a carta, pdf o excel al final del reporte.
Encabezados Escribir "NO" si se desean omitir los encabezados
INCLUSIÓN PHP
InitPHP Programa de PHP a ser incluido al principio del programa (después del include de PHPCuerpo). Debe estar incluido en el directorio de programas.
MidPHP Programa de PHP a ser incluido justo después de la lectura del registro, después de haber llenado la variable $row con los datos del registro, antes de escribir el registro. Es ejecutado una vez por cada línea del reporte. Debe estar incluido en el directorio de programas.
EndPHP Programa de PHP a ser incluido al final del programa (después del include de PHPCuerpo). Debe estar incluido en el directorio de programas.
COMO APARECE EL LISTADO
AjustarFrame Escribir SI en éste parámetro si desea que el reporte sepa que se está desplegando dentro de un frame interno (iframe) y ajuste la altura del mismo para que pueda desplegar todo el reporte sin utilizar scrollbars ni dejar espacio vacio.
Ancho Especifique el número exacto de pixeles que desea que tenga como ancho la página del reporte. Si se omite este parámetro el ancho de la página será libre y dependerá de la cantidad de conetenido desplegado y de los estilos utilizados.
Borde Utilice este parámetro si desea que la pagina de reporte se despliegue dentro de un borde. Su valor sera interpretado como el número exacto de grosor en pixeles de dicho borde.
PRESENTACIÓN DEL LISTADO
HojaEstilos Es la hoja de estilos que se desea incluir en el reporte. Debe estar almacenada en el directorio de estilos
Esquema Número del esquema de colores definido en net2client (ver). Al usuar este parámetro, no hace falta usar ninguno de los 6 parámetros siguientes.
Fondo Cuando NO se usa el parámetro "esquema", color del fondo del título. Escribir el color en inglés o en su configuración hexadecimal #XXXXXX (*)
FondoTabla Cuando NO se usa el parámetro "esquema", color del fondo de la tabla (Marco) . Escribir el color en inglés o en su configuración hexadecimal #XXXXXX (*)
Letras Cuando NO se usa el parámetro "esquema", color de las letras del título. Escribir el color en inglés o en su configuración hexadecimal #XXXXXX (*)
LetrasTabla Cuando NO se usa el parámetro "esquema", color de las letras de la tabla. Escribir el color en inglés o en su configuración hexadecimal #XXXXXX (*)
LetrasRuptura Cuando NO se usa el parámetro "esquema", color de las letras de la ruptura de control. Escribir el color en inglés o en su configuración hexadecimal #XXXXXX (*)
FondoLinea Cuando NO se usa el parámetro "esquema", color del fondo de las líneas intercaladas. Escribir el color en inglés o en su configuración hexadecimal #XXXXXX (*)
ImagenFlechaAbajo
URL que reemplaza a la imagen (ordenamiento ascendente). A veces se requiere modificar cuando se desea un fondo oscuro. Puede usarse ruta relativa desde listarsup.
ImagenFlechaArriba
URL que reemplaza a la imagen (ordenamiento ascendente). A veces se requiere modificar cuando se desea un fondo oscuro. Puede usarse ruta relativa desde listarsup.
ParamSelect Parámetros del SELECT que se desean justo después de la cláusula SELECT. Típicamente se usa para el DISTINCT
MantenerRetorno Escribir "SI" para no alterar el retorno que se tenía previo a la invocación del programa. Este es usado, cuando se invoca listarsup al seleccionar un campo tipo enlace (ex-lupa)
BOTONES DE ACCIÓN
ActionBoxType Indica que se quiere una columna de acción a la izquierda, delante de todos los campos. Se debe indicar el tipo de elemento deseado:
  • radio: Para un botón tipo radio. Al tocarse, el control pasa automáticamente al programa indicado en el parámetro ActionBoxProgram y pasando en el parámetro Record el número de registros
  • checkbox: Para una caja que quedará marcada si se pincha. A diferencia del botón tipo radio, el control no pasa al programa indicado en el parámetro ActionBoxProgram, sino cuando el usuario pincha el botón indicado en ActionBoxName. Esto permite que el usuario vaya seleccionando varios registros en varias páginas.
ActionBoxProgram Es el programa a ser invocado cuando el usuario marca un botón de radio (ActionBoxType=radio) o cuando el botón de ActionBoxName es utilizado.
  • Si el programa está en el directorio del proyecto basta con escribir el nombre, si no, se puede escribir la ruta completa desde el directorio new o sis
  • En caso de que el programa deba ser invocado a través de versup.php (o verextendido.php), escribir versup.php?nbeprograma, y el sistema se encargará de poner el parámetro de sesión (COKO)
  • En caso de que la operación sea de eliminar registros, se debe escribir la palabra DELETE
  • El programa invocado va a recibir en el parámetro $SelectedRec los números de registros seleccionados, separados por una coma
ActionBoxName Es el texto que se desea que aparezca el botón de acción que se encuentra arriba de la columna de acción. Ej: Seleccionar. Cuando se trata de una eliminación (ActionBoxProgram=DELETE) se debe omitir\ este parámetro ya que es ignorado.

Nota: El identificador de este botón es botonaccion.

ActionBoxColor Configuración hexadecimal (Ej. #FFEEFF) del color que se quiere que tome la columna de un registro marcado cuando una caja tipo checkbox es marcada. Si se omite este parámetro, se toma el color de la tabla. Si no se desea cambio de color escribir:NO
ActionField No usar cuando se está listando una sola tabla. Si hay más de una tabla, indicar el nombre interno del campo que se desea recibir cuando el usuario selecciona un registro. Por ejemplo, si se están listando las tablas PER y AR1, este campo debería ser PERCodigo o AR1Codigo
CONTROL DE CAMPOS

NombreXXX

Encabezado para el campo XXX. Hasta la versión 4.6A, XXX solo podía ser CALnn (Ej: NombreCAL01). A partir de esta versión, XXX puede ser un campo de datos, como PERTel1 o AR1Linea3. En el caso de ser un campo de datos, utiliza lo que se indique aquí, en vez de tomar el nombre del campo. Esto permite sobreescribir el nombre estándar.
EvaluarCALXX Si tiene el valor "SI", evalúa la expresión especificada en la variable CALXX. Es indispensable cuando se quiere que la variable CAL sea el resultado de una operación aritmética
EvaluarVarCALXX Prepara a Listarsup para que interprete campos calculados dentro de indices de arreglos. Ejemplo: $MM[LOG_[[LOGOper]]]
PalabrasMax Indique la cantidad máxima de palabras que desean que aparezcan cuando se lista un campo tipo bloque. Las demás serán mostradas cuando el usuario pinche la palabra Más...
FormatXXX Escribir "NO" para que no se haga el formateo automático del campo XXX. Ejp: FormatCAL02 o FormatPERMonto1
CONTROL DEL CONTENIDO DEL LISTADO
IrExtendido Si tiene el valor SI, cuando se consiga un solo registro, si existe una vista extendida, se va a la misma directamente
MensajeSiNoHay Mensaje que debe aperecer si no se consigue ningún registro. Si se escribe NO, no parece ningún mensaje, si se omite este parámetro, se escribe el mensaje estándar de Net2Client.
TextoListar Texto que aparece después de listar los registros de una página en el programa listarsup.php
Retorno Si se tiene el valor “NO”, en vez de poner un botón de retorno, pone un botón de cerrar ventana; Si tiene el valor “X” no pone nada (y omite el "powered by Net2Client ) . Si tiene el valor “-2” pone un botón de retorno que regresa dos pantallas atrás
BotonANombre
BotonBNombre
BotonCNombre
Texto que debe aparecer en el Botón X que se muestra al terminar de listar los registros de una página, después de TextoListar y antes del botón de Regresar
BotonADireccion
BotonBDireccion
BotonCDireccion
Dirección completa (www…) a donde ir cuando el usuario pulsa el botón X

VersupA
VersupB
VeruspC

Indica que la invocación (en el boton X) debe ser hecha a través del programa versup
AYUDA PARA EL DEBUGGING
ECHO Poner con la palabra ECHO si se desea que aparezca la instrucción MySQL de lectura generada. EJ: <input type=hidden name='ECHO' value='ECHO'>

(*) Ver la tabla de colores en el Anexo A

LIMITACIÓN: Cuando hay campos modificables, no se puede hacer el envio de emails.
Normalmente, cuando se pone un código (ej. PERCodigo), el programa muestra el número y el icono de Edición. Si se desea que aparezca un enlace a la vista extendida, escribir el nombre interno de la tabla, seguido del texto “VerExtendido”, ejemplo: PER VerExtendido.

El programa invocado ya tiene disponible dos formas de estilos (CSS), muy similares a la de Net2Client. Cuando el usuario pide imprimir una pantalla, no se van a imprimir los campos de imagen (para que no aparezcan los iconos de ayuda, impresión, etc) a menos que tengan la clase “dp”, de la forma siguiente:

<img class=dp border=0 href=…>

Campos Calculados

Los campos calculados permiten poner una columna con unos valore específicos, obtenidos de otras columnas. Típicamente son utilizados para poner enlaces o hacer operaciones.

Para utilizar los campos Calculados, en CamposAListar se escribe la variable: CALxx (xx:dos dígitos), y en las variables hidden se debe escribir como en este ejemplo:

<input type='hidden' name='CALxx'
value=\"<a href='versup.php?$COKO"."pedido.htm,[[EVECodigo]]' target='_parent'>Editar</a>\">

u, alternativamente, a partir la versión 4.4:

<input type='hidden' name='CALxx'
value=\"<a href='versup.php?[[COKO]]pedido.htm,[[EVECodigo]]' target='_parent'>Editar</a>\">

Observaciones

Estilos

Es posible controlar la apariencia del reporte, utilizando hojas de estilos (parámetro HojaEstilos), y las clases que son incluidas automáticamente en los reportes. En el gráfico siguiente, se muestran algunas de las clases utilizadas en las filas (ROW CLASSES), en las columnas (COLUMN CLASSES, en donde las clases de las columnas corresponden a los nombres internos de los campos impresos ) y en los textos de las líneas de totales.

Es importante mencionar que en este ejemplo lo que se tienen son líneas de totales. Si fueran lineas de conteo de registros, o de promedios, las clases serían las siguientes:

TotalRow QuantityRow AverageRow
FinalTotalRow FinalQuantityRow FinalAverageRow
TotalTextn QuantityTextn AverageTextn

 

Ejemplo

Veamos una aplicación con estas tablas:

Se quiere escribir un programa que muestre un reporte de todos los contactos con la información siguiente:

El reporte debe venir ordenado por nombre de empleado, en forma ascendente.

Como puede observarse, se están requiriendo campos de distintas tablas. Como el programa listarsup.php requiere los nombres internos, lo primero que debe hacer el asesor es buscar los nombres de esos campos. Esto se hace en el módulo de “setup” (http:www.net2client.com/sis/setup/administración.htm) en la opción de “Lista de Campos”.

Programa

<html>
<body>
<form name="invocar" method="POST"
	action="http://www.net2client.com/<? echo"$COKDirectorio"; ?>/listarsup.php">
	<input type='hidden' name='BD' value='00'>
<? echo "<input type='hidden' name='COKCodigo' value='$COKCodigo'>"; ?>
<input type='hidden' name='CamposAListar' value='AR1Nombre,PERNombre,PEREmail1,PERTel1,AGENombre'> <input type='hidden' name='TablasAListar' value='701PER,701AR3,701AGE'> <input type='hidden' name='Condiciones' value="(AR1Codigo=PEREnlace1) AND (AGECodigo=PERCodAgente)"> <input type='hidden' name='Ordenamiento' value='AR1Nombre'> <input type='hidden' name='Titulo' value='CONTACTOS POR EMPRESA'> <input type='hidden' name='Fondo' value='#00CC99'> <input type='hidden' name='Letras' value='white'> <input type='hidden' name='FondoTabla' value='#D5FFEA'> </form> <script language="JavaScript"> document.invocar.submit(); </script> </body> </html>

Comentarios

Resultado

 


Enlaces en el mismo capítulo:

Enlaces otros capítulos: