0% encontró este documento útil (0 votos)
610 vistas242 páginas

Guía Básica SDK para Desarrolladores

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
610 vistas242 páginas

Guía Básica SDK para Desarrolladores

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Software Development Kit

(SDK)
Nivel Básico

Powered by
Intelisis Software


Titular de los Derechos Intelisis Software S.A. de C.V.


de Autor:
Derechos Reservados 2013
Xola 535, Piso 9, Col. del Valle, Benito Juarez,
03100, Ciudad de México
Autor: ING. Enrique Toral
Revisión de Edición: L.S.C. Israel Gesen Gracia Ramos

Derechos Reservados México 2014


Todos los derechos reservados. Impreso en México, D.F. Esta obra no puede ser copiada,
reproducida total o parcialmente, transferida o publicada en ninguna forma, incluyendo
medios magnéticos, sin el conocimiento por escrito de
Límite de Responsabilidades
Este manual está diseñado para ayudar a mejorar su conocimiento y uso de Intelisis ERP.
Sin embargo el propietario de los derechos de autor, el autor, editores y cualquier parte
relacionada no asume ninguna responsabilidad por los usos dados a este material o por
decisiones tomadas por usuarios que estén apoyadas en el contenido de este manual; no
se dan garantías ya sean expresas o implícitas relacionadas con el contenido de esta obra,
o aplicación para un fin específico o particular.
Asimismo, ni el propietario de los Derechos de Autor, ni el autor, editores ni nadie que haya
participado en la creación y producción de esta obra, serán responsables por cualquier
daño directo, indirecto o consecuencial, daños y/o perjuicios como por ejemplo: perdi-
da de utilidades, beneficios, clientes, datos, etc. Ningún distribuidor, compañía o persona,
está autorizado a alterar este límite de responsabilidad.
Impreso en México.
Training & Professional Development

Indice
Acerca de SDK Básico.........................................................................................................................6
Objetivos................................................................................................................................................6
Requisitos del curso...........................................................................................................................6 3

Esbozo general del curso.................................................................................................................6

CONCEPTOS BASICOS

Conceptos Básicos..............................................................................................................................9
SQL (Servidor).....................................................................................................................................10
Política de desarrollo - Programación MSSQL y otros lenguajes......................................17

INTRODUCCIÓN AL SDK

SDK (Cliente). ..................................................................................................................................... 29


Interfaz gráfica.................................................................................................................................. 32
Uso de proyectos............................................................................................................................. 40
PRACTICA 2-1 Creación De Un Objeto En SDK....................................................................... 42
Editor de expresiones..................................................................................................................... 48
PRACTICA 2-2 Utilización Del Editor De Expresiones........................................................... 55
Acciones en las formas....................................................................................................................61
PRACTICA 2-3 Creación De Un Menú Y Barra De Herramientas....................................... 64
Creación de Relaciones.................................................................................................................. 67
PRACTICA 2-4 Creación De Relaciones SQL Con SDK.......................................................... 69

VARIABLES Y REPORTES

Creación de variables...................................................................................................................... 77
Crear una forma con variables..................................................................................................... 79
Integración de variables en Intelisis ERP.................................................................................. 82
PRACTICA 3-1 Creación De Formas Con Variables................................................................ 84

Powered by Intelisis Software




Uso de variables tipo HTML (Nuevo Ver 5000)....................................................................... 90


Barra de botones (Nuevo Ver 5000)............................................................................................91
Uso de librerías web........................................................................................................................ 94

4 PRACTICA 3-2 Manejo de Variables HTML y barra de botones......................................... 96


Editor Web........................................................................................................................................ 100
PRACTICA 3-3 Uso del editor web y función Browser....................................................... 103
Introducción al Reporteador en SDK........................................................................................110
Generador de Reportes.................................................................................................................110
PRACTICA 3-4 Generación de un Reporte en SDK............................................................. 120

FORMAS, DIALOGOS Y ESPECIALES

Laboratorio 1................................................................................................................................... 127


Creación y uso de campos Calculados.................................................................................... 140
Configuración de Filtros............................................................................................................... 142
PRACTICA 4-1 Crear Campos Calculados Y Filtros.............................................................. 144
Objetos Heredados y Ensamblados......................................................................................... 150
PRACTICA 4-2 Adjuntar Una Forma A Un Modulo.............................................................. 152
Creación de Especiales................................................................................................................. 157
Herramienta Generadora de Especiales................................................................................. 160
Administración de Desarrollos.................................................................................................. 162
PRACTICA 4-3 Crear Un Especial Para Mostrar Los Cambios Del Módulo De Ventas En
Intelisis............................................................................................................................................... 166
Creación y Modificación de Diálogos...................................................................................... 169
Diferencias entre objeto especial y objeto especial con variables................................ 171
PRACTICA 4-4 Creación De Diálogos Con SDK.................................................................... 173
Generador de vistas especiales................................................................................................. 179
PRACTICA 4-5 Creación de una vista especial...................................................................... 182
Training & Professional Development

DETALLES Y EXPLORADORES

PRACTICA 5-1 Creación De Un Segundo Detalle................................................................. 187


Creación de un tableros de control.......................................................................................... 196
PRACTICA 5-2 Creación de un tablero de control .............................................................. 199 5

Procedimientos SQL en SDK....................................................................................................... 210


PRACTICA 5-3 Utilización de Procedimientos SQL..............................................................211
Diseño de Vistas para SDK.......................................................................................................... 216
Creación de Exploradores........................................................................................................... 218
PRACTICA 5-4 Creación de un Explorador mediante Vistas............................................222

VALIDACIONES Y PROCEDIMIENTOS ALMACENADOS

Controles de la tabla..................................................................................................................... 231


Desarrollo de Validaciones.......................................................................................................... 231
PRACTICA 6-1 Utilización de Procedimientos Almacenados........................................... 235
Desarrollo de Integridad Referencial con Triggers.............................................................239
PRACTICA 6-2 Utilización de Triggers y otros filtros...........................................................240
Recomendaciones......................................................................................................................... 242

Powered by Intelisis Software




Acerca de SDK Básico


La herramienta Software Development Kit también conocida como SDK es aquella que
nos permite desarrollar objetos nuevos a través de sus múltiples opciones para su creación
y modificar aquellos objetos existentes para poder así expandir las capacidades ya pre
6 establecidas dentro de Intelisis ERP. Este software como tal no es parte integral de la ver-
sión comercial dirigida a usuarios finales de Intelisis ERP, sino más bien es una herramienta
dirigida principalmente a los desarrolladores.
Este curso de SDK Básico pretende proporcionar a los participantes los conocimientos bá-
sicos para la creación modificación e implementación de objetos nuevos dentro de una
versión de usuario final de Intelisis ERP.

Objetivos
Al término de este curso el participante podrá:
•• Conocer los principios básicos de Intelisis SDK
•• Crear objetos nuevos partiendo de los elementos básicos de Intelisis SDK
como tablas, vistas y formas
•• Realizar modificaciones a los objetos ya existentes de Intelisis SDK
•• Implementar las modificaciones a los objetos ya existentes mediante la crea-
ción de archivos especiales.
•• Conocer la implementación de procedimientos que permitan validar los datos
que se capturan en las formas de Intelisis ERP
•• Incorporar objetos de SQL como vistas para crear exploradores.
•• Incorporar Triggers que permitan validar operaciones de inserción, actualiza-
ción y eliminación de datos en Intelisis ERP

Requisitos del curso


•• Manejo básico del sistema operativo Windows
•• Conocimiento básico de Intelisis ERP
•• Conocimiento básico – intermedio de SQL

Esbozo general del curso


•• El curso está dividido en 5 unidades que son:
•• Conceptos básico
•• Introducción al SDK
•• Formas, Diálogos y Especiales
•• Detalles y Exploradores
•• Validaciones y procedimientos almacenados
01

Conceptos Basicos

Powered by Intelisis Software




8
Training & Professional Development

Conceptos Básicos.
Introducción Sistemas Cliente / Servidor
Modelo Mainframe Terminales Tontas (Muy Robusto, Poco Amiga-
ble) 9

Los mainframes son grandes computadoras que poseen una gran rapidez y caros sistemas
que son capaces de controlar al mismo tiempo a cientos o miles de usuarios, así como cien-
tos dispositivos de entrada y salida. Su temperatura debe estar siendo controlada cons-
tantemente. Su costo puede ir desde los 350.000 dólares. Los mainframes poseen varios
procesadores que ejecutan varias tareas a la vez. Por lo general cuentan con varias unida-
des de disco para procesar y almacenar grandes cantidades de información. A esta clase
pertenecen la IBM 390, 430, etc (Figura 1.1).

Figura 1.1 El modelo Mainframe basado de en terminales tontas fue unos de los primero modelos utilizados
en las redes de información

Modelo PC Redes (Muy Amigable, Poco Robusto)


La necesidad de distribuir tareas para los sistemas en redes, permiten crear diferentes apli-
caciones para bases de datos que liberan en gran parte de las actividades al servidor, lo
que permite disminuir costos de un servidor de alto rendimiento y aprovechar la capaci-
dad de la PC de escritorio, la cual comienza a ser una herramienta cada vez más utilizada
por todos. Este modelo permite que un usuario solicite información y el servidor entregue
esta para ser procesada por la PC. La desventaja de este método es que el tráfico en la LAN
es grande y el tiempo de entrega es elevado a comparación del siguiente modelo (Figura
1.2).

Figura 1.2 El modelo


PC- Redes fue unos d
elos modelos más popu-
lares a finales del siglo
pasado pero como todo
era concentrado en un
solo equipo hacia que
las operaciones fuera
lentas

Powered by Intelisis Software




Modelo Cliente / Servidor (Muy Amigable, Muy Robusto)


El término Cliente/Servidor describe un sistema en el que una máquina “Cliente” solicita
a una segunda máquina llamada “Servidor” que ejecute una tarea específica. El “Cliente”
suele ser una computadora personal común conectada a una LAN, y el “Servidor” es, por lo
10 general, una máquina anfitriona, como un servidor de archivos o una macrocomputadora
o computadora de rango medio. El programa “Cliente” cumple dos funciones distintas:
por un lado, gestiona la comunicación con el servidor, solicita un servicio y recibe los datos
enviados por aquél. Por otro, maneja la interfaz con el usuario: presenta los datos en el
formato adecuado y brinda las herramientas y comandos necesarios para que el usuario
pueda utilizar las prestaciones del servidor de forma sencilla. El programa “Servidor” en
cambio, básicamente se encarga de administrar, procesar y transmitir la información de
forma eficiente, de esta forma un mismo servidor puede atender a varios clientes al mismo
tiempo (Figura 1.3).

Figura 1.3 Este modelo es el más utilizado hoy en dia en casi todas las empresas que utilizan redes debido a que
permite que la información no solo sea procesada por el servidor, sino que se procesa de manera compartida
con el usuario

SQL (Servidor)
Introducción al SQL.
SQL es una herramienta para organizar, gestionar y recuperar datos almacenados en una
base de datos informática. El nombre “SQL” es una abreviatura de Structured Query Lan-
guaje (Lenguaje de consultas estructurado). Como su propio nombre indica, SQL es un
lenguaje informático que se puede utilizar para interaccionar con una base de datos y más
concretamente con un tipo específico llamado base de datos relacional. Es un lenguaje
Training & Professional Development

estándar por haberse visto consolidado por el Instituto Americano de Normas (ANSI) y
por la Organización de Estándares Internacional (ISO). Los Generadores de bases de datos
que utilizan este estándar son: ORACLE, SyBase, INFORMIX, FOX BASE, PARADOX, MSSQL,
ACCESS...
El SQL trabaja con estructura cliente/servidor sobre una red de ordenadores. El ordenador 11
cliente es el que inicia la consulta; el ordenador servidor es que atiende esa consulta. El
cliente utiliza toda su capacidad de proceso para trabajar; se limita a solicitar datos al orde-
nador servidor, sin depender para nada más del exterior. Estas peticiones y las respuestas
son transferencias de textos que cada ordenador cliente se encarga de sacar por pantalla,
presentar en informes tabulados, imprimir, guardar, etc., dejando el servidor libre.
Tipos de datos más comunes:
•• Int.
•• Bit.
•• Money.
•• Float.
•• Datetime.
•• Char(20) o VarChar(20)
Operadores de relación.
•• = Igual a
•• <> Distinto de
•• > Mayor que
•• >= Mayor o igual que
•• < Menor que
•• <= Menor o igual que
•• Like Coincidencia con un patrón
•• Not Like No coincidencia con un patrón
•• Is Null Igual a nulo (vacío)
•• Is Not Null No es nulo (no está vacío)
•• Between Rango de valores entre una cota inferior y otra superior
•• In Pertenencia a un conjunto de valores o ser miembro de una subconsulta
•• Exist Cierto si una subconsulta devuelve como mínimo un registro
SELECT.
La cláusula SELECT lista los datos a recuperar por la sentencia SELECT. Los elementos o da-
tos a seleccionar pueden ser columnas de la base de datos o columnas a calcular por SQL
cuando efectúa la consulta o también el asterisco (*) para recuperar todos los campos de
una tabla.

Powered by Intelisis Software




Las expresiones de columnas deben ir separadas por comas si existen más de una
(por ejemplo, APELLIDO, NOMBRE, DOMICILIO).
Los nombres de campos pueden ir precedidos por el nombre de la tabla o su alias.
Por ejemplo [Link] o [Link] donde A es el alias para la tabla
12 ALUMNOS.
El operador DISTINCT, elimina las filas o registros duplicados del resultado de la con-
sulta; debe preceder la primera expresión de columna. Por ejemplo, la sentencia:
SELECT DISTINCT PROVINCIA FROM ALUMNOS

mostrará las distintas Provincias de las que proceden los Alumnos.


El comando SELECT se asocia con las cláusulas FROM, WHERE, GROUP BY, HAVING,
ORDER BY.
La cláusula FROM lista las tablas que contienen los datos a recuperar por la consulta.
El formato de esta cláusula es:
FROM nombretabla [alias _ tabla] ...
La cláusula WHERE dice a SQL que incluya solo ciertas filas o registros de datos en
los resultados de la consulta, es decir, que tienen que cumplir los registros que se
desean ver. La cláusula WHERE contiene condiciones en la forma:
WHERE expresión1 operador expresion2
expresión1 y expresion2 pueden ser nombres de campos, valores constantes o ex-
presiones.
La cláusula GROUP BY especifica una consulta sumaria. En vez de producir una fila
de resultados por cada fila de datos de la base de datos, una consulta sumaria agru-
pa todas las filas similares y luego produce una fila sumaria de resultados para cada
grupo.
Seguido de la cláusula GROUP BY se especifican los nombres de uno o más campos
cuyos resultados se desean agrupados. Tiene la forma:
GROUP BY expresión _ columna
donde expresión columna debe coincidir con la expresión de columna utilizada en
la cláusula SELECT. Puede ser uno o más nombres de campo de una tabla, separados
por coma o una o más expresiones separadas por comas. El siguiente ejemplo nos
dice cuantos alumnos están matriculados en cada grupo en el año 1995:
SELECT GRUPO, COUNT(*) FROM MATRICUL WHERE ANNO = 1995 GROUP BY GRUPO
Esta sentencia nos devolverá una fila por cada grupo de alumnos. Cada una de ellas
contendrá el grupo y el nº de alumnos en él.
Training & Professional Development

Las funciones de agrupamiento permitidas son:


SUM Devuelve la suma total de los valores de una expresión de columna o campo
numérica. Por ejemplo, SUM(NUMERO_DE_HERMANOS) devolverá el total de her-
manos de los alumnos del Centro.
AVG Devuelve la media de los valores de una expresión de columna. Por ejemplo, 13
AVG(NUMERO_DE_HERMANOS) devolverá la media de hermanos que posee el
alumnado del centro.
COUNT Devuelve el número de valores en una expresión de columna. Por ejemplo,
COUNT(MATRICULA) devolverá el número de registros con valores no nulos en ese
campo. Un ejemplo especial es COUNT(*), que nos devuelve el número de registros
incluyendo aquellos registros con valores nulos.
MAX Devuelve el valor más alto de los contenidos en una expresión de columna. Por
ejemplo, MAX(MATRICULA) devolverá el nº de matrícula más elevado que existe en
el fichero de alumnos.
MIN Devuelve el valor más bajo de los contenidos en una expresión de columna. Por
ejemplo, SELECT MIN(FECHA_NACIMIENTO) FROM ALUMNOS nos devolverá la fecha
de nacimiento del alumno más viejo del centro.
La cláusula HAVING dice a SQL que incluya solo ciertos grupos producidos por la
cláusula GROUP BY en los resultados de la consulta. Al igual que la cláusula WHERE,
utiliza una condición de búsqueda para especificar los grupos deseados. En otras
palabras, especifica la condición que deben de cumplir los grupos. Sólo es válida si
previamente se ha especificado la cláusula GROUP BY. La cláusula HAVING tiene la
forma:
HAVING expresión1 operador expresión2
expresión1 y expresión2 pueden ser nombres de campos, valores constantes o ex-
presiones y estas no deben coincidir con una expresión de columna en la cláusula
SELECT.
La sentencia siguiente nos mostrará el número de alumnos en cada grupo de 1995
cuyo número de integrantes supera los 30:
SELECT GRUPO, COUNT(*) FROM MATRICULA WHERE ANNO = 1995 GROUP BY GRUPO
HAVING COUNT(*) > 30

INSERT.
La sentencia de INSERT se utiliza para añadir registros a las tablas de la base de datos.
El formato de la sentencia es:
INSERT INTO nombre _ tabla [(nombre _ columna, ...)] VALUES (expr, ...)
nombre columna es una lista opcional de nombres de campo en los que se inserta-

Powered by Intelisis Software




rán valores en el mismo número y orden que se especificarán en la cláusula VALUES. Si no


se especifica la lista de campos, los valores de expr en la cláusula VALUES deben ser tantos
como campos tenga la tabla y en el mismo orden que se definieron al crear la tabla.
expr es una lista de expresiones o valores constantes, separados por comas, para dar valor
14 a los distintos campos del registro que se añadirá a la tabla. Las cadenas de caracteres así
como fechas deberán estar encerradas entre comillas ‘ o “.
Ejemplo:
INSERT INTO LIBROS (TITULO, PAGINAS, FECHA) VALUES (‘GestiónEscolarIntegra-
da’, 234,’12/27/95’)
Cada sentencia INSERT añade un único registro a la tabla. En el ejemplo solo se han especi-
ficado 3 campos con sus respectivos valores, el resto de campos quedaran a nulo. Un valor
nulo NULL no significa blancos o ceros sino simplemente que el campo nunca ha tenido
un valor.

UPDATE
La sentencia UPDATE se utiliza para cambiar el contenido de los registros de una tabla de
la base de datos. Su formato es:
UPDATE nombre _ tabla SET nombre _ columna = expr, ...
[WHERE { condición }]
nombre columna es el nombre de columna o campo cuyo valor se desea cambiar. En una
misma sentencia UPDATE pueden actualizarse varios campos de cada registro de la tabla.
expr es el nuevo valor que se desea asignar al campo que le precede. La expresión puede
ser un valor constante o una subconsulta. Las cadenas de caracteres y fechas deberán es-
tar encerradas entre comillas ‘ o “. Las subconsultas entre paréntesis.
La cláusula WHERE sigue el mismo formato que la vista en la sentencia SELECT y determina
que registros se modificarán.
Por ejemplo, subir el precio de compra de la tabla de libros un 10% de aquellos que tengan
más de 250 páginas, sería:
UPDATE LIBROS SET PRECIO = PRECIO * 1.1 WHERE PAGINAS > 250
Otro ejemplo, para fijar la fecha de matrícula de todos aquellos alumnos que la tienen va-
cía a la fecha de hoy, se pondría:
UPDATE MATRICULA SET FECHA _ MATRICULA = GETDATE()
WHERE FECHA _ MATRICULA IS NULL
Ejemplo utilizando una subconsulta:
UPDATE LIBROS SET PRECIO = (SELECT AVG(PRECIO)
FROM LIBROS WHERE PRECIO IS NOT NULL)
WHERE PRECIO IS NULL
Training & Professional Development

Con esta última sentencia se ha puesto precio a todos los libros que no lo tenían. Ese pre-
cio ha sido el resultante de calcular la medía entre los libros que si lo tenían.

DELETE.
La sentencia DELETE se utiliza para borrar registros de una tabla de la base de datos. El 15
formato de la sentencia es:
DELETE FROM nombre _ tabla [WHERE { condición }]
La cláusula WHERE sigue el mismo formato que la vista en la sentencia SELECT y determina
que registros se borrarán.
Cada sentencia DELETE borra los registros que cumplen la condición impuesta o todos si
no se indica cláusula WHERE.
Para borrar las notas de evaluaciones que, no sean la Final, de los alumnos de años ante-
riores se utilizaría la sentencia:
DELETE FROM NOTAS WHERE ANNO < 1995 AND EVALUACION <> ‘F’

STORED PROCEDURES.
El procedimiento almacenado es un conjunto de sentencias o comandos previamente
guardados que pueden tomar o regresar parámetros o inclusive modificar registros de
la base de datos. Equivale a una subrutina de un lenguaje de programación en donde se
invoca a dicho código, proporcionándole variables de entrada. Dicha rutina podrá regresar
una vez que concluya valores en sus variables de salida o haber producido una modifica-
ción de un archivo, realizado una impresión, conectarse a una página web, modificar una
tabla, etc.
CREATE PROCEDURE nombre _ proc
@parametro1 tipo de dato,
@parametro2 tipo de dato,

@parametron tipo de dato,

AS BEGIN
DECLARE

[ ...coloque los comandos de SQL requeridos ]

RETURN
END
GO

Powered by Intelisis Software




CURSORES
Los cursores frecuentemente se utilizan dentro de un procedimiento almacenado y se uti-
liza para recorrer la consulta de información previamente declarada; estos son muy comu-
nes para reportes matriciales mensuales, por ejemplo, se obtienen las ventas del año agru-
16 padas por mes y dependiendo del mes, se actualiza la columna del mes que corresponda.
DECLARE @parametro1 tipo de dato,
@parametro2 tipo de dato,

@parametron tipo de dato,
DECLARE nombre _ cursor CURSOR FOR
SELECT parameter1, parameter2, …, parametern

OPEN nombre _ cursor
FETCH NEXT FROM nombre _ cursor INTO @parametro1, @parametro2, … @parametron
WHILE @@FETCH _ STATUS <> -1 AND @@Error = 0
BEGIN
[ ...coloque los comandos de SQL requeridos ]
FETCH NEXT FROM nombre _ cursor INTO @parametro1, @parametro2,
… @parametron

END
CLOSE nombre _ cursor
DEALLOCATE nombre _ cursor

Vistas.
Una vista es una tabla virtual que representa los datos de una o más tablas.
La sintaxis para crear una vista es:
CREATE VIEW name _ vista
AS
SELECT …………………..

Triggers.
El Trigger es una variante del procedimiento almacenado que se ejecuta automáticamente
cuando el usuario intenta modificar o insertar registros en la tabla sobre la que se indique,
es decir que actúa con los comandos INSERT, UPDATE, ó DELETE. Por ejemplo, se desea que
cuando se modifique la configuración de un usuario de Intelisis, se modifiquen también la
configuración de los usuarios que copien la configuración del usuario que se alteró.
La sintaxis para crear un trigger es:
CREATE TRIGGER nombre _ trigger
ON { tabla | vista }
FOR | [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ]
AS BEGIN
Sentencias de sql [ ...n ]
END
Training & Professional Development

Política de desarrollo - Programación MSSQL y otros


lenguajes
Esta política describe las prácticas que seguimos en Intelisis para garantizar que el código
generado cumpla con los estándares de calidad y uniformidad requeridos. 17

1. Nunca y por ningún motivo referencies a un tipo de movimiento por su nombre


en código de SQL o de SDK.
SELECT
Importe,
Impuestos
FROM Venta
WHERE Mov = ‘Factura Prorrateada’

En lugar de utilizar nombres de movimientos, genera código que referencie a claves y sub-
claves de afectación:
SELECT
[Link],
[Link]
FROM Venta v
JOIN MovTipo mt ON [Link] = [Link] AND [Link] = ‘VTAS’
WHERE [Link] = ‘VTAS.F’ AND [Link] = ‘[Link]’

2. Genera procedimientos y funciones pequeños que realicen tareas simples

Powered by Intelisis Software




La función fnInteresIVAImporte calcula el importe de IVA correspondiente al monto de


Intereses. Para lograr esto, requiere calcular la tasa de interés diaria y la tasa real de interés
diaria; así mismo, para poder calcular la tasa diaria, es necesario conocer cuál es la tasa
base y a cuantos días está calculada esa tasa base. Para obtener cada uno de estos datos,
se requieren varias
18
consultas y cálculos diversos, todos estos cálculos se pueden encapsular en una sola fun-
ción o procedimiento, sin embargo, si separas cada uno de estos cálculos y encapsulas
cada uno en una función obtienes varias ventajas:
•• El código es más portable.
•• Al encapsular los cálculos en una sola función simple, esta tiende a tener menos
errores y es más fácil de entender y mantener por otros programadores.
•• Aumentas la probabilidad de que otro programador utilice alguna de estas funcio-
nes en su desarrollo y esto simplifica el mantenimiento del ERP.
•• La complejidad del desarrollo disminuye.
Siempre recuerda el dicho: Divide y vencerás y siempre piensa en la respuesta a la siguien-
te pregunta:
¿Cómo te comerías un elefante?
A pequeños bocados.
3. Nombra tus funciones y procedimientos de tal manera que puedan ser reutiliza-
bles en desarrollos distintos del ERP.
Las funciones mencionadas en el punto 2 son el ejemplo perfecto de cómo se debe de
nombrar una función en Intelisis y por esa razón las citaré en este punto y en otros puntos
más adelante. Si te das cuenta, el nombre de las funciones no hace mención del desarrollo
en que se están utilizando y esto permite sean fácilmente reutilizable en otros desarrollos.
Si buscamos estas funciones en el código de Intelisis nos daremos cuenta que se encuen-
tran en el archivo 01 Funciones. SQL, este script se utiliza para almacenar las funciones de
utilización general del sistema y, por lo tanto, al ponerlas ahí, estamos invitando a cual-
quier desarrollador a que las utilice. Es una buena práctica revisar este archivo antes de
comenzar cualquier desarrollo para buscar código que podamos reutilizar y asía ahorrar
tiempo, dinero y esfuerzo además de entregar un código más confiable.
4. Cuando utilices la sentencia INSERT, indenta de tal forma que quede claro que
valor se insertará en cada uno de los campos
Observa como en la sentencia INSERT que se presenta a continuación, los campos no están
alineados con sus respectivos valores lo cual dificulta su lectura, especialmente cuando se
trata de inserciones con muchos campos:
INSERT Venta (Empresa, Mov, Estatus, Importe, Almacen, Cliente, Sucursal)
VALUES (@Empresa, @Mov, ‘SINAFECTAR’, ISNULL(@Importe,0.0), ISNULL(@Alma-
cen,0,0),@Cliente, @Sucursal)
Training & Professional Development

En cambio, el código siguiente es mucho más fácil de leer y entender ya que cada campo
está perfectamente alineado con su respectivo valor:
INSERT Venta (Empresa, Mov, Estatus, Importe, SAlmacen, Cliente, Su-
cursal)
VALUES (@Empresa, @Mov, ‘SINAFECTAR’, @Importe, @Almacen, Cliente,
@Sucursal)
19
5. Normalmente las consultas a una base de datos se indentan a la derecha.

Como se puede observar en la imagen anterior, las palabras clave SELECT, FROM, JOIN y
WHERE están alineadas con respecto a su margen derecho. Por otro lado, también pode-
mos observar que la instrucción JOIN con la tabla MovTipo se encuentra especificada en
una sola línea, lo cual permite deshabilitarla y volverla a habilitar muy fácilmente.
6. Construye los índices de tablas de tal forma que los campos con mayor diversi-
dad de valores sean los primeros
Como se puede observar el en el siguiente código, el índice está construido comenzando
por el campo que contendrá mayor diversidad de datos y terminando con el campo que
tendrá menor diversidad de datos. Esta técnica provoca que las búsquedas en la tabla se
ejecuten más rápidamente.
CREATE INDEX MovID ON [Link] (MovID, Mov, Empresa)
7. En una clausula WHERE o en un JOIN, referencia a los campos de una tabla en el
mismo orden de los índices de la misma
Siguiendo con el ejemplo anterior, la forma correcta de escribir una consulta para la tabla
Registro sería la siguiente para que el índice anteriormente creado se utilice y la consulta
sea muy rápida:
SELECT
*
FROM Registro
WHERE MovID = @MovID
AND Mov = @Mov
AND Empresa = @Empresa

Powered by Intelisis Software




De lo contrario, si la consulta se escribe de la siguiente manera el índice creado no será


utilizado y por lo tanto la consulta será mucho más ineficiente:
SELECT
*
FROM Registro
WHERE Empresa = @Empresa
20
AND Mov = @Mov
AND MovID = @MovID
8. Utiliza JOIN’s en consultas que involucren a más de una tabla o vista
Las siguientes consultas regresan el mismo resultado y ambas son permitidas en MS SQL
sin embargo, sus tiempos de ejecución cambian y es mucho más eficiente escribir la con-
sulta de la siguiente forma:
SELECT
[Link], vd.*
FROM Venta v
JOIN VentaD vd ON [Link] = [Link]
que escribirla de esta otra forma:
SELECT
[Link], vd.*
FROM Venta v, VentaD vd
WHERE [Link] = [Link]
9. Cuida el performance de consultas que utilicen funciones en la lista de selección
y en su caso buscar alternativas más rápidas
Cualquier función que se utilice en la lista de selección de una consulta puede degradar
fuertemente el performance de la ejecución de la consulta, por lo tanto, es importante tra-
tar de evitar utilizar funciones en listas de selección y encontrar técnicas distintas, pero en
ocasiones, no es posible evitarlo y por lo tanto es muy importante cuidar el performance
de la función.
Cuando el resultado de una consulta regresa 1 o muy pocos registros, el utilizar funciones
en la lista de selección no representa un riesgo en el performance en la mayoría de los
casos porque la función se ejecutará muy pocas veces, pero cuando se utiliza la misma
función en una lista de selección de una consulta que no está filtrada, el performance de
la consulta se verá fuertemente degradado. Incluso cuando se utilice una función en una
consulta a muy pocos registros, hay que tener cuidado con el performance ya que, si esa
función hace consultas a tablas externas que estén mal indexadas o que tengan proble-
mas de rendimiento, se impactará el performance de la consulta principal.
En la mayoría de los casos, el siguiente código no tendrá problemas de performance ya
que la función fnFechaSinHora solamente se ejecutará una sola vez ya que la consulta está
programada para que regrese solamente un registro, pero de todas formas tenemos que
asegurar que el performance de la función fnFechaSinHora sea óptimo porque incluso, si
se hace la consulta a un solo registro, el performance podría degradarse.
Training & Professional Development

SELECT
[Link],
[Link]([Link])
FROM Venta v
JOIN VentaD vd ON [Link] = [Link]
WHERE ID = @ID
En cambio, la misma función utilizada en una consulta como la siguiente no es recomen- 21
dable ya que la consulta puede regresar miles o millones de registros y la función se ejecu-
tará la misma cantidad de veces:
SELECT
[Link],
[Link]([Link])
FROM Venta v
JOIN VentaD vd ON [Link] = [Link]
10. Evita la utilización excesiva de cursores
En un lenguaje de base de datos como SQL, la sentencia SELECT procesa registros de for-
ma masiva en una sola instrucción, pero este lenguaje también permite utilizar la sen-
tencia CURSOR para realizar procesos registro por registro. Los cursores son muy útiles y
permite realizar cosas que no se pueden hacer utilizando instrucciones masivas, pero en
ciertas ocasiones, existen procesos que se pueden realizar tanto con cursores como con
instrucciones masivas y normalmente (no en todos los casos) la instrucción masiva es mu-
cho más rápida por lo tanto, siempre piensa dos veces antes de crear un cursor.
Si no puedes evitar el utilizar un cursor, considera utilizar alguno de las siguientes clausulas
para agilizar la ejecución del cursor:
READ_ONLY: Evita que se efectúen actualizaciones a través de este cursor.
FORWARD_ONLY: Especifica que el cursor solo se puede desplazar de la primera a la última
fila.
FAST_FORWARD: Especifica un cursor FORWARD_ONLY, READ_ONLY con las optimizacio-
nes de rendimiento habilitadas.
Todas estas cláusulas, ayudan a optimizar el performance del cursor.
11. Asegura la correcta portabilidad de tus desarrollos
Cuando programes un desarrollo que deba de ser instalado en distintas versiones de Inteli-
sis, genera objetos especiales que no modifiquen ni entren en conflicto con los objetos de
la versión para asegurar que no tendrás problemas en la instalación del desarrollo. Entre
menos puntos de contacto existan entre tu desarrollo y los objetos ya existentes en el ERP,
es mayor la probabilidad de que el desarrollo sea más portable.
Puedes calcular el índice de portabilidad de un desarrollo utilizando la siguiente formula:
Índice portabilidad = 1 - (Puntos Contacto / 100)

Powered by Intelisis Software




El mayor índice de portabilidad que puede tener un desarrollo es 0.99 que significa que
solamente tiene un punto de contacto y por lo tanto el riesgo de falla se reduce única-
mente a ese punto de contacto. En cambio, si un desarrollo tiene un índice de portabilidad
cercano a cero o el número es negativo, significa que tiene mas puntos de contacto y, por
lo tanto, el riesgo de falla en la integración y la dificultad de la integración es mayor.
22
12. Nombra a tus funciones correctamente
Al nombrar a tus funciones de MSSQL, considera que como a diferencia de los procedi-
mientos, estos últimos solo pueden regresar un valor o un solo conjunto de valores y por
lo tanto, en la mayoría de los casos, es inútil incluir en el nombre de la función la acción
que esta realiza.
Podemos tomar como ejemplo, la función fnTasaRealDiaria que también la podríamos ha-
ber llamado fnTasaRealDiariaCalcular pero en lugar de beneficiarnos, nos perjudicaría ya
que lo único que sucedería sería que el nombre de la función sería más largo ya que es
obvio que la función fnTasaRealDiaria regresa como resultado la tasa real diaria y no hay
necesidad de especificar el Calcular.
13. Efectuar pruebas unitarias por función o procedimiento
Ningún programador es perfecto y por lo tanto, ninguno de sus desarrollos lo son pero
sin embargo, si un desarrollo se compone de un número determinado de componentes
(Procedimientos y funciones) y nosotros realizamos pruebas unitarias a cada uno de estos
componentes al mismo tiempo que los vamos creando, la probabilidad de falla cuando el
desarrollo final sea ensamblado, será mucho menor y por lo tanto, es buena práctica pro-
bar cada función o procedimiento recién se ha terminado de fabricar.
14. Programación defensiva
La programación defensiva es un concepto similar al que se utiliza cuando un conductor
conduce su carro defensivamente al estar alerta de los errores que puedan cometer los
demás conductores que se encuentran a su alrededor.
Una función defensiva sería una función que se protege de los errores que pueda cometer
la función que la invoca.
A continuación, se presentan dos funciones, que convierten un texto a un número. La
primera función (No defensiva), no verifica si el texto que se le pasa como parámetro se
puede convertir a número y por lo tanto, en ocasiones puede fallar. La segunda función
(Defensiva) verifica si el texto se puede convertir a un número antes de convertirlo y por lo
tanto puede realizar acciones para evitar la falla:
/**************** fnFuncionNoDefensiva ****************/
IF EXISTS (SELECT name FROM sysobjects WHERE name = ‘fnFuncionNoDefensiva’)
DROP
FUNCTION fnFuncionNoDefensiva
GO
CREATE FUNCTION fnFuncionNoDefensiva
Training & Professional Development

(
@Texto varchar(50)
)
RETURNS float
--//WITH ENCRYPTION
AS BEGIN
DECLARE 23
@Numero float
SET @Numero = @Texto
RETURN (@Numero)
END
GO
/**************** fnFuncionDefensiva ****************/
IF EXISTS (SELECT name FROM sysobjects WHERE name = ‘fnFuncionDefensiva’)
DROP
FUNCTION fnFuncionDefensiva
GO
CREATE FUNCTION fnFuncionDefensiva
(
@Texto varchar(50)
)
RETURNS float
--//WITH ENCRYPTION
AS BEGIN
DECLARE
@Numero float
IF ISNUMERIC(@Texto) = 1
SET @Numero = @Texto
ELSE
SET @Numero = 0
RETURN (@Numero)
END
GO
Al ejecutar ambas funciones pasando como parámetro el texto ‘3.5A’ ,la primera función
fallará y la segunda no fallará.
15. Utilizar el control de errores de Intelisis
Los procedimientos que se muestran a continuación son muy similares, ambos estan di-
señados para modificar el nombre de un contacto (Cliente y/o Proveedor) y en la mayoría
de los casos, ambos funcionarán sin problema alguno pero imaginemos que por algún
problema no atribuible al procedimiento, el update a la tabla de proveedores falla, el pri-
mer stored procedure (spProcedimientoSinControlDeErrores) podría terminar realizando
el cambio en la tabla de clientes pero no en la de proveedores y en cambio el segundo
stored procedure (spProcedimientoConControlDeErrores) está diseñado para realizar los
cambios en ambas tablas o en ninguna.
/**************** spProcedimientoSinControlDeErrores ****************/
if exists (select * from sysobjects where id = object _ id(‘[Link]-
mientoSinControlDeErrores’)
and type = ‘P’) drop procedure [Link]

Powered by Intelisis Software




GO
CREATE PROCEDURE spProcedimientoSinControlDeErrores
@Contacto varchar(10),
--//WITH ENCRYPTION
AS BEGIN
UPDATE Cte
24 SET Nombre = Nombre
WHERE Cliente = @Contacto
UPDATE Prov
SET Nombre = Nombre
WHERE Proveedor = @Contacto
END
GO
/**************** spProcedimientoConControlDeErrores ****************/
if exists (select * from sysobjects where id =
object _ id(‘[Link]’) and type = ‘P’) drop
procedure
[Link]
GO
CREATE PROCEDURE spProcedimientoConControlDeErrores
@Estacion int,
@Contacto varchar(10),
@Nombre varchar(50)
--//WITH ENCRYPTION
AS BEGIN
-- SET nocount ON
DECLARE
@Transaccion varchar(50),
@Ok int,
@OkRef varchar(255)
SET @Transaccion = ‘spProcedimientoConControlDeErrores’ +
RTRIM(LTRIM(CONVERT(varchar,@Estacion)))
BEGIN TRANSACTION @Transaccion
UPDATE Cte
SET Nombre = Nombre
WHERE Cliente = @Contacto
IF @@ERROR <> 0 SELECT @Ok = 1, @OkRef = @Contacto
IF @Ok IS NULL
BEGIN
UPDATE Prov
SET Nombre = Nombre
WHERE Proveedor = @Contacto
IF @@ERROR <> 0 SELECT @Ok = 1, @OkRef = @Contacto
END
IF @Ok IS NULL
BEGIN
COMMIT TRANSACTION @Transaccion
END ELSE
BEGIN
ROLLBACK TRANSACTION @Transaccion
SELECT ‘ERROR: ‘ + CONVERT(varchar,@Ok) + (SELECT Descripcion FROM Mensa-
jeLista
Training & Professional Development

WHERE Mensaje = @Ok) +’. ‘ + ISNULL(@OkRef,’’)


END
END
GO
16. Evita en la medida de lo posible la utilización de triggers
Al igual que una función en la lista de selección, un trigger también puede degradar el per- 25
formance de la base de datos fuertemente y por esa razón, es muy importante evitar su uso.
En los casos en que sea imposible evitar utilizar un trigger cuida mucho su performance y
diséñalo de tal forma en que sea lo más rápido posible.
17. Siempre incluye una llave primaria en las tablas de SQL que generes
Todas las tablas que crees en SQL Server, deberían de tener por lo menos una llave primaria
e índices que puedan ser utilizados en las principales consultas que realices a la tabla.
18. Evitar utilizar Subconsultas a SQL en campos calculados del SDK.
El utilizar subconsultas a SQL en campos calculados del SDK puede tener exactamente el
mismo efecto que tienen las funciones en una lista de selección y por tal motivo debes de
tratar de evitarlo

Powered by Intelisis Software


02

Introducción al SDK

Powered by Intelisis Software


Training & Professional Development

SDK (Cliente).
Introducción SDK.
SDK = Software Development Kit.
29
Objetivo = Crear una herramienta de desarrollo con el que se pudiera generar formas de
manera muy rápida, con un lenguaje claro, sencillo y con una capacidad enorme para la
lectura del código, ya que, de haberse generado la programación en un lenguaje comer-
cial de alto nivel, la administración de todos los objetos hubiese sido inmanejable (2,100
Formas).

Definición de objetos especiales.


Objeto Especial es la capacidad que se tiene para modificar las propiedades de Intelisis
sin necesidad de compilar una versión. Es necesario que estos se coloquen en la carpeta
correspondiente, dependiendo del tipo de objeto:
A. Cliente: Se refiere al ejecutable. Estos objetos modifican las propiedades de los cam-
pos o vistas de la aplicación Intelisis, como pueden ser la edición, si es requerido, si es
visible, etc. Es necesario colocar el objeto en el directorio que se definió en la configu-
ración general de la empresa, carpeta Desarrollo, como “Directorio de Objetos Espe-
ciales”. Estos objetos no necesitan ser compilados ni ejecutados, simplemente serán
considerados cuando el usuario ejecute el archivo [Link] e ingrese a la base de
datos. Las extensiones de estos archivos pueden ser. Tbl, .Vis, .Frm, .Rep, .Dlg, .Esp y son
generados por el SDK o utilizando herramientas que mencionaremos más adelante.
B. Servidor: Se refiere al MSSQL. Estos objetos son procedimientos almacenados (sto-
red procedures) o triggers que pueden ser reemplazados o nuevos (por ejemplo, para
reportes). De preferencia se debe colocar el objeto en el directorio “Instalación”. Estos
objetos necesitan ser ejecutados en el Analizador de Consultas o también se pueden
aplicar al término de la instalación de la base de datos utilizando el archivo Instalacion-
[Link]. Dichos objetos permanecen independientemente de que sea modificado,
eliminado o movido el archivo de su ruta original, ya que la información se encuentra
en SQL Server. Las extensiones de estos archivos son. SQL y se crean utilizando el Ana-
lizador de Consultas de MSSQL.

Powered by Intelisis Software




Estructura de archivos.
C:\SDK\[Link]
\Anexos
30
\Codigo Original – Propia del SDK. Archivos .Tbl, .Vis, .Frm, .Rep, .Dlg
\Dibujos – Archivos. Bmp, .Ico,
\Instalación – Archivos. Exe, .PLL, .Zip (Utilerias)
\PlugIns – Archivos. Exe
\Reportes (DOE) – Propia de Intelisis. Archivos . .Tbl, .Vis, .Frm, .Rep, .Dlg, .Esp
\SQL – Propia del SDK. Archivos .Sql.
En la carpeta SDK, existen otros archivos de interés como el [Link] y el [Link], los
cuales serán necesarios para definir variables de ambiente o propiedades de la aplicación;
siguiendo con lo mencionado anteriormente es importante definir en el [Link] la ruta
del directorio de trabajo, así como la empresa, el usuario y la sucursal con la que se va a
accesar, ejemplo:
[Trabajo]
Directorio Aplicacion=C:\SDK\
Empresa Desarrollo=DEMO
Usuario Desarrollo=DEMO
Sucursal Desarrollo=0
Una vez definido los parámetros mencionados, podrá ingresar al SDK ejecutando el SDK.
Exe. Posteriormente aparecerá la siguiente figura en la parte superior:

Dentro del Menú Aplicación, oprima la opción Abrir y aparecerá la siguiente imagen en la
que deberá seleccionar el archivo [Link]. Oprima el botón Abrir.
Training & Professional Development

Al ingresar al SDK, aparecerán 5 carpetas como en la siguiente figura:

31

Tipos de objetos.

Tablas.
Es el nivel básico de todos los objetos del SDK. Mencionamos del SDK porque como base
del SDK se encuentra SQL, por lo que concluimos que necesariamente debe existir la tabla
o vista en SQL para poder generar la tabla en el SDK. La sintaxis para crear una tabla en
SQL es:

CREATE TABLE
[ database _ name.[ owner ] . | owner. ] table _ name
( { < column _ definition >
| column _ name AS computed _ column _ expression
| < table _ constraint > ::= [ CONSTRAINT constraint _ name ] }
| [ { PRIMARY KEY | UNIQUE } [ ,...n ]
)
Ejemplo:
CREATE TABLE Especialidad(
Clave int,
Nombre char(50),
Rama char(50)
CONSTRAINT priEspecialidad PRIMARY KEY (Clave))

En este tipo de objeto, se definen las propiedades de los campos que tendrá en la forma
de Intelisis, por ejemplo, si se puede editar siempre o bajo ciertas condiciones, si es visible
o no, el formato de captura será mayúsculas o inclusive tendrá ayuda en captura. Dichas
propiedades se explicarán más adelante. En las tablas del SDK se define la relación con
otras tablas, es decir que en estos objetos se cuenta con la “Entidad-Relación”.

Vistas.
Las vistas pueden depender de un objeto del SQL (Tabla, Vista, Stored Procedure) o de una
o más tablas del SDK. Este tipo de objeto, al igual que en SQL, crea una tabla virtual que
representa los datos de una o más tablas.

Powered by Intelisis Software




Formas.
Existen 2 tipos de Formas:
3. Basadas en Vistas. Los campos de la forma tomarán las propiedades definidas en
las tablas que constituyen la vista.
32
4. Basadas en Variables. Los campos de la forma tomarán las propiedades definidas
en las variables del sistema.
Diálogos.
Este tipo de objeto no se basa en SQL y permite definir una lista de opciones en las puede
llamar a una forma o a un reporte o simplemente ejecutar una acción.

Reportes.
Estos objetos son estudiados en otro curso por considerarse un tema muy amplio.

Interfaz gráfica
Tamaño de la forma
A pesar de que la mayoría de los monitores de hoy en día cuentan con resoluciones muy
altas, en ocasiones, en los centros de trabajo se cuenta con monitores viejos con resolucio-
nes bajas pero capaces de ejecutar Intelisis y por tal motivo es importante que el tamaño
de las formas del ERP sea pequeño. El tamaño de preferencia es de 800 x 600 pero si no
es posible puede ser de 1024 x 768. Una buena técnica para construir la forma del tamaño
correcto es establecer una imagen de fondo de 800 x 600 en el escritorio de Windows y
ajustar el tamaño de la forma a dicha imagen (Figura 2.1).

Figura 2.1 Muy a pesar de que existen pantallas con diferentes resoluciones se debe tomar en cuenta
que aun en varios centros de trabajo aun se cuanta con pantallas resoluciones bajas por lo que se debe
ajustar las pantallas a esas resoluciones
Training & Professional Development

Proporción de la forma

33

Figura 2.2 Ejemplo de una pantalla mal proporcionada

La forma anterior esta desproporcionada (Demasiado Ancha con respecto a su altura) y


permite visualizar muy pocos registros en la pantalla (Figura 2.2.). Es deseable que la forma
este más proporcionada con respecto a la proporción de la mayoría de los monitores y que
consideremos la cantidad de registros que se van a capturar en la forma para proporcio-
narla correctamente. La forma siguiente está mucho más proporcionada con respecto a la
mayoría de los monitores (Figura2.3).

Fugura 2.3 Ejemplo de una figura mejor proporcionada de acuerdo a la resolución de los monitores

Powered by Intelisis Software




ScrollBars

34

Figura 2.4 En todas las pantalla se debe evitar en lo posible el uso del scroll horizontal en todas las pan-
tallas.

Al dimensionar una forma, es muy importante evitar situaciones como la de la forma an-
terior (Figura 2.4) donde se muestra el Scroll Bar horizontal sin necesidad alguna ya que, si
se ensancha un par de centímetros más la forma, lograríamos que desaparezca el scrollbar
horizontal y, por lo tanto, la experiencia de captura sería mucho mejor para el usuario tal
cual se muestra en la siguiente forma (Figura 2.5).

Figura 2.5 Como se puede apreciar en esta imagen no aparece el scroll bar horizontal lo que hace que
la experiencia del usuario sea más placentera al capturar su información.
Training & Professional Development

Distribución de los campos de la forma

35

Figura 2.6 Cuando la forma sea de tipo ficha se debe procurar que todos los campos formen un cuadra-
do perfecto para una mejor distribución de los mismos.

Como puedes darte cuenta, los campos de la forma anterior (Figura 2.6) están distribui-
dos de tal forma que hacen un cuadrado casi perfecto a pesar de que las longitudes de
los campos de la tabla son muy variables y por lo tanto la forma es agradable a la vista
del usuario. Es muy difícil poder generar una distribución perfecta pero siempre que se
genere una forma nueva o se agregue un campo nuevo a una forma hay que considerar la
distribución de los campos para tratar de alcanzar la cuadratura perfecta.

Powered by Intelisis Software




Cuentas del ERP

36

Figura 2.7 Normalmente todas los catálogos de cuentas del ERP deben de programarse con una forma
tipo Documento para que cuenten con un tablero de control

Normalmente todos los catálogos de cuentas del ERP deben de programarse con una for-
ma tipo Documento para que cuenten con un tablero de control como el mostrado en
la imagen anterior (Figura 2.7). Cuando se genere un nuevo catálogo de cuenta del ERP
administrado por documentos, es importante asignar el icono correspondiente en la barra
de título de la forma tal cual se muestra en la figura 2.8:

Figura 2.8 Cuando se genere un nuevo catálogo de cuenta del ERP administrado por documentos, es im-
portante asignar el icono correspondiente en la barra de título de la forma
Training & Professional Development

Maestros del ERP

37

Figura 2.9 Las formas de tipo maestro deben ser por lo regular de tipo hoja.

Normalmente, los maestros del sistema se diseñan con formas tipo hoja ya que, aunque
son muy importantes (Figura 2.9), no se utilizan tan frecuentemente como los catálogos y
por esa razón las formas que utilizamos, en la mayoría de los casos son tipo Hoja. Solamen-
te, cuando la forma requiere contener muchos campos se podrían utilizar formas como la
de Tipo Movimiento (Figura 2.10).

Figura 2.10 Solo cuando se necesite capturar mucha informacion en un maestro se deberá utilizar
una forma como en los Tipo de Movimiento

Powered by Intelisis Software




Formas dependientes

38

Figura 2.11 Cuando se tenga una forma dependiente de una principal es muy importante indicar de
donde proviene.

Un ejemplo clásico de una forma dependiente es la forma Sucursales del cliente (Figura
2.11). Es muy importante que este tipo de formas siempre cuenten con una referencia a
su forma padre en la barra su herramientas (Figura 2.12).

1. En las barras de herramientas siempre es muy importante respetar los espa-


cios previos entre las acciones.
2. También es muy importante separar los campos de la forma por temas con
espacios previos.

Figura 2.12 Es muy importante respetar los espacios previos entre las acciones y separar las secciones
entre los campos con espacios previos.
Training & Professional Development

Activación del Modo Exclusivo


A partir de la versión 4000 de SDK se cuenta con una funcionalidad que permite establecer
la exclusividad de una forma en una determinada versión de Intelisis ERP.
Esta opción denominada Modo Exclusivo, se encuentra dentro de los objetos de tipo for-
39
ma, al momento de activar el botón Otras Opciones desde la pestaña de Datos Generales
(Figura 2.13).

Figura 2.13 Para acceder al botón


Otras Opciones deberás abrir un
objeto de tipo Forma y luego estar
en la pestaña de Datos Gnerales.

En la ventana Otras Opciones e presenta la opción Modo Exclusivo (Figura 2.14), la cual
de forma predeterminada esta desactivado y que a su costado derecho se encuentra un
menú con las siguientes opciones:
•• En Blanco y Siempre para todas las versiones esta ventana es exclusiva
•• SDI solo es exclusivo para versiones menores a 4000
•• MDI solo es exclusivo para versiones igual a 4000

Figura 2.14 La opción de Modo exclusivo se podrá


encontrar dentro de la pestaña Ventana

Por otro lado, se cuenta con la función EsMDI(), la cual regresa verdadero si la versión co-
rresponde a versión 4000, en otro caso regresa Falso

Powered by Intelisis Software




Uso de proyectos
Los proyectos en SDK permiten evitar que se modifique el código original de la versión,
permitiendo así crear una carpeta en donde se puedan administrar y manipular solo los
objetos referentes a este proyecto.
40
Para la versión 6000 de SDK es importante conocer la configuración y manejo de los pro-
yectos, ya que para la implementación y manipulación de los objetos originales de la ver-
sión se necesitará crear objetos ensamblados o heredados, términos que analizaremos
más adelante.
Para crear un proyecto en SDK se tienen que realizar los siguientes pasos:
1. Desde Intelisis SDK se debe seleccionar el botón Propiedades de la barra de he-
rramientas, este botón permite acceder a las propiedades generales de configu-
ración de Intelisis SDK.

2. Desde la ventana de propiedades se da clic en la pestaña Proyecto. Esta pestaña


permite dar la definición al nuevo proyecto y en el encontraremos las siguientes
opciones:
Training & Professional Development

•• Lista Componentes (por Niveles). Aquí se encontrarán definidos todos los


proyectos que se estén utilizando en SDK, solo en caso de ser necesario lle-
var varios niveles de proyectos, por ejemplo, Verticales.
•• Proyecto. En este campo se define el nombre del proyecto que se utilizara
en Intelisis SDK.
41
•• Titulo. Este campo opcional permite definir el titulo descriptivo del proyec-
to.
•• Prefijo (Autorizado). Este campo permite definir un prefijo que deberá ser
utilizado para la creación de los nuevos objetos en Intelisis SDK, en caso de
no usarlo Intelisis SDK mostrará una advertencia solicitando el uso de este
prefijo.
•• Bloquear AddOn´s. Evita la lectura de archivos addon solo cuando se realiza
el proceso de compilar la versión.
•• Bloquear objetos especiales (ESP). Al igual que la opción del punto ante-
rior evita que se tomen en cuenta los archivos especiales en el proceso de
compilación.
•• Forzar Objetos Especiales (ESP). Esta opción fuerza la lectura de documen-
tos e integración de archivos de especiales en la compilación de la versión.
•• Bloquear Heredar (Nuevos). Impide la creación de objetos heredados a
partir de un objeto de versión protegido
•• Bloquear Ensamble (Nuevos). Impide la creación de objetos ensamblados
a partir de un objeto de versión protegido.
3. Una vez definido el proyecto con las opciones mencionadas en el punto ante-
rior se debe dar clic en Aceptar
4. Esto provocara que Intelisis SDK se reinicie y cuando este por mostrar las pesta-
ñas con objetos se te solicitara crear la carpeta que contiene el mismo nombre
del proyecto y su respectiva carpeta de respaldo.
Una vez concluido este proceso ya nos encontraremos listos para trabajar con Intelisis
SDK y todos los objetos nuevos y modificados que utilicemos se almacenaran en la car-
peta que definimos como nuestro proyecto.

Powered by Intelisis Software




PRACTICA 2-1 Creación De Un Objeto En SDK


Objetivo:
Al término de este ensayo el participante podrá
42 •• Definir un proyecto de Intelisis SDK para tener una mejor administración de los
desarrollos realizados mediante la herramienta.
•• Crear objetos de tipo tabla, vista y forma dentro del SDK de Intelisis, a través de
una tabla física creada en SQL
DEFINICION DE UN PROYECTO
1. Con Intelisis SDK abierto da clic en el botón Propiedades que se encuentra en la
barra de herramientas.
2. En la ventana de propiedades da clic en la pestaña Proyecto
3. En el campo Proyecto escribe CursoSDKBasico.
4. Da clic en Aceptar, espera a que Intelisis SDK se re inicie y genere las carpetas
correspondientes al proyecto.
CREACION DE UNA TABLA EN SDK DE INTELISIS
5. Desde SQL Server, activa la base de datos que estas utilizando para el curso y crea
una nueva consulta para crear una tabla denominada ArtCurso de la siguiente
forma:
CREATE TABLE Refacciones
(
ID INT IDENTITY(1,1) NOT NULL,
Articulo VARCHAR(20) NOT NULL,
precio MONEY NULL,
descripcion VARCHAR(100) NULL,
almacen VARCHAR(10) NULL,
Web VARCHAR(20) NULL
)
6. Ejecuta la consulta anterior para que la tabla exista
7. Abre el SDK de Intelisis con la configuración que realizaste en conjunto con tu
instructor.
8. En la pestaña de Diccionario de datos selecciona la opción Agregar Tabla como
se muestra en la siguiente imagen:
Training & Professional Development

9. En la siguiente pantalla asigna los siguientes parámetros:


•• Clave: Refacciones
•• Nombre: Refacciones
•• En el menú desplegable Tabla Física selecciona la tabla que creaste en SQL
cuyo nombre debe ser Refacciones 43

10. A continuación, da clic en el botón Generar Tabla y posteriormente da clic en


Aceptar para guardar la tabla.

11. Vuelve a abrir tu tabla Refacciones, desde la ventana de edición de tabla ve a la


pestaña Llaves y da clic en el botón Configurar… que está bajo la columna Llave
Primaria

Powered by Intelisis Software




12. En la siguiente pantalla selecciona la llave primaria de la tabla Refacciones, en


este caso será el id y articulo, da clic en el botón Agregar, posteriormente en
Aceptar para regresar a la pantalla de edición de tabla.

44

13. Regresa a la pestaña Datos Generales y da doble clic en el campo almacén para
abrir la ventana de las propiedades del campo.
14. Selecciona la pestaña Ayudas en Captura y asigna los siguientes parámetros:
•• En la sección Ayuda en captura selecciona la opción vista
•• Del menú desplegable Forma selecciona AlmLista
•• Del menú Vista selecciona la opción Alm
•• En el menú Campo selecciona la opción Alm. Almacen.

15. Regresa nuevamente a la pestaña de Datos Generales y da doble clic sobre el


campo ID.
Training & Professional Development

16. Activa la pestaña Edición y en el campo Valor por Omisión escribe [Link]

45

17. Da clic en el botón Aceptar para cerrar las propiedades del campo y posterior-
mente da clic en el botón Aceptar nuevamente para terminar con la edición de
la tabla.
CREACION DE UNA VISTA.
18. Desde la pantalla principal de SDK ve a la pestaña Vistas y da clic en la opción
Agregar Vista.

19. En la siguiente pantalla asigna los siguientes valores:


•• Clave: Refacciones
•• Nombre: Refacciones
•• Nombre Singular: Refacciones

Powered by Intelisis Software




20. Activa la pestaña Vista, desde la lista de Tablas disponibles selecciona la tabla
de SDK denominada Refacciones y con ayuda de las flechas que aparecen en la
parte central mueve la tabla a la lista Tablas a Usar.

46

21. En la tercera columna selecciona en el menú desplegable Tabla Principal, la ta-


bla Refacciones y en la sección Usos Activa los checkboxes Capturas, Reportes y
Consultas y Usar JOIN

22. Da clic en el botón Generar Vistas…, en la siguiente pantalla que aparece solo
da clic en Aceptar y posteriormente da clic en Aceptar para crear la nueva Vista.
Training & Professional Development

CREACIÓN DE FORMAS
23. En la pantalla principal de SDK da clic en la pestaña Formas y posteriormente
selecciona la opción Agregar Forma.

47

24. En la siguiente pantalla asigna los siguientes datos:


•• Clave: Refacciones
•• Título: Refacciones

25. En la sección lista de carpetas da clic en el botón Agregar…

26. En la siguiente pantalla, asigna los siguientes datos:


•• Clave: Lista
•• Vista: Refacciones
•• Estilo: Ficha
•• Desactiva la opción Pestaña

Powered by Intelisis Software




27. Activa la pestaña Campos, de la lista Campos disponibles pasa todos los campos
excepto el ID a la lista Campos en Carpeta.
28. Da clic en el botón Aceptar para regresar a la pantalla de edición de la Forma y
del menú Carpeta Principal selecciona la opción Lista.

48

29. Da clic en el Botón Preliminar para pre visualizar la forma que se acaba de crear.
30. Una vez que termines cierra la ventana de la forma sin guardar los cambios y da
clic en Aceptar en la ventana de edición de la Forma para guardar los cambios.

Editor de expresiones.
Definición del editor de expresiones.
Expresión es una combinación de palabras reservadas, operadores, variables y constantes,
que produce un texto, un numero o un objeto. Una expresión puede realizar un cálculo,
manipular caracteres o verificar datos.

Campos de la Vista Variables definidas Funciones del SDK.


indicada para la para el sistema.
forma.

Ayuda de captura de
Operadores Campo asignado para
numéricos, de captura del código.
relación y otros.

Figura 2.15 El editor de expresiones es una de las herramientas más utilizadas durante el proceso de desarrollo, se
puede acceder a el desde cualquier Tabla, Vista o Forma.
Training & Professional Development

El Editor de expresiones es un traductor al lenguaje de alto nivel Delphi. En él, se desarrolla


la aplicación Intelisis. Una vez dentro del editor de expresiones, podemos visualizar las
diferentes partes en las que se compone (Figura 2.15):

Tipos de datos y operadores.


49
El editor de expresiones acepta los siguientes tipos de datos:
1. Números.
2. Texto. Este deberá estar entre comilla simple, de lo contrario lo intentará traducir
como un campo de la vista o una función.
3. Campos de la vista especificada para la forma.
4. Funciones del SDK.
5. Símbolos especiales. Los símbolos especiales pueden ser
•• Operadores numéricos: + Suma, - Resta, * Multiplicación ó / División.
•• Operadores de relación: = Igual, < Menor, <= Menor o igual, > Mayor, >= Ma-
yor o igual, <> diferente.
•• Operadores lógicos: y, o, no, en.
•• Otros: () Se utilizan para operaciones numéricas.
{} Se utiliza para parsear.
[] Indican que el parámetro es opcional.
‘ Comilla simple.
& Concatena texto.

Convención Usado para


<expresión> Indique la función o valor que desea ejecutar. No escriba <,>
[, ] Elementos de sintaxis opcionales. No escriba los corchetes.
{} Se utiliza dentro del filtro abierto para “Parsear”, es decir para
interpretar o reemplazar las funciones escritas en el lenguaje
del editor de expresiones y finalmente generar código SQL.
‘ ‘ Las comillas simples se utilizan para indicar que la cadena de
caracteres es un texto y no una función.
+ Concatena dos más o expresiones. Ejemplo: [Link]+Ven-
[Link]. También se utiliza como operador aritmético, al
igual que - / *.

Los Botones del editor de expresiones son:


•• Aceptar: Guarda los cambios. En caso de que el código capturado tenga un error
•• Verificar: Permite que el traductor valide que los datos introducidos son correctos.

Powered by Intelisis Software




En caso de que el código sea correcto.


•• Cancelar: Cierra el editor de expresiones sin guardar los cambios.
Funciones básicas.
Si.
50
Devuelve uno de dos valores, dependiendo de la evaluación de una expresión.
Sintaxis 1:
Si(<expresion>, <parte vedadera> [, <parte falsa>])
Sintaxis 2:
Si
<expresion>
Entonces
<parte vedadera>
[Sino
<parte falsa>]
Fin

Parte Descripción
<Expresion> Requerido. Expresión que se desea evaluar.
<parte vedade- Requerido. Valor o expresión devuelta si la expresión
ra> es verdadera.
<parte falsa> Opcional. Valor o expresión devuelta si la expresión es
falsa.

Comentarios
•• Esta función evalúa la <expresion> como una expresión lógica, si resulta verda-
dera devuelve el resultado de evaluar la <parte vedadera>, de lo contrario si la
expresión resulta falsa devuelve el resultado de evaluar la <parte falsa>.
•• Las instrucciones Si se pueden anidar
Ejemplo
Si(Precio > 1000, ‘Mayor a mil’, ‘Menor o Igual a mil’)
Caso
Ejecuta uno de varios grupos de instrucciones, dependiendo del valor de una expresión.
Sintaxis:

Caso <expresion a prueba>


Es <valor 1> Entonces <expresion>
Es <valor 2> Entonces <expresion>
...
Es <valor n> Entonces <expresion>
Training & Professional Development

[Sino
<expresion>]
Fin
Parte Descripción
<expresion> Requerido. Cualquier expresión numérica o expre-
sión de texto. 51
<valor 1, 2 ..n> Requerido. Si la expresión coincide con algunos de
los valores indicados se ejecutara la expresión que
le corresponde.
Sino Opcional. Se utiliza para indicar las instrucciones
que se van a ejecutar si no se encuentran coinci-
dencias entre <expresion a prueba> y alguno de los
<valores>. Aunque no es necesario, es buena idea
tener una instrucción “Sino” en el bloque “Caso”
para controlar valores imprevistos de la <expresion
a prueba>. Cuando no hay una instrucción “Sino” y
ninguna expresión de la lista en las cláusulas “Caso”
coincide con la expresión a prueba, la ejecución
continúa en la instrucción que sigue.

Ejemplo
Caso Categoria
Es ‘A’ Entonces ‘Excelente’
Es ‘B’ Entonces ‘Bueno’
Es ‘C’ Entonces ‘Regular’
Sino
‘Categoria Desconocida’
Fin
Comentarios
•• Las instrucciones Caso se pueden anidar.
•• Para cada instrucción Caso debe tener su correspondiente instrucción Fin.
Asigna
Asigna un nuevo valor a una variable o campo.
Sintaxis:
Asigna(<variable o campo>, <nuevo valor>)
Parte Descripción
<variable o cam- Requerido. Debe indicarse la variable a la que se le
po> modificará el valor.
<nuevo valor> Requerido. Tipo “Variable”. Cada variable tiene un
tipo de valor, el cual puede ser numérico o texto.

Powered by Intelisis Software


Training & Professional Development

Ejemplo:
Asigna([Link], 50)
Empresa, Usuario, EstacionTrabajo, Sucursal
Estas funciones devuelven un texto que especifica la clave de la Empresa, Usuario, estacion
de Trabajo o Sucursal con las que el usuario acceso. Es muy común utilizar esta función en 52
el filtro abierto de los reportes para separar los movimientos de acuerdo a la empresa o
sucursal.
Funciones SQL.
SQL
Devuelve el resultado de la sentencia de SQL. Dicho resultado debe ser solo valor o dato,
pues de lo contrario se produce un error. Si lo que desea es obtener más de un valor, puede
utilizar la función SQLEnLista.
Sintaxis:
SQL(<sentencia> [, <parametro1>, .. <parametro n>])

Parte Descripción
<sentencia> Requerido. Tipo texto. Indica la sentencia de SQL a
ejecutar.
<parametros> Opcional. Tipo “Variable”. Para cada parámetro se defi-
ne el tipo de dato precedido de dos puntos. Los tipos
de datos son: t = Texto, n = Numérico, f = Fecha.

Ejemplo
SQL(‘SELECT MIN(Articulo) FROM Art WHERE tipo = :t’, ‘Normal’))
EjecutarSQL
A diferencia de la función “SQL”, esta no regresa ningún valor, ya que se utiliza comúnmen-
te para ejecutar un stored procedure que realizará algo en la base de datos sin regresar
ningún valor
Sintaxis:
EjecutarSQL(<sentencia> [, <parametro1>, .. <parametro n>])

Parte Descripción
<sentencia> Requerido. Tipo texto. Indica la sentencia de SQL
a ejecutar.

Powered by Intelisis Software


Training & Professional Development

<parametros> Opcional. Tipo “Variable”. Para cada parámetro se


define el tipo de dato precedido de dos puntos.
Los tipos de datos son: t = Texto, n = Numérico, f
= Fecha.
53
Ejemplo
EjecutarSQL(‘spPrueba1 :tE, :nID’, Empresa, [Link]))
ProcesarSQL
Devuelve el resultado de la sentencia de SQL y despliega una ventana similar a la que
aparece cuando se afecta un Movimiento. Comúnmente se utiliza para ejecutar un stored
procedure y que al final de este despliega un mensaje como “Proceso Concluido” o “n Mo-
vimientos Generados”.
Sintaxis:
ProcesarSQL(<sentencia> [, <parametro1>, .. <parametro n>])

Parte Descripción
<sentencia> Requerido. Tipo texto. Indica la sentencia de SQL a eje-
cutar.
< p a r a m e - Opcional. Tipo “Variable”. Para cada parámetro se define
tros> el tipo de dato precedido de dos puntos. Los tipos de da-
tos son: t = Texto, n = Numérico, f = Fecha.

Ejemplo
ProcesarSQL(‘SELECT MIN(Articulo) FROM Art WHERE tipo = :t’, ‘Normal’))
SQLEnLista
Devuelve una lista del resultado obtenido en la sentencia SQL incluida en dicha función.
Sintaxis:
SQLEnLista( <sentencia> [, <parametro1>, .. <parametro n>] )

Parte Descripción
<sentencia> Requerido. Tipo texto. Indica la sentencia de SQL a eje-
cutar.
< p a r a m e - Opcional. Tipo “Variable”.
tros>

Ejemplo
SQLEnLista(‘SELECT top 10 Articulo FROM Art’))

Powered by Intelisis Software




Variables.
Las variables se dan de alta en el menú Aplicación, opción “Variables”. Una variable se utili-
za para guardar valores dentro de la aplicación sin necesidad de usar la base de datos para
recuperar estos valores, para posteriormente poder usar dicho valor, por ejemplo, para un
54 reporte o usarlos como parámetros para un proceso posterior.
En el campo “Tipo” es donde se define el tipo de valor que puede tener la variable, como
puede ser: Texto, Numérico, Flotante, Monetario, Lógico, Fecha/Hora, Registro.
En la carpeta “En Captura” se puede indicar si la variable tendrá un asistente (Calendario,
Calculadora, Buscar Archivo, Lista de Opciones o una vista del SDK.
Estas variables son configurables y los valores que manejan pueden ser modificados du-
rante una acción o reporte, pero existen otro tipo de variables que no pueden ser modifi-
cadas y son aquellas que son de Inicio de sesión, por ejemplo, aquellas que tienen valores
de la configuración general, configuración de los módulos, configuración del usuario; to-
das estas corresponden a valores de configuración de la empresa y sucursal con las que
el usuario ingreso, por ejemplo el tipo de costeo, precios con impuesto incluido, o si el
usuario puede acceder a todas las sucursales, datos de la empresa, como dirección, etc.
Más adelante se indicará la manera de pasar las variables recién configuradas en el SDK a
INTELISIS.
Training & Professional Development

PRACTICA 2-2 Utilización Del Editor De Expresiones


Objetivo: Al término de este ensayo el participante podrá hacer uso de funciones asigna-
das dentro del SDK de Intelisis mediante el Editor de Expresiones proporcionado por el
SDK.
55
USO DE LAS FUNCIONES SI, ASIGNA Y SQL.
1. Desde la ventana principal del SDK ve a la pestaña Diccionario de Datos y da do-
ble clic sobre la tabla Refacciones.
2. En la ventana de edición de la tabla Refacciones da doble clic sobre el campo
Precio.
3. Activa la pestaña Despliegue y da clic en el botón que tiene tres puntos que apa-
rece junto al campo condición.

4. En la tabla de funciones que aparece en la parte superior derecha de la ventana


da doble clic en la función Si para que aparezca su estructura dentro del editor.

Powered by Intelisis Software




5. Modifica la estructura de la función Si de tal forma que se vea de la siguiente


forma.
Si
Informacion(‘Precio Correcto’, BotonSi,BotonNo)=BotonSi
Entonces
Informacion(‘Acepto’)
56 Sino
Informacion(‘Rechazo’)
Fin
6. Da clic en el botón Verificar y observa las ventanas que se muestran.

7. Modifica el código que colocaste en el paso 5 de tal manera que ahora utilices la
variable global [Link] y la función Asigna, de tal manera que se vea como
se muestra:
Si
Informacion(‘Precio Correcto’, BotonSi,BotonNo)=BotonSi
Entonces
Informacion([Link])
Informacion(‘Acepto’)
Asigna([Link],’Variable’)
Informacion([Link])
Sino
Informacion(‘Rechazo’)
Fin
8. Da clic en el botón Verificar y observa los cambios que presenta la ventana de
Información cuando no se ha asignado un valor a la variable global [Link]

9. Convierte a comentario el código que se tiene en el editor de despliegue me-


diante el uso de /**/
Training & Professional Development

10. Por debajo del código que acabas de convertir a comentario utiliza la función
Asigna en donde asignaras a la variable global [Link] una consulta SQL
realizada mediante la función SQL.
Asigna([Link], SQL(‘SELECT Nombre FROM cte WHERE cliente=:tCte’,’0001’))
57
11. A continuación utiliza la función Información para mostrar el valor de la variable
[Link]
Informacion([Link])

12. Da clic en el botón Verificar y observa los resultados al mostrar el contenido de la


variable [Link]
13. Vuelve a bloquear mediante comentarios las dos líneas de código que se en-
cuentran actualmente y escribe lo siguiente:
Articulo=’001’

14. Da clic en Aceptar para cerrar el Editor de Expresiones y regresar a la ventana de


edición de las propiedades de la Tabla.
REFRESCAR LOS CAMPOS CONDICIONADOS
15. Desde la pantalla principal del SDK ve a la pestaña de Forma y abre la forma Re-
facciones.
16. Da clic en el botón Preliminar y verifica que no aparece el campo Precio en la
forma.
17. Cierra la forma, regresa a la ventana de edición y da doble clic sobre la carpeta
Lista que aparece en la sección Lista de Carpetas.
18. En Datos Generales Activa la opción Permite Editar y da clic en aceptar para re-
gresar a la ventana de edición de la Forma.

19. Vuelve a dar clic en el botón Preliminar para previsualizar nuevamente la forma y
escribe 001 en el campo artículo.
20. Cierra la ventana y cuando se te pida guardar selecciona la opción Sí.
21. Vuelve a previsualizar la forma y ahora aparecerá el campo Precio en la Forma.
22. Cierra tu forma, así como la ventana de edición de la Forma.
23. Accesa nuevamente a la tabla Refacciones y da doble clic sobre el campo articulo
para acceder a sus propiedades.

Powered by Intelisis Software




24. Ve a la pestaña Edición, activa la opción Refrescar valores para otros datos, así
como la opción Requerido Siempre y da clic en el botón Configurar…

58

25. En la siguiente Pantalla selecciona los campos Precio y Descripción de la sección


Lista Disponible y muévelos con ayuda del botón a Agregar a la sección Lista en
Uso.

26. Da clic en Aceptar para regresar a las propiedades del campo, activa la opción
Refrescar cond. Despliegue/Edicion, asi como el check Toda Forma y ahora activa
la pestaña Ayuda en captura.
Training & Professional Development

27. En la sección Ayuda en captura activa las siguientes opciones:


•• Activa la opción Vista
•• Forma: ArtLista
•• Vista: Art
•• Campo: [Link] 59

28. Activa la pestaña Validación, activa la opción Condiciones de captura y escribe la


siguiente expresión:
SQL(‘SELECT Grupo FROM Art WHERE Articulo=:tArt’,Articulo) en (‘Refaccio-
nes’,’Accesorios’)

29. En el campo Mensaje en caso de Error (Opcional) escribe el siguiente mensaje: ‘El
artículo no es refacción u Accesorio’

30. Da clic en Aceptar para cerrar la ventana de propiedades y da doble clic sobre el
campo Precio.
31. Selecciona la pestaña Despliegue y en el campo Condición cambia el código que
aparece de tal forma que se vea como se muestra.

Powered by Intelisis Software




32. Ve a la pestaña Edición y en el campo Valor al Refrescar da clic en el botón de los


tres puntos para acceder al editor de expresiones.

60

33. Dentro del editor de expresiones escribe la siguiente sentencia:


SQL(‘SELECT PrecioLista FROM art WHERE articulo=:tart’, articulo)
34. Cierra el editor de expresiones al igual que las propiedades del campo precio y
ahora abre la ventana de propiedades del campo descripción.
35. Ve a la pestaña Edición y en el campo Valor a Refrescar da clic en el botón de tres
puntos para acceder al Editor de Expresiones.
36. En la siguiente ventana escribe el siguiente SQL para seleccionar la descripción
de acuerdo al artículo que se seleccione.
SQL(‘SELECT Descripcion1 FROM art WHERE articulo=:tart’, articulo)
37. Cierra el Editor de expresiones, así como las propiedades del campo descripción
y da clic en Aceptar en la ventana de edición de la tabla para guardar los cambios.
38. Desde la ventana principal del SDK ve a la pestaña Formas y abre la forma Refac-
ciones.
39. Da doble clic sobre la carpeta Lista que aparece en la sección Lista de Carpetas.
40. En la siguiente pantalla activa la opción Hoja que aparece en la sección Estilo y
da clic en Aceptar.

41. Da clic en el botón Preliminar, para previsualizar la forma, introduce un artículo y


veras como se actualizan los campos de precio y descripción.
42. Cuando termines cierra tu forma y guarda los cambios, así mismo da clic en Acep-
tar en la ventana de edición de la Forma para guardar los cambios.
Training & Professional Development

Acciones en las formas


Dentro de una forma creada en SDK es posible integrar desde una barra de herramientas
hasta un menú principal con diferentes submenús. Para lograr esto lo que se debe hacer
es abrir la forma donde se requiera ingresar la barra de herramientas o el menú y luego
desde activar las opciones Menú, Barra de herramientas o Barra de acciones (Figura 2.16). 61

A continuación, describiremos para que es cada opción:

Figura 2.16 Para la activación de las acciones lo debemos hacer directamente desde un objeto de tipo Forma
activando cualquiera de las opciones que se muestran en la imagen.

Menú. Esta opción permite crear un menú principal como el que contiene cualquiera de
las ventanas de Intelisis Estándar, en el podemos colocar opciones como Inicio, Edición, Ver
entre otras.
Barra de herramientas. Aquí podemos colocar una serie de botones de fácil acceso me-
diante los cuales podemos activar por ejemplo la impresora, la exportación a Excel o abrir
otra forma.
Barra de Acciones. Al activar esta opción podremos crear botones que aparecerán de lado
izquierdo a la derecha de las ventanas muy útiles cuando se crea un explorador de archi-
vos.
Una vez que se activa cualquiera de estas opciones, lo que sigue es ir a la pestaña Acciones
y agregar la acción que se desea invocar.
En el caso dado que hayamos activa la opción Menú aquí se nos habilitaran dos colum-
nas la primera del lado izquierdo nos permite ir agregando las acciones que contendrá el
menú, en tanto que la columna Menú Principal nos va a servir para ir colocando las catego-
rías en donde se encontraran las acciones que se vayan creando (Figura 2.17).

Figura 2.17 Cuando se activan la opcion


Menú para la barra de acciones se activará
una ventana denominada acciones desde la
cual se agregaran todas las acciones nece-
sarias asi como los menús.

Powered by Intelisis Software




En los casos de la Barra de herramientas y Barra de acciones no se tiene esta columna por
lo que solo se agregan directamente las acciones que se desean realizar (Figura 2.18).

62

Figura 2.18 Si se activa la opcion Barra de Herramientas o Barra de acciones solo se permitira agregar
acciones representadas por botones.

Al momento que se agrega una nueva acción, aparecerá un cuadro de dialogo en donde
se podrá definir las propiedades de la acción, como la Clave, el Nombre, el tipo de acción,
la clave de acción, el menú donde aparecerá, Opciones, el tamaño del botón, la tecla de
acceso rápido entre otros (Figura 2.19).

Figura 2.19 Una vez que se agrega una acción esta es completamente editable y programable debido a
que en la pestaña de Datos Generales proporciona un gran número de opciones.
Training & Professional Development

En cuanto a los tipos de acción y clave de acción existen una gran variedad de estos, así
que lo más recomendable es que vayas probando cada uno de estos ya que dependiendo
del tipo de acción que selecciones aparecerán las claves disponibles.

63

Por otro lado, hay que mencionar que a los botones de la barra de herramientas también
es posible incorporarles un icono y el nombre del botón para tenerlos totalmente identi-
ficados.

Powered by Intelisis Software




PRACTICA 2-3 Creación De Un Menú Y Barra De He-


rramientas.
Objetivo:
64 Al término de este ensayo el participante podrá
•• Creará un menú con diferentes opciones para la forma que está en edición.
•• Crear una barra de herramientas con diferentes opciones en la forma creada
en el SDK.
•• Diferenciara el uso de un menú al de una barra de herramientas.
1. Desde la ventana principal de SDK ve a la pestaña Formas y abre la forma Refac-
ciones.
2. En la sección Opciones activa la opción Barra Herramientas.

3. Activa la pestaña Acciones y da clic en el botón Agregar.


4. En la siguiente pantalla asigna las siguientes opciones:
•• Clave: Guardar
•• Nombre a Desplegar: &Guardar
•• Tipo de Acción: Ventana
•• Clave Acción: Aceptar
•• En la sección Opciones activa la opción Guardar cambios antes de ejecutar.

5. En la sección Barra de Herramientas da clic sobre el botón en blanco que apare-


ce, la siguiente ventana selecciona el icono 3 y da clic en seleccionar.
Training & Professional Development

6. Activa la opción Nombre Botón y da clic en Aceptar para terminar la edición de


esta acción.

65

7. Agrega una nueva acción con los siguientes datos:


•• Clave: ArtInfo
•• Nombre a Desplegar: Información
•• Tipo de Acción: Formas
•• Clave Acción: ArtInfo
•• Barra de herramientas: Icono 34 y se activa la opción Nombre en Botón.

8. Da clic en el botón Preliminar de tu Forma y da clic en el botón Información veras


que se abre la ventana de información del articulo más no se mostraran los datos
del artículo que se tenga seleccionado.
9. Regresa a la acción ArtInfo, activa la pestaña Opciones y da clic en la opción Ex-
presiones Antes de Ejecutar
10. En el campo de texto que aparece por debajo utiliza la función Asigna para pa-
sarle la clave del articulo a la variable [Link]:
Asigna([Link],Refacciones:[Link])

11. Da clic en Aceptar para terminar la edición de la acción, prueba tu forma dando
clic sobre algún artículo capturado en tu forma y luego presionar el botón In-
formación con esto aparecerá otra ventana que muestra los datos del artículo
seleccionado.

Powered by Intelisis Software




12. Cierra tu forma, regresa a la edición de tu acción ArtInfo y activa la opción Con-
dición de ejecución
13. En el campo que aparece a continuación utiliza la función ConDatos para validar
que los usuarios no puedan al abrir la ventana de Información del Articulo a me-
nos de que se tengan datos en el renglón seleccionado:
66 ConDatos(Refacciones:[Link])

14. Activa la opción Mensaje Error y escribe lo siguiente:


‘No has capturado ningún articulo’

15. Da clic en aceptar para terminar la configuración de la acción


16. Crea una nueva acción con los siguientes datos:
•• Clave: AlmGrupo
•• Nombre a Desplegar: AlmGrupo
•• Tipo de Acción: Formas
•• Clave Acción: AlmGrupo
•• En la sección Barra de Herramientas habilita la opción Nombre en botón y
asigna el icono 106
17. Ve a la pestaña Opciones, desactiva la opción Activo y utiliza la función ConDatos
para que se muestre la ventana con el grupo de almacenes solo si existen datos
en el campo ALM
ConDatos(Refacciones:[Link])

18. Da clic en Aceptar para cerrar la edición de las acciones, prueba tu forma y revisa
que las acciones programadas funcionen correctamente.
Training & Professional Development

Creación de Relaciones
Dentro de las tablas creadas en SDK es posible relacionar las tablas que se hayan agregado
a la base de trabajo con las bases ya encontradas en Intelisis.
Para realizar esta operación lo que hay que hacer es abrir la tabla generada en el SDK, pos- 67
teriormente dirigirnos a la pestaña Llaves desde la ventana de edición de la tabla y dar clic
en el botón Agregar que está por debajo de la columna Relaciones (Figura 2.20).

Figura 2.20 La columna Relaciones que se encuentra dentro de la pestaña Llaves en los objetos de tipo
Tabla permiten relacionar una tabla con otras dentro del sistema

Esto nos abrirá una nueva pantalla desde la cual podemos establecer el tipo de relación
que se tendrá (Figura 2.21).

Figura 2.21 Ventana mediante la cual es posible configurar los tipos de relaciones que se pueden llevar a
cabo en SDK

Powered by Intelisis Software




En la parte alta de la ventana aparece la sección del Tipo de Relación (Figura 2.22), aquí
encontraremos tres opciones que se describen a continuación:

68
Figura 2.22 Tipos de relaciones disponibles

Forzosa. Este tipo de relación agrega a nuestra consulta una clausula WHERE muy poco
usual en una relación ya que esta cláusula solo se usa para realizar condiciones.
Opcional. Este tipo de condición agrega una clausula LEFT OUTER lo cual nos indica que la
tabla de la izquierda en nuestra relación es de mayor importancia y son los primeros datos
que unirá.
Abierta. Este tipo de condición agrega una clausula RIGHT OUTER lo cual nos indica que la
tabla de la derecha en nuestra relación es de mayor importancia y son los primeros datos
que unirá.
Una vez indicado el tipo de relación que se utilizara para unir nuestras dos tablas lo si-
guiente que hay que configurar es las tablas que participan en la relación, aquí es donde
le indicaremos a SDK cual es nuestra tabla local y la tabla de la base de trabajo que se rela-
cionan y los campos llave con los cuales se unirán los datos de ambas tablas (Figura 2.23).

Figura 2.23 En esta sección se establece la relación entre las tablas, lo cual se realiza casi por lo regular
mediante su campo clave o de identificador.
Training & Professional Development

PRACTICA 2-4 Creación De Relaciones SQL Con SDK


Objetivo: Al término de este ensayo el participante podrá crear relaciones SQL mediante
las tablas creadas en el SDK.
1. Desde la ventana principal de SDK ve a la pestaña Diccionario de Datos y abre la
69
tabla Refacciones
2. Activa la pestaña Llaves y bajo la columna Relaciones da clic en Agregar… para
abrir la ventana de Configurar Relaciones
3. En la siguiente pantalla activa la opción Opcional en la sección Tipo de Relación.

4. En el campo Nombre escribe Art, y en el menú desplegable Tabla Relacionada


selecciona la tabla Art.
5. En la columna Llave(s) Local da clic en el botón Configurar… y en la siguiente
pantalla selecciona el campo artículo que aparece en la columna Lista Dispo-
nibles, presiona el botón Agregar para colocarlo en la columna Lista en Uso y
finalmente da clic en Aceptar para regresar a la pantalla anterior.

6. En la columna Llave(s) Remota, da clic en el botón Configurar, en la siguiente


pantalla selecciona el campo Articulo de la columna Lista Disponibles, posterior-
mente da clic en el botón Agregar y finalmente en Aceptar

Powered by Intelisis Software




7. En la ventana Configurar Relaciones da clic en Aceptar para regresar a la pantalla


de edición de la tabla.

70

8. Vuelve a dar clic en el botón Agregar para ingresar una segunda relación con la
tabla Alm, asi que repite los pasos 3 al 7, donde los campos que se relacionarán
serán almacén de la tabla Refacciones con almacén de la tabla Alm, el tipo de
relación será Opcional.

9. Activa la pestaña de Datos generales y da doble clic sobre el campo Articulo para
acceder a sus propiedades
10. En las propiedades del campo articulo activa la pestaña Validación y activa la
opción Tabla(s) de Validación
Training & Professional Development

11. Da clic en el botón Configurar y en la siguiente ventana agrega el campo Art a la


Lista en Uso y da clic en Aceptar.

71

12. Vuelve a dar clic en Aceptar para cerrar las propiedades del campo articulo y
ahora da doble clic sobre el campo almacén.
13. Repite los pasos 10 y 11 para validar el campo almacén con la tabla Alm
14. Cierra tu tabla ArtCurso, ve a la pestaña Vistas y abre la vista Refacciones
15. Dentro de la ventana de edición de la vista ArtCurso ve a la pestaña Vista y agre-
ga las tablas Art y Alm a la columna Tablas a Usar.

Powered by Intelisis Software




16. Da clic en el botón Generar Vista para refrescar el contenido de la vista, en la si-
guiente pantalla selecciona los campos como se te indica:
•• Tabla Art: Categoria, CategoriaActivoFijo, Linea, Unidad, UnidadCompra y Es-
tatus.
•• Tabla Alm: Nombre, Direccion, Estatus y Sucursal.
72

17. Da clic en el botón Aceptar para regenerar la vista y ciérrala dando clic en Acep-
tar.
18. Abre la forma Refacciones y da doble clic sobre la carpeta Lista para editarla.
19. Dentro de la pestaña de Datos generales Activa la opción Desplegar Campos de
Opciones Generales.

20. Activa la pestaña Campos, agrega a la columna Campos en Carpeta el campo


[Link] y desactiva la opción Permite Editar.
Training & Professional Development

21. Da clic en el botón Aceptar para regresar a la edición de la Forma y da clic en el


botón Otras Opciones…
22. En la ventana Otras Opciones activa de la sección Posición Inicial la opción Cen-
trado y activa las opciones Esc (Cerrar Ventana), así como Avanzar con Tabulador.
73

23. Da clic en Aceptar para cerrar la ventana Otras Opciones y previsualiza tu Forma,
prueba los cambios que hiciste y una vez que finalices cierra la ventana de la for-
ma y la ventana de edición de la forma.

Powered by Intelisis Software




74
03

Variables y Reportes

Powered by Intelisis Software


Training & Professional Development

Creación de variables
En Intelisis SDK existen una gran cantidad de tipos de variables para cada necesidad que
se tenga en la elaboración de expresiones o filtros que se necesiten realizar en reportes,
tableros de control o exploradores de datos.
77
Además, es importante mencionar que estas variables establecidas en Intelisis pueden
contener ya sea un valor pre establecido o estar vacías para que se les asigne un valor a
través de una forma con variables, tema que se analizara mas adelante o en una expresión
mediante la función Asigna.
Las variables que contienen datos predeterminados son aquellas que están bajo las ca-
tegorías como Empresa, Reporte o General, entre otras, ya que estas variables albergan
valores definidos en los catálogos de la configuración general de la empresa, en los datos
principales de la empresa o un reporte. Por otro lado, las variables que están en la catego-
ría Info son aquellas que no contienen un valor predeterminado y que solo se asigna un
valor a esta mediante una expresión o en una forma con variables.
Si requerimos crear nueva variable que satisfaga las necesidades de un desarrollo en par-
ticular desde Intelisis SDK se dispone con un editor que permite establecer, la categoría, el
nombre y propiedades de la nueva variable que deseemos generar.
Una vez creada la variable esta se almacena en un archivo denominado [Link] que
se encuentra en la carpeta de Código Original de la versión de Intelisis SDK.
Si deseas crear una nueva variable desde Intelisis SDK deberás seguir los siguientes pasos:
1. Desde Intelisis SDK da clic en el botón Variables que esta en la barra de herra-
mientas
2. Al abrir la ventana de edición de variables encontraras las siguientes opciones:
•• Lista de Variables. En esta columna se encuentra la lista de todas las variables
definidas en Intelisis SDK

Powered by Intelisis Software




•• Datos generales. Esta pestaña concentra las opciones de configuración inicial


de las variables como:
•• Grupo. Este menú contiene una lista de todas las categorías de variables dis-
ponibles

78 •• Clave. Es el nombre que se le otorgara a la variable


•• Tipo. Tipo de dato que permite almacenar la variable
•• Valor inicial. Valor predeterminado que contendrá la variable
•• Valor actual. Ultimo valor que contendrá la variable.

•• En Captura. Esta pestaña contiene las opciones de configuración de ayuda en


captura y etiqueta que contendrá la variable en la forma de captura de datos.
Training & Professional Development

•• Grupos. En esta pestaña se muestra la lista de categorías de variables disponi-


bles para Intelisis, además es posible incluir una o más categorías para usarlas
a la creación de variables.

79

3. Una vez que se define la nueva variable con las propiedades necesarias se debe
dar clic en Aceptar para que se guarde en el archivo [Link] de la carpeta de
Código Original de la versión de Intelisis SDK
En el siguiente tema abordaremos la forma de integrar estas nuevas variables a la versión
de Intelisis ERP para su uso en cualquier desarrollo o reporte.

Crear una forma con variables.


Ahora indicaremos como crear una forma que utiliza variables; estas son muy útiles para
establecer valores o parámetros de los reportes. Ejemplo: Se desea crear una forma para
un reporte de la empresa en la que se necesite capturar un rango de proveedores, una
fecha y una sucursal.
Primero debemos ir a la carpeta “Formas” del SDK y oprimir el icono “Agregar Forma”. La
clave de la forma será “ProvFechaSucRebasa”, el nombre “Proveedores, Fecha, Sucursal” y
el módulo “(Todos)”. También habilite la opción. “Barra Acciones”.
Oprima el botón Agregar. Aparecerá la siguiente figura en la que se deberá indicar en el
campo “Vista” el primer valor de la lista, que es “(Variables)”, en lugar de una vista del SDK
(Figura 3.1).

Figura 3.1 Para configurar una forma con variables se debe crear un objeto tipo Forma y posteriormente
deberás indicar las opciones marcadas para poder capturar datos dentro de las variables.

Powered by Intelisis Software




Pase a la carpeta “Campos” y seleccione los campos [Link], [Link],


[Link], [Link]. Oprima el botón Aceptar y regresará a la carpeta “Datos Gene-
rales” de la forma. Indique en el campo “Carpeta Principal” la carpeta que acaba de crear.
Pase a la carpeta Acciones. Seleccione la opción “Centrado” ubicado en la parte superior
80 derecha, así como la opción “Raya de División”. Oprima el botón “Agregar”, aparecerá la
siguiente imagen en la que deberá indicar los campos como se muestran:

Oprima el botón “Aceptar” y aparecerá nuevamente la forma que se está diseñando. Agre-
gue nuevamente otra acción con los siguientes datos: Tipo de Acción = Ventana, Clave
Acción = Cancelar, Clave = Cancelar, Nombre a Desplegar = &Cancelar.
Pase a la carpeta “Datos Generales” y oprima el botón “Otras opciones”. Indique el “Tipo de
Marco” = Diálogo, Habilite la opción “Modo Exclusivo”, y “ESC”, así como la posición inicial
“Centrado”. Oprima el botón “Aceptar”.
Finalmente oprima el botón “Preliminar” y la forma se verá algo como la siguiente figura:
Training & Professional Development

Si requiere que en los campos de rangos de proveedores se coloque la primera y última cla-
ve del catálogo de proveedores, colóquese en la carpeta de “Datos Generales” de la forma,
oprima el botón “Otras Opciones” (Figura 3.2), diríjase a la carpeta “Expresiones” y abra el
editor de expresiones del campo “Al Mostrar”. Una vez dentro coloque la expresión:

81

Figura 3.2 La pestaña Expresiones que aparece que aparece en la ventana Otras Opciones permite
especificar una serie de expresiones en relación a los campos que se visualizan en la forma

Asigna([Link], SQL(‘SELECT Min(Proveedor) FROM Prov’))


Asigna([Link], SQL(‘SELECT Max(Proveedor) FROM Prov’))
Esta forma permite realizar búsquedas en los catálogos de proveedores, sucursales, así
como el calendario para capturar la fecha. Existen otras variables que del mismo modo
permiten realizar las consultas de los catálogos que se necesiten, las más comunes son:
[Link] – Indique el Artículo.
[Link]– Indique de que Artículo [Link] – a que Artículo.
[Link] – Indique la categoría del Artículo.

[Link] – Indique el cliente.


[Link] – Indique de que Cliente [Link] – a que Cliente.
[Link] – Indique el Grupo del Cliente.

[Link] – Indique el Agente


[Link] – Indique de que Agente [Link] – a que Agente

Powered by Intelisis Software




Integración de variables en Intelisis ERP


Una vez que se ha generado una nueva variable de trabajo en Intelisis SDK, el siguiente
paso es integrarla a la versión natural de Intelisis ERP ya que, aunque haya sido creada esta
no esta disponible para su uso mas que en la versión de desarrollo.
82
Por tanto, para integrar una nueva variable debemos realizar lo siguiente:
1. Desde la carpeta de la versión de Intelisis SDK dirígete a la carpeta Código Origi-
na y abre el documento [Link]
2. Busca la definición de la variable en ListaVariables y elimina todas las demás va-
riables de tal modo que quede de la siguiente forma:

3. Del mismo modo en donde dice ListaGrupos elimina todos los grupos excepto el
tuyo en caso de haber creado un grupo nuevo.

4. Finalmente elimina todas las propiedades de las variables excepto la nueva varia-
ble de tal forma que tu archivo debe quedar de la siguiente manera:

5. Punto importante es no guardar el documento ya que si lo haces se perderán


todas las variables de Intelisis SDK y tendrás problemas posteriores en tu versión
de desarrollo, por tanto, deberás dar un Guardar Como… desde el editor de tex-
to para guardar el archivo como [Link]
Training & Professional Development

Una vez que ya se creo el archivo especial con la o las variables que se desean incorporar
a la versión el siguiente paso es integrarlas a Intelisis ERP, para ello deberás realizar lo si-
guiente:
1. Abre Intelisis ERP con las credenciales pertinentes a tu versión.
2. Desde el menú principal debes buscar Intelisis > Utilerías > Administración de 83
desarrollos.
3. En la ventana que aparece del administrador de desarrollos selecciona la carpeta
virtual del sistema y da clic en el botón Importar para cargar el archivo Variables.
esp

4. En la siguiente pantalla en el campo Archivo asigna la ruta de ubicación del do-


cumento [Link] y posteriormente da clic en el botón Procesar

5. Una vez que se procesa el documento en la siguiente pantalla se te mostrara


como se genera la integración a la versión y posteriormente se debe dar clic en
Aceptar.
6. Al finalizar la integración deberás de dar nuevamente en la carpeta virtual de
Sistema y aparecerá el archivo [Link], la fecha de modificación y en la co-
lumna Es Completo un No indicando que solo se integraron nuevas variables.
7. Como último punto se deberá cerrar el administrador de desarrollos y volver a
ingresar a Intelisis ERP con sus credenciales.
8. Para corroborar que la variable existe y esta correcto es posible entrar al Genera-
dor de Reportes, crear un nuevo reporte y desde la pantalla de Datos Generales
abrir el editor de expresiones, ubica tu panel de Variables y realiza la búsqueda
de tu nueva variable.

Powered by Intelisis Software




PRACTICA 3-1 Creación De Formas Con Variables.


Objetivo: Al término de este ensayo el participante podrá crear una forma haciendo única-
mente de variables globales o creadas por el usuario en el SDK.
1. Desde la pantalla principal del SDK ve a la pestaña Formas y crea una nueva for-
84
ma.
2. En el campo Clave escribe EspecificarDatos y posteriormente da clic en el botón
Agregar de la columna Lista de Carpetas.
3. En la siguiente ventana asigna los siguientes valores:
•• Clave: (Variables)
•• Vista: (Variables)
•• Activa la opción Permite Editar de la sección Opciones Generales.

4. Ve a la pestaña Campos y agrega a la lista de Campos en Carpeta las variables


[Link] e [Link]
5. Selecciona la variable [Link] y desactiva la opción Línea Nueva
6. Da clic en Aceptar para terminar la edición de la carpeta y en el menú Carpeta
principal selecciona la opción (Variables)
7. Pre visualiza tu Forma, una vez que termines regresa a la edición de la forma y
activa la opción Barra de Herramientas de la sección Opciones.

8. Activa la pestaña Acciones y da clic en el botón Agregar para colocar una nueva
Acción.
Training & Professional Development

9. En la ventana Acción asigna los siguientes datos:


•• Clave: Cerrar
•• Nombre a Desplegar: Cerrar
•• Tipo de Acción: Ventana
•• Clave de Acción: Cerrar 85
•• Icono: 23
•• Sección Barra de Herramientas activa Nombre Botón

10. Da clic en Aceptar y agrega otra acción con los siguientes parámetros:
•• Clave: Imprimir
•• Nombre a Desplegar: Imprimir
•• Activa la opción Acción Múltiple
•• Icono: 4
•• Sección Barra de Herramientas activa Nombre Botón

Powered by Intelisis Software




11. Ve a la Pestaña Lista Acciones y da clic en el botón Agregar.


12. En la siguiente pantalla asigna los siguientes parámetros:
•• Clave: Asignar
•• Tipo de Acción: Controles Captura
86 •• Clave Acción: Variables Asignar
13. Da clic en Aceptar y agrega una segunda acción con los siguientes parámetros.
•• Clave: Impresion
•• Tipo de Acción: Reportes Impresora
•• Clave Acción: ReporteVentasCliente
14. Da clic en Aceptar para terminar la edición de acciones múltiples y posteriormen-
te en Aceptar para terminar la edición de la acción Imprimir.
15. Crea una nueva Acción con las siguientes características:
•• Clave: Preliminar
•• Nombre a Desplegar: Preliminar
•• Activa la opción Acción Múltiple
•• Icono: 6
•• Sección Barra de Herramientas activa Nombre Botón
16. Dentro de las acciones de la pestaña Lista Acciones define las siguientes accio-
nes:
•• Clave: Asignar
•• Tipo de Acción: Controles Captura
•• Clave Acción: Variables Asignar

•• Clave: Visualizar
•• Tipo de Acción: Reportes Pantalla
•• Clave Acción: ReporteVentasCliente
17. Da clic en el botón Aceptar un par de veces para terminar la edición de las accio-
nes múltiples y de la acción Imprimir, luego Pre visualiza la forma y verifica que
todas las acciones estén funcionando.
CREACION DE VARIABLES
18. Desde la ventana principal del SDK da clic en la opción Variables que está en la
barra de herramientas.
Training & Professional Development

19. En la ventana Editor de Variables selecciona la pestaña Grupos y al final de la lista


escribe Curso.

87

20. Activa la pestaña de Datos Generales y asigna los siguientes parámetros:


•• Grupo: Curso
•• Clave: Cte
•• Tipo: Texto

21. Activa la pestaña En Captura y activa la opción Vista.


22. Del lado derecho apareceran tres campos a los cuales deberás asignarle los si-
guientes valores:
•• Forma: CteLista
•• Vista: CteA
•• Campo: [Link]

Powered by Intelisis Software




23. En el campo Nombre a Desplegar escribe Cliente


24. Da clic en el botón Aceptar, cierra y reinicia el SDK de Intelisis.
25. Una vez reiniciado el SDK de Intelisis ve a la pestaña Formas y abre la Forma Es-
pecificarDatos
26. En la ventana de edición da doble clic sobre la carpeta (Variables) y activa la pes-
88
taña Campos
27. De la columna Campos Disponibles localiza la variable [Link] y agrégalo a la
columna Campos en carpeta.
28. Regresa a la pestaña Datos Generales, activa la opción Otro Nombre y escribe
“Elegir Variables”

29. Da clic en Aceptar para regresar a la ventana de edición de la forma y pre visuali-
za la forma con la nueva variable, revisa como funciona.
CREACION DEL ARCHIVO ESPECIAL DE VARIABLES
30. Ve a un explorador de Windows y ubica el archivo [Link] que se encuentra
en la carpeta Código Original de tu instalación de Intelisis.
31. Da doble clic sobre el archivo [Link] para abrirlo en un bloc de notas.
32. Elimina el código sobrante del archivo de tal manera que se vea como se mues-
tra:

33. Guarda tu archivo con el nombre de [Link] y cierra tu archivo.


Training & Professional Development

INTEGRACION DE VARIABLE EN INTELISIS ERP


1. Abre Intelisis ERP con las credenciales establecidas en tu base de datos de traba-
jo y dirigete a Intelisis > Utilerias > Administración de Desarrollos.
2. En la siguiente pantalla selecciona la carpeta virtual Sistema que esta en la lista
de Directorios y da clic en el botón Importar de la barra de herramientas.
89
3. En la pantalla siguiente proporciona la ubicación del archivo [Link] que
creaste en la sección anterior y da clic en el botón Procesar.
4. Al finalizar el procesamiento de tu archivo de variables da clic en Aceptar y pos-
teriormente cierra la ventana de Administración de Desarrollos.
5. Re ingresa al sistema con tus credenciales de acceso y diregete a Intelisis > Con-
figurar > Generador de Reportes
6. Crea un nuevo reporte y desde la ventana de Datos Generales da clic en el boton
de puntos suspensivos donde esta el campo Titulo.
7. En cuanto se muestre el Editor de Expresiones, ubica la columna de las variables
y teclea el nombre de la variable que se creo para corroborar que la integracion
fue correcta.
8. Al terminó solo cierra el Editor de Expresiones y todas las demas ventanas sin
guardar el reporte.

Powered by Intelisis Software


Training & Professional Development

Uso de variables tipo HTML (Nuevo Ver 5000)


En SDK existen variables de distintos tipos de datos que van desde texto hasta booleanos,
en la actual versión 5000 encontraremos un nuevo tipo de dato denominado HTML, me-
diante el cual es posible almacenar código de HTML.
90

El código permitido dentro de la variable HTML será toda etiqueta de HTML y CSS ya sea
que se encuentre dentro de las etiquetas en el atributo style o como etiqueta <style>.
El HTML almacenado en esta variable será posible visualizarse en cualquier forma siempre
y cuando se utilice el medio adecuado para ello, por ejemplo, es posible generar una tabla
donde se tengan almacenados todas las descripciones web de artículos de nuestra empre-
sa y posteriormente desplegarlo desde una forma anexa en la forma de artículos

Powered by Intelisis Software




Barra de botones (Nuevo Ver 5000)


Una nueva adición que se hace a las carpetas de las formas de Intelisis SDK 5000 es una
nueva opción denominada Barra de botones. Esta nueva barra de botones permite definir
una nueva botonera por debajo de la forma, como se muestra en la imagen:
91

Una vez activa esta opción se despliega una nueva pestaña Barra de botones desde donde
se pueden definir las acciones que se encontraran en esta nueva barra, así como opciones
para el diseño, posicionamiento y color de la barra, que describiremos a continuación:
•• Lista de Acciones. Esta sección es muy similar a las sé que encuentra en la pantalla
principal de la configuración de la forma o del menú local de la carpeta y es donde
se encuentran enlistadas todas las acciones que se tendrán en la barra.
Training & Professional Development

•• Diseño. Esta sección permite definir el tamaño de la barra, la separación o borde


de separación entre los botones y el límite de la ventana, además que permite pa-
ginar la barra de herramientas esto es debido a que se pueden tener varias páginas
con distintos botones en una sola barra de botones.
•• Bisel. Sección que permite especificar si la barra tendrá un efecto biselado y de
cuantos puntos. 92

•• Posición. Aquí se encontrarán cuatro opciones que nos permitirán definir la ubica-
ción de la barra que son: Arriba, Abajo, Derecha o Izquierda.

•• Colores. Esta sección permite definir el color de fondo de la barra y el color de los
textos.

En cuanto a la configuración de las acciones se refiere estas en su configuración general


representado en la pestaña Datos Generales y Opciones estas se mantienen intactas, pues
son las mismas características de definición que para una acción cualquiera, lo que sí es
de recalcar como nuevo es la pestaña Barra de Botones desde donde es posible definir el
diseño y apariencia que tendrá el botón dentro de la barra, esta pestaña está dividida por
las siguientes secciones:

Powered by Intelisis Software




»» Diseño. Esta sección permite definir las dimensiones del botón, la pá-
gina en que aparecerá, el margen de separación, las dimensiones de la
imagen que se utilizara de icono, la imagen que se utilizara como icono
para el botón, el color de fondo del botón y si se mostrara el nombre del
botón.
93 »» Alineación del texto. Esta parte nos permite definir como se alineará el
texto dentro del botón, derecha, izquierda o centrado.

•• Posición de texto. Esto nos permite definir la posición del texto dentro del botón
que puede ser arriba, centrado o abajo.

•• Alineación de la imagen. Esta sección permite especificar la alineación de la ima-


gen que se utilizara como icono dentro del botón y la cual puede ser derecha,
izquierda o centrado.

•• Posición de la imagen. Permite especificar la posición de la imagen utilizada


como icono dentro del botón que puede ser arriba, centrado o abajo.

En cuanto a las imágenes que se pueden usar como iconos estas deben ser de extensión
.png y se encuentran ubicadas en la carpeta Intelisis 5000\Dibujos\BotonesMetro, y es des-
de esta carpeta donde se leen las imágenes que se cargan en la ventana de selección de
imágenes cuando se está por definir la imagen que contendrá el botón.
Training & Professional Development

Uso de librerías web


A partir de la versión 5000 de Intelisis es posible cargar librerías de web como hojas de estilo y
código Javascript. Esto fue desarrollado para su utilización dentro de la herramienta de punto
de venta de Intelisis (POS), ya que dentro de la herramienta se cuenta con una sección desde la
cual es posible visualizar las entradas de la venta para el ticket, esto se visualiza en una variable 94
HTML donde se despliega una tabla con estilo css.

Para que Intelisis ERP pueda leer y desplegar estas librerías se cuenta con una carpeta denomi-
nada /web en la carpeta principal de instalación. Dentro de esta carpeta se cuenta con otras dos
carpetas que son las siguientes:
•• /css. En ella podremos almacenar los archivos .css necesario para su utilización dentro
del código html que se desplegara en la variable de tipo HTML
•• /js. Esta carpeta contiene el código o librerías de Javascript que se utilizaran para los
comportamientos o dinámicas del lado del navegador de cliente que en este caso serian
dentro de la forma donde se despliegue el código de HTML
En muchos casos el código HTML que se desplegara dentro de la variable HTML o del navegador
web de Intelisis es generado mediante un procedimiento almacenado. Dentro de la generación
de la cadena que contiene el HTML deberá contener una etiqueta especial desde la cual se le
indicara donde se encuentra la carpeta que contiene las librerias web que se cargaran en el có-
digo HTML.
Esta etiqueta denominada <base> especifica la URL base predeterminada para todas las URL
relativas contenidas dentro de un documento. Solo puede existir una etiqueta <base> en la
generación del código HTML.

Powered by Intelisis Software




Un ejemplo de código HTML generado desde un procedimiento y listo para su despliege


en una variable de tipo HTML o en el navegador web de Intelisis seria como sigue:
<html>
<head>
<title>Tablero de adquisiones de refacciones</title>
<base href=”C:\Intelisis\5000 _ SDK _ v2.94\”>
95
<link href=”web/css/[Link]” type=”text/css” rel=”stylesheet” />
<script type=”text/javascript” src=”web/js/[Link]”></script>
<script type=”text/javascript” src=”web/js/themes/[Link].
js”></script>
</base>…
Como se observa en el código anterior la etiqueta <base> indica la ubicación de la carpeta
principal de la instalación de Intelisis ERP en el equipo servidor y que se tomara como base
para acceder a la carpeta /web y desde ahí leer las librerías necesarias para la correcta eje-
cución del HTML generado desde el procedimiento almacenado.
Cuando se ejecute el procedimiento almacenado desde Intelisis ERP es necesario pasarle
como argumentos además de lo que se necesitara para extraer la información a analizar, la
ruta de ubicación de la carpeta de instalación de Intelisis, esto es posible hacerlo mediante
una función denominada DirectorioAplicacion, por ejemplo, en el siguiente fragmento se
está asignando a una variable de tipo HTML el resultado de un procedimiento denomi-
nado xpTableroRefacciones desde donde se le esta asignando como valores la clave de la
refacción y la función DirectorioAplicacion para extraer la ubicación de la instalación de
Intelisis:
Asigna([Link],SQL(‘EXEC xpTableroRefacciones :tArt,:tRuta’,Refacciones:Re-
[Link], DirectorioAplicacion ))
Con esta mejora que se tiene en Intelisis es posible desarrollar visores HTML que contengan
código estándar permitiendo crear interfaces amigables y con gran capacidad de código.
Training & Professional Development

PRACTICA 3-2 Manejo de Variables HTML y barra de


botones
Objetivo: Al término de este ensayo el participante:
•• Creará variables de tipo HTML 96
•• Incorporará esta variable a su listado personalizado de variables dentro del
archivo [Link]
•• Creará una nueva barra de botones desde donde se invocará distintas accio-
nes de tipo web relacionado con la forma de refacciones
•• Comprenderá la generación de codigo HTML desde procedimientos almace-
nados para cargar librerias css y javascripts desde Intelisis ERP
Pasos:

CREACIÓN DE VARIABLES HTML


1. Desde Intelisis SDK abre el Editor de variables y crea la siguiente variable:
•• Pestaña Datos Generales:
•• Grupo: Curso
•• clave: Web
•• Tipo: HTML

•• Pestaña En Captura:
•• Nombre a desplegar: Datos Web
•• Tamaño: 20

Powered by Intelisis Software




2. Da clic en Aceptar para guardar esta nueva variable.


3. Abre la carpeta código original que se encuentra en la carpeta raíz de tu versión
y abre el archivo [Link] en un editor de texto.
4. Abre el archivo [Link] que se encuentra en la carpeta raíz de la versión
Intelisis SDK que estas utilizando.
97
5. Dentro del archivo [Link] modifica el código de tal manera que tu nueva
variable [Link] aparezca en el archivo copiando y pegando el código nuevo
creado en el archivo [Link] como se muestra:

6. Guarda y cierra tus archivos [Link] y [Link]


USO DE LA BARRA DE BOTONES Y LIBRERIAS WEB
7. Desde los archivos de ejercicios del curso busca la carpeta /iconos y copia todas
las imágenes que están dentro de esta carpeta y pégalos en la siguiente ubica-
ción dentro de tu versión de Intelisis 5000 SDK que estés usando Dibujos/Ima-
genesMetro
8. Ahora desde la carpeta /libreriasweb copia el archivo que [Link] de la carpe-
ta css a la carpeta /web/css y todos los archivos /js a la carpeta /web/js
9. Abre el manejador de consultas SQL, abre el archivo [Link]
que se encuentra en la carpeta de /scripts y ejecuta el código que se encuentra
en el documento.
10. Regresa a Intelisis SDK y abre la forma Refacciones
Training & Professional Development

11. Dentro de la forma de Refacciones abre la carpeta Lista y en la pestaña Datos


Generales activa la opción Barra de Botones

98

12. Activa la pestaña Barra de Botones y en la sección Diseño asigna los siguientes
valores:
•• Tamaño: 80
•• Separación: 10

13. Da clic en el botón Agregar e la sección Lista de Acciones y define la siguiente


acción:
•• Datos Generales
•• Clave: Ficha
•• Nombre a desplegar: Ficha
•• Tipo de Acción: Expresión
•• Expresión
Asigna([Link],SQL(‘EXEC xpTableroRefacciones :tArt,:tRuta’,Refacciones:Re-
[Link], DirectorioAplicacion ))
BrowserMensajeHTML([Link],Refacciones:[Link])

Powered by Intelisis Software




•• Barra de Botones
•• Alto: 70
•• Ancho: 70
•• Ancho de imagen: 40
99 •• Alto de imagen: 35
•• Imagen de fondo: [Link]
•• Activa la opción: Nombre en botón.
•• Alineación de texto: Centrado
•• Posición de texto: Abajo
•• Alineación de imagen: Centrado
•• Posición de imagen: Arriba

14. Da clic en el botón Aceptar un par de veces y luego da clic en Guardar.


15. Pre visualiza tu forma y verifica el funcionamiento de la barra de botones dando
clic en el botón para mostrar la descripción y datos de la refacción seleccionado.
Training & Professional Development

Editor Web
La función EditorHTML permite mostrar un editor de páginas HTML visual, la sintaxis de
esta función es la siguiente:
EditorHTML( <campo>, <titulo> [, <FormaTipo>] )
100
Donde:
•• campo. Es el campo de almacenara el código HTML que se está editando.
•• Titulo. Es el título de la ventana del editor HTML
•• FormaTipo (Opcional). Tipo de forma en que se presentara la forma del editor HTML
Ademas de esta función general se tienen dos variantes adicionales que permiten invocar
el editor HTML con pequeñas variantes estas son las siguientes:
[Link]. Esta función permite invocar el editor visual de HTML interpretando
el código como texto plano, su sintaxis es la siguiente:
[Link]( <título>, <texto> [, <Solo Lectura> ] )
Donde:
•• Titulo. Es el título de la ventana del editor.
•• Texto. Es el código HTML que se interpretara y después almacenara en la base de
datos
•• Solo lectura(opcional). Esta opción booleana permite indicar si el código HTML es
de solo lectura.
[Link]. Esta función permite invocar el editor visual de HTML interpretan-
do su contenido como página web, su sintaxis es la siguiente:
[Link]( <título>, <Página> [, <Solo Lectura> ] )
Donde:
•• Titulo. Es el título de la ventana del editor.
•• Pagina. Es el código HTML que se interpretara y después almacenara en la base de
datos
•• Solo lectura(opcional). Esta opción booleana permite indicar si el código HTML es
de solo lectura.
El código admitido en el editor es de la versión 4.0 de HTML aunque es posible incluir eti-
quetas de versiones posteriores.

Powered by Intelisis Software




Una vez que es invocado el editor desde alguna acción este mostrar un cuadro de dialogo
muy similar a un editor de texto, desde donde será posible insertar el contenido HTML
que se almacenará en la base de datos. El contenido permitido va desde textos, imágenes,
vínculos estilos y todo lo permitido por el lenguaje HTML.

101

Por otro lado, si es necesario editar el código sin salir del editor se puede acceder a un edi-
tor de textos que se encuentra en el menú Edición > Código Fuente…

Dentro de este editor será posible modificar manualmente el código de las etiquetas HTML
e inclusive agregar código que se esté editando en algún otro editor de HTML.
Si este código se va a insertar en un campo de la base de datos se debe tomar en cuenta
que el campo debe ser de tipo VARCHAR en la tabla de la base de datos con el tamaño
MAX (que es de más de 4000 caracteres)
Para que este campo se muestre de manera adecuada en una forma de SDK el estilo de
este campo deberá ser de HTML, el cual puede ser definido desde la pestaña Despliegue
desde la ventana de las propiedades del Campo
Training & Professional Development

Función Browser
En caso de necesitar mostrar un sitio o página web que se encuentre en algún dominio ya
establecido y sea necesario traer el vínculo de la página y que se despliegue desde una
ventana sin necesidad de abrir un navegador como Internet Explorer, se cuenta con la
función Browser cuya sintaxis es: 102
Browser( <url> [, <título>, <EsModal>] )
Donde:
•• URL. Es la dirección URL que se va a desplegar en la ventana de navegador.
•• Titulo. Es el título de la ventana del navegador
•• EsModal. Esta opción permite pausar toda ejecución de Intelisis hasta el cierre del
navegador
Hay que tomar en cuenta que para que esta función se ejecute de manera adecuada se
debe tener en el plugin browser instalado en la carpeta /plugins de la versión Intelisis
correspondiente.
Además, a la dirección URL de la función Broswer es posible añadirle variables para que
desde esa dirección se ejecute algún comportamiento de tipo servidor vía página web,
por ejemplo si se tiene un servidor configurado con reporting services y se desea lanzar un
reporte parametrizado desde Intelisis y que este sea visto mediante el navegador creado
por la función Browser es posible pasarle mediante variables de SDK a la cadena de URL
estos valores para que filtre el reporte que se está invocando desde la función.

Powered by Intelisis Software




PRACTICA 3-3 Uso del editor web y función Browser


Objetivo:
Al término de esta práctica el participante:
103 •• Creará una nueva forma desde la cual se le permitirá invocar el editor de web
•• Creará contenido web mediante el editor visual web que después será desplegado
desde la barra de botones
•• Hará uso de la función browser para invocar páginas web
Pasos:

USO DEL EDITOR WEB


1. Desde SQL Management Studio ejecuta el siguiente script el cual generara la
tabla RefaccionesWeb en la base de datos donde te encuentres trabajando
CREATE TABLE RefaccionesWeb(
ID INT IDENTITY(1,1) NOT NULL,
Web VARCHAR(20) NULL,
pagina VARCHAR(MAX) NULL
)
2. Abre Intelisis SDK y crea una nueva tabla con las siguientes propiedades
•• Pestaña Datos Generales
•• Clave: RefaccionesWeb
•• Tabla Fisica: RefaccionesWeb
•• Nombre: RefaccionesWeb
•• Nombre Singular: RefaccionesWeb
•• Pestaña Llaves
•• Llave primaria: ID
3. Da doble clic en el campo Web desde la pestaña Generales y aplica las siguientes
propiedades desde la ventana Propiedades del Campo:
•• Pestaña Despliegue
•• Nombre: Clave Web
4. Da clic en Aceptar para terminar la edición del campo Web, abre el campo página
y asigna las siguientes propiedades
•• Pestaña Despliegue
•• Estilo: HTML
5. Da clic en Aceptar para terminar la edición del campo página, luego selecciona
Guardar y Aceptar para terminar de editar la tabla
Training & Professional Development

6. Dirígete a la pestaña Vista y genera la siguiente vista:


•• Pestaña Datos Generales
•• Clave: RefaccionesWeb
•• Nombre: RefaccionesWeb
•• Nombre Singular: RefaccionesWeb 104
•• Pestaña Vista
•• Tablas a Usar: RefaccionesWeb
•• Tabla principal: RefaccionesWeb
•• Activa las tres opciones de la sección Usos
•• Genera la vista con todos los campos que tiene disponible la tabla
7. Da clic en Guardar y posteriormente Aceptar para terminar la edición de la vista
8. Ve a la pestaña Formas y crea una nueva forma con las siguientes características:
•• Pestaña Datos Generales
•• Clave: RefaccionesWeb
•• Titulo: Refacciones Web
•• Activa la opción Barra de Herramientas
•• Da clic en Otras opciones y activa Esc (Cerrar Ventana) y Centrado en la pes-
taña Ventana y en la pestaña Expresiones coloca Asigna ([Link],Temp.
Texto) en el campo Al activar
9. Da clic en el botón Agregar que se encuentra en la pestaña Datos Generales para
crear una nueva carpeta con las siguientes propiedades:
•• Pestaña Datos Generales
•• Clave: Ficha
•• Vista: RefaccionesWeb
•• Estilo: Ficha
•• Desactiva la opción Pestaña
•• Activa la opción Permite editar y Filtros desde la sección Opciones generales
•• Pestaña Ficha
•• Activa la opción Arriba en la sección Nombres
•• Pestaña Campos
•• Coloca los campos [Link] y [Link] en la sec-
ción Campos en carpeta
•• Selecciona el campo [Link], desactiva la opción Despliega
nombre y el campo tamaño coloca 100x20

Powered by Intelisis Software




•• Pestaña Filtros
•• Filtro General (SQL): [Link]=’{[Link]}’
10. Da clic en Aceptar para terminar la edición de la Carpeta, da clic en la pestaña
Acciones y agrega las siguientes acciones:
105 •• Acción 1
•• Datos Generales
»» Clave: Cerrar
»» Nombre a desplegar: Cerrar y Guardar
»» Tipo de acción: Ventana
»» Clave Accion: Cerrar
»» Icono: 23
»» Activa la opción Nombre en botón.
»» Activa la opción Guardar cambio antes de ejecutar
•• Accion 2
•• Datos Generales
»» Clave: HTML
»» Nombre a desplegar: Editor HTML
»» Tipo de acción: Expresion
»» Icono: 156
»» Activa la opción Nombre en botón.
•• Expresion
EditorHTML(RefaccionesWeb:[Link],RefaccionesWeb:Refaccio-
[Link])
11. Pre visualiza tu forma de tal manera que se muestre de la siguiente manera:
Training & Professional Development

12. Crea una nueva forma con las siguientes características:


•• Pestaña Datos Generales
•• Clave: RefWeb
•• Título: Visor Web
•• Activa la opción Barra de Herramientas 106
•• Da clic en Otras opciones y activa Esc (Cerrar Ventana) y Centrado en la pes-
taña Ventana y en la pestaña Expresiones coloca Asigna ([Link],Curso.
Web) en el campo Al activar
13. Da clic en el botón Agregar que se encuentra en la pestaña Datos Generales para
crear una nueva carpeta con las siguientes propiedades:
•• Pestaña Datos Generales
•• Clave: Ficha
•• Vista: (Variables)
•• Estilo: Ficha
•• Desactiva la opción Pestaña
•• Activa la opción Permite editar desde la sección Opciones generales
•• Pestaña Campos
•• Coloca el campo [Link] en la sección Campos en carpeta
•• Selecciona el campo, desactiva las opciones Despliega nombre, Permite edi-
tar y el campo tamaño coloca 135x35
14. Da clic en Aceptar para terminar la edición de la Carpeta, da clic en la pestaña
Acciones y agrega las siguientes acciones:
•• Datos Generales
•• Clave: Cerrar
•• Nombre a desplegar: Cerrar
•• Tipo de acción: Ventana
•• Clave Accion: Cerrar
•• Icono: 23
•• Activa la opción Nombre en botón.
15. Da clic en aceptar para guardar y cerrar los cambios en la forma.

Powered by Intelisis Software




16. Abre SQL Management Studio y ejecuta el siguiente xp que será necesario para
escribir la clave web en la tabla de RefaccionesWeb que contendrá cada página
HTML relacionada con su refacción
CREATE PROCEDURE xpGuardarClave
@webID VARCHAR(20)
AS
107 BEGIN

IF NOT EXISTS(SELECT * FROM RefaccionesWeb WHERE Web=@webID)


INSERT INTO RefaccionesWeb(Web)
VALUES(@webID)
ELSE
UPDATE RefaccionesWeb SET Web = @webID WHERE Web=@webID

END
17. Abre la forma Refacciones en la pestaña Acciones crea las siguientes acciones:
•• Acción 1
•• Datos Generales
»» Clave: Web
»» Nombre a desplegar: Web
»» Tipo de acción: Expresion
»» Icono: 143
»» Activa la opción Nombre en botón.
»» Activa la opción Guardar cambio antes de ejecutar
•• Expresion
Asigna([Link],’WEB’+Refacciones:[Link])
EjecutarSQL(‘EXEC xpGuardarClave :twebID’,[Link])
Forma(‘RefaccionesWeb’)
•• Accion 2
•• Datos Generales
»» Clave: Refrescar
»» Nombre a desplegar: Refrescar
»» Tipo de acción: Controles Captura
»» Clave Acción: Actualizar Vista
»» Icono: 72
»» Activa la opción Nombre en botón.
Training & Professional Development

18. Abre SQL Management Studio y ejecuta el siguiente trigger que te permitirá ac-
tializar la tabla de refacciones una vez que hayas incrustado una nueva página
web desde la forma RefaccionesWeb
CREATE TRIGGER trRefaccionesWeb
ON RefaccionesWeb FOR INSERT
AS
BEGIN
108
DECLARE @web VARCHAR(50),
@refaccion VARCHAR(20)

SELECT @web = web, @refaccion=SUBSTRING(LTRIM(Web),4,LEN(Web)-3) FROM INSER-
TED

IF NOT EXISTS (SELECT * FROM Refacciones AS r WHERE [Link]=@web)


UPDATE Refacciones SET Web = @web WHERE Articulo=@refaccion

END
19. Regresa a SDK, desde la forma de Refacciones abre la carpeta Ficha y agrega una
nueva acción en la pestaña Barra de botones con las siguientes características:
•• Datos Generales
•• Clave: paginaWeb
•• Nombre a desplegar: Web
•• Tipo de Acción: Formas
•• Clave de acción: RefWeb
•• Opciones
•• Activo: ConDatos(Refacciones:[Link])
•• Expresiones antes de ejecutar: Asigna ([Link],SQL(‘SELECT Pagina
FROM RefaccionesWeb WHERE web=:tweb’,Refacciones:[Link]))
•• Barra de Botones
•• Alto: 70
•• Ancho: 70
•• Ancho de imagen: 40
•• Alto de imagen: 40
•• Imagen de fondo: [Link]
•• Activa la opción: Nombre en botón.
•• Alineación de texto: Centrado
•• Posición de texto: Abajo
•• Alineación de imagen: Centrado
•• Posición de imagen: Arriba

Powered by Intelisis Software




20. Da clic en Aceptar un par de veces para terminar la edición de la acción y de la


carpeta.
21. Prueba toda la funcionalidad seleccionando cualquiera de tus refacciones y
creándole contenido web el cual podrás desplegar dando clic en el botón web
que tienes en la barra de botones.
109
USO DE LA FUNCION BROWSER
22. Desde la forma de refacciones abre la carpeta Ficha y desde la pestaña Barra de
botones agrega una nueva acción con las siguientes propiedades:
•• Datos Generales
•• Clave: paginaWeb
•• Nombre a desplegar: Web
•• Tipo de Acción: Expresion
•• Expresion
Browser(‘[Link]
Tk3NjQtYzQ4M2U4YjY1MTBj
IiwidCI6ImJmZDUzMTYyLTNhMzYtNGU1Mi1hYjA1LWUyNGE2ZDhlZjhiMSIsImMiOjR9’, ‘Re-
porte de Inventario de Refacciones’)
•• Barra de Botones
•• Alto: 70
•• Ancho: 70
•• Ancho de imagen: 40
•• Alto de imagen: 40
•• Imagen de fondo: [Link]
•• Activa la opción: Nombre en botón.
•• Alineación de texto: Centrado
•• Posición de texto: Abajo
•• Alineación de imagen: Centrado
•• Posición de imagen: Arriba
23. Da clic en Aceptar un par de veces para terminar la edición de la acción y de la
carpeta.
24. Pre visualiza la forma y da clic en el botón Reporte para visualizar la página web
solicitada por la función Browser
Training & Professional Development

Introducción al Reporteador en SDK


El generador de reportes es una herramienta muy versátil para la creación y edición de
reportes para el sistema Intelisis ERP.
En esta sección estaremos abordado la generación de reportes desde la versión Intelisis 110
SDK, ya que el Generador de Reportes puede ser utilizado tanto en la versión Estándar
como en el SDK.
Además, no ahondaremos mucho en las diferentes herramientas y opciones con las que se
cuenta en el Generador de Reportes debido a que se tiene para ello un curso especializado
en la generación y desarrollo de reportes desde Intelisis ERP en su versión estándar.
Por tanto, lo que analizaremos principalmente es como podremos integrar nuevos objetos
generados desde Intelisis SDK y que con estos se pueda trabajar en los reportes creados
desde el Generador de Reportes.

Generador de Reportes
Para acceder al Generador de Reportes en Intelisis SDK no es necesario configurar la ver-
sión como se haría en su versión estándar debido a que dicho generador se carga y se
configura con todos los demás objetos de SDK.
Por tal motivo, solo se tiene que acceder a la pestaña Reportes y seleccionar el icono de
Agregar Reporte. Además, lo que podremos observar en esta pestaña también es todos
los reportes que están configurados de forma predeterminada en Intelisis ERP y que desde
aquí tendremos acceso a ellos para modificarlos.
Una vez que se ha creado un nuevo reporte SDK presentara una pantalla similar a esto:

Powered by Intelisis Software




Datos Generales
La sección Datos Generales de la configuración del Generador de Reportes permite es-
pecificar las características iniciales de un reporte antes de comenzar a darle formato, los
campos que muestra esta sección son los siguientes:
111
Clave. Nombre del Reporte como archivo. Si el nombre consta de 2 o más palabras, no
dejar espacios entre ellas o bien, usar el guion bajo (_)

Titulo. Nombre del Reporte en el sistema o Título del mismo.

Icono. Permite asociarle una imagen al Reporte para su identificación.

Tipo. Identificación del elemento que se está creando: Reporte ó Explorador. Para nuestro
caso, marcamos Reportes.

Vistas. El sistema cuenta de entrada con una infinidad de vistas o consultas de SQL pre-
viamente elaboradas. Seleccionar la que corresponda al tipo de reporte que se esté gene-
rando.
Las vistas son un arreglo ordenado de campos de una o varias tablas que permite presen-
tar información requerida por el usuario.

Especial. - Al activarlo, permite la creación de vistas por parte del usuario.


Además de los reportes, los Exploradores, la Conexión Contable y otros objetos más, ha-
cen uso de las vistas en INTELISIS Por eso la importancia en el conocimiento de las mismas.
Opciones de los Reportes
Esta pestaña presenta la lista de opciones posibles que el usuario puede utilizar en la crea-
ción, manipulación y presentación de reportes. Estas opciones se describen a continua-
ción:
Training & Professional Development

1. Barra Herramientas. Esta opción habilita la Barra de Herramientas que es pre-


sentada al mostrar la Presentación Preliminar del Reporte. Al igual que Menú,
presenta una nueva pestaña denominada Acciones, en la cual se registran las
acciones a ejecutar en el reporte. Como es Cerrar, Imprimir, Enviar a Excel, etc.
2. Menú. Esta opción permite colocar las acciones registradas en Barra Herramien-
tas en el Menú Principal del Reporte o en algún otro. 112
3. Orden / Grupos. Esta opción permite agregar ordenamientos y/o agrupaciones
al reporte a crear. Estas acciones son efectuadas sobre campos disponibles que
conforman la Vista del Reporte y a partir de los cuales se configurará el desplie-
gue de la información en el Formato del mismo. Al habilitarla, se crea una nueva
pestaña denominada Orden.
4. Búsqueda Rápida / Filtros Controles. Esta opción habilita la pestaña destinada
a manejar los filtros de control y las búsquedas rápidas que son colocados en la
parte superior del Explorador o Reporte. Está opción es manejada principalmen-
te en el uso de los Exploradores. Al habilitarla, se crea una nueva pestaña deno-
minada Búsqueda / Controles.
5. Tablas (Reportes Matriciales). Esta opción permite crear reportes matriciales de
forma rápida. Permite especificar columnas, renglones, valores de celda, orde-
namientos y totales de estas, además de configuraciones de estos elementos. Al
habilitarla, se crea una nueva pestaña denominada Tablas (Reportes Matriciales).
6. Filtros. Esta opción permite crear filtros en el reporte para que solamente des-
pliegue la información en relación a condiciones asociadas a los campos que
conforman la Vista del mismo. Se cuenta además con la disponibilidad de usar
filtro abierto, que permite al usuario manejar libremente el control de dichas
condiciones, o del filtro normal, en el cual se pueden determinar únicamente
condiciones sobre los campos listados en el Query. Al habilitarla, se crea una nue-
va pestaña denominada Filtros.
7. Submenú. En este elemento, el Sistema permite al usuario “colgar” el reporte
creado a algún submenú existente dentro del menú de Reportes. Además, si se
selecciona Presentación Preliminar e Imprimir, estas opciones también se pre-
sentarán junto con el nombre del reporte en el submenú relacionado para reali-
zar tal acción.
8. Forma Previa. Este elemento permite relacionar una forma previa predefinida al
reporte generado. Por medio de esta forma se ingresan las variables considera-
das como parámetros del mismo, que son aplicadas como filtro en el despliegue
de la información del reporte.

Powered by Intelisis Software




Configuración de los reportes


En la pestaña de Configuración, el Sistema permite especificar el ambiente para imprimir
el reporte generado. Entre la información que es posible capturar dentro de esta opción,
tenemos la definición de la impresora específica, el formato de la página de impresión, el
113 tipo de reporte (Normal o ASCII), la definición de los márgenes de la página, orientación de
la página, caracteres por renglón, renglones por página, opciones avanzadas para ambos
formatos.

Reporte Nomal
Al seleccionar esta opción dentro de la configuración del reporte se permitirá definir las
propiedades generales de impresión que tendrá el reporte antes de su edición. Las opcio-
nes que muestra la pestaña de Configuración al seleccionar esta opción son las siguientes:

1. Impresora especifica. Este menú permite seleccionar el tipo de impresora de


tipo laser o inyección de tinta que se va a utilizar para la salida de los reportes.
2. Pixeles por pulgada, Ancho Factor y Alto renglón. Estos tres menús permiten
especificar la calidad de impresión, el ancho predeterminado de los campos de
texto y el alto predeterminado de las secciones.
3. Tamaño página (de referencia), Ancho, Largo. Estos menús permiten especi-
ficar la hoja que se va a utilizar en el reporte y en caso de su personalización es
posible asignar el alto y ancho de la hoja.
4. Márgenes. Esta sección permite especificar los márgenes que tendrá la hoja del
reporte en centímetros.
5. Editar Formato sin Conexión. Permite editar el formato del reporte sin necesi-
dad de estar conectado al servidor.
Training & Professional Development

6. Preliminar Colores (consume muchos recursos). Permite visualizar los colores


que se le hayan asignado al reporte en la vista previa.
7. Preliminar sin Retroceder. Permite recorrer el contenido del reporte si es que
este contiene muchas hojas con la limitante que no se puede regresar a páginas
anteriores.
114
8. Contar las Páginas antes de Imprimir. Esta opción permite contabilizar las pá-
ginas con las que cuenta el reporte antes de mandarlo a la vista preliminar o a la
impresión.
9. Imprimir directamente. Esta opción manda directamente a la impresora el re-
porte.
10. Orientación Página. Esta sección tiene tres opciones que permiten orientar la
página del reporte.
11. Propiedades específicas. Estos campos permiten especificar las dimensiones es-
peciales que puede llegar a tener la hoja de salida del reporte, así como la impre-
sora predeterminada.
12. Fuente por omisión…Esta opción permite especificar el tipo de fuente y sus pro-
piedades que contendrán estas para la creación de todo el reporte.
Formato ASCII
Este tipo de salida permite especificar las propiedades que tendrá el reporte a utilizarse
en impresoras de matriz de puntos y hoja continua. Las opciones que se presentan en la
pantalla con esta opción son las siguientes:

1. Modo por Omisión. Esta opción permite especificar el tipo de letra que se va a
imprimir dentro del reporte.

Powered by Intelisis Software




2. Caracteres. En este campo se deben especificar el número de caracteres por


renglón que tendrá la impresión
3. Renglones. Numero de renglones que se tendrá por hoja en el reporte.
4. Margen inferior. Tamaño que tendrá el final de la página de impresión, la medi-
da está en centímetros.
115
5. Archivo (por Omisión). Envía la impresión del reporte a un archivo de texto.
6. Bloquear: Imprimir Archivo. Bloquea él envió del reporte a un archivo de texto,
por lo que solo permite definir el puerto de impresión.
7. Impresión Continua / Rollo. Al activar esta opción desaparece la definición del
número de renglones y de margen inferior.
8. Archivo Específico. Esta opción permite especificar el nombre del archivo de
texto donde se va guardar el reporte.
9. LPR. Esta opción permite imprimir usando una impresora en línea.
Interfaz gráfica del generador de reportes
Para accesar al Formato se presiona el botón Formato en la parte inferior del menú

A continuación, se despliega la pantalla de edición dentro de la cual se muestran lo si-


guiente:

Campos de formato

Vista del
reporte

Lista de secciones Formato del reporte


del reporte
Training & Professional Development

En el Formato se define la presentación de la información a mostrar en el reporte. En la es-


quina superior izquierda se muestra la vista asociada al reporte y los campos de esta y en la
esquina superior derecha aparecen los tipos de campos usados en el formato (Especiales).
En la parte inferior izquierda se definirán las secciones de que está integrado el reporte
(Encabezados, Títulos, Inicios y Finales de grupo, Finales, Pies de Página) Aunado a estos, a
su derecha, se incluirá la disposición de los campos y su tamaño (Formato), conforme se ha 116
definido y basado en relación a un formato preestablecido. Para mayor detalle, ver Ejem.

Campos de Formato (Especiales)


La columna Campos de Formato muestra una serie de campos que se describen a conti-
nuación:

(Espacios). Permite ingresar campos con espacios en el formato

Ahora. Permite introducir un campo que presente la fecha y hora en el reporte

Texto. Permite poner campos que incluyan textos. Estos deben de estar entre comillas
sencillas

Expresión. Permite incluir campos que muestren expresiones aplicadas a campos de la


Vista o de tablas del Sistema, haciendo uso de las funciones del Editor de Expresiones (ver
capítulo correspondiente).

Nombre. Permite agregar el Nombre del reporte en el formato.

Página. Permite insertar el número de la página en el formato del reporte

Imagen. Permite colocar una imagen en el formato del reporte desde el subdirectorio Di-
bujos/Imágenes o desde cualquier ubicación de la PC o red. El formato válido de imagen
para ingresar en el Reporteador es BMP.

Código Barras. Permite introducir campos que muestren el código de barras asociado a
un campo de la Vista del reporte. El Reporteador permite manejar 11 configuraciones de
códigos de barras para que el usuario elija el que corresponda a sus necesidades.

Tabla. Permite agregar un campo que despliega información de un Reporte Matricial, de-
finido en la opción correspondiente.
Para añadir los elementos del Reporte al formato del mismo es necesario presionar el bo-
tón

Powered by Intelisis Software




Al efectuar esta acción, aparece una ventana que presenta la lista de elementos, posibles
a adicionar al formato del reporte

117

Encabezado Página. Es la sección que generalmente es presentada en la parte superior


del reporte y aparece en todas las páginas del mismo.

Título. Es la sección que presenta información en la parte superior del reporte y aparecerá
únicamente en la primera página del mismo.

Inicio Grupo. Es la sección que, depende de los elementos (campos) incluidos en la op-
ción Orden / Grupos, ordena y agrupa los datos a desplegar en el reporte y son mostrados
dependiendo de la prioridad asignada para cada campo. Ver más detalles en el Ejemplo 1.

Detalle. Aquí, se incluyen todos los campos que el usuario desee listar, para que ser pre-
sentados línea por línea, en el reporte.

Fin Grupo. Es la sección que, depende de los elementos (campos) incluidos en la opción
Orden / Grupos, ordena y agrupa los datos a desplegar en el reporte y son mostrados de-
pendiendo de la prioridad asignada para cada campo. Puede ir o no asociado a un Inicio
de Grupo. Generalmente se usa para totalizar cantidades o importes. Es la sección que
presenta información solamente hasta el final del reporte. Generalmente se usa para pre-
sentar totales generales.

Final. Es la sección que es presentada en la parte inferior del reporte y aparece en todas
las páginas del mismo.

Preliminar... Al presionar este botón, el Sistema presenta una vista preliminar de reporte.

Imprimir... Al presionar este botón, el Sistema permite enviar el reporte a una impresora
o a un archivo y puede definir número de copias.

Eliminar. Este botón permite eliminar el reporte actual.


Training & Professional Development

Implementar un reporte en Intelisis ERP


Una vez que se ha culminado con la edición de un reporte el siguiente paso es instalarlo
dentro de Intelisis ERP para que pueda ser visualizado ya sea desde un movimiento o des-
de el menú principal de reportes.
118
Cuando necesitemos que el reporte sea visualizado desde algún movimiento debemos
hacer lo siguiente:
1. Crear y editar el reporte que se necesite.
2. Se debe dirigir a Intelisis > Empresas y seleccionar la empresa donde se va con-
figurar el reporte.
3. Desde el menú principal seleccionar Edición > Reportes Específicos (Movimien-
tos) como se muestra en la figura
4. En la siguiente pantalla se deberá configurar los campos que se muestran en la
imagen con los datos que se describen a continuación:

1. Modulo. En este campo se especificará el modulo desde el cual será utilizado el


reporte
2. Movimiento. Si el reporte es para un movimiento en específico, se deberá selec-
cionar un movimiento, en caso de que no sea para un solo movimiento se puede
dejar la opción de (Todos)
3. Estatus. En este campo se deberá especificar si el reporte estará activo cuando el
estatus del movimiento sea cualquiera que se seleccione del menú, por ejemplo,
CONLUIDO, SINAFECTAR, etc.
4. Reporte a Impresora. Aquí se especifica cual es el reporte que se va imprimir.
5. Reporte a pantalla. En este campo se selecciona el reporte que se va mostrar
en la pantalla.

Powered by Intelisis Software




Una vez concluida la configuración de la pantalla anterior, se puede revisar que se haya
configurado correctamente, dirigiéndonos al módulo donde se configuro el reporte y
crear un movimiento.
Por el contrario, si se desea que se pueda acceder al reporte desde el menú principal se de-
119 berá configurar el reporte desde el Generador de Reportes en la pestaña de Opciones y es-
cribir dentro del campo Submenú el nombre del menú donde se desee acceder al reporte

Hay que tomar en cuenta también que el nombre del menú deberá ser exactamente igual
(es decir, escribirlo tal y como está con mayúsculas y minúsculas) como se encuentra en el
menú de Reportes.
Las dos opciones de Presentación Preliminar e Imprimir permiten especificar si el reporte
solo se va pre visualizar en pantalla o si se va directamente a la cola de impresión.
Training & Professional Development

PRACTICA 3-4 Generación de un Reporte en SDK


Objetivo:
Al término de esta práctica el participante podrá:
•• Generar y modificar un reporte en el Generador de Reportes de SDK 120
•• Integrar nuevos objetos de SDK en el reporte desarrollado desde el Generador de
Reportes
Pasos:
1. Desde el Generador de Reportes crea un nuevo reporte con los siguientes datos:
•• Clave: ReporteVentasCliente
•• Título: Ventas por cliente
•• Activa la opción Especial
2. Desde el Manejador de Consultas SQL escribe la siguiente consulta desde la cual
se podrá generar una función tipo tabla para obtener los datos de las ventas por
cliente:
IF EXISTS(SELECT * FROM sysobjects s WHERE s.[type]=’fn’ AND [Link]=’fnVen-
tasCliente’)
DROP FUNCTION fnVentasCliente
GO
CREATE FUNCTION fnVentasCliente(@fechaInicio DATETIME,@fechaFin DATETIME,@
Cliente VARCHAR(10))
RETURNS TABLE
AS
RETURN
(
SELECT [Link], [Link], [Link], [Link], [Link], [Link], [Link]-
chaEmision,[Link],
[Link],[Link],[Link],
[Link],[Link],[Link],[Link], [Link],
a.Descripcion1, [Link],[Link], [Link]
FROM Venta v
JOIN VentaD vd ON [Link] = [Link]
JOIN Cte c ON [Link] = [Link]
JOIN Art a ON [Link] = [Link]
WHERE [Link]=’Factura’ AND [Link] BETWEEN @fechaInicio AND @
fechaFin AND [Link]=@Cliente
)
3. Da clic en el botón Configurar Vista Especial y en la siguiente ventana activa la
pestaña SQL
4. Da clic en la opción Vista Independiente y escribe la siguiente consulta:
SELECT * FROM [Link]()

Powered by Intelisis Software




5. Dentro de los paréntesis de la llamada a la función fnVentasClientes utiliza las


variables [Link], [Link] e [Link] como se muestra:
SELECT * FROM [Link](‘{[Link]}’,’{[Link]}’,’{[Link]}’)
6. Da clic en la pestaña de Datos Generales y selecciona el botón Actualizar Campos
7. Ve a la pestaña Campos Calculados y agrega un nuevo campo calculado con los
121 siguientes datos:
•• Clave: Calculado1
•• Expresión: Precio*Cantidad
8. Regresa a la pantalla Vista y ve a la pestaña Datos generales para verificar que los
campos han sido agregados y da clic en Aceptar.
9. Da clic en el botón Aceptar para regresar a la ventana del reporte, selecciona la
pestaña Opciones y Activa la opción Orden/Grupos.
10. Ve a la pestaña Orden y mueve los campos FechaEmision,MovID, Articulo a la
columna Orden.

11. Da clic en el botón Formato y en el cuadro de formato del reporte agrega las
siguientes líneas con las propiedades que se te indica
•• Encabezado
•• Alto Línea: 1 cm
•• Alineado al centro sin bordes
•• Fuente Arial, Tamaño 15, Estilo Negrita
•• Campo de texto: VENTAS POR CLIENTE
Training & Professional Development

•• Inicio
•• Grupo: FechaEmision
•• Alto Línea: 0.6 cm
•• Fuente Arial, Tamaño 11, Estilo Negrita
•• Campo de consulta: ‘Cliente: ’+Cliente+’ ‘+Nombre 122

•• Inicio
•• Grupo: MovID
•• Alto Línea: 0.6 cm
•• Fuente Arial, Tamaño 11, Estilo Negrita
•• Campos de consulta: Mov+’ ‘+MovID, FechaEmision

•• Inicio
•• Grupo: MovID
•• Alto Línea: 0.6 cm
•• Fuente Arial, Tamaño 10, Estilo Negrita
•• Campos de texto: Artículo, Descripción, Cantidad, Precio, Importe

•• Detalle
•• Alto Línea: 0.6 cm
•• Fuente Arial, Tamaño 10
•• Campos de la consulta: Articulo, Descripcion1, Cantidad, Precio, Calculado1

Powered by Intelisis Software




•• Fin
•• Grupo: MovID
•• Fin
•• Grupo: MovID
123 •• Alto Linea: 0.6 cm
•• Fuente Arial, Tamaño 10, Estilo Negrita
•• Campos de expresión: ‘Total del cliente ’+ Cliente, Suma(Cantidad),
Suma(Calculado1)
•• Agrega campos de espacio entre los campos de expresión para que se
vean separados

•• Fin
•• Grupo: FechaEmision
•• Pie Página
•• Alto Linea: 0.6 cm
•• Fuente Arial, Tamaño 10, Estilo Negrita
•• Campo de expresión: ‘Pagina ’+ReportePaginaNumero

12. Pre visualiza tu reporte, verifica que se ve acorde a lo solicitado. Una vez
que termines cierra la pre visualización y regresa a la ventana Reporte


13. En el campo Submenú escribe Ventas, activa la opción Filtros, posteriormente


habilita Filtro Abierto y abre la pestaña Filtros

124

14. En el campo de texto que se muestra escribe el siguiente código el cual filtrará la
información por estatus, movimiento y fecha
Estatus=’CONCLUIDO’
15. Acepta tu reporte para guardar los cambios y desde la pestaña Formas abre la
forma EspecificarDatos para pre visualizarla.
16. En la forma indica las fechas del reporte selecciona un rango de fechas y un clien-
te para filtrar el resultado del reporte
17. Una vez que termines cierra la forma EspecificarDatos y regresa al formato del
reporte e e ingresa una cabecera por encima de la primera que colocaste con los
siguientes datos:
•• Alto Linea: 0.6 cm
•• Fuente Arial, Tamaño 10, Estilo Negrita
•• Campo de expresión: ‘De la Fecha: ‘+ FechaEnTexto( ([Link]),’dd/mm/
aaaa’ )+’A la Fecha ‘+ FechaEnTexto( ([Link]),’dd/mm/aaaa’ )

18. Guarda los cambios en tu reporte y vuelve a mostrar la Forma EspecificarDatos


para pre visualizar el reporte.
19. Cierra todas tus ventanas abiertas para guardar tu reporte.
04

Formas, Dialogos y
Especiales

Powered by Intelisis Software


Training & Professional Development

Laboratorio 1
Objetivos:
Al término de este laboratorio el participante podrá:
•• Crear tablas en SQL 127
•• Crear tablas, vistas y formas en el SDK de Intelisis.
•• Crear relaciones dentro del SDK
•• Agregar acciones a las formas
1. Abre SQL Server y desde ahí crea una nueva consulta dentro de la cual escribirás
el siguiente código de SQL para crear las tablas CategoriaCurso, FamiliaCurso e
InfoAdicionalCurso.
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name=’CategoriaCurso’ AND
type=’u’)
CREATE TABLE CategoriaCurso
(
Categoria varchar(50) not null,
Descripcion varchar(100)
)

IF NOT EXISTS (SELECT * FROM sysobjects WHERE name=’FamiliaCurso’ AND


type=’u’)
CREATE TABLE FamiliaCurso
(
Familia varchar(50) not null,
Descripcion varchar(100)
)
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name=’InfoAdicionalCurso’ AND
type=’u’)
CREATE TABLE InfoAdicionalCurso
(
ID int IDENTITY(1,1),
ModuloID int not null,
Renglon float not null,
Articulo varchar(20) not null,
Familia varchar(50),
Categoria varchar(50),
Observaciones varchar(50),
Cantidad int,
Precio money

CONSTRAINT pkInfoAdicionalCurso PRIMARY KEY (ModuloID, Renglon, Ar-


ticulo)
)
2. Ejecuta las sentencias de SQL antes colocadas en la consulta SQL y regresa a la
pantalla principal de SDK

Powered by Intelisis Software




3. Desde la pantalla principal del SDK crea las tablas CategoriaCurso y FamiliaCurso
desde la sección Diccionario de Datos con las siguientes características.
Tabla CategoriaCurso

Pestaña Datos Generales


128
•• Clave: CategoriaCurso
•• Tabla Fisica: CategoriaCurso
•• Nombre: CategoriaCurso
•• Dar clic en el botón Generar Tabla para cargar los campos

Pestaña Llaves
•• Agregar a la columna Llave Primaria el campo Categoría.
Tabla FamiliaCurso

Pestaña Datos Generales


•• Clave: FamiliaCurso
•• Tabla Fisica: FamiliaCurso
•• Nombre: FamiliaCurso
•• Dar clic en el botón Generar Tabla para cargar los campos

Pestaña Llaves
•• Agregar a la columna Llave Primaria el campo Familia.
Training & Professional Development

4. Genera las vistas para las tablas creadas en el paso anterior con las siguientes
características:
Vista CategoriaCurso

Pestaña Datos Generales


129
•• Clave: CategoriaCurso
•• Nombre: CategoriaCurso
Pestaña Vista
•• En la columna Tablas a Usar coloca la tabla CategoriaCurso
•• En el menú Tabla principal selecciona CategoriaCurso
•• Activa las opciones Capturas, Reportes y Consultas.
•• Da clic en el botón Generar Vista…, deja los campos que se muestran como están
y presiona Aceptar.

Vista FamiliaCurso

Pestaña Datos Generales


•• Clave: FamiliaCurso
•• Nombre: FamiliaCurso
Pestaña Vista
•• En la columna Tablas a Usar coloca la tabla FamiliaCurso
•• En el menú Tabla principal selecciona FamiliaCurso
•• Activa las opciones Capturas y Reportes y Consultas.
•• Da clic en el botón Generar Vista…, deja los campos que se muestran como están
y presiona Aceptar.

Powered by Intelisis Software




5. Dirígete a la pestaña Formas y crea las correspondientes formas de acuerdo a las


vistas generadas en el paso anterior con los siguientes datos:
Forma CategoriaCurso

Pestaña Datos Generales


130
•• Clave: CategoriaCurso
•• Titulo: Categoria Curso
•• Activar la opción Barra Herramientas
•• Seleccionar el botón Agregar… en la columna Lista de Carpetas
•• Una vez creada tu carpeta en el menú Carpeta Principal selecciona Lista.
Ventana Carpeta /Pestaña Datos Generales
•• Clave: Lista
•• Vista: CategoriaCurso
•• Activar la opción Permite editar de la sección Opciones Generales

Ventana Carpeta /Pestaña Campos


•• Agrega los campos Categoría y Descripción a la columna Campos en Carpeta
•• Presiona Aceptar para regresar a la ventana de edición de la forma.

Pestaña Acciones
•• Agregar una nueva acción con los siguientes datos
•• Clave: GuardarCerrar
•• Nombre a Desplegar: &Guardar y Cerrar
•• Tipo de Accion: Ventana
•• Clave Accion: Aceptar
Training & Professional Development

•• Activar la opción Guardar cambios antes de ejecutar en la sección Opciones


•• En la sección Aplica en activa la opción Resaltado.
•• En la sección barra de herramientas selecciona el icono 3 y activa la opción Nom-
bre de Boton.
•• Da clic en Aceptar para regresar a la pantalla principal de la edición de la forma.
131
Forma FamiliaCurso

Pestaña Datos Generales


•• Clave: FamiliaCurso
•• Titulo: Familia Curso
•• Activar la opción Barra Herramientas
•• Seleccionar el botón Agregar… en la columna Lista de Carpetas
•• Una vez creada tu carpeta en el menú Carpeta Principal selecciona Lista.
•• Activa el botón Otras Opciones…
Ventana Otras Opciones
•• En la sección Posición Inicial seleccionar la opción Centrado
Ventana Carpeta /Pestaña Datos Generales
•• Clave: Lista
•• Vista: FamiliaCurso
•• Activar la opción Permite editar de la sección Opciones Generales
Ventana Carpeta /Pestaña Campos
•• Agrega los campos Famillia y Descripcion a la columna Campos en Carpeta
•• Presiona Aceptar para regresar a la ventana de edición de la forma.
Pestaña Acciones
•• Agregar una nueva acción con los siguientes datos
•• Clave: GuardarCerrar
•• Nombre a Desplegar: &Guardar y Cerrar
•• Tipo de Acción: Ventana
•• Clave Acción: Aceptar
•• Activar la opción Guardar cambios antes de ejecutar en la sección Opciones
•• En la sección Aplica en activa la opción Resaltado.
•• En la sección barra de herramientas selecciona el icono 3 y activa la opción
Nombre de Botón.
•• Da clic en Aceptar para regresar a la pantalla principal de la edicióndeforma.

Powered by Intelisis Software




6. Crea una nueva forma a partir de la vista CategoriaCurso con las siguientes ca-
racterísticas:
Pestaña Datos Generales
•• Clave: CategoriaCursoLista
132 •• Titulo: Categoria Curso Lista
•• Activar la opción Barra Herramientas
•• Seleccionar el botón Agregar… en la columna Lista de Carpetas
•• Una vez creada tu carpeta en el menú Carpeta Principal selecciona Lista.
Ventana Carpeta /Pestaña Datos Generales
•• Clave: Lista
•• Vista: CategoriaCurso
Ventana Carpeta /Pestaña Campos
•• Agrega los campos Categoria y Descripcion a la columna Campos en Carpeta
•• Presiona Aceptar para regresar a la ventana de edición de la forma.
Pestaña Acciones
•• Agregar una nueva acción con los siguientes datos
•• Clave: Seleccionar
•• Nombre a Desplegar: &Seleccionar
•• Tipo de Acción: Ventana
•• Clave Acción: Seleccionar
•• En la sección Aplica en activa la opción Resaltado.
•• En la sección barra de herramientas selecciona el icono 23 y activa la opción
Nombre de Botón.
•• Da clic en Aceptar para regresar a la pantalla principal de la edición de la
forma.
7. Desde la pestaña Formas en la ventana principal del SDK abre la forma artCat
8. Ve a la pestaña Acciones y da doble clic sobre la acción Guardar
9. Dentro de la ventana que edita a la acción ve a la pestaña Opciones y da clic en el
botón de tres puntos que está en la sección Condición de Ejecución.
Training & Professional Development

10. Dentro del Editor de Expresiones copia el código que aparece y cierra las venta-
nas incluyendo la de edición de la forma ArtCat
11. Abre ahora la forma CategoriaCurso, ve a la pestaña Acciones y da doble clic so-
bre la acción GuardarCerrar
12. Ve a la pestaña Opciones y activa la opción Condición de Ejecución.
133

13. En el campo de texto que aparece pega el código que copiaste de la acción de la
forma ArtCat.
14. Abre el Editor de Expresiones para ver el código que pegaste y modifícalo como
se muestra:
Asigna(TempTexto,ListaBuscarDuplicados(CampoEnLista(CategoriaCurso:Catego-
[Link])))
Vacio([Link])
15. Una vez que hayas terminado la modificación selecciona tu código, cópialo y
cierra el Editor de Expresiones sin guardar los cambios.
16. Borra el texto que aparece en el campo que está por debajo de la sección Condi-
ción de ejecución y pega el código modificado que copiaste.
17. Activa la opción Mensaje Error y escribe el siguiente código dentro del campo
de texto:
Comillas([Link])+’Duplicado’

18. Acepta los cambios a la acción, pre visualiza la forma e intenta introducir una
categoría duplicada.

Powered by Intelisis Software




19. Regresa a la pantalla principal del SDK y ve a la pestaña Diccionario de Datos para
crear una tabla para la tabla física de SQL InfoAdicionalCurso, con las siguientes
características:
Pestaña Datos Generales
134 •• Clave: InfoAdicionalCurso
•• Nombre: InfoAdicionalCurso
•• Tabla Fisica: InfoAdicionalCurso
•• Dar clic en el botón Generar Tabla para mostrar los campos en la sección Lista de
Campos.
Pestaña Configuración
•• Asegúrate que en la sección Controles de la Tabla se encuentre activa la opción ID

Pestaña Llaves
•• Inserta en la columna Llave primaria los campos ModuloID, Renglon y Articulo.
Training & Professional Development

20. Ve a la pestaña Llaves y en la columna Relaciones agrega las siguientes:


Relación con la tabla Art
•• Tipo de relación: Opcional
•• Nombre: Art
135
•• Tabla Relacionada: Art
•• Llave Local: Articulo
•• Llave Remota: Articulo

Relación con la tabla CategoriaCurso


•• Tipo de relación: Opcional
•• Nombre: Categoria
•• Tabla Relacionada: CategoriaCurso
•• Llave Local: Categoria
•• Llave Remota: Categoria

Powered by Intelisis Software




Relación con la tabla FamiliaCurso


•• Tipo de relación: Opcional
•• Nombre: Familia
•• Tabla Relacionada: FamiliaCurso
136 •• Llave Local: Familia
•• Llave Remota: Familia

21. En la columna Búsqueda Rápida agrega los campos Artículo, Categoría y Familia.

22. Regresa a la pestaña de Datos Generales, da doble clic sobre el campo Familia y
en la pestaña validación activa la opción Tabla de validación.
23. Dentro del campo que aparece configura la tabla FamiliaCurso para que no exis-
ta otra familia duplicada al momento de capturar un dato en nuestra tabla.
Training & Professional Development

24. Regresa a la pantalla de edición de la tabla y entra a las propiedades del campo
Artículo.
25. Ve a la pestaña Ayuda en Captura, activa la opción Vista y asigna las siguientes
características:
•• Forma: ArtLista
137
•• Vista: Art
•• Campo: [Link]

26. Activa la pestaña Validacion, activa la opción Tabla de validación y configura el


campo que aparece con la tabla Art.

27. Ve a la pestaña Edición y activa la opción Requerido Siempre.

Powered by Intelisis Software




28. Abre ahora las propiedades del campo Categoría, ve a la pestaña Ayuda en Cap-
tura, activa la opción vista y asigna las siguientes características:
•• Forma: CategoriaCurso
•• Vista: CategoriaCurso
138 •• Campo: [Link]
29. Activa la pestaña validación, selecciona la opción Tabla de validación y en el cam-
po que aparece configúralo con la tabla CategoriaCurso
30. Abre nuevamente las propiedades del campo Familia, activa la pestaña Ayuda en
captura y selecciona la opción Expresión.
31. Ve a la pestaña Expresión, da clic en el botón de tres puntos para Abrir el Editor
de Expresiones y captura el siguiente código:
SQLEnLista(‘SELECT Familia FROM FamiliaCurso’)

32. Cierra las propiedades del campo Familia y abre las propiedades del campo Can-
tidad.
33. En la pestaña despliegue selecciona la opción Formato Cantidades y en la pesta-
ña Ayuda en Captura, activa la opción Calculadora.

34. Abre las propiedades del campo precio y asigna lo siguiente:


•• Pestaña Despliegue, activa la opción Formato Monetario.
•• Pestaña Ayuda en captura, activa la opción Calculadora.
•• Pestaña Validación, escribe 0 en el campo Valor Mínimo.
Training & Professional Development

35. Muestra las propiedades del campo ModuloID y en la pestaña Edición escribe
[Link] en el campo Valor por Omisión para que se muestre el valor del ID de la
tabla.

139

36. A continuación, escribe [Link] dentro del campo Valor por Omisión de las
propiedades del campo Renglón.

37. Guarda tu tabla y ahora crea una nueva vista con las siguientes características
Pestaña Datos Generales
•• Clave: InfoAdicionalCurso
•• Nombre: InfoAdicionalCurso
Pestaña Vista
•• Agregar las tablas InfoAdicionalCurso, Art, CategoriaCurso y FamiliaCurso a la co-
lumna Tablas a Usar
•• Del menú desplegable Tabla Principal selecciona la opción InfoAdicionalCurso
•• Activa las opciones Capturas, Reportes y consultas, Usar JOIN.
•• Presiona el botón Generar Vista.
•• En la ventana que muestra todas las tablas involucradas en la vista selecciona los
siguientes campos:
•• Tabla InfoAdicionalCurso: Todos los campos
•• Tabla Art: Descripcion1, NombreCorto, Grupo, Fabricante, Linea, PrecioLista,
Estatus.
•• Tabla CategoriaCurso: Descripcion.
•• Tabla FamiliaCurso: Descripcion.
38. Guarda tu vista.

Powered by Intelisis Software




Creación y uso de campos Calculados


Los campos calculados nos permiten realizar operaciones aritméticas simples como suma,
resta, multiplicación o división dentro de los campos que se estén desarrollando en el SDK.

140 Para lograr el uso de estos campos calculados tenemos que entrar a la vista donde se tie-
nen las tablas que se verán involucrados en algún calculo, por lo que se tiene que habilitar
la pestaña de Campos Calculados y crear un campo calculado desde esta sección (Figura
4.1).

Figura 4.1 La pestaña Campos Calculados la podemos encontrar en los objetos de tipo Vista

En la siguiente ventana se muestran tres pestañas las cuales describiremos a continuación:

General: Aquí se especificaran los datos principales de campo calculado como la clave, el
tipo de datos y el tipo de calculo que se realizara con él (Figura 4.2).

Figura 4.2 Esta pestaña permite especificar las caracteristicas generales de un campo calculado.
Training & Professional Development

Despliegue: Esta sección muestra las opciones en cómo se mostrará este campo en la
forma que posteriormente creemos (Figura 4.3).

141

Figura 4.3 La pestaña Despliegue permite especificar las caracteristicas que tendrá el campo calcu-
lado en una forma.

Expresión: Aquí colocaremos la fórmula que ejecutara nuestro campo calculado ya sea
con los campos de las tablas o mediante las funciones disponibles en el Editor de Expre-
siones (Figura 4.4).

Figura 4.4 La pestaña Expresion permite crear formulas, mediante el uso de los campos de las
tablas y funciones de SDK.

Powered by Intelisis Software




Configuración de Filtros
Los filtros nos permiten realizar búsquedas dentro de una tabla de SQL para extraer solo
una porción de los datos almacenados en nuestras tablas. En el caso, de las tablas de SDK
tienen el mismo concepto, debido a que contamos con varias opciones para crear filtros
142 dentro del SDK.
Para la de creación de filtros debemos habilitar las opciones Filtros y Búsqueda Rápida/
Filtros Controles, estas opciones las podemos encontrar en la ventana Carpeta cuando se
está creando una forma y están ubicadas en la sección Opciones Generales (Figura 4.5).

Figura 4.5 Desde la pestaña Datos Generales cuando se agrega una Carpeta en una Forma se deben
activar las opciones Filtros y Búsqueda Rápida / Filtros Controles para filtrar la infomación mostrada
en las formas de tipo Hoja o Iconos

Cuando se activa la opción Filtros también se habilita una pestaña con el mismo nombre y
dentro de la cual podemos decidir el tipo de Filtro que se utilizara (Figura 4.6), para nuestro
curso solo utilizaremos dos que son:

General: Indica las consideraciones que toma el SQL para filtrar la información, es decir,
toma los campos de la Búsqueda Rápida o mediante controles como Movimiento, Fecha,
Estatus, Sucursal, etc.

Figura 4.6 La pestaña Filtros permite especificar los diferentes tipos de filtración de datos en las formas.
Training & Professional Development

Múltiple (por Grupos): Este tipo de filtro es el más utilizado por los exploradores de Intelisis
y en el podemos especificar los campos por medio de los cuales agruparemos el conteni-
do en el explorador (Figura 4.7).

143

Figura 4.7 El filtro por grupos permite agrupar los datos de acuerdo a un determinado campo de la tabla
de base de datos

La pestaña Búsqueda / Controles (Figura 4.8) permite habilitar un campo de texto con el
cual podremos hacer búsquedas de información mediante la inserción de alguna palabra
clave de acuerdo a los campos que se hayan habilitado en las Búsquedas Rápidas o me-
diante algún comodín como el asterisco.

Figura 4.8 En la siguiente figura se muestra la pestaña Búsqueda / Controles y las diversas opciones que
permiten habilitar diferentes tipos de filtros en las formas de tipo hoja e iconos.

Powered by Intelisis Software




PRACTICA 4-1 Crear Campos Calculados Y Filtros.


Objetivos:
Al término de este ensayo el participante:
144 •• Creará campos calculados los cuales mostraran mediante una operación matemá-
tica un resultado obtenido de los campos de la tabla de base de datos.
•• Comprenderá el uso y características de los filtros básicos dentro de una forma en
el SDK.
CREACION DE CAMPOS CALCULADOS
1. Desde la pestaña de Vistas en la ventana principal del SDK abre la vista InfoAdi-
cionalCurso.
2. Ve a la pestaña Campos Calculados y presiona el botón Agregar Nuevo…
3. En la ventana Propiedades del Campo asigna las siguientes características:
Pestaña General
•• Clave: Total
•• Tipo de Datos: NumFlotante

Pestaña Expresión
•• Escribe la expresión: [Link]*[Link]
Training & Professional Development

Pestaña Despliegue
•• En el campo Nombre escribe Total
•• Activa la opción Formato Monetario

145

4. Guarda tu vista, ve a la pestaña de Formas y crea una nueva forma.


5. En la ventana de edición de forma asigna las siguientes características
Pestaña Datos Generales
•• Clave: InfoAdicionalCurso
•• Título: Información Adicional Curso
•• Activar Barra Herramientas de la sección Opciones
•• Agrega una nueva carpeta dando clic en el botón Agregar que está en la columna
Lista de Carpetas
•• Una vez que termines de editar la carpeta selecciónala de la lista Carpeta Principal.
Ventana Carpeta /Pestaña Datos Generales
•• Clave: Detalle
•• Vista: InfoAdicionalCurso
•• Desactivar la opción Pestaña
•• Activar la opción Permite Editar, Filtros, Búsqueda Rápida / Filtros Controles y Des-
plegar campos de la sección Opciones Generales

Powered by Intelisis Software




Ventana Carpeta / Pestaña Campos


•• Mueve a la columna Campos en Carpeta los campos [Link],
[Link], [Link], [Link]-
servaciones, [Link], [Link] y Total
•• Selecciona el campo Total y desactiva la opción Permite Editar
146

Ventana Carpeta / Pestaña Desplegar


•• Mueve a la columna Campos a Desplegar los campos Art.Descripcion1, Categoria-
[Link] y [Link]
Training & Professional Development

Ventana Carpeta / Pestaña Filtros


•• Da clic en el botón de tres puntos, en el Editor de Expresiones escribe el siguiente
código.
[Link]={[Link]} AND [Link]={Info.
Renglon}
•• Activa la opción Multiple (Por Grupos) dentro de la sección Tipo de Filtro 147
•• En los menús desplegables que se activan en la sección Filtro Múltiple (por Gru-
pos) configúralos como se muestra:
•• En la sección Opciones activa (Todo), Todo (Al Final) y En Orden

Ventana Carpeta / Pestaña Búsqueda/Controles


•• Activa la opción Búsqueda Rápida
•• Selecciona Inicializar al Abrir.
•• Da clic en Aceptar para regresar a la ventana de edición de la forma.

Powered by Intelisis Software




Pestaña Acciones
•• Agrega una acción Guardar con las siguientes características:
•• Clave: Guardar
•• Nombre a Desplegar: Guardar
148 •• Tipo de Acción: Ventana
•• Clave Acción: Aceptar
•• Activar la opción Guardar cambios antes de ejecutar
•• Icono: 3
•• Activa Nombre en Botón
•• Genera una nueva acción Cancelar con las siguientes características
•• Clave: Cancelar
•• Nombre a Desplegar: Cancelar
•• Tipo de Acción: Ventana
•• Clave Acción: Cancelar
•• Icono: 21
•• Activa Nombre en Botón
6. Regresa a la pestaña de Datos Generales, activa la opción Totalizadores y selec-
ciona la opción Configurar Totalizadores…

7. En la pestaña de Datos Generales de los Totalizadores desactiva la opción Pesta-


ña y en Zona selecciona B1
Training & Professional Development

8. Ve a la pestaña Totalizadores y configura la pantalla como se muestra:

149

9. Activa la pestaña Campos y mueve los campos Precio, Cantidad y Conteo a la co-
lumna Campos en Carpeta, en todos deberás desactivar la opción Línea Nueva.

10. Presiona el botón Aceptar para terminar la edición de los Totalizadores.


11. Pre visualiza tu forma y verifica que funcionen todas sus operaciones, una vez
que termines cierra tu forma y la ventana de edición de la forma para guardar los
cambios.

Powered by Intelisis Software




Objetos Heredados y Ensamblados


A partir de la versión 6000 de Intelisis SDK la mejor manera de trabajar con la modificación
de objetos ya establecidos en la versión natural de Intelisis ERP es mediante la creación de
objetos Heredados o Ensamblados ya que este tipo de objetos se alojan en la carpeta del
150 proyecto que se define al inicio de un desarrollo evitando así que se manipulen los objetos
originales de la versión de Intelisis SDK.
Para crear un objeto Ensamblado o Heredado debemos abrir el objeto a modificar y lo
primero que debemos hacer notar es que en el titulo de la ventana del lado derecho del
nombre del objeto en la barra de titulo aparece entre corchetes la palabra Protegido ese
es un indicador que nos dice que el archivo no lo podemos modificar sin antes crear un
archivo Heredado o Ensamblado.

Una vez que nos hemos dado cuenta que esta protegido lo siguiente es dar clic en la pes-
taña de Código y seleccionar el botón de Crear Ensamble o Crear Heredado, al hacerlo se
nos solicitara que se vuelva a ingresar al objeto para que se pueda iniciar su edición.

A continuación, analizaremos las características de cada uno de este tipo de objetos.


Training & Professional Development

Objeto Heredado
Al generar un archivo heredado Intelisis SDK nos creara una copia exacta del documento
original y lo colocara en la carpeta de proyecto de desarrollo, por lo que podremos dispo-
ner de el para modificar sus características y añadirle lo que se haya requerido.
151
En versiones anteriores de Intelisis era muy recurrente utilizar este tipo de objetos ya que
se generaban archivos xml denominados AddOns, los cuales utilizaban el código del obje-
to completo de Intelisis además de las modificaciones realizadas a estos objetos.
El único contra que se tenia con este tipo de objetos mediante archivos AddOn era que en
muchas ocasiones sustituía al objeto original y esto ocasionaba que si se tenían archivos
especiales esos cambios eran ignorados y sustituidos por el AddOn.

Objeto Ensamblado
Este tipo de objetos son los ideales para la nueva forma de desarrollar en Intelisis SDK 6000
e inclusive también para versiones anteriores ya que solo guardan los cambios generados
al objeto original que es muy similar a como se encuentran los archivos .esp.
Los objetos ensamblados tienen como característica principal que se encuentran como
archivos en blanco y además la extensión de los mismo cambia para distinguirlos de los
objetos originales, utilizando la siguiente nomenclatura:

Tipo de Objeto Extensión Original Extensión de Ensamble


Tabla Tbl Etb
Vista Vis Evi
Forma Frm Efr
Dialogo Dlg Edl
Reporte rep ere

Powered by Intelisis Software




PRACTICA 4-2 Adjuntar Una Forma A Un Modulo


Objetivo:
Al término de este ensayo el participante podrá:
152 •• Modificar una tabla del SDK ya creada para Intelisis con la cual se mostrará un
formulario
•• Activar o desactivar el acceso a la forma desde el módulo donde se esté invo-
cando la forma.
1. Abre SQL Server, crea una nueva consulta de SQL y utiliza el procedimiento spAL-
TER_TABLE para introducir un nuevo campo a la tabla Venta, procura estar en la
base de datos que estas usando para las practicas.
EXEC spALTER _ TABLE ‘Venta’,’TieneInfo’, ‘bit DEFAULT 0’
2. Dirígete a la ventana principal del SDK de Intelisis, busca la tabla Venta dentro de
la pestaña Diccionario de Datos y ábrela.
3. Da clic en la pestaña de Código y da clic en el botón de Heredado, presiona Acep-
tar en la ventana emergente y vuelve abrir la tabla.
4. Abre la pestaña de SQL, presiona el botón Genera SQL y cuando termine el pro-
ceso verifica que aparece al final del código que regenera.
5. Regresa a la pestaña de Datos Generales, presiona el botón Actualizar Campos
y posteriormente de la columna Lista de Campos da doble clic sobre el campo
TieneInfo
6. Ve a la pestaña Edición, en el campo Valor por Omisión escribe Falso.

7. Abre la pestaña Despliegue y da clic en el botón de tres puntos que se encuen-


tran en el campo Condición.
Training & Professional Development

8. Dentro del Editor de Expresiones escribe la siguiente sentencia con la función


MovTipo para poder mostrar el campo TieneInfo, que pondremos dentro del mó-
dulo de ventas solo si se realizan movimientos VTAS.P y VTAS.N
MovTipo(‘VTAS’,Mov) en (VTAS.P,VTAS.N)

153

9. Verifica tu expresión, regresa a la ventana principal de las propiedades y desplie-


ga la pestaña de Edición.
10. Desde la pestaña Edición activa la opción Refrescar cond. Despliegue/Edición y
activa la opción Toda Forma, cuando esté disponible. Nota: Con esto se actuali-
zará el contenido de la forma que cargaremos en el módulo.

11. Da clic en el botón Aceptar para cerrar las propiedades del campo TieneInfo.
12. Cierra tu tabla Venta y abre la vista Venta que se encuentra en la pestaña Vistas y
genera un objeto hererado de esta.
13. Dentro de la vista Venta ve a la pestaña Vista y da clic en el botón Generar Vista…
14. En la siguiente ventana, selecciona el campo TieneInfo que debe aparecer al final
de la columna Venta y da clic en Aceptar.

Powered by Intelisis Software




15. Cierra la vista Venta y abre la forma Venta desde la pestaña Formas y de igual
modo genera un objeto heredado de esta.
16. Da doble clic sobre la carpeta Ficha y en la pestaña Campos mueve el campo
[Link] a la columna Campos en Carpeta.

154

17. Cierra la ventana de la carpeta Ficha, prueba tu Forma y cuando se muestre crea
un nuevo movimiento de tipo Pedido, cuando te muevas a otro campo después
de haber elegido el movimiento observaras que aparece el nuevo checkbox lla-
mado TieneInfo.
18. Cierra la pre visualización de la forma, abre la pestaña Acciones y da clic en el
botón Agregar…
19. Con la ventana Acción abierta, asigna los siguientes parámetros:
•• Clave:TieneInfo
•• Nombre a Desplegar: Información adicional
•• Tipo de Acción: Formas
•• Clave Acción: InfoAdicionalCurso
•• Sección Aplica en, activa la opción Menú
•• En la sección Menú, selecciona la opción Edición
•• En la sección Opciones activa Guardar cambios antes de ejecutar
20. Ve a la pestaña Opciones, activa la opción Expresiones antes de ejecutar y pos-
teriormente da clic en el botón de los tres puntos para abrir el Editor de Expre-
siones.
Training & Professional Development

21. Dentro del Editor de Expresiones utiliza la función Asigna para ingresar datos a
las variables [Link] e [Link] cuyos datos serán tomados de los campos
[Link] y [Link].
Asigna([Link],Venta:[Link])
Asigna([Link],VentaD:[Link])
155

22. Desactiva la opción Activo y en el campo de texto escribe Venta:[Link]-


fo. Nota: Este paso realizar la validación de que la opción del menú TieneInfo se
muestre activada o desactivada, como es un valor lógico ya no se necesita crear
una expresión compleja debido a su naturaleza.
23. Cierra el Editor de Expresiones, activa la opción Después de Guardar y finalmente
da clic en el botón Aceptar para cerrar la ventana Acción.

24. Prueba nuevamente tu forma observaras que cuando colocas un movimiento


de pedido y no se tiene activado el checkbox de TieneInfo la opción Información
Adicional que se encuentra en el menú Edición esta desactivada, mientras que
cuando activamos el checkbox , podremos observar que en el menú Edición se
encuentra activa la opción Información Adicional y además podemos acceder a
los datos.
25. Cierra la forma de Venta y ahora abre la forma InfoAdicionalCurso.

Powered by Intelisis Software




26. Ve a la pestaña Acciones y en el campo Comentarios utiliza la función Lista para


mostrar los valores almacenados en [Link] e [Link], los cuales contienen
el número de movimiento que se está realizando y el renglón en el que se en-
cuentra dentro de la tabla de VentaD
Lista([Link],[Link])
156

27. Cierra la forma InfoAdicionalCurso, regresa a la de Venta y pruébala con las mo-
dificaciones que se han creado.
Training & Professional Development

Creación de Especiales
Para crear un especial es necesario colocar la tabla, vista y forma (.Tbl, .Vis, .FRM) en el direc-
torio de objetos especiales, así como su script que genere la tabla en SQL de preferencia
en la carpeta Instalación; pero cuando se habla de modificar una forma que ya existe en
Intelisis, puede referirse a las acciones, a los filtros, al despliegue de una lista de valores o 157
inclusive a desactivar o condicionar la edición de cierto campo. Existen 2 métodos para
generar el objeto especial o, dicho de otra manera, de obtener el archivo deseado para
modificar una “Forma” de Intelisis. A continuación, se mencionan los dos métodos para
obtener el archivo.

ESP.
Este método se basa en utilizar una estructura descrita de la siguiente forma:
[[Link]/SELECT]
A. [Link]
B. Iniciamos abriendo un corchete ([).
C. Colocamos el objeto a modificar ([Link]).
D. Colocar una diagonal (/).
E. Capturar el campo, acción, comando de SQL del objeto a modificar.
F. Se cierra el corchete (])
G. Oprimir Enter para continuar en la siguiente línea. De no encontrarse el Enter, la
modificación no tendrá efecto.
H. Indicar la propiedad o sentencia de SQL que se necesita.
Una vez definida la estructura, se mencionarán las modificaciones más comunes a las pro-
piedades de una tabla utilizando dicha definición.
Modificar el Nombre de un campo de la Tabla.
Se requiere que, en el catálogo de Clientes, el campo “Correo Electrónico 1“se utilice para
capturar la unidad habitacional.
[[Link]/eMail1]
Nombre=Unidad Hab.

Nota: El campo “eMail1” aunque la etiqueta se modificó internamente, en la tabla y vista


de SQL, así como del SDK no tendrán cambio alguno

Powered by Intelisis Software




Condición Despliegue.
Esta propiedad permite que se pueda o no ver y editar el campo de la tabla de acuerdo a
ciertas condiciones (Configuración de la Empresa, Módulo, Usuario, o simplemente siem-
pre o nunca). Ejemplo 1: El campo “Margen Mínimo” del Artículo solo se puede ver cuando
158 en la configuración del módulo de ventas se tiene en la opción “Validar Precios” el valor
“Margen Mínimo”. Se requiere que, aunque no se valide el precio con el margen mínimo,
se pueda capturar el margen mínimo en el artículo.
Valor Original:
CondicionDespliege=[Link]=’Margen Minimo’
ESP:
[[Link]/MargenMinimo]
CondicionDespliege=
Ejemplo 2: Se requiere que el campo Observaciones de Clientes, solo aparezca al usuario
que no tenga habilitada en su configuración la opción “Bloquear Otros Datos del Cliente”.

Condición Edición.
A diferencia de la propiedad anterior, este si permite ver pero condiciona la edición al
campo de la tabla. Ejemplo 1: Se requiere que el campo Impuesto 2 (IEPS) del artículo no
se pueda editar.
[[Link]/Impuesto2]
CondicionEdicion=Falso
Ejemplo 2: Se requiere que en Cxc la Fecha de Emisión solo se edite si el movimiento es
diferente a Cobro.
[[Link]/FechaEmision]
CondicionEdicion=(no [Link]) y (Cxc:[Link]<><T>Co-
bro<T>)

Valor por omisión.


Esta propiedad permite colocar un valor en un campo de la tabla al abrir un nuevo mo-
vimiento o catálogo. Ejemplo 1: Se necesita que, al dar de alta un proveedor, el campo
“Descuento Pronto Pago / Recargos” aparezca habilitado.
[[Link]/DescuentoRecargos]
ValorPorOmision=Verdadero
Ejemplo 2: Se requiere que el campo “Fecha Origen” del módulo de Inventarios tenga el
valor de ayer.
[[Link]/FechaOrigen]
ValorPorOmision=FechaTrabajo-1
Requerido.
Esta propiedad indica que un campo debe contener un valor diferente a nulo, para que lo
Training & Professional Development

que se capturó pueda guardarse, de lo contrario, aparecerá un mensaje indicando que el


campo debe tener un valor. Ejemplo: Se requiere que el campo “Condiciones” del módulo
de Ventas siempre tenga un valor.
[[Link]/Condicion]
Requerido=S
Nota: Es importante mencionar la diferencia entre un Nulo y un blanco. El Nulo indica la 159
ausencia de valor, mientras que el blanco es un carácter utilizado comúnmente como es-
pacio entre caracteres, aunque también debe hacerse distinción del cero.
Debemos utilizar la estructura de un ESP descrita anteriormente para poder crear el archi-
vo. Los pasos son los siguiente:
A. Ubicar la “Forma” que se desea modificar. Por ejemplo, se requiere que se desactive
la carpeta Dirección de la Forma de Almacenes. Si no sabe el nombre de la forma, posi-
ciónese en ella y oprima SHIFT + CTRL + ALT + F2 y aparecerá el nombre de esta como
se muestra en la Figura 4.9.

Figura 4.9 Para conocer el nombre de la forma que tienes abierta oprime SHIFT + CTRL + ALT + F2

B. Una vez que conoce el nombre de la forma, se sugiere hacer una copia del archivo
([Link]) y guardarlo en otra carpeta para que posteriormente lo regrese a la carpeta
“Codigo Original”. Entre al SDK, abra la forma “Alm”, edite la carpeta “Direccion”, coló-
quese en la pestaña “Opciones”, habilite la opción “Carpeta Desactivada”. Oprima el bo-
tón “Aceptar” y regresará a la Forma “Alm”. Oprima “Aceptar” para guardar los cambios.

Powered by Intelisis Software




C. Hecha la modificación, abra la forma y verifique que la carpeta “Direccion” ya no apa-


rezca, si el resultado es correcto, diríjase al directorio “Codigo Original” del SDK, ubique
el archivo “[Link]” y ábralo con el Bloc de notas. Del menú “Edición” seleccione la
opción “Buscar”, aparecerá una forma en la que indicará “[Direccion]”, verá que de las
propiedades de esta carpeta existe la siguiente expresión: CarpetaDesActivada=S. Una
160 vez que tenemos la propiedad que se modificó, podemos crear el ESP que permitirá
modificar la forma, el cual resultaría así:
[[Link]/Direccion]
CarpetaDesActivada=S
D. Guarde en un archivo con extensión. Esp los comandos y colóquelo en el “Directorio
de Objetos Especiales”. Accese a Intelisis y verifique el resultado.

Herramienta Generadora de Especiales


Intelisis SDK 6000 cuenta con una nueva herramienta para la generación de archivos espe-
ciales si estamos generado objetos de tipo Heredado en nuestro proyecto.
Para generar un nuevo documento .esp debemos realizar lo siguiente:
1. Desde Intelisis SDK ve al menú Herramientas > Generador de Objetos Especiales.
2. En la ventana que aparece a continuación selecciona el archivo o la carpeta con
archivos con los cuales se desea generar el documento especial en la sección
Origen.

3. En la sección Destino se debe especificar la ubicación donde deberá aparecer el


archivo especial nuevo.
Training & Professional Development

4. Dar clic en el botón Procesar esto permitirá generar el documento especial en la


carpeta asignada en la sección Destino.

161

5. En la siguiente pantalla se nos mostrara la comparativa entre el objeto original y


el objeto modificado, así como el código especial generado.

6. Da clic en el botón Aceptar para concluir el proceso.


Al finalizar la generación de nuestro especial ya sea de forma manual a través de objetos
ensamblados o mediante los archivos heredados haciendo uso de la herramienta genera-
dora de objetos especial el siguiente paso es implementarlo en Intelisis ERP.

Powered by Intelisis Software




Administración de Desarrollos
A partir de la versión 6000 de Intelisis ERP la integración de las adecuaciones o desarrollos
realizados mediante Intelisis SDK se realizarán mediante una nueva herramienta integrada
tanto en SDK como en Intelisis ERP denominada Administrador de Desarrollos.
162
Esta nueva pantalla sustituye a la metodología anterior de implementación de objetos es-
peciales, addons y nuevos desarrollos, ya que en versiones anteriores los desarrollos nue-
vos y objetos especiales eran colocados como archivos en una carpeta de objetos especia-
les que se definía en alguna ruta de nuestro servidor donde se requería leer estos archivos
para que, al iniciar Intelisis ERP, formaran parte de la versión. Esto mismo también sucedía
con los archivos xml de tipo AddOn los cuales eran colocados en la carpeta AddOn y que
era desde aquí donde los leía Intelisis ERP para poder visualizar los cambios efectuados en
la versión.
Mediante el administrador de desarrollos esto ya no será necesario pues los cambios que
se efectúen a los objetos originales de la versión, así como los nuevos objetos que se inclu-
yan ya se almacenarán directamente en un par de tablas de la base de datos denominadas:
•• Sysbaseesp. Esta tabla refleja los objetos aplicados a la versión de Intelisis ERP, la
carpeta virtual donde se encuentran, la fecha de aplicación, si el objeto es com-
pleto o no, el nombre del objeto y los datos del mismo los cuales se encontrarán
encriptados.
•• SysBaseEspDirectorio. Esta tabla solo refleja el directorio virtual, la descripción
de ese directorio y el tipo.
Como el administrador de desarrollos ya no necesita de una carpeta física en donde se lee-
ran los archivos de los desarrollos, lo que se tiene ahora son directorios virtuales en donde
se simula un directorio físico para que Intelisis ERP pueda identificar los desarrollos para
cada empresa. De forma predeterminada el administrador cuenta con un directorio virtual
denominado Sistema, dentro del cual se cargan todos los elementos que tienen que ver
con el inicio del sistema como son las variables. Por tanto, para las modificaciones o nue-
vos desarrollos se tiene que crear una nueva carpeta virtual en donde quedaran alojados
todos los desarrollos.
Esto no quiere decir que no se creara un directorio físico en la versión como se hacia con
anterioridad, es decir, se seguirá creando un directorio físico al momento de definir un
directorio virtual en el administrador de desarrollos, pero este solo servirá para editar de-
terminados tipos de objetos como son los reportes y al término de su edición se tendrán
que importar de acuerdo a la metodología aquí expuesta.
Training & Professional Development

Analicemos entonces cuales serán los pasos que debemos seguir para implementar ade-
cuaciones y nuevos desarrollos en Intelisis ERP:
1. Desde Intelisis ERP dirígete a Intelisis > Utilerías > Administracion de desarrollos
2. En la pantalla que se muestra a continuación tenemos las siguientes opciones:
•• Barra de herramientas. En esta barra encontramos opciones como: 163

•• Guardar. Permite guardar la carpeta virtual creada


•• Nuevo. Genera una nueva carpeta virtual
•• Eliminar. Elimina la carpeta virtual seleccionada
•• Importar. Esta opción permite llamar una nueva pantalla desde donde se
puede selecciona un archivo o archivos que se implementaran
•• Generar Especiales. Esta opción aplica solo si cuentas con el código original
de la versión SDK para poder generar un nuevo archivo esp que se implanta-
rá en Intelisis ERP.
•• Botones de desplazamiento. Estos botones permiten desplazarse entre las
diversas carpetas virtuales que se tengan designadas.
•• Buscar. Este campo permite realizar una búsqueda por palabra en la lista de
directorios.
•• Lista de Directorios. Esta lista muestra todos los directorios virtuales creados
para esta base de datos.

•• Directorio. Este campo permite especificar el nombre del directorio.


•• Descripción. Este campo permite especificar una breve descripción de lo que
se almacenará en el directorio virtual.

Powered by Intelisis Software




•• Tabla de Objetos. Esta sección muestra la lista de todos los objetos importa-
dos en la versión de Intelisis ERP, si se da clic con el botón derecho del mouse
sobre la lista se tiene un par de opciones que permiten eliminar el objeto se-
leccionado o extraer el código que tiene ese objeto.

164

3. Primero lo que tenemos que realizar es la definición de un directorio virtual des-


de donde se contendrán todos los desarrollos a implementar.
4. Posteriormente se debe seleccionar el directorio virtual creado en el paso an-
terior y dar clic en el botón Importar en donde se mostrará una pantalla con lo
siguiente:
•• Origen: Esta sección permite definir el archivo o carpeta con archivos que se
implementaran.

•• Destino. En esta sección se mostrará el directorio virtual donde se implemen-


tarán las modificaciones.
•• Archivos de desarrollo. En esta sección se muestran todos los archivos a pro-
cesar.
5. El siguiente paso es dar clic en el botón Procesar para que se lean y valide el có-
digo de cada uno de los archivos a importar.
6. Una vez que termine la siguiente pantalla nos permitirá ver que objeto se está
implementando, el código original del objeto, el código nuevo y el especial que
se aplicara a la versión de Intelisis ERP.
7. Una vez que se finalice la importación de los objetos nuevos o modificados el
siguiente paso es abrir la configuración general de la empresa en la pestaña de
Desarrollo en donde se debe definir el directorio virtual de desarrollos creado
desde el administrador de desarrollos.
8. Al volver a darse de alta con las credenciales de acceso a Intelisis ERP se nos soli-
citara que se cree el nuevo directorio físico con el mismo nombre del directorio
virtual generado mediante el administrador de desarrollos.


PRACTICA 4-3 Crear Un Especial Para Mostrar Los


Cambios Del Módulo De Ventas En Intelisis
Objetivo
165 Al término de este ensayo el participante:
•• Podrá crear un especial para mostrar los cambios realizados en el SDK en la
versión normal de Intelisis.
1. Desde un Explorador de Archivos, abre la carpeta del proyecto CursoSDK, crea
una nueva carpeta denominada ObjetosImplementarSDK y busca los archivos,
[Link], [Link] y [Link], selecciónalos y cópialos
2. Pega los archivos copiados en el paso anterior a la carpeta ObjetosImplementar-
SDK
3. Desde Intelisis SDK ve al menu Herramientas > Generador de Objetos Especiales

4. En la pantalla que se muestra asigna la ruta de la carpeta ObjetosImplementarS-


DK en la sección Origen, dentro del campo Carpeta

5. En la sección Destino asigna la carpeta CursoSDK, pues sera en esta carpeta don-
de se alojara el archivo especial que se generara.

6. Da clic en el boton Procesar y en la siguiente pantalla da clic en el botón Guar-


dar ESP, guarda tu archivo como [Link] y asignale la ruta de la carpeta
cursoSDK
Training & Professional Development

7. Da clic en el boton Cerrar y cierra el Generador de Objetos Especiales


INTEGRACIÓN CON INTELISIS ERP
8. Abre Intelisis ERP con las credenciales de acceso que se tienen disponibles para
la base de datos con la que se este trabajando.
9. Dirigete a la siguiente ruta Intelisis > Utilerías > Administración de Desarrollos 166
10. En la siguiente pantalla da clic en el boton Nuevo y asigna los siguientes valores
•• Directorio: DesarrolloSDK
•• Descripción: Directorio de integración de desarrollos de curso SDK

11. Da clic en el botón Guardar y posteriormente selecciona el directorio Desarro-


lloSDK
12. Da clic en el botón Importar y en la siguiente pantalla da asigna la ruta del archi-
vo [Link]

13. Da clic en el botón Procesar y posteriormente da clic en el botón Aceptar


14. Abre el explorador de archivos y dentro de la carpeta cursoSDK crea una nueva
carpeta denominada ObjetosNuevosIntegracion
15. Copia los siguientes archivos a la carpeta creada en el punto anterior
•• [Link], [Link], [Link], CategoriaCurso-
[Link]
•• [Link], [Link], [Link]
•• [Link], [Link], [Link]
16. Regresa al administrador de desarrollos, selecciona nuevamente la carpeta Desa-
rrolloSDK y da clic en el boton Importar.

Powered by Intelisis Software




17. Ahora en el campo Carpeta de la sección Origen asigna la ubicacion de la carpeta


ObjetosNuevosIntegracion y da clic en el botón Procesar

167

18. Cierra el administrador de desarrollos y dirigete a la configuración general de la


empresa
19. Activa la pestaña Desarrollo y del menú de Directorio de Objetos especiales da
clic en la carpeta DesarrolloSDK
20. Guarda y cierra la ventana de configuración de la empresa
21. Dirigete a Intelisis > Herramientas > Cambiar Empresa / Usuario y vuelve a ingre-
sar tus credenciales de acceso a Intelisis ERP
22. Cuando se te solicite crear la carpeta DesarrolloSDK y su respaldo acepta la crea-
ción de ambos directorios
23. Ingresa al módulo de Ventas y verifica que el desarrollo esta funcionando correc-
tamente
Training & Professional Development

Creación y Modificación de Diálogos.


Los diálogos (Figura 4.11) se utilizan comúnmente para:
•• Desplegar opciones del Menú Principal
•• Desplegar opciones durante las afectaciones de los movimientos. 168

Figura 4.11 Los objetos de tipo Diálogos los podemos observar en el menú principal de Intelisis o en los modulos
de tipo Movimiento como Ventas o Compras.

Al hablar de modificar un Diálogo, se trata de agregar o quitar una opción, modificar el


nombre de una ya existente o modificar la acción de esta. Por ejemplo, la empresa Rebasa
tiene dos series de facturas, la serie A y B y cuando afecta un pedido, necesita que muestre
que serie necesita. Los pasos a seguir son:
A. Ubicar el objeto que se desea modificar. A diferencia de las formas, no podemos co-
nocer el nombre del diálogo colocándonos en este y oprimiendo SHIFT + CTRL + ALT
+ F2, por lo que vamos a considerar que sabemos el nombre del diálogo, el cual es
“[Link]”.
B. Una vez que conoce el nombre del diálogo, se sugiere hacer una copia del archivo
y guardarlo en otra carpeta para que posteriormente lo regrese a la carpeta “Codigo
Original”. Entre al SDK, abra el diálogo y pase a la carpeta “Acciones”. Como podrá ver,
aparecen las acciones más comunes para un Pedido, como Factura, Remisión, Nota,
etc. y además aparecen unas que nunca han estado activadas, como Otros1, otros2,
…, OtrosN, las cuales utilizaremos para nuestro ejemplo, pero antes tenemos que ver
cómo está definida la acción Factura. Para ver cómo funciona esta acción, selecciónela
con el cursor y oprima el botón “Editar”, aparecerá la forma de la acción con los datos
siguientes:

Powered by Intelisis Software




Carpeta “Datos Generales”


•• Tipo de Acción = Dialogos
•• Clave Acción: GenerarPedidoPendiente
Carpeta “Opciones”
169 •• Opción “Visible” habilitada.
•• Opción “Activo” habilitada.
•• Expresiones Antes de Ejecutar:
Asigna([Link], [Link])
Asigna([Link], ‘Generar ‘+Comillas([Link])+’ de
‘+Comillas([Link]))
Una vez que se observaron las opciones y expresiones utilizadas, oprima el botón “Cance-
lar” para no modificar el diálogo y regresar a la carpeta “Acciones”.
C. El siguiente paso será copiar algunas opciones y expresiones a las acciones Otros1
y Otros2. Edite la Acción “Otros1”, ubique la carpeta “Datos Generales”, coloque en el
“Nombre a Desplegar” el valor “Generar Factura &A”, el “Tipo de Acción” será “Diálogos”
y la “Clave Acción” coloque “GenerarPedidoPendiente”. Pase a la carpeta “Opciones” y
active las opciones “Visible”, “Activo” y “Expresiones Antes de Ejecutar”. Dentro del cam-
po que se activó con esta última opción coloque la expresión siguiente:
Asigna([Link], ‘Factura A’)
Asigna([Link], ‘Generar ‘+Comillas([Link])+’ de
‘+Comillas([Link]))
Oprima el botón “Aceptar” y regresará a las Acciones del Diálogo.
D. Edite la Acción “Otros2” y repita el punto anterior sustituyendo “Factura A” por
“Factura B”.
E. Edite la Acción “Factura” y dentro de la carpeta “opciones” deshabilite la opción “Ac-
tivo”. Esto permitirá que solo aparezcan las opciones Factura A y B y no Factura. Oprima
el botón “Aceptar” y regresará a la lista de Acciones del Diálogo. Oprima nuevamente el
botón “Aceptar” para guardar los cambios del Diálogo.
F. Hecha la modificación, abra el Diálogo y verifique que la opción “Generar Factura”
no aparezca y las opciones “Generar Factura A” y “B” aparezcan. El Diálogo se mostraría
posiblemente como lo muestra la figura de la derecha, pero puede cambiar dependien-
do de la configuración de la empresa y del usuario.
G. Si el resultado es correcto, diríjase al directorio “Codigo Original” del SDK, ubique el
archivo “[Link]” y utilice el método que desee para generar el archivo Esp.
Training & Professional Development

El resultado sería el siguiente:


[[Link]/[Link]]
Activo=

[[Link]/Acciones.Otros1]
TipoAccion=Dialogos
NombreDesplegar=Generar Factura &A 170
ClaveAccion=GenerarPedidoPendiente
Activo=S
Antes=S
Visible=S
AntesExpresiones=Asigna([Link], <T>Factura A<T>)<BR>Asigna(Info.
TituloDialogo, <T>Generar <T>+Comillas([Link])+<T> de <T>+Comi-
llas([Link]))

[[Link]/Acciones.Otros2]
TipoAccion=Dialogos
NombreDesplegar=Generar Factura &B
ClaveAccion=GenerarPedidoPendiente
Activo=S
Antes=S
Visible=S
AntesExpresiones=Asigna([Link], <T>Factura B<T>)<BR>Asigna(Info.
TituloDialogo, <T>Generar <T>+Comillas([Link])+<T> de <T>+Comi-
llas([Link]))

Diferencias entre objeto especial y objeto especial


con variables.
Las variables dentro del SDK, una vez definidas y compilado Intelisis, no pueden ser mo-
dificadas, es decir que no podemos cambiar el nombre a desplegar o la ayuda en captura,
pero si podemos generar nuevas variables. El lugar donde se guardan todas las variables
se encuentra en la carpeta “Código Original” en el archivo [Link]. Este archivo tam-
bién contiene caracteres ASCII que puede ser abierto con el Bloc de Notas. Para agregar
una variable con objeto especial se deberá hacer lo siguiente:
1. Dentro del SDK, menú Aplicación, opción variable, podremos entrar al editor de
variables.
2. Agregar las variables con las características necesarias.
3. Editar el archivo [Link] y una vez dentro, buscar las variables que se
acaban de insertar y copiar el texto estas con sus propiedades, normalmente se
encontrarán hasta el final del archivo.
4. Abrir un nuevo archivo de texto con el bloc de notas y pegar el texto de las
variables.

Powered by Intelisis Software




5. Colocar al principio del archivo:


[Variables]
ListaVariables=[Link]<BR>Info.NuevaVariable2
Donde [Link] y Info.NuevaVariable2 son las “n” nuevas variables, por lo que
deberá reemplazarse el nombre de estas.
171
Además, colocar las propiedades de dicha variable, por ejemplo:
[[Link]]
Grupo=Info
Clave=NuevaVariable
Tipo=Texto
Nombre=Nueva Variable
Tamano=20
AyudaEnCaptura=No
OpcionesPredefinidas=Ninguna
Mayusculas=S
6. Guardar el archivo en la carpeta donde se encuentra el ejecutable de Inte-
lisis, indicando como nombre de archivo “[Link]”
Las diferencias entre un objeto especial y uno de variables son:
1. La ubicación del objeto especial es en el DOE, mientras que el de variables es en
la carpeta de Intelisis.
2. El nombre del archivo de variables necesariamente debe ser [Link].
3. El objeto especial permite modificar las propiedades del objeto, mientras
que la variable solo permite insertar nuevas.
4. La estructura del código para las variables no se requiere poner el nombre
del objeto, ya que no aplica a uno en particular.
5. Dichas variables son reconocidas solamente al ejecutar [Link], es decir que
no basta con cambiar de usuario, como es el caso de los objetos especiales.
Training & Professional Development

PRACTICA 4-4 Creación De Diálogos Con SDK


Objetivo.
Al término de este ensayo el participante podrá
•• Crear diálogos mediante SDK para el módulo de ventas. 172
•• Mostrará este dialogo en el menú de configuración de la versión estándar de In-
telisis.
•• Crear un especial para el dialogo que se creara
•• Agregar al tablero de control el módulo de TieneInfo.
•• Dar acceso al usuario para el módulo de Información Adicional
CREACION DE DIALOGOS
1. Desde la ventana principal del SDK ve a la pestaña Diálogos y da doble clic a
Agregar Dialogo.

2. En la ventana que aparece asigna los siguientes parámetros:


•• Clave: TieneInfo
•• Título: Menú
•• Tipo de Diálogo: Menú.

3. Ve a la pestaña Acciones y da clic en el botón Agregar…


4. En la ventana Acción asigna las siguientes características:
•• Clave: Categoría
•• Nombre a Desplegar: Categoría Curso
•• Tipo de Acción: Formas
•• Clave Acción: CategoriaCurso

Powered by Intelisis Software




5. Crea una segunda acción con los siguientes parámetros:


•• Clave: Familia
•• Nombre a Desplegar: Familia Curso
•• Tipo de Acción: Formas
173 •• Clave Acción: FamiliaCurso
6. Regresa a la pestaña de Datos Generales y da clic en el botón Otras Opciones
7. En la siguiente ventana selecciona Centrado de la sección Posición Inicial y Dia-
logo en la sección Tipo de Marco.

8. Da clic en Aceptar para cerrar el cuadro Otras Opciones y luego presiona Pre-
liminar, para pre visualizar el cuadro de dialogo. Verifica que al seleccionar las
opciones aparecen las formas que se invocaron.
Training & Professional Development

9. Cierra el dialogo TieneInfo y abre el dialogo MenuPrincipal


10. Dentro de la pestaña acciones crea un nuevo menú en la columna Menú Princi-
pal por debajo de &RH denominado CursoSDK

174

11. Agrega una nueva acción con las siguientes propiedades:


•• Clave: [Link]
•• Nombre a Desplegar: Información Adicional
•• Tipo de Acción: Diálogos
•• Clave Acción: TieneInfo
•• Menú: CursoSDK

12. Cierra la ventana de la acción y cierra el dialogo MenuPrincipal.

Powered by Intelisis Software




13. Abre el dialogo MenuRepVentas y dentro dela pestaña Acciones define la si-
guiente acción:
•• Clave: VtasCliente
•• Nombre a Desplegar: Ventas por Cliente
175 •• Tipo de Acción: Formas
•• Clave Acción: EspecificarDatos
14. Presiona el botón Play que aparece en la barra de herramientas del SDK de Inte-
lisis para abrir la versión Estándar del mismo, asigna los permisos necesarios al
usuario para que pueda ver el nuevo menú CursoSDK y revisa el menú Reportes
> Ventas >Ventas por Cliente y verifica que funcione correctamente la invocación
a las formas.

CREACION DEL OBJETO ESPECIAL PARA EL DIALOGO


15. Abre un explorador de Windows y busca los archivos [Link] y Me-
[Link] dentro de la carpeta de CursoSD, cópialos y pégalos dentro de la
carpeta ObjetosImplementarSDK
16. Abre el Generador de Objetos Especiales y asigna la ruta de la carpeta Objeto-
sImplementarSDK
17. En la carpeta Destino asigna la carpeta CursoSDK
18. Genera nuevamente el archivo especial sustituyendo al que estaba anteriormen-
te con el mismo nombre
19. Cierra el Generador de Objetos Especiales e ingresa nuevamente a Intelisis ERP
20. Abre al administrador de desarrollos y desde la sección donde estan los objetos
importados selecciona cada objeto de venta, da clic con el boton derecho y se-
lecciona Eliminar, para quitar la tabla, vista y forma de la carpeta DesarrolloSDK
21. Da clic en el boton Importar y carga el archivo [Link] para cargar los cam-
bios de ventas y de los dialogos modificados.
22. Cierra el administrador de desarrollos y reinicia Intelisis ERP para visualizar los
cambios
Training & Professional Development

ASIGNAR PERMISOS AL USUARIO PARA ACCEDER A INFORMACION ADICIONAL


23. Desde SQL Server crea una nueva consulta desde la cual ejecutaras el procedi-
miento spALTER_TABLE para agregar un campo denominado permisoTieneInfo
a la tabla Usuario
EXEC spALTER _ TABLE ‘Usuario’, ‘permisoTieneInfo’,’bit DEFAULT 0’
24. Regresa al SDK de Intelisis, dirígete a la pestaña de Diccionario de Datos y abre 176
la tabla Usuario
25. Despliega el contenido de la pestaña SQL y da clic en el botón Generar SQL, en la
ventana que se muestra a continuación da clic en Si

26. Activa la pestaña de Datos Generales y da clic en el botón Actualizar Campos.


27. Da doble clic sobre el campo permisoTieneInfo que está en la columna Lista de
Campos y en la pestaña Edición escribe 0 en el campo Valor por Omisión.

28. Cierra la tabla para guardar tus cambios y abre la vista Usuario.
29. En la vista Usuario selecciona la pestaña Vista y da clic en el botón Generar Vista
30. En la siguiente ventana selecciona el campo permisoTieneInfo que aparece en la
columna Usuario y da clic en Aceptar.
31. Cierra tu vista para guardar los cambios y abre la forma UsuarioCfg.

Powered by Intelisis Software




32. Con la forma UsuarioCfg abierta da doble clic sobre la carpeta Opciones, ve a
la pestaña Campos y agrega el campo [Link] a la columna
Campos en Carpeta.
33. Cierra tu forma para guardar los cambios y prueba que aparece el check en la
ventana de configuración del usuario desde Intelisis.
177

34. Regresa al SDK de Intelisis y en la pestaña Diálogos abre el dialogo MenuPrincipal


35. Con el dialogo MenuPrincipal abierto, activa la pestaña Acciones, da doble clic
sobre la acción TieneInfo y luego da clic sobre la pestaña Opciones
36. Dentro de la pestaña Opciones activa la opción Activo y luego da clic sobre el
botón de tres puntos para abrir el Editor de Expresiones

37. Selecciona y da doble clic sobre la variable global [Link] para


agregarlo al editor.
38. Cierra el Editor de Expresiones y cierra el dialogo para guardar los cambios.
39. Vuelve a generar tu archivo especial con los cambios generados e integralo a la
versión mediante tu administrador de desarrollos
Training & Professional Development

Generador de vistas especiales


Dentro de la configuración de Intelisis se tiene una herramienta capaz de crear un código
especial para generar modificaciones a las vistas preestablecidas en los exploradores de
Intelisis y también en los tableros de control (Figura 4.12).
178

Figura 4.12 El generador de vistas especiales permite agregar campos adicionales a las formas de tipo Hoja
e Icono, mediante el uso de sentencias SQL asistidas en su asistente

Para acceder a esta herramienta tenemos que seguir la siguiente ruta:


Intelisis > Configuración > Generador de vistas especiales
Una vez dentro de la herramienta podremos varias opciones, dentro de las cuales se en-
cuentra un menú con una lista de todas las vistas que ya están preinstaladas dentro de la
base de datos de Intelisis (Figura 4.13).

Powered by Intelisis Software




Una vez seleccionada la vista que deseamos modificar podemos proceder a la sección baja
del generador, en la parte izquierda encontremos una seria de pestañas (Figura 4.14) que
nos permitirán introducir los campos o tablas que deseemos utilizar para incluir los ele-
mentos deseados a nuestra vista, así mismo podremos filtrar, ordenar y unir otras tablas,
aunque hay que tener cuidado con el uso de la condicional WHERE en esta sección ya que
179 en algunas ocasiones no devuelve los resultados esperados debido a que crea un INNER
JOIN y no hace un JOIN tradicional, por lo que es recomendable hacer esta operación con
sumo cuidado y de preferencia probarlo en el servidor de SQL para visualizar si el resulta-
do que arroja la creación de esta vista es lo que deseamos mostrar.

Figura 4.14 La sección izquierda de la pantalla


se muestra una serie de pestañas con cláusulas
de SQL dentro de las cuales se debe escribir el
nombre de los campos que se desean consultar
de la base de datos y que serán incorporados a
la nueva vista

Una vez introducido el cambio que tendrá nuestra vista lo que a continuación debemos
hacer es presionar el botón Ejecutar, el cual hará que se regenere nuestra vista mostrando
hasta el final de la sentencia de SQL el o los campos que se introdujeron.
Por otro lado, si se desea regresar al código SQL original que se tenía en la vista antes de su
modificación tenemos la posibilidad de hacerlo mediante el acceso a la pestaña de Vista
Original (Figura 4.15).

Figura 4.15 Las pestañas que se muestran del lado derecho permiten ver la vista modifica mediante las sentencias
SQL que se hayan incluido o bien ver la vista original sin modificaciones
Training & Professional Development

El siguiente paso es generar el código especial que hará que estos cambios se vean refleja-
dos en nuestro explorador de Intelisis, para ello debes presionar el botón Generar Anexo.

180
Una vez que se muestre el código en pantalla, es necesario guardarlo en la carpeta de ob-
jetos especiales que se haya definido dentro de nuestra instalación de Intelisis.
Lo que hay que hacer a continuación para que los cambios realizados por este archivo
especial se vean reflejados en nuestra versión de Intelisis es reiniciar el sistema y posterior-
mente ingresar al explorador o tablero de control y crear una vista con el campo que se
acaba de ingresar.

Powered by Intelisis Software




PRACTICA 4-5 Creación de una vista especial


Objetivo.
Al término esta práctica el participante podrá crear modificaciones a las vistas pre estable-
181 cidas de los tableros de control y exploradores, agregando campos adicionales.
1. Abre la versión Estándar de Intelisis y dirígete a Configurar > Generador de Vistas
Especiales.
2. En el menú Vista selecciona la opción VentaA y en la pestaña SELECT escribe ven-
[Link]

3. Da clic en el botón Ejecutar y al final de la pestaña Vista Nueva deberá aparecer


el nuevo campo en el código SQL.

4. Presiona ahora el botón Generar Anexo y cierra la ventana de Generador de Vis-


tas Especiales.
Training & Professional Development

5. En la ventana que se encuentra presente da clic en Guardar y guarda el archivo


especial en la carpeta DOE/Resultado con el nombre que te da de forma preter-
minada

182

6. Ve ahora a Comercial > Ventas y en el tablero de control da clic con el botón de-
recho del mouse, del submenú selecciona la opción Personalizar Vista

7. En la siguiente ventana da clic en Nueva… y en la siguiente ventana selecciona


TieneInfo de la columna Lista Disponible y agrégalo a la columna Lista en Uso

8. Asígnale un nombre a tu vista, da clic en Aceptar y luego en Seleccionar, verifica


al momento de realizar esto como se modifica tu tablero de control, en el cual
ahora aparece la columna TieneInfo.
Powered by Intelisis Software


183
05

Detalles y Explora-
dores

Powered by Intelisis Software


Training & Professional Development

PRACTICA 5-1 Creación De Un Segundo Detalle


Objetivo: Al término de este ensayo el participante podrá agregar una segunda vista de
detalle a un formulario ya existente en Intelisis Estandar.
1. Abre una nueva consulta en SQL Server y crea una nueva tabla denominada Ven-
186
taDCurso
IF NOT EXISTS(SELECT * FROM sysobjects WHERE Type=’u’ AND NAME=’VentaDCur-
so’)
CREATE TABLE VentaDCurso(
ID int NOT NULL,
Renglon FLOAT NOT NULL,
Categoria VARCHAR(50) NOT NULL,
Sucursal INT NULL,
Condicion VARCHAR(50) NULL,
Usuario VARCHAR(10) NULL,
UltimoCambio DATETIME NULL
CONSTRAINT pkVentaDCurso PRIMARY KEY (ID,Renglon)
)
2. Regresa al SDK de Intelisis y en la pestaña Diccionario de Datos crea una nueva
tabla con las siguientes características:
•• Clave: VentaDCurso
•• Nombre: VentaDCurso
•• Tabla Fisica: VentaDCurso

Powered by Intelisis Software




3. Da clic en la pestaña Llaves y crea las siguientes relaciones:


•• Primera Relación
•• Relación de Tipo Opcional
•• Nombre: CategoriaCurso
187 •• Tabla Local: VentaDCurso
•• Tabla Relacionada: CategoriaCurso
•• Llave Local: Categoria
•• Llave Remota: Categoria

•• Segunda Relación
•• Relación de tipo Opcional
•• Nombre: Sucursal
•• Tabla Local: VentaDCurso
•• Tabla Relacionada: Sucursal
•• Llave Local: Sucursal
•• Llave Remota: Sucursal
Training & Professional Development

•• Tercera Relacion
•• Relacion de tipo Opcional
•• Nombre: Condicion
•• Tabla Local: VentaDCurso
•• Tabla Relacionada: Condicion 188
•• Llave Local: Condicion
•• Llave Remota: Condicion

4. En la columna Llave Primaria asigna los campos ID y Renglon

5. Selecciona la pestaña Configuracion y desactiva las opciones Sucursal e ID de la


columna Controles de la Tabla

Powered by Intelisis Software




6. Sin dejar la pestaña de Configuracion activa las opciones Ultimo cambio y Usua-
rio Cambio, posteriormente desactiva la opción Usuarios

189

7. Regresa a la pestaña de Datos Generales y da doble clic sobre el campo Categoria


8. En la siguiente pestaña selecciona la pestaña Ayuda en Captura y asigna los si-
guientes parámetros
•• Activa la opción Vista
•• Forma: CategoriaCursoLista
•• Vista:CategoriaCurso
•• Campo: [Link]
•• Activar la opción Permite selección multiple

9. Activa ahora la pestaña Validacion, selecciona la opción Tablas de Validacion y


agrega el campo CategoriaCurso
Training & Professional Development

10. Presiona el botón Aceptar y da doble clic sobre el campo Condicion.


11. En la ventana que se presenta a continuación, abre la pestaña Ayuda en Captura
y asigna los siguientes parámetros:
•• Activa la opción Vista
•• Forma: Condicion 190
•• Vista: Condicion
•• Campo: [Link]

12. Selecciona la pestaña Validacion, activa la opción Tablas de Validacion y agrega


el campo Condicion.

13. Ve ahora a la pestaña Edición y escribe lo que se te pide:


•• Campo Valor por Omision: [Link]
•• Campo al Cambiar: Asigna([Link],Condicion)

Powered by Intelisis Software




14. Repite los pasos 11, 12 y 13 para el campo Sucursal tomando en cuenta los si-
guientes parámetros
•• Pestaña Ayuda en Captura
•• Activa la opción Vista
191 •• Forma: SucursalLista
•• Vista: Sucursal
•• Campo: [Link]
•• Pestaña Validacion
•• Seleccionar la opción Tablas de Validacion
•• Campo a configurar Sucursal
•• Pestaña Edicion
•• Campo Valor por Omision: [Link]
•• Campo al Cambiar: Asigna([Link],Sucursal)
15. Cierra tu tabla para guardar los cambios, ve a la pestaña Vistas y genera una nue-
va Vista
16. En la siguiente ventana escribe los siguientes parámetros:
•• Clave: VentaDCurso
•• Nombre: VentaDCurso
17. Ve a la pestaña Vista, asigna los siguientes parámetros:
•• mueve las tablas VentaDCurso, CategoriaCurso, Condicion, Sucursal a la co-
lumna Tablas a Usar
•• en el menú Tabla Principal selecciona VentaDCurso
•• Activa las opciones Capturas, Reportes y Consultas y Usar JOIN
•• Da clic en el botón Generar Vista
Training & Professional Development

18. En la siguiente ventana activa los siguientes campos


•• Tabla VentaDCurso todos los campos
•• Tabla CategoriaCurso: Descripcion
•• Tabla Sucursal: Nombre
•• Tabla Condicion: TipoCondicion, DiasVencimiento, PorMeses, Meses, PorSe- 192
manas, Semanas

19. Cierra las ventanas de la Vista y ve a la pestaña Formas desde donde abriras la
forma Venta
20. Da clic en el botón Agregar que esta en la columna Lista de Carpetas
21. En la siguiente pantalla asigna las siguientes características:
•• Clave: Detalle2
•• Vista: VentaDCurso
•• Estilo: Hoja
•• Activa la opción Permite Editar, Detalle, Orden y Paginación
•• Zona: B1

Powered by Intelisis Software




22. Ve a la pestaña Campos y agrega los campos: [Link], Categoria-


[Link], [Link], [Link], [Link]-
dicion, [Link]

193

23. Ve a la pestaña Detalle y asigna los siguientes valores:


•• Vista Local, configura el campo [Link]
•• Vista Maestra, tabla Venta y configura el campo [Link]

24. Activa la pestaña Opciones, selecciona la opción Control Renglon para que por
cada detalle insertado se vaya generando un numero de 1024 en 1024 y en el
menú Campo selecciona la opción [Link]

25. En la pestaña Orden y Paginación mueve los campos [Link] y VentaD-


[Link] a la columna Orden
Training & Professional Development

26. Cierra la ventana de la Carpeta Detalle2 y abre la carpeta Detalle


27. En la pestaña de Datos Generales activa la opción Pestaña y cierrala
28. Presiona el botón Preliminar y realiza un movimiento de venta.
29. Una vez que culmines cierra la ventana de la forma, cierra la forma Venta y abre
la tabla VentaDCurso
194
30. Da doble clic en el campo Sucursal, habilita la pestaña Edicion y en el campo al
Cambiar modifica el código que aparece en el campo por:
Asigna([Link], VentaDCurso:[Link])
31. Regresa a la forma Venta, pre visualiza la forma crea un nuevo movimiento y
verifica los cambios en la pestaña VentaDCurso.

Powered by Intelisis Software




Creación de un tableros de control


Cuando se abre cualquier modulo dentro de Intelisis ERP, siempre se presenta una ventana
en la cual se pueden controlar todos los movimientos que se han generado dentro del
módulo, a esta ventana se le conoce como Tablero de Control (Figura 5.1).
195

Figura 5.1 Un tablero de control es una pantalla que se muestra al abrir algún modulo y mediante el cual se per-
mite administrar todos los registros almacenados en él.

Desde SDK es posible desarrollar todo un tablero de control para los nuevos módulos que
se pretendan crear e implementar en Intelisis ERP.
Para activar las opciones de un tablero de control se deberá tener una objeto tipo forma
y dentro de las opciones de la pestaña de Datos Generales activar la opción Manejo por
Documentos y posteriormente seleccionar Configurar Dialogo Abrir (Figura 5.2)

Figura 5.2 Para configurar un tablero de control se debe presionar el botón Configurar Diálogo Abrir que se
encuentra en la pestaña Datos Generales de cualquier objeto tipo Forma
Training & Professional Development

En la siguiente ventana que se presenta nos muestra activada de forma predeterminada la


pestaña Iconos dentro de la cual contamos con las siguientes secciones:
•• Estilos por Omisión. En esta sección se presentan tres opciones que son: Detalles,
Iconos Pequeños e Iconos Grandes. Desde aquí podremos elegir la forma en cómo
se van a mostrar en la pantalla los movimientos dentro del tablero de control.
196

•• Alienación: Estas dos opciones permiten alinear los movimientos.

•• Limitar Consulta: Al activar esta opción podemos especificar la cantidad de regis-


tros que se van a mostrar en el tablero de control de forma predeterminada son
200

•• Nombre a Desplegar: En esta sección se especifica el campo de la tabla base con


la que se esta trabajando, este se mostrará en la primera columna del tablero de
control, en tanto que el campo subtitulo permite especificar el nombre que llevara
la primera columna y en caso de ser numérico podemos activar la opción que se
muestra del lado izquierdo.

Powered by Intelisis Software




•• Totalizadores: Esta nueva opción incorporada a partir de la versión 4000 de SDK


permite habilitar una segunda sección para los totalizadores, para que sea visible
esta sección se debe especificar la cantidad de espacio en pixeles. Una vez activa-
da esta opción se debe de ir a la pestaña de Campos, colocar el campo que se va a
mostrar en la segunda sección y activar la opción Sección 2 que se encuentra en la
197 parte inferior derecha de la pantalla.
Training & Professional Development

PRACTICA 5-2 Creación de un tablero de control


Objetivo: Al término de este ensayo el participante podrá crear:
•• Utilizará nuevas acciones como la exportación a Excel
•• Usará el comando SQLenLista para mostrar información en el tablero 198
•• Hará uso de los filtros múltiples y generales
1. Abre SQL Server y desde ahí utiliza el comando spALTER_TABLE para agregar a la
tabla FamiliaCurso un nuevo campo denominado Categoria.
EXEC spALTER _ TABLE ‘FamiliaCurso’, ‘Categoria’,’VARCHAR(50) NULL’
2. Ve al SDK de Intelisis en la pestaña Diccionario de Datos abre la tabla FamiliaCur-
so, da clic en la pestaña SQL y da clic en el botón Generar SQL
3. Dirígete a la pestaña Llaves y agrega una nueva Relación con las siguientes ca-
racterísticas
•• Tipo de relación Opcional
•• Nombre: CategoriaCurso
•• Tabla Relacionada: CategoriaCurso
•• Llave Local: Categoria
•• Llave Remota: Categoría

4. Regresa a la pestaña Datos Generales, da clic en el botón Actualizar Campos y


luego da doble clic sobre el campo categoría
5. En la siguiente ventana ve a la pestaña Ayuda en Captura y selecciona la opción
Expresión

Powered by Intelisis Software




6. Abre la pestaña Expresión, da clic en el botón de tres puntos para abrir el Editor
de Expresiones y utiliza la función SQLEnLista para desplegar las categorías al-
macenadas en la tabla CategoriaCurso.
SQLEnLista(‘SELECT Categoria FROM CategoriaCurso’)

199

7. Activa la pestaña Validación, selecciona la opción Tablas de Validación y configu-


ra el campo CategoriaCurso
8. Cierra la tabla FamiliaCurso para guardar los cambios y ahora abre su vista
9. Ve a la pestaña Vista, agrega la tabla CategoriaCurso, activa la opción Usar JOIN
y da clic en el botón Generar Vista

10. En la siguiente ventana agrega los campos Categoria de la columna FamiliaCurso


y Descripción de la columna CategoriaCurso

11. Cierra tu vista para guardar los cambios y ahora abre la forma FamiliaCurso
12. Da doble clic sobre la carpeta Lista y en la pestaña de Datos Generales activa la
opción Desplegar Campos
13. Ve a la pestaña Campos y agrega le campo [Link] a la columna
Campos en Carpeta
Training & Professional Development

14. Cierra la forma para guardar los cambios y crea una nueva forma
15. En la siguiente ventana asigna las siguientes características:
•• Clave: FamCursoLista
•• Título: Seleccionar Familia
•• Activar la opción Barra Herramientas 200

16. Agrega una nueva Carpeta con los siguientes datos:


•• Pestaña Datos Generales
•• Clave: Lista
•• Vista: FamiliaCurso
•• Activar la opción Filtros
•• Pestaña Campos
•• Agrega los campos [Link] y [Link]
•• Pestaña Filtros
•• En el campo Filtro General(SQL) escribe el siguiente código:
[Link]=’{[Link]}’
17. Cierra a la ventana de la carpeta Lista y en la pestaña de Datos Generales selec-
ciona Lista del menú Carpeta Principal.
18. Acciona la pestaña Acciones y agrega una nueva acción con los siguientes datos:
•• Clave: Seleccionar
•• Nombre a Desplegar: Seleccionar
•• Tipo de Acción: Ventana
•• Clave Acción: Seleccionar
•• Seleccionar el icono 23 y activar la opción Nombre en Botón

Powered by Intelisis Software




19. Cierra la ventana de las acciones y pre visualiza tu forma.


20. Regresa a SQL server y crea una tabla denominada ArticulosCurso
IF NOT EXISTS(SELECT * FROM SYSOBJECTS WHERE ID = OBJECT _ ID(‘Preautoriza-
cion’) AND TYPE = ‘U’ )
CREATE TABLE Preautorizacion(
201 ID int identity(1,1) NOT NULL,
Cliente VARCHAR(50) NULL,
NumOrden VARCHAR(35) NULL,
Comentarios VARCHAR(150) NULL,
Categoria VARCHAR(35) NULL,
Familia VARCHAR(35) NULL,
Articulo VARCHAR(35) NULL,
TotalPzas INT NULL,
NumeroParte VARCHAR(250) NULL,
ComentariosRef VARCHAR(250) NULL,
Estatus VARCHAR(20) NULL,
FechaUltimoCambio DATETIME
)
21. Regresa a SDK de Intelisis y en la pestaña Diccionario de Datos crea una nueva
Tabla
22. En la ventana que aparece asigna los siguientes datos
•• Pestaña Datos Generales
•• Clave: Preautorizacion
•• Nombre: Preautorizacion
•• TablaFisica: Preautorizacion

•• Pestaña Llaves
•• Configurar en la columna Llave Primaria los campos ID
•• En la columna Relaciones, agrega las relaciones adecuadas de los campos
Articulo, Familia, Categoria y Cliente con las tablas Art, FamiliaCurso, Catego-
riaCurso y Cte
Training & Professional Development

•• Pestaña Configuración
•• Asegurate que la opción ID se encuentre seleccionada y que tenga asignado
el campo ID.
•• Verifica que la opción Estatus este seleccionada y en la seccion Estatus por
omisión selecciona la opcion SINAFECTAR
202
•• Verifica que la opcción Ultimo Cambio se encuentre activo con el campo Fe-
chaUltimoCambio

•• Da doble clic al campo Familia, selecciona la pestaña Ayuda en Captura y asig-


na los siguientes parametros:
•• Activar la opcion Vista
•• Forma: FamCursoLista
•• Vista: FamiliaCurso
•• Campo: [Link]
•• Activa la opcion Expresiones / Busqueda Rapida y en el campo escribe el
siguiente codigo
Asigna([Link],Categoria)
•• Activa la pestaña Validacion, selecciona la opción Tablas de Validacion y con-
figura la tabla FamiliaCurso
•• Da doble clic sobre el campo categoría, despliega la pestaña Ayuda en Captu-
ra y asigna los siguientes parámetros
•• Activar la opción Expresion
•• Abrir la pestaña Expresion y escribe el siguiente código en el campo:
SQLEnLista(‘SELECT Categoria FROM CategoriaCurso’)

Powered by Intelisis Software




•• Da doble clic sobre el campo Cliente, selecciona la pestaña Edición y activa la


opción Requerido Siempre, luego en la pestaña Ayuda en Captura define lo
siguiente:
•• Activar la opcion Vista
•• Forma: CteLista
203
•• Vista: CteA
•• Campo: [Link]
•• Activa la pestaña Validacion, selecciona la opción Tablas de Validacion y con-
figura la tabla Cte
•• Da doble clic en el campo Articulo y define las siguientes caracteristicas
•• Desde la pestaña Edición activa la opción Requerido Siempre
•• Activar la opcion Vista en la pestaña Ayuda en Captura
•• Forma: ArtLista
•• Vista: Art
•• Campo: [Link]
•• Activa la pestaña Validacion, selecciona la opción Tablas de Validacion y con-
figura la tabla Art
•• Da doble clic sobre el campo NumeroParte y define las siguientes opciones:
•• En la pestaña Despliege escribe Refacción en el campo Nombre
•• En la pestaña Edición activa las opciones Refrescar cond. Despliegue/Edición
y Toda Forma
•• Abre el campo ComentariosRef y define lo siguiente:
•• En la pestaña Despliege escribe en el campo Nombre Info Adicional y en el
campo Condición coloca la expresión ConDatos(NumeroParte)
23. Cierra la tabla para guardar sus cambios y ve a la pestaña Vista para crear una
nueva Vista con los siguientes datos:
•• Pestaña Datos Generales
•• Clave: Preautorizacion
•• Nombre: Preautorizacion
•• Pestaña Vista
•• Agregar las tablas Preautorizacion, Art, FamiliaCurso, CategoriaCurso y Cte
•• Del menú Tabla Principal seleccionar la opción Preautorizacion
•• Activar las opciones Capturas, Reportes y Consultas, Usar JOIN
•• Da clic en el botón Generar Vista
•• En la siguiente pantalla selecciona los campos Descripción de la tabla Cate-
goriaCurso, Descripción de FamiliaCurso, Descripción1 de Art, Nombre y RFC
Training & Professional Development

de Cte y todos los campos de la tabla Preautorizacion.


24. Cierra la vista que acabas de crear para guardar los cambios y crea una nueva
Forma.
25. En la siguiente ventana asigna los siguientes parámetros:
•• Clave: Preautorizacion 204
•• Título: Preautorización de Venta
•• Activa las opciones Menú y Barra de herramientas de la sección Opciones
•• En la pestaña Acciones escribe Archivo y Maestros en la columna Menú Prin-
cipal.
•• Agrega una nueva acción con los siguientes datos:
•• Clave: Categoría
•• Nombre a Desplegar: Categorías
•• Tipo de Acción: Formas
•• Clave Acción: CategoriaCurso
•• Desactivar la opción Barra de Herramientas
•• Selecciona del menú desplegable la opción Maestros de la sección Menú
•• Agrega una nueva acción con los siguientes datos:
•• Clave: Familias
•• Nombre a Desplegar: Familias
•• Tipo de Acción: Formas
•• Clave Acción: FamiliasCurso
•• Desactivar la opción Barra de Herramientas
•• Selecciona del menú desplegable la opción Maestros de la sección Menú
•• Agrega otra nueva acción con los siguientes datos:
•• Clave: Guardar
•• Nombre a Desplegar: Guardar
•• Tipo de Acción: Controles Captura
•• Clave Acción: Guardar Cambios
•• Desactivar la opción Menú
•• Selecciona el icono 3 y activa la opción Nombre en Botón.
•• Agrega una Carpeta a la cual le asignaras lo siguiente:
•• Clave: Ficha
•• Vista: Preautorizacion
•• Estilo: Ficha
•• Activar la opción: Permite Editar

Powered by Intelisis Software




•• Activa la opción Otro Nombre y en el campo de texto escribe Datos Genera-


les
•• Campos a presentar: [Link], [Link], [Link], Preau-
[Link], [Link]
•• Los campos [Link], [Link] no deben de permitirse editar ademas de-
205
beran tener el estilo Negrita y con el color de fondo Gris
•• Todos los campos deberan tener un tamaño de 30 excepto Preautorizacion.
Comentarios cuyo tamaño deberá ser 50x10
•• Agrega una segunda carpeta con los siguientes datos:
•• Clave: Cotizacion
•• Vista: Preautorizacion
•• Estilo: Ficha
•• Activar la opción: Permite Editar
•• Activa la opción Otro Nombre y en el campo de texto escribe Info. Cotización.
•• Campos a presentar: [Link], Art.Descripcion1, Preautoriza-
[Link], [Link], [Link],Preautori-
[Link],[Link]
•• El campo Art.Descripcion1 no debe permitirse que se edite y deberá tener un
estilo Negrita con un color de fondo Gris
•• Los campos [Link] y [Link] no de-
ben tener activa la opción Linea Nueva
•• Todos los campos deberán tener un tamaño de 39 excepto Art.descripcion1
que debe ser de 50 y el campo [Link] de 50x10
26. Cierra tu forma para guardar los cambios y crea una nueva vista con los siguien-
tes datos:
•• Pestaña Datos Generales
•• Clave: PreautorizacionA
•• Nombre: PreautorizacionA
•• Pestaña Vista
•• Agregar las tablas Preautorizacion, Art, FamiliaCurso, CategoriaCurso y Cte
•• Del menú Tabla Principal seleccionar la opción Preautorizacion
•• Activar las opciones Capturas, Reportes y Consultas, Usar JOIN
•• Da clic en el botón Generar Vista
•• En la siguiente pantalla selecciona los campos Descripción de la tabla Ca-
tegoriaCurso, Descripción de FamiliaCurso, Descripción1 de Art, Nombre de
Cte y todos los campos de la tabla Preautorizacion excepto Comentarios, Co-
mentariosRef y FechaUltimoCambio.
•• En la pestaña Llaves bajo la columna Busqueda Rápida especifica los siguien-
tes campos de la tabla Preautorizacion: Cliente, Categoria, Familia y Articulo
Training & Professional Development

27. Abre de nueva cuenta la forma Preautorizacion y en la pestaña Datos Generales


activa la opción Manejo por Documentos

206

28. Da clic en el botón Configurar Dialogo Abrir y asigna los siguientes parámetros:
•• Pestaña Datos Generales
•• Menú Vista selecciona PreautorizacionA
•• Activa las opciones Orden y Paginación, Búsqueda Rápida / Filtros Controles,
Menú Local.
•• Pestaña Iconos
•• Escribe [Link] en el campo Nombre a Desplegar y en el
campo Subtitulo escribe Clave Cte
•• Pestaña Campos
•• Selecciona los campos [Link], [Link], Preautori-
[Link], [Link], [Link]
•• Pestaña Búsqueda / Controles
•• Activa la opción Búsqueda Rápida, [Link], Estatus y Permite modificar
el Estatus
•• En el campo Estatus Válidos configura los siguientes estatus: (Todos), SINA-
FECTAR, PENDIENTE, CONCLUIDO, CANCELADO
•• En el menú Estatus por Omisión selecciona SINAFECTAR
•• Pestaña Filtros
•• Activa la opción Múltiple (pos Grupos)
•• En la sección Filtro Múltiple (pos Grupos) coloca en el primer menú Preauto-
[Link], [Link] y lo mismo para la segunda co-
lumna
•• Activa las opciones (Todo) y Todo (al Final)

Powered by Intelisis Software




29. Dirígete ahora a la pestaña Menú Local y crea las siguientes acciones:
•• Acción 1
•• Clave: ModificarVista
•• Nombre a Desplegar: Modificar Vista
207 •• Tipo de Acción: Controles Captura
•• Clave Acción: Mostrar Campos
•• Carpeta: (Carpeta abrir)
•• Acción 2
•• Clave: Preliminar
•• Nombre a desplegar: Presentación Preliminar
•• Tipo de Acción: Controles Captura
•• Clave Acción: Presentacion Preliminar
•• Carpeta: (Carpeta abrir)
•• Acción 3
•• Clave: Excel
•• Nombre a desplegar: Excel
•• Tipo de Acción: Controles Captura
•• Clave Acción: Enviar a Excel
•• Carpeta: (Carpeta abrir)
30. Cierra la ventana activa y agrega las siguientes acciones desde la ventana de edi-
ción de la forma Preautorizacion
•• Acción 1
•• Clave: Nuevo
•• Nombre a Desplegar: Nuevo
•• Tipo de Acción: Controles Captura
•• Clave Acción: Documento Nuevo
•• Desactiva la opción Menú
•• Asigna el icono 1 y selecciona la opción Nombre en Botón
•• Acción 2
•• Clave: Abrir
•• Nombre a Desplegar: Abrir
•• Tipo de Acción: Controles Captura
•• Clave Acción: Documento Abrir
•• Desactiva la opción Menú
•• Asigna el icono 2 y selecciona la opción Nombre en Botón
Training & Professional Development

•• Acción 3
•• Clave: Eliminar
•• Nombre a Desplegar: Eliminar
•• Tipo de Acción: Controles Captura
•• Clave Acción: Documento Eliminar 208
•• Desactiva la opción Menú
•• Asigna el icono 5 y selecciona la opción Nombre en Botón
•• Acción 4
•• Clave: Navegador
•• Nombre a Desplegar: Navegador
•• Tipo de Acción: Herramientas Captura
•• Clave Acción: Navegador (Documentos)
31. Reorganiza el orden de tus acciones de tal manera que queden de la siguiente
forma:

32. Guarda tu tabla, pre visualiza tu forma y verifica que todo esté funcionando.
33. Cierra tu forma si es que la tienes abierta y abre el dialogo MenuPrincipal.
34. Agrega una nueva acción con las siguientes caracteriticas:
•• Clave: [Link]
•• Nombre a Desplegar: Preautorización de Ventas
•• Tipo de Acción: Formas
•• Clave Acción: Preautorizacion
•• Menú: CursoSDK
35. Guarda y cierra el dialogo MenuPrincipal, genera los cambios en el archivo ESP y
pruebalo en la versión estándar de Intelisis, fando al usuario el acceso pertinente
para que pueda visualizar el nuevo menú

Powered by Intelisis Software




Procedimientos SQL en SDK


Un procedimiento SQL es aquel que permite crear un conjunto de operaciones que se rea-
lizaran dentro de una base de datos, difiere de una función debido a que la función tiene
que devolver un dato especifico dependiendo del tipo de función, que se haya creado en
209 cambio los procedimiento a pesar de que se parece un tanto a las funciones estas no nece-
sitan devolver un tipo específico de dato, sino más bien realizan una serie de operaciones
y pueden recibir una serie de datos que permiten realizar dichas operaciones de forma
sistemática y estructurada.
En el SDK de Intelisis es posible invocar los procedimientos que nosotros como desarrolla-
dores vayamos definiendo dentro de la base de datos del cliente y posteriormente invo-
carlas al momento de crear una tabla o una vista.
En el ensayo que se desarrollara a continuación se ejemplificara, el uso de un procedimien-
to programado de forma personalizada y como este nos servirá para crear componentes
dentro del SDK de Intelisis. Más adelante, abordaremos el tema de hacer uso de procedi-
mientos almacenados y desarrollados especialmente para la base de datos de Intelisis y
cuáles de estos nos es permitido modificar para las implementaciones que se estén desa-
rrollando.
Training & Professional Development

PRACTICA 5-3 Utilización de Procedimientos SQL


Objetivo: Al término de este ensayo el participante podrá hacer uso de los procedimientos
almacenados en la base de datos de Intelisis para crear sofisticadas aplicaciones dentro del
sistema.
210
1. Desde SQL Server crea una nueva consulta, dentro de la cual generaras un nuevo
procedimiento denominado xpActualizaOrden.
IF EXISTS(SELECT * FROM sysobjects AS s WHERE s.[type]=’p’ AND [Link]=’xpAc-
tualizaOrden’)
DROP PROCEDURE xpActualizaOrden
GO
CREATE PROCEDURE xpActualizaOrden
@ID INT,
@Articulo VARCHAR(30)
AS
BEGIN
DECLARE @Fecha DATETIME,
@CompraID INT,
@Orden VARCHAR(50),
@Comentarios VARCHAR(150)

--Se calcula la fecha ultima de entrada de compra


SELECT @Fecha=MAX([Link])
FROM Compra AS c
JOIN CompraD AS cd ON [Link] = [Link]
WHERE [Link]=@Articulo
AND [Link]=’Entrada Compra’
AND [Link]=’CONCLUIDO’

--Se calcula el max id en caso de tener mas de una entrada de compra del
mismo articulo en el mismo dia
SELECT @CompraID= MAX([Link])
FROM Compra AS c
JOIN CompraD AS cd ON [Link] = [Link]
WHERE [Link]=@Fecha
AND [Link]=’Entrada Compra’
AND [Link]=’CONCLUIDO’
AND [Link]=@Articulo

--Obtiene la consulta con los datos que se utilizaran en la forma de preau-


torizacion
IF EXISTS(SELECT * FROM CompraD AS cd WHERE [Link]=@CompraID AND [Link]-
lo=@Articulo)
BEGIN
SELECT @Orden=[Link]+’’+[Link],
@comentarios=’Fecha: ‘+cast([Link] AS VARCHAR(30))+CHAR(13)+-
CHAR(10)
+’Proveedor: ‘+[Link]+CHAR(13)+CHAR(10)
+’Almacen: ‘+[Link]+CHAR(13)+CHAR(10)
+’Importe: ‘+CAST([Link] AS VARCHAR(10))+CHAR(13)+CHAR(10)

Powered by Intelisis Software




+’Impuestos: ‘+CAST([Link] AS VARCHAR(10))+CHAR(13)+CHAR(10)


+’Costo: ‘+CAST([Link] AS VARCHAR(10))
FROM Compra AS c
JOIN CompraD AS cd ON [Link] = [Link]
WHERE [Link]=@Fecha
AND [Link]=’Entrada Compra’
211 AND [Link]=’CONCLUIDO’
AND [Link]=@Articulo
AND [Link]=@CompraID
END
ELSE
BEGIN
SELECT @Orden=’Sin Numero’,
@Comentarios=’El articulo seleccionado no contiene Entrada de Compra’
END

--Actualizar el registro de la tabla preautorizacion


UPDATE Preautorizacion SET NumOrden = @Orden,
Comentarios=@Comentarios,
Estatus=’PENDIENTE’
WHERE ID=@ID

IF @@ROWCOUNT <> 0
SELECT ‘Se ha actualizado la preautorizacion’

END
2. Ejecuta el procedimiento creado en el paso anterior, abre el SDK de Intelisis y
abre la forma Preautorizacion.
3. Activa las opciones Barra Ayuda y Negritas de la pestala de Datos Generales.

4. Abre la pestaña Acciones y crea una nueva acción con las siguientes caracterís-
ticas:
•• Clave: ActualizaOrden
•• Nombre a desplegar: Procesar
•• Tipo de Acción: Expresión
•• Activa la opción: Guardar cambios antes de ejecutar
•• Icono 92 y activa la opción Nombre en Botón
•• En la pestaña Expresión escribe la siguiente expresión:
ProcesarSQL(‘EXEC xpActualizaOrden :nID,:tArt’,Preautorizacion:Preautoriza-
[Link],Preautorizacion:[Link])
ActualizarForma
•• Selecciona la pestaña Opciones y desactiva la opción Activo.
•• Dentro del recuadro inserta el siguiente código
Preautorizacion:[Link]=’SINAFECTAR’
Training & Professional Development

5. Cierra la ventana de edición de acciones y previsualiza tu forma, captura un regis-


tro y procesalo. Nota: Puedes revisar desde el manejador de SQL la información
que se generó en las tablas de Preautorizacion una actualización donde se trae
la información de la ultima entrada de compra del articulo seleccionado en la
forma.
6. Regresa al manejador de consultas de SQL y genera el siguiente procedimiento 212
para revertir el proceso de la afectación:
IF EXISTS(SELECT * FROM sysobjects AS s WHERE s.[type]=’p’ AND [Link]=’xpA-
fectarAutorizacion’)
DROP PROCEDURE xpAfectarAutorizacion
GO
CREATE PROCEDURE xpAfectarAutorizacion
@ID INT,
@Empresa VARCHAR(20),
@Sucursal INT,
@Usuario VARCHAR(30),
@Estatus VARCHAR(20)
AS
BEGIN
DECLARE @MovID INT,
@cantidad INT,
@cliente VARCHAR(20),
@Articulo VARCHAR(20),
@Orden VARCHAR(30)

SET @cantidad=(SELECT [Link] FROM Preautorizacion AS gp WHERE [Link]=@
ID)
SET @cliente=(SELECT [Link] FROM Preautorizacion AS gp WHERE [Link]=@ID)
SET @Articulo=(SELECT [Link] FROM Preautorizacion AS gp WHERE [Link]=@
ID)
SET @Orden=(SELECT [Link] FROM Preautorizacion AS gp WHERE [Link]=@ID)

INSERT INTO venta(Empresa,Mov,FechaEmision,Referencia,Cliente,Estatus,Mone-


da,Almacen,Sucursal,Usuario,OrigenID,Origen)
VALUES(@Empresa,’Cotizacion’,GETDATE(),@Orden,@cliente,’SINAFECTAR’,’Pe-
sos’,’ALM GRAL’,@Sucursal,@Usuario,@ID,’Preautorizacion’)

SELECT @MovID=@@identity
IF @MovID IS NOT NULL
BEGIN
INSERT INTO VentaD(ID,Renglon,Articulo,Cantidad,Unidad,Almacen)
VALUES(@MovID,2048,@Articulo,@cantidad,’pza’,’ALM GRAL’)

IF @Estatus=’PENDIENTE’
BEGIN
UPDATE Preautorizacion SET Estatus=’CONCLUIDO’ WHERE ID=@ID
END

SELECT ‘Se ha creado una cotizacion en Ventas con el numero ‘+CAST(@MovID


AS VARCHAR(30))

Powered by Intelisis Software





END
ELSE
BEGIN
SELECT ‘LO SENTIMOS EL ID DE CABECERA ESTA VACIO’
END
213 END
7. Ejecuta el procedimiento anterior, regresa a Intelisis SDK y crea una nueva accion
dentro de la forma Preautorizacion con las siguientes caracteristicas:
•• Clave: Afectar
•• Nombre a desplegar: Afectar
•• Tipo de Acción: Expresión
•• Icono 7
•• En la pestaña Expresión escribe la siguiente expresión:
ProcesarSQL(‘EXEC xpAfectarAutorizacion :nID,:tEmp,:nSuc,:tUsu,:tEst’,Preauto-
rizacion:[Link],Empresa,Sucursal,Usuario,Preautorizacion:Preau-
[Link])
ActualizarForma
•• Selecciona la pestaña Opciones y desactiva la opción Activo.
•• Dentro del recuadro inserta el siguiente código
Preautorizacion:[Link]=’PENDIENTE’
8. Regresa de nueva cuenta al analizador de consultas, escribe el siguiente proce-
dimiento y ejecutaló:
IF EXISTS(SELECT * FROM sysobjects AS s WHERE s.[type]=’p’ AND [Link]=’xpE-
liminarAutorizacion’)
DROP PROCEDURE xpEliminarAutorizacion
GO
CREATE PROCEDURE xpEliminarAutorizacion
@ID INT,
@Estatus VARCHAR(30)
AS
BEGIN

IF @Estatus=’CONCLUIDO’
BEGIN
UPDATE Preautorizacion SET Estatus=’SINAFECTAR’ WHERE ID=@ID

UPDATE Venta SET Estatus=’CANCELADO’ WHERE OrigenID=CAST(@ID AS VAR-
CHAR(5))
END

END
Training & Professional Development

9. Regresa a la forma Preautorizacion desde Intelisis SDK y agrega una nueva acción
con las siguientes caracteristicas:
•• Clave: Basura
•• Nombre a desplegar: Basura
•• Tipo de Acción: Expresión 214
•• Icono 32
•• En la pestaña Expresión escribe la siguiente expresión:
EjecutarSQL(‘xpEliminarAutorizacion :nID,:tEstatus’,Preautorizacion:Preauto-
[Link],Preautorizacion:[Link])
ActualizarForma
•• Selecciona la pestaña Opciones y desactiva la opción Activo.
•• Dentro del recuadro inserta el siguiente código
Preautorizacion:[Link]=’CONCLUIDO’
10. Cierra la ventana de Acciones y pre visualiza la forma, afecta uno de tus Articulos
para que puedas verificar que se genera el movimiento de Cotización de Ventas y
posteriormente eliminalo para que verifiques que el proceso contrario esta fun-
cionando
11. Una vez que finalices cierra la forma.

Powered by Intelisis Software




Diseño de Vistas para SDK


Existen ocasiones en donde no se necesita crear una tabla nueva para ingresar campos
que provengan de otras tablas o cuando se tiene una consulta muy bien armada dentro
de la cual se tienen campos que se necesitan todo el tiempo. En el primer caso ocasionaría
215 que tengamos que crear un objeto nuevo y cuando se necesiten nuevos registros en esta
tabla se necesitaría estar haciendo actualizaciones contantes. En tanto que en el segundo
tendríamos que estar ejecutando constantemente la consulta para ver los datos actualiza-
dos de las tablas de donde se está obteniendo la información.
Para resolver la problemática de ambos casos mencionados anteriormente, contamos con
objetos dentro de la base de dataos de SQL como las Vistas, ya que con ellas podemos
crear una tabla virtual de solo lectura, la cual se actualiza constantemente al momento de
ingresar nueva información en las tablas que contiene la consulta que genera la vista, ade-
más no se tiene que ejecutar todo el tiempo la consulta ya que una vez creado el objeto
este reside en la base de datos y se actualiza constantemente.
Por otro lado, si esto lo vemos a nivel de desarrollo SDK de Intelisis, una vista tiene el mis-
mo concepto ya que estas tablas nos permiten seleccionar los campos que se mostraran
posteriormente dentro de las formas que creemos.
Desde SDK es posible crear vistas de dos formas diferentes:
1. Desde el asistente de vistas (Figura 5.3).

Figura 5.3 El Asistente de vistas que podemos


encontrar en los objetos de tipo Vista en la pes-
taña Vista permite seleccionar las tablas por las
que estara conformada una vista generando el
código SQL necesario de forma automática.

2. Desde una vista independiente de SQL (Figura 5.4)

Figura 5.4 Si se cuenta con conocimientos avan-


zados en SQL puede crear vistas para SDK sin
necesidad de usar el asistente, programando di-
rectamente la vista mediante la activación de la
Vista Independiente.
Training & Professional Development

Desde el asistente de vistas.


La herramienta de SDK cuenta con un asistente que permite seleccionar los campos que
contendrá la vista, para ello se necesita activar la pestaña Vista, seleccionar las tablas in-
volucradas en la misma, definir la tabla principal de donde se tomaran los datos seleccio-
nándolo desde el menú Tabla Principal y posteriormente activar las siguientes opciones: 216
•• Capturas. Esta opción permite que se pueda capturar la in-
formación que se ingrese dentro de la forma que se genere
posteriormente.
•• Reportes y consultas. Mediante esta opción permite hacer
uso de los campos seleccionados en la Reportes y consultas
•• Usar JOIN. Esta opción es importante seleccionarla si esta-
mos usando dos o más tablas al momento de la creación de
la vista pues al generar SDK su propio código de SQL para su
vista necesita hacer uso de la sentencia JOIN para enlazar las tablas mediante
su campo clave.
Una vez activadas las opciones mencionadas se deberá activar el botón Generar Vista el
cual nos mostrara una ventana donde podremos ver todas las tablas que intervendrán en
la vista, siendo aquí el lugar donde seleccionaremos los campos que intervendrán en la
vista (Figura 5.5).

Figura 5.5 Al dar clic en el botón Generar Vista se accede a una ventana desde la cual se puede seleccionar los
campos que se involucrarán en la vista.

Una vez seleccionados los campos podremos dar clic en Aceptar para generar la vista y
darle un uso posterior en la creación de formas.

Powered by Intelisis Software




Desde una vista independiente con SQL


En este método se involucra lo que se mencionó al inicio de la sección ya que se deberá
crear un objeto Vista dentro de la base de datos, posteriormente desde la herramienta que
genera las Vistas en SDK se tiene que activar la pestaña SQL, dentro de la cual se deberá
217 escribir una sentencia para invocar el contenido del objeto Vista de la siguiente forma:
SELECT * FROM vwExplorador
Una vez que se tiene la sentencia de SQL que invocara al objeto vista, se deberá activar la
opción Vista Independiente, al hacer esta acción se dehabilitara la pestaña Vista por lo que
los campos e información se cargaran directamente desde el objeto de SQL y no de una
vista creada mediante el Asistente.

Creación de Exploradores
Un explorador es una forma que permite a los usuarios mostrar la información contenida
dentro de las tablas de la base de datos Intelisis, además de permitirnos filtrar la informa-
ción mediante diversas herramientas que pueden ser programas desde la formas (Figura
5.6).

Figura 5.6 Una ventana de tipo explorador permite visualizar toda la información alamcenada en un módulo y nos per-
mite filtrar la información de varias formas de acuerdo a su configuración.

Para crear un explorador primero se deberá generar un objeto de tipo Vista mediante
cualquiera de los métodos mencionados en la sección anterior, pero si es importante men-
cionar que si se requiere crear filtros para las fechas, sucursales, moneda, estatus entre
otros, dentro de la vista que se genere deberán existir estos campos, de lo contrario no
podremos habilitarlos para crear los filtros.
Training & Professional Development

De tal manera que lo primero que hay que hacer antes de crear un explorador es definir
correctamente el objeto Vista ya sea de tipo SQL o SDK e incluir los campos que se deseen
mostrar en el explorador.
Para los campos como Sucursal, Usuario o Estatus se deberá configurar la vista desde el
objeto vista de SDK y en la pestaña Configuración seleccionar los campos antes mencio- 218
nados (Figura 5.7).

Figura 5.7 En la pestaña Configuración se deberán especificar los campos que se verán involucrados en la crea-
ción de filtros para el explorador, por ejemplo Sucurdal, Estatus, Fechas entre otros.

Para el caso de los movimientos desde la forma se deberá activar Movimientos desde el
editor de la forma en donde se este generando el explorador y posteriormente en la pes-
taña Movimiento seleccionar cualquier de estas opciones:

•• Todos. Al activar esta opción permite que el usuario tenga acceso a todos los
tipos de movimientos del módulo por el cual se desea filtrar la información.
•• Específicos. Con esta opción es posible seleccionar solo determinados tipos
de movimientos a los cuales se querrá que el usuario tenga acceso.
•• Excepciones. Con esta opción deberemos especificar los movimientos que no
se desea que se muestren en la lista de movimientos.

Powered by Intelisis Software




Además de esto se debe especificar en el menú Modulo o Rama a que modulo pertenece
la información mostrada en el Explorador para que así se pueda mostrar la lista de movi-
mientos con la información necesaria.

219

Lo que sigue es entrar a la carpeta que contiene los campos a mostrar en el explorador y
en la pestaña Datos Generales activar Búsqueda Rápida / Filtros Controles que esta en la
sección Opciones Generales.

Una vez que se activa esta opción se habilita una pestaña llamada Búsqueda / Controles
dentro de la cual deberemos activar Búsqueda Rápida para habilitar todas las opciones del
cuadro de dialogo.

En la sección Controles podremos activar las opciones necesarias para que aparezcan en
el explorador una serie de menús que nos permitan filtrar la información que mostrara el
explorador.

Más hacia la derecha en la sección que dice Estatus validos se podrá


configurar una lista de estatus por los cuales podremos filtrar los
datos mostrados en el explorador si es que la información proviene
de algún modulo como ventas, compras, etc.
Training & Professional Development

Finalmente en la parte baja de la pantalla tenemos una serie de menús que nos permiten
configurar el campo en donde se hará la búsqueda de información de acuerdo a lo que se
haya definido en la sección Controles.

220

Por último, hay que mencionar que para que funcione correctamente el campo de bús-
queda rápida en el explorador se debe configurar en el objeto Vista de SDK la columna
Búsqueda Rápida de la pestaña Llaves, colocando los campos clave mediante los cuales se
desea generar la consulta de datos.

Powered by Intelisis Software




PRACTICA 5-4 Creación de un Explorador mediante


Vistas.
Objetivo: Al término de este ensayo el participante podrá crear un explorador de docu-
221 mentos en Intelisis haciendo uso de objetos especiales de SQL, Vistas de SDK y Vistas de
SQL.
1. Desde SQL Server crea una nueva consulta, desde la cual se creara una vista de-
nominada vwExploradorCurso.
GO
CREATE VIEW vwExploradorCurso
AS
SELECT [Link], [Link], [Link], [Link], [Link], [Link], [Link]-
veedor, [Link], [Link], [Link] [Link], [Link], [Link]-
tus, [Link] AS ‘ProvNombre’, [Link] AS ‘AlmNombre’, [Link] AS ‘Emp-
Nombre’, [Link] AS ‘SucNombre’
FROM Compra c
LEFT JOIN Prov p ON [Link] = [Link]
LEFT JOIN Alm a ON [Link] = [Link]
LEFT JOIN Sucursal s ON [Link] = [Link]
LEFT JOIN Empresa e ON [Link] = [Link]
2. Ejecuta la consulta del paso anterior, regresa al SDK de Intelisis, dirígete a la pes-
taña Vistas y crea una vista con el Nombre y Clave ExploradorCurso
3. Activa la pestaña SQL y activa la opción Vista Indenpendiente
4. Observa que tu cursor se coloca en el campo de texto así que escribe la siguiente
sentencia SQL para invocar el contenido de la vista que ejecutaste en SQL Server
SELECT * FROM vwExploradorCurso

5. Regresa a la pestaña Datos Generales, da clic en el botón Actualizar Campos y


luego da clic en la pestaña Configuración.
Training & Professional Development

6. Dentro de la pestaña Configuración asegurate de que esten activas las opciones


Sucursal, Movimiento y Estatus, asi como tambien que esten relacionados con
sus respectivos campos en la sección Controles de tabla.

222

7. Da clic en Aceptar para guardar los cambios en la vista


8. Ve a la pestaña Formas, crea una nueva Forma con los siguientes datos:
•• Clave: ExploradorCurso
•• Titulo: Explorador Curso
•• Módulo o Rama: COMS
•• Activa la opción Movimientos
9. Da clic en el botón Agregar para crear una Carpeta nueva con los siguientes datos
•• Clave: Lista
•• Vista: ExploradorCurso
•• Estilo: Iconos

10. Activa la pestaña Campos y mueve todos los campos de la columna Campos Dis-
ponibles a la columna Campos en Carpeta excepto los campos Mov y MovID
11. Selecciona el campo Importe de la columna Campos en Carpeta y en la sección
Totalizador activa la opción Suma

Powered by Intelisis Software




12. Regresa a la pestaña Datos Generales y activa la opción Búsqueda Rápida / Filtros
Controles
13. Ve a la pestaña Búsqueda / Controles, activa la opción Búsqueda Rápida

223

14. Ve a la sección Controles y activa las opciones que se señalan en la imagen

15. En la seccion Estatus configura los estatus (Todos), CONCLUIDO, AUTORIZAR,


CANCELADO y SINAFECTAR.
16. En la parte baja de los menús configura las opciones que se indican a continua-
ción:

17. Desde la pestaña Iconos en el campo Nombre a desplegar escribe lo que se


muestra a continuación para mostrar al usuario el movimiento creado y su res-
pectivo ID
ExploradorCurso: Mov+’ ’+ ExploradorCurso: MovID
18. En el campo Sub Titulo escribe la palabra Movimiento que será lo que aparezca
junto a los datos que se concatenaron en el paso anterior.
Training & Professional Development

19. Da clic en Aceptar para cerrar la ventana Carpeta: Lista y da clic en Preliminar
para realizar una pre visualización de la forma, una vez que termines cierra la
forma y abre de nueva cuenta la vista ExploradorCurso.

224

20. Desde la Vista ExploradorCurso da clic en la pestaña Llaves agrega el campo Mov
a la columna Búsqueda Rápida.
21. Regresa a la forma ExploradorCurso realiza una pre visualización de la forma y en
el campo de Buscar realiza una consulta como la que se muestra a continuación

22. Una vez que termines la pre visualización del paso anterior abre la carpeta Lista
y desde la pestaña Datos Generales activa la opción Filtros
23. Ve a la pestaña Filtros, en la sección Tipo de Filtro activa la opción Múltiple (por
Grupos) y en la sección Filtro Múltiple asigna los valores que se muestran
24. En la sección Opciones activa (Todo) y Todo (al Final)
25. Da clic en el botón Aceptar y en la pantalla principal de la Forma ve a la pestaña
Acciones y crea los siguientes eventos:
•• Accion 1
•• Clave: Cerrar
•• Nombre a desplegar: Cerrar
•• Tipo de Acción: Ventana
•• Clave Acción: Cerrar
•• Icono: 23 y activa la opción Nombre en botón

Powered by Intelisis Software




•• Accion 2
•• Clave: Imprimir
•• Nombre a desplegar: Imprimir
•• Tipo de Acción: Controles Captura
225 •• Clave Acción: Imprimir
•• Icono: 4
•• Accion 3
•• Clave: Preliminar
•• Nombre a desplegar: Preliminar
•• Tipo de Acción: Controles Captura
•• Clave Acción: Presentación Preliminar
•• Icono: 6
•• Accion 4
•• Clave: Excel
•• Nombre a desplegar: Excel
•• Tipo de Acción: Controles Captura
•• Clave Acción: Enviar a Excel
•• Icono: 115
•• Accion 5
•• Clave: Personalizar
•• Nombre a desplegar: Personalizar
•• Tipo de Acción: Controles Captura
•• Clave Acción: Mostrar Campos
•• Icono: 45
26. Una vez que culmines de editar la última acción previsualiza tu forma y verifica
los eventos que acabas de realizar.
FILTROS MEDIANTE FORMAS CON VARIABLES
27. Cierra la previsualización del explorador y desde la ventana de edición de
la forma selecciona la pestaña Acciones.
28. Desde la pestaña Acciones crea lo siguiente:
•• Clave: Prov
•• Nombre a Desplegar: Prooveedores
•• Activa la opción: Acción Múltiple
•• Activa la opción: Refrescar Documento y Controles
•• Icono: 80 y activar la opción Nombre en Botón.
Training & Professional Development

29. Selecciona la pestaña Acciones y agrega las siguientes acciones:


•• Accion 1
•• Clave: Proveedores
•• Tipo de Accion: Formas
•• Clave Accion: EspecificarProveedor 226
•• Accion 2
•• Clave: Refrescar
•• Tipo de Accion: Controles Captura
•• Clave Accion: Actualizar Vista
30. Regresa a la pestaña de Datos Generales y da doble clic sobre la carpeta Lista
para editarla.
31. Activa la pestaña Filtros y en el campo Filtro General (SQL) escribe lo siguiente:
[Link]=’{[Link]}’
32. Previsualiza la forma, da clic en el boton Proveedores y asigna un proveedor, ve-
ras que ya se filtran los datos pero cuando vuelves a invocar la forma y quitas el
proveedor a filtrar veras que no devuleve ningún dato
33. Vueleve a editar la carppeta Lista, dirigete a la pestaña Filtros y modifica el códi-
go del campo Filtro General (SQL) por lo siguiente:
{Si(ConDatos([Link]),’[Link]=’+Comillas(Info.
Proveedor),’1=1’)}
34. Prueba nuevamente tu forma, verifica el funcionamiento de la acción colocando
un proveedor en la forma Especificar Proveedor y sin ningún filtro para que ob-
serves la diferencia.
35. Cierra la previsualización de la forma y desde el editor de la forma crea una nueva
acción con las siguientes caracteríticas:
•• Clave: Suc
•• Nombre a Desplegar: Sucursal
•• Activa la opción: Acción Múltiple
•• Activa la opción: Refrescar Documento y Controles
•• Icono: 80 y activar la opción Nombre en Botón.
36. Selecciona la pestaña Acciones y agrega las siguientes acciones:
•• Accion 1
•• Clave: Sucursales
•• Tipo de Accion: Formas
•• Clave Accion: EspecificarSucursal

Powered by Intelisis Software




•• Accion 2
•• Clave: Refrescar
•• Tipo de Accion: Controles Captura
•• Clave Accion: Actualizar Vista
227 37. Abre la carpeta lista, selecciona la pestaña Filtros y en el campo Filtro General
(SQL) modifica el campo como se muestra a continuación:
{Si(ConDatos([Link]),’[Link]=’+Comillas(Info.
Proveedor),’1=1’)}
AND
{Si(ConDatos([Link]),’[Link]=’+Comillas([Link]-
cursal),’1=1’)}
38. Prueba nuevamente la forma y verifica el funcionamiento de los dos filtros.
06

Validaciones y Procedi-
mientos Almacenados

Powered by Intelisis Software


Training & Professional Development

Controles de la tabla.
Al agregar una tabla, es posible definir ciertos campos de tipo “Auto-llenado”, es decir que
tomarán valores según la Empresa, Sucursal y Usuario que editen el registro, entre otros;
para indicar este tipo de propiedades, seleccionamos la tabla y en la pestaña Configura-
ción podremos ver los “Controles de la Tabla”. Si la tabla de SQL contiene algún campo 230
como Empresa, Sucursal o Usuario, el SDK asociará dicho campo como Control de la tabla,
lo cual permite 2 cosas:
1. Llenará el campo con el valor de inicio de sesión del usuario, como Empresa, Su-
cursal, Usuario, entre otros.
2. Permita que en los exploradores el campo aparezca como filtro.
En el caso del Control “ID”, se requiere activarlo cuando la tabla de SQL es un campo au-
toincremental, se decir que tiene el valor IDENTITY. El control “Consecutivo Sugerido” per-
mite que al insertar un nuevo registro sugiere el siguiente número de clave. El control
Estatus al ser activado, a su vez activa el campo estatus por Omisión, para los movimientos
se recomienda indicar el valor SINAFECTAR, mientras que para cuentas y maestros el valor
ALTA. Para formas que tendrán detalle, es necesario indicar el control RenglonID.

Desarrollo de Validaciones.
Los objetos especiales que se han tratado en puntos anteriores, han sido cambios que se
realizan al “Cliente”, es decir al ejecutable y se refieren a las Formas o Diálogos que presen-
ta Intelisis. Ahora veremos los cambios del lado del “Servidor”, es decir al SQL y no tienen
efecto en las formas sino durante la afectación de un movimiento o al guardar o modificar
registros en una tabla. Para esto es necesario el manejo de stored procedures, cursores y
triggers.
Programación Modular.- Uno de los métodos más conocidos para resolver un problema es
dividirlo en problemas más pequeños, llamados subproblemas. De esta manera, en lugar
de resolver una tarea compleja y tediosa, resolvemos otras más sencillas y a partir de ellas
llegamos a la solución. Esta técnica se usa mucho en programación ya que programar no
es más que resolver problemas, y se le suele llamar “Diseño Descendente”, metodología
del Divide y Vencerás o programación top-down.
Es evidente que si esta metodología nos lleva a tratar con subproblemas, entonces tam-
bién tengamos la necesidad de poder crear y trabajar con subprogramas para resolverlos.
A estos subprogramas se les suele llamar módulos, y por eso ha adquirido el nombre de
Programación Modular.

Powered by Intelisis Software




Intelisis se ha desarrollado bajo esta técnica y la siguiente imagen puede ejemplificarlo:

Módulo A

Módulo B

231
Módulo C

Módulo D

Si el programa o Módulo A es ejecutado, este a su vez ejecuta el módulo B, posteriormente


ejecuta el Módulo C y finalmente el Módulo D.
Por dar un ejemplo haciendo una relación con el diagrama anterior e Intelisis, podemos
decir que el módulo A es el stored procedure spAfectar, y los módulos B, C y D son spInv,
spInvAfectar, xpInvVerificar, es decir que se ejecuta la rutina spAfectar, la cual ejecuta pri-
mero la rutina spInv, una vez que termina ejecuta la rutina spInvAfectar y finalmente ejecu-
ta xpInvVerificar. Cabe mencionar que a su vez los módulos B, C y D podrían ejecutar otros
módulos, es decir que en la imagen solo se muestra un nivel, pero pueden existir muchos
más niveles. También es importante comentar que se hizo mención para fines prácticos, ya
que no se refiere al desarrollo actual del sistema Intelisis.
Una vez que se ha podido explicar la programación estructurada, podemos indicar cuá-
les son las rutinas con las que cuenta Intelisis para realizar objetos especiales del lado del
“Servidor” para la versión 2500 y estas se muestran en la siguiente tabla, indicando en que
módulos intervienen:

Procedimiento Almacenado Módulos


xpContVerificar Contabilidad
xpCRVerificar Caja Registradora
xpCxVerificar Cuentas por Cobrar y Cuentas por Pa-
gar
xpDineroVerificar Tesorería
xpGastoVerificar Gastos
xpInvVerificar Compras, Ventas e Inventarios
xpInvVerificarDetalle Compras, Ventas e Inventarios a nivel
Detalle
xpNominaVerificar Nómina
xpPCVerificar Precios y Costos
xpRHVerificar Recursos Humanos
xpSoporteVerificar Atención a Clientes
Training & Professional Development

Además existen otras rutinas que no validan por un módulo en especial, sino abarcan to-
dos los módulos y tienen algunas características particulares.

Procedimiento Almacenado Características


xpAntesAfectar Una de las rutinas que se ejecuta al ini-
cio de la transacción , en la que todavía 232
no le asigna consecutivo y no ha cam-
biado de Estatus.
xpMovEstatus Una de las rutinas que se ejecuta casi
al final de la transacción
xpDespuesAfectar Esta rutina se ejecuta una vez ya asig-
nado el consecutivo y al final de la
afectación. Nota: Esta se encuentra
fuera de la transacción.

Por ejemplo, en ejemplos anteriores se hizo un objeto especial del lado del Cliente para
que siempre se capturara la Condición de Pago en el módulo de Ventas, lo cual se capturó
en un archivo Esp con la siguiente instrucción:
[[Link]/Condicion]
Requerido=S
Pero si se necesita que únicamente para ciertos movimientos o tipos de movimientos (Fac-
tura y Devolución de Venta) y únicamente cuando se afecten valide que es necesaria la
condición, podemos utilizar una de las rutinas de validación de SQL con las que cuenta
Intelisis. Es recomendable definir ciertos puntos antes de trabajar:
1. El módulo.
2. Los movimientos o los tipos de movimientos (Los tipos de movimientos así como
su clave de afectación se encuentran en la tabla MovTipo)
3. La Acción (Afectar, Cancelar, Generar).
4. Con estos 3 datos es suficiente para ver en la tabla el procedimiento almacenado
que nos será útil.
Para el ejemplo podemos definir lo siguiente:
1. Ventas.
2. Factura y Devolución de Venta.
3. Afectar.
4. xpInvVerificar.
Nota: Para poder obtener el código de la rutina deseada, puede ejecutar en el analizador
de consultas el comando sp_helptext y el nombre de la rutina. Esta podrá mostrarse de no
estar encriptada.

Powered by Intelisis Software




if exists (select * from sysobjects where id = object _ id(‘[Link]-


car’) and type = ‘P’) drop procedure [Link]
GO
CREATE PROCEDURE xpInvVerificar
@ID int,
@Accion char(20),
233 @Base char(20),
@Empresa char(5),
@Usuario char(10),
@Modulo char(5),
@Mov char(20),
@MovID varchar(20),
@MovTipo char(20),
@MovMoneda char(10),
@MovTipoCambio float,
@Estatus char(15),
@EstatusNuevo char(15),
@FechaEmision datetime,
@Ok int OUTPUT,
@OkRef varchar(255) OUTPUT
AS BEGIN
DECLARE
@Condicion char(50)
IF @Modulo = ‘VTAS’ AND @MovTipo in (‘VTAS.F’, ‘VTAS.D’) AND @Accion = ‘AFEC-
TAR’
BEGIN
SELECT @Condicion = RTRIM(ISNULL(Condicion,’’)) FROM Venta WHERE ID = @ID
IF @Condicion = ‘’
SELECT @OK = 30030 , @OkRef = ‘El Movimiento necesita una Condición de
Pago’
END
RETURN
END
GO
En la variable “OK”, deberá indicarse el número del mensaje que se requiere que aparezca
y esto también es con el fin de que no se ejecute la transacción. Para consultar la lista de
mensajes consulte la tabla “MensajeLista”. En la variable “OkRef” podrá colocarse algún
mensaje de texto que se anexará a la descripción del error.
Cuando la variable “OK” tiene un valor diferente a nulo, se realiza un ROLLBACK, es decir
que la transacción no se realiza y los cambios que se había realizado en la base de datos se
cancelan. Si la variable “OK” tiene un valor nulo, se realiza un COMMIT y toda la transacción
se confirma. Puede existir la posibilidad de que al ejecutarse la rutina, la variable “OK” ya
tenga un valor no nulo, por lo que se recomienda no inicializar dicha variable.
Training & Professional Development

PRACTICA 6-1 Utilización de Procedimientos Almace-


nados
Objetivo: Al término de este ensayo el participante podrá modificar los procedimientos es-
peciales precargados en la base de Intelisis para generar asi procedimientos con variables 234
ya pres establecidos.
1. Desde SQL Server utiliza el comando SP_HELPTEXT para traer el contenido del
procedimiento xpInvVerificar.
2. Una vez que veas el código del procedimiento en el panel Resultados, copia todo
el código, pégalo dentro de la pantalla donde se realizan las consultas y modi-
fícalo de tal manera que pueda validarse tanto en los módulos de ventas como
en el de compras que se hayan capturados ciertos datos necesarios al dar de alta
alguno de estos movimientos.
IF EXISTS (SELECT * FROM sysobjects WHERE name=’xpInvVerificar’ and type=’p’)
DROP PROCEDURE xpInvVerificar
GO
CREATE PROCEDURE xpInvVerificar
@ID int,
@Accion char(20),
@Base char(20),
@Empresa char(5),
@Usuario char(10),
@Modulo char(5),
@Mov char(20),
@MovID varchar(20),
@MovTipo char(20),
@MovMoneda char(10),
@MovTipoCambio float,
@Estatus char(15),
@EstatusNuevo char(15),
@FechaEmision datetime,
@Ok int OUTPUT,
@OkRef varchar(255) OUTPUT
AS BEGIN
IF @Modulo = ‘COMS’ AND @Accion IN (‘AFECTAR’, ‘VERIFICAR’, ‘GENERAR’)
BEGIN
DECLARE @Referencia varchar(50),
@Atencion varchar(100)

SELECT @Referencia = Referencia, @Atencion = Atencion FROM Compra WHERE
ID=@ID
IF ISNULL(@Referencia, ‘’)=’’
SELECT @Ok = 10010, @OkRef = ‘Te falta capturar la referencia’
ELSE
IF NULLIF(@Atencion, ‘’) IS NULL
SELECT @Ok = 10010, @OkRef = ‘Te falta capturar la atención’

END

Powered by Intelisis Software




IF @Modulo =’VTAS’ AND @Accion IN (‘AFECTAR’, ‘VERIFICAR’, ‘GENERAR’)


IF (SELECT TieneInfo FROM Venta WHERE ID=@ID)=1
BEGIN
DECLARE @Renglon float,
@Articulo varchar(20)
235
DECLARE crCursorVentaD CURSOR FOR
SELECT Renglon, Articulo FROM VentaD WHERE ID=@ID
OPEN crCursorVentaD
FETCH NEXT FROM crCursorVentaD INTO @Renglon, @Articulo
WHILE @@FETCH _ STATUS = 0 AND @Ok IS NULL
BEGIN
IF EXISTS(SELECT Articulo FROM InfoAdicionalCurso WHERE ModuloID = @ID
AND Renglon=@Renglon)
FETCH NEXT FROM crCursorVentaD INTO @Renglon, @Articulo
ELSE
SELECT @Ok=10010
END
CLOSE crCursorVentaD
DEALLOCATE crCursorVentaD

IF @Ok IS NOT NULL
SELECT ‘Falta llenar la Información Adicional en el artículo ‘+@Articulo
END

RETURN
END
3. Ejecuta el procedimiento que modificaste en el paso anterior.
4. Regresa al SDK de Intelisis y da clic en el botón Ejecutar para acceder a la versión
estándar de Intelisis.
5. Abre el módulo de compras e intenta hacer cualquier tipo de movimiento y no
coloques nada en el campo Referencia, intenta afectar el movimiento para que
veas el error

6. Coloca información en el campo Referencia del movimiento y cuando vuelvas a


intentar afectar veras ahora el error para el campo Atención.
Training & Professional Development

7. Cierra el módulo de compras afectando el movimiento que tengas en pantalla si


asi lo deseas y abre ahora el módulo de ventas.
8. Crea un movimiento de pedido, llena los campos que se te solicitan en el movi-
miento y activa el check TieneInfo.
9. Intenta modificar el movimiento, al hacerlo observaras el error que envía si se-
leccionaste un artículo que no esté registrado en la tabla de InfoAdicionalCurso . 236
10. Cierra el movimiento sin guardarlo y también la versión estándar de Intelisis.
11. Regresa a SQL server y utiliza el comando SP_HELPTEXT para traer la información
del procedimiento xpCopiarUsuarioCfg.
12. Modifica el procedimiento xpCopiarUsuarioCfg dentro del cual se activara un
check para indicarle a los usuarios que podrán utilizar la opción TieneInfo.
IF EXISTS (SELECT * FROM sysobjects WHERE name=’xpCopiarUsuarioCfg’ and
type=’p’)
DROP PROCEDURE xpCopiarUsuarioCfg
GO
CREATE PROCEDURE xpCopiarUsuarioCfg
@UsuarioD char(10),
@UsuarioA char(10)
AS BEGIN

DECLARE @PermisoDialogo BIT

SELECT @PermisoDialogo = permisoTieneInfo


FROM Usuario
WHERE Usuario=@UsuarioA

UPDATE Usuario SET permisoTieneInfo = @PermisoDialogo


WHERE Acceso=@UsuarioA

RETURN
END
13. Regresa al SDK de Intelisis y da clic en el botón Ejecutar para iniciar la versión
Estándar de Intelisis.
14. Ve a la ruta Configurar > Usuarios > Usuarios
15. Selecciona el usuario E001 y da doble clic para acceder a ventana Usuarios
16. En la siguiente ventana da clic en el botón Configuración

Powered by Intelisis Software




17. A continuación da clic sobre la pestaña Opciones y verifica si tiene desactivada


la opción permisoTieneInfo, si esta desactivada cierra la ventana de la configura-
ción del usuario así como la ventana Usuario.

237

18. Ve a la ruta Herramientas > Cambiar Empresa / Usuario


19. En la siguiente ventana inicia sesión con el usuario E002
20. Una vez que hayas iniciado sesión ve a la ruta Configurar > Ventas > Información
Adicional y deberás observar que la opción Categoría Curso está inactivo.

21. Regresa a la sesión del usuario E001 y cambia los permisos para que puedan ver
activada la opción Categoría Curso en ambos usuarios.
22. Una vez que termines cierra la versión estándar de Intelisis.
Training & Professional Development

Desarrollo de Integridad Referencial con Triggers.

En ocasiones los usuarios podrían requerir borrar o actualizar ciertos registros en alguna
de las tablas que estén utilizando dentro de Intelisis, pero ¿qué pasa si alguno de los re- 238
gistros tienen datos compartidos por alguna otra tabla?, para tener en claro la respuesta a
esta pregunta supongamos lo siguiente, tenemos una tabla llamada CategoriaCurso esta
tabla tiene datos que están almacenados en la tablas FamiliaCurso, ahora bien si quisiéra-
mos modificar o borrar los datos de la tabla CategoriaCurso podríamos hasta el momento
hacerlo sin ningún problema, pero si necesitamos que el usuario no pueda eliminar nin-
gún registro o modificarlo a menos que se actualice o se elimine en otras tablas, en ese
momento necesitamos hacer algo denominado Integridad Referencial, la cual consiste en
crear un Trigger, el cual permita o evite que el usuario realice alguna operación a menos
que afecte a todas las demás tablas de donde proviene la información.
Es importante recalcar que el Trigger dependerá de cada programador y de la lógica que
utilice para su realización, por tal motivo queda de cierta forma a abierto para que se de-
sarrolle de acuerdo a las necesidades de cada cliente.

Powered by Intelisis Software




PRACTICA 6-2 Utilización de Triggers y otros filtros


Objetivo: Al término de este ensayo el participante podrá
•• Hacer uso de Triggers dentro del SDK de Intelisis y así realizar una integridad
referencial al realizar una acción que afecte a más de una tabla de SQL.
239
•• Crear distintos modos de filtrar la información mediante eventos avanzados
de programación.
USO DE TRIGGERS
1. Desde SQL Server crea una nueva consulta desde la cual crearas un Trigger deno-
minado trCatalogoDelete el cual permitirá eliminar una categoría que no este en
uso dentro de la tabla FamiliaCurso.
IF EXISTS (SELECT * FROM sysobjects WHERE type = ‘tr’ AND name=’trDelete-
Catalogo’)
DROP TRIGGER trDeleteCatalogo
GO
CREATE TRIGGER trDeleteCatalogo
ON CategoriaCurso FOR DELETE
AS
BEGIN
DECLARE @Categoria varchar(50)
SELECT @Categoria = Categoria FROM DELETED
IF EXISTS (SELECT * FROM FamiliaCurso WHERE Categoria=@Categoria)
BEGIN
RAISERROR(‘No se puede borrar grupo, está en uso.’, 16, 1)
--ROLLBACK TRANSACTION
END
END
2. Ejecuta el Trigger anterior y por debajo de este crea un nuevo Trigger denomi-
nado trUpdateCatalogo con el cual se podrá actualizar el contenido de la tabla
CategoriaCurso.
IF EXISTS (SELECT * FROM sysobjects WHERE type = ‘tr’ AND name=’trUpdate-
Catalogo’)
DROP TRIGGER trUpdateCatalogo
GO
CREATE TRIGGER trUpdateCatalogo
ON CategoriaCurso FOR UPDATE
AS
BEGIN
DECLARE @CategoriaI varchar(50),
@CategoriaD varchar(50)

SELECT @CategoriaI = Categoria FROM Inserted


SELECT @CategoriaD = Categoria FROM Deleted

IF EXISTS (SELECT * FROM FamiliaCurso WHERE Categoria= @CategoriaD)


UPDATE FamiliaCurso SET Categoria=@CategoriaI WHERE Categoria= @Catego-
riaD
END
Training & Professional Development

3. Ejecuta el Trigger, regresa al SDK de Intelisis y en la pestaña Formas abre la forma


CategoriaCurso.
4. Da clic en la pestaña Acciones y agrega una nueva Acción con los siguientes da-
tos:
•• Clave: Registro Eliminar
240
•• Nombre a Deslegar: Registro Eliminar
•• Tipo de Acción: Controles Captura
•• Clave Accion: Registro Eliminar
•• Carpeta: Lista
•• Icono 5
5. Pre visualiza tu forma y selecciona alguna categoria que sepas que esta usando
la tabla FamiliaCurso, borrala y cuando intentes Guardar y Cerrar te mostrara un
mensaje como este:

6. Cierra la ventana mostrada en el paso anterior y cierra la forma CategoriaCurso.


7. Vuelve abrir la forma CategoriaCurso, modifica el nombre de cualquier categoria
y guarda los cambios
8. Abre ahora la forma FamiliaCurso y pre visualiza la forma, observaras que tam-
bien el nombre de la categoria cambio tambien. Una vez concluido cierra la for-
ma.

Powered by Intelisis Software




Recomendaciones.

•• A continuación se mencionan algunos puntos que es necesario considerar


para evitar problemas durante el desarrollo de los objetos especiales. Sugeri-
241
mos leerlos, analizarlos y tenerlos presentes.
•• No modificar los objetos originales, realiza siempre copias del original y así
siempre tendrás manera de DESHACER el cambio en caso de que no funcione.
•• Guarda los cambios de cada cliente por separado para que no se mezclen y así
los administres mejor.
•• Recuerda, Nunca coloques objetos especiales sin haberlos probado antes en
un ambiente aislado. No utilices el mismo directorio de objetos especiales
para pruebas y para producción.
•• Siempre antes de hacer un objeto especial de SQL, obtén un respaldo de la
base de datos por si tu cambio resulta catastrófico y podrás restaurar la base.
•• Puedes modificar con confianza los stored procedures que empiecen con xp
pero procura NO tocar los que empiezan con sp.
•• Procura fijarte muy bien a que base de datos te conectas desde el Analizador
de Consultas de SQL. NO modifiques la base de datos de operación por error
en lugar de la de pruebas.
•• Si haces algo que cause un problema, cuando la gente de soporte te pregunte,
dile exactamente que hiciste, ya que de lo contrario tardará más en resolverse
el problema.
•• Si tienes dudas, pregunta, es mejor que consideren que estas aprendiendo,
que causar un problema y pasar por inepto o mal intencionado.
•• Nunca apliques un cambio en días inhábiles o antes de los mismos, ya que si
hay problemas no habrá quién los pueda resolver. Se recomienda actualizar
cambios en día lunes que un sábado.
•• Trata de realizar un solo Esp y un solo script de los objetos especiales, por
ejemplo [Link] y [Link].
•• Documenta los objetos especiales indicando el porqué se hizo y qué función
tiene. Para comentar un línea en un ESP se utiliza punto y coma (;) y en un
script doble guión (--).
Intelisis Software, SA de CV. Av. Xola #535, piso 11
Col. Del Valle. Deleg. Benito Juárez (03100). CDMX
Tel: 52 (55) 5081-1212, Email: info@[Link]
Visítanos en [Link]

También podría gustarte