{ ------------------------------------------------------------------ PROGRAMA : INPRMT021 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Exportacion Articulos. PROGRAMADOR : Tadeo A. Ferreas FECHA REALIZACION : Julio 22, 1993. ------------------------------------------------------------------ } GLOBALS "inprgb000.4gl" DEFINE export RECORD fecha DATE, factura INTEGER END RECORD DEFINE export1 RECORD fecha DATE, factura INTEGER END RECORD DEFINE codgp SMALLINT #### Variables para manejar arreglo en los diferentes item que intervienen en #### una exportion. DEFINE arr_form8 ARRAY[200] OF RECORD cod_n_p SMALLINT, cod_grupo_p SMALLINT, descrip1 CHAR(30), cantidad INTEGER END RECORD DEFINE estd RECORD status_t CHAR(1), us_crea CHAR(9), fech_crea LIKE intb00017.fech_crea, us_mod CHAR(9), fech_mod LIKE intb00017.fech_mod END RECORD DEFINE descrip CHAR(30) DEFINE curr,i INTEGER FUNCTION inprmt021() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM infmmt021 FROM "infmmt021" DISPLAY FORM infmmt021 CALL pantalla() DISPLAY "inprmt021" AT 4,3 #DISPLAY "(Ley-69)" AT 5,58 DISPLAY "Verificacion de Exportacion de Pila" AT 6,26 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" CLEAR FORM CALL inmtad021() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" CALL inmtmd021() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION inmtad021() # WHENEVER ERROR CONTINUE # Captura los datos que va a contener el registro INPUT BY NAME export.* BEFORE FIELD fecha LET export.fecha = today DISPLAY BY NAME export.fecha AFTER FIELD fecha IF export.fecha IS NULL THEN LET export.fecha = today END IF DISPLAY BY NAME export.fecha AFTER FIELD factura IF export.factura IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD factura END IF ########## Chequea que el numero de factura exista en alguna venta SELECT a.factura FROM vetb00002 a WHERE a.factura = export.factura AND a.ventas = "2" AND a.status_t IS NULL IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD factura END IF ########## Chequea que el numero de factura no exista en la maestra de ########## verificacion de exportacion. SELECT UNIQUE a.factura FROM intb00021 a WHERE a.factura = export.factura IF status != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD factura END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF INSERT INTO intb00021 VALUES (export.*, NULL,USER,CURRENT,NULL,NULL) LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM END FUNCTION ######## Funcion para modificar una exportion ####### FUNCTION inmtmd021() # Aqui se prepara para la captura del criterio de seleccion CONSTRUCT criterio ON a.fecha,a.factura FROM fecha,factura IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF ######## Selecionando datos a modificar ######## LET SELEC = "SELECT UNIQUE a.fecha,a.factura,a.status_t,a.us_crea, ", "a.fech_crea,a.us_mod,a.fech_mod FROM intb00021 a WHERE ", "a.status_t is null AND ", criterio clipped, "ORDER BY 1,2" PREPARE busca FROM selec CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF DECLARE datos SCROLL CURSOR FOR busca OPEN datos CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF FETCH FIRST datos INTO export.*,estd.* IF status >= 0 THEN IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF DISPLAY BY NAME export.*,estd.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO export.*,estd.* IF status = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME export.*,estd.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO export.*,estd.* IF status = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME export.*,estd.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO export.*,estd.* DISPLAY BY NAME export.*,estd.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO export.*,estd.* DISPLAY BY NAME export.*,estd.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" LET export1.* = export.* INPUT BY NAME export.* WITHOUT DEFAULTS AFTER FIELD fecha IF export.fecha IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha END IF AFTER FIELD factura IF export.factura IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD factura END IF ########## Chequea que el numero de factura exista en alguna venta SELECT a.factura FROM vetb00002 a WHERE a.factura = export.factura AND a.ventas = "2" AND a.status_t IS NULL IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD factura END IF ########## Chequea que el numero de factura no exista en la maestra de ########## verificacion de exportacion. IF export.factura != export1.factura THEN SELECT UNIQUE a.factura FROM intb00021 a WHERE a.factura = export.factura IF status != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD factura END IF END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF ####### Proceso para modificar los datos ######## UPDATE intb00021 SET (fecha,factura,us_mod,fech_mod) = (export.*,USER,CURRENT) WHERE @factura = export1.factura LET numero_msg = 13 CALL msg(numero_msg) ##### Proceso para eliminar una exportion ####### COMMAND KEY ("L") "eLiminar" UPDATE intb00021 set (status_t,us_mod,fech_mod) = ("E",USER,CURRENT) WHERE factura = export.factura LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION