Files
MBS/PROYECTO/vedir/veprmt102_1.4gl
T

173 lines
6.1 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : VEPRMT102
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla de Direcciones de Clientes
PROGRAMADOR : Lic. Abner Montalvo Z.
FECHA REALIZACION : Diciembre 7, 1992.
------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
FUNCTION veprmt102(xtipo_cliente,xsec_cliente)
DEFINE xtipo_cliente,xsec_cliente SMALLINT,
xnombre CHAR(30)
OPEN WINDOW direccion AT 2,2 WITH FORM "vefmmt102" ATTRIBUTE (BORDER,
FORM LINE FIRST +1,COMMENT LINE LAST)
IF cliente_dir.calle IS NULL THEN
INITIALIZE cliente_dir.* TO NULL
SELECT * INTO cliente_dir.* FROM vetb00005
WHERE tipo_cliente = xtipo_cliente AND
sec_cliente = xsec_cliente
END IF
LET cliente_dir.tipo_cliente = xtipo_cliente
LET cliente_dir.sec_cliente = xsec_cliente
DISPLAY BY NAME cliente_bas.nombre,cliente_dir.tipo_cliente,
cliente_dir.sec_cliente
LET int_flag = false
INPUT BY NAME cliente_dir.calle THRU cliente_dir.urbanizacion
WITHOUT DEFAULTS
## Verifica que el codigo no exista en la tabla de datos basicos de clientes.
## Si existe, entonces despliega los datos del registro existente.
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
EXIT INPUT
END IF
IF cliente_dir.calle IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD calle
END IF
DELETE FROM vetb00005 WHERE tipo_cliente = xtipo_cliente AND
sec_cliente = xsec_cliente
INSERT INTO vetb00005 VALUES (cliente_dir.tipo_cliente,
cliente_dir.sec_cliente,
cliente_dir.calle,
cliente_dir.casa_num,
cliente_dir.barrio,
cliente_dir.urbanizacion,
null,
null, SUSER_SNAME(), GETDATE(),
null, null)
IF kitbis = 'S' THEN
SET CONNECTION "IFMX"
DELETE FROM vetb00005 WHERE tipo_cliente = xtipo_cliente AND
sec_cliente = xsec_cliente
INSERT INTO vetb00005 VALUES (cliente_dir.tipo_cliente,
cliente_dir.sec_cliente,
cliente_dir.calle,
cliente_dir.casa_num,
cliente_dir.barrio,
cliente_dir.urbanizacion,
null,
null, USER, CURRENT,
null, null)
END IF
EXIT INPUT
END INPUT
CLOSE WINDOW direccion
END FUNCTION
FUNCTION consulta_clientes()
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd002"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
LET int_flag = false
CONSTRUCT criterio ON a.nombre FROM nombre
LET selec2 = "SELECT a.tipo_cliente, a.sec_cliente, a.nombre ",
"FROM vetb00004 a WHERE a.status_t is null AND ",
criterio clipped," ORDER BY 1,2 "
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
GO TO salir_consulta_c
END IF
PREPARE busca_clientes FROM selec2
IF status >= 0 THEN
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
END IF
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
END IF
END IF
DECLARE buscar_clientes CURSOR FOR busca_clientes
LET idx = 1
FOREACH buscar_clientes INTO arr_clientes[idx].*
IF status = NOTFOUND THEN
EXIT FOREACH
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT FOREACH
END IF
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
MESSAGE " <Esc> Selecciona Cliente donde esta el cursor"
DISPLAY ARRAY arr_clientes TO s_clientes.*
LET curr1 = arr_curr()
LET cliente_dir.tipo_cliente = arr_clientes[curr1].tipo_cliente
LET cliente_dir.sec_cliente = arr_clientes[curr1].sec_cliente
LET descrip1 = arr_clientes[curr1].nombre
LABEL salir_consulta_c:
CLOSE WINDOW busqueda
END FUNCTION
FUNCTION busca_nombre_cliente()
# Esta funcion busca el nombre del cliente y lo despliega en pantalla
# Esta funcion es valida solamente para la consulta-modificacion.
SELECT i.nombre, i.status_t INTO descrip1, status_reg
FROM vetb00004 i
WHERE i.tipo_cliente = cliente_dir.tipo_cliente AND
i.sec_cliente = cliente_dir.sec_cliente AND
i.status_t IS NULL
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 70
CALL msg(numero_msg)
ELSE
IF status_reg = "E" THEN
LET numero_msg = 69
CALL msg(numero_msg)
END IF
END IF
DISPLAY descrip1 TO nombre
ELSE
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
END FUNCTION