{ ------------------------------------------------------------------ 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 " 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