Guía Básica SDK para Desarrolladores
Guía Básica SDK para Desarrolladores
(SDK)
Nivel Básico
Powered by
Intelisis Software
Indice
Acerca de SDK Básico.........................................................................................................................6
Objetivos................................................................................................................................................6
Requisitos del curso...........................................................................................................................6 3
CONCEPTOS BASICOS
Conceptos Básicos..............................................................................................................................9
SQL (Servidor).....................................................................................................................................10
Política de desarrollo - Programación MSSQL y otros lenguajes......................................17
INTRODUCCIÓN AL SDK
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
DETALLES Y EXPLORADORES
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
Conceptos Basicos
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
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.
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
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-
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
RETURN
END
GO
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
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]’
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
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)
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]
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
Introducción al SDK
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).
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
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.
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
Fugura 2.3 Ejemplo de una figura mejor proporcionada de acuerdo a la resolución de los monitores
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
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.
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
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
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).
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
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
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
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.
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.
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.
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
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
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.
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
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:
[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.
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.
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’))
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
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]
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])
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.
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
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
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.
60
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).
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.
65
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.
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])
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
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
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
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.
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.
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.
74
03
Variables y Reportes
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
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.
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.
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
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:
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
8. Activa la pestaña Acciones y da clic en el botón Agregar para colocar una nueva
Acción.
Training & Professional Development
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
•• 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
87
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:
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
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
•• 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.
»» 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.
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
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.
•• Pestaña En Captura:
•• Nombre a desplegar: Datos Web
•• Tamaño: 20
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
•• 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
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.
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.
•• 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
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
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
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
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:
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 (_)
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.
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. Modo por Omisión. Esta opción permite especificar el tipo de letra que se va a
imprimir dentro del reporte.
Campos de formato
Vista del
reporte
Texto. Permite poner campos que incluyan textos. Estos deben de estar entre comillas
sencillas
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
Al efectuar esta acción, aparece una ventana que presenta la lista de elementos, posibles
a adicionar al formato del reporte
117
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.
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
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
•• 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
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’ )
Formas, Dialogos y
Especiales
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)
)
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 Llaves
•• Agregar a la columna Llave Primaria el campo Categoría.
Tabla FamiliaCurso
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
Vista FamiliaCurso
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
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.
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
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]
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.
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.
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
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.
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.
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
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…
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.
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.
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:
153
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.
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
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.
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>)
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.
161
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
•• 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
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.
167
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.
[[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]))
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
174
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.
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.
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
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
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.
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.
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
183
05
Detalles y Explora-
dores
•• 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
6. Sin dejar la pestaña de Configuracion activa las opciones Ultimo cambio y Usua-
rio Cambio, posteriormente desactiva la opción Usuarios
189
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
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
193
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]
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
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
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
•• 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
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)
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ú
--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
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
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
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.
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.
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.
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.
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.
222
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
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
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
•• 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
•• 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
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.
Módulo A
Módulo B
231
Módulo C
Módulo D
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.
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.
END
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
237
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
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.
Recomendaciones.