{ ------------------------------------------------------------------ PROGRAMA : IPPRMT003 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla Tipos de Movimientos. PROGRAMADOR : Ing. Juan Soto. FECHA REALIZACION : Enero 1997 DIRECTOR PROYECTO : JOSE ALFREDO PAULINO ALEJO ------------------------------------------------------------------ } GLOBALS "ipprgb000.4gl" DEFINE xdescripcion STRING MAIN DEFER INTERRUPT DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT to "smarmotech" USER usuarios USING clave SELECT * INTO p_companias.* FROM companias CALL ipprmt003() END MAIN FUNCTION ipprmt003() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ipfmmt003 FROM "ipfmmt003" DISPLAY FORM ipfmmt003 DISPLAY "ipprmt003" AT 4,3 DISPLAY "Tipos de Movimientos" AT 6,32 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" let int_flag = false CLEAR FORM let int_flag = false CALL ippcad003() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" CALL ippcmf003() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION ippcad003() ## Captura los datos que va a contener el registro #WHENEVER ERROR CONTINUE INPUT BY NAME transacc.cod_mov, transacc.descrip_mov, transacc.status_mov, transacc.cuenta_1, transacc.cuenta_2, transacc.cuenta_3, transacc.control_clientes, transacc.control_despacho, transacc.control_devolucion, transacc.control_transferencia, transacc.codigo_mov_transferencia, transacc.control_departamento, transacc.control_produccion, transacc.control_ubicacion_almacen, transacc.control_facturacion, transacc.aplicacion_movil_doc, transacc.aplicacion_movil_inv, transacc.requisiciones, transacc.requiere_autorizacion, transacc.us_crea, transacc.fech_crea, transacc.us_mod, transacc.fech_mod, transacc.control_ubicacion_almacen ## Verifica que el codigo no exista en el catalogo de transacciones. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_mov IF transacc.cod_mov = 0 OR transacc.cod_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mov ELSE SELECT * INTO transacc.* FROM iptb00005 WHERE cod_mov = transacc.cod_mov IF status >= 0 THEN IF STATUS != NOTFOUND THEN IF transacc.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_mov END IF DISPLAY BY NAME transacc.* LET numero_msg = 12 CALL msg(numero_msg) LET transacc.descrip_mov = NULL LET transacc.status_mov = NULL LET transacc.cuenta_1 = NULL LET transacc.cuenta_2 = NULL LET transacc.cuenta_3 = NULL NEXT FIELD cod_mov END IF ELSE CALL integridad() if bandera = 1 THEN LET bandera = 0 RETURN end if END IF END IF AFTER FIELD descrip_mov IF transacc.descrip_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip_mov END IF AFTER FIELD cuenta_1 IF transacc.cuenta_1 IS NOT NULL THEN CALL descripcion_cta(transacc.cuenta_1) RETURNING xdescripcion DISPLAY xdescripcion TO descripcion_cta_material END IF AFTER FIELD cuenta_2 IF transacc.cuenta_2 IS NOT NULL THEN CALL descripcion_cta(transacc.cuenta_2) RETURNING xdescripcion DISPLAY xdescripcion TO descripcion_cta_labor END IF AFTER FIELD cuenta_3 IF transacc.cuenta_3 IS NOT NULL THEN CALL descripcion_cta(transacc.cuenta_3) RETURNING xdescripcion DISPLAY xdescripcion TO descripcion_cta_gasto END IF { AFTER FIELD cuenta_imp_material IF transacc.cuenta_imp_material IS NOT NULL THEN CALL descripcion_cta(transacc.cuenta_imp_material) RETURNING xdescripcion DISPLAY xdescripcion TO descripcion_imp_material END IF AFTER FIELD cuenta_imp_labor IF transacc.cuenta_imp_labor IS NOT NULL THEN CALL descripcion_cta(transacc.cuenta_imp_labor) RETURNING xdescripcion DISPLAY xdescripcion TO descripcion_imp_labor END IF AFTER FIELD cuenta_imp_gasto IF transacc.cuenta_imp_gasto IS NOT NULL THEN CALL descripcion_cta(transacc.cuenta_imp_gasto) RETURNING xdescripcion DISPLAY xdescripcion TO descripcion_imp_gasto END IF } AFTER FIELD control_transferencia IF transacc.control_transferencia = "SI" THEN CALL cmovimientos_t() NEXT FIELD codigo_mov_transferencia ELSE NEXT FIELD control_departamento END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF transacc.descrip_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip_mov ELSE INSERT INTO iptb00005 (cod_mov ,descrip_mov ,status_mov ,cuenta_1 ,cuenta_2 ,cuenta_3 ,us_crea ,fech_crea ,control_clientes ,control_despacho ,control_devolucion ,control_transferencia ,control_departamento ,control_produccion ,control_ubicacion_almacen ,control_facturacion ,aplicacion_movil_inv ,aplicacion_movil_doc ,codigo_mov_transferencia ,control_produccion ,control_ubicacion_almacen ,requisiciones ,requiere_autorizacion ) VALUES (transacc.cod_mov, transacc.descrip_mov, transacc.status_mov, transacc.cuenta_1, transacc.cuenta_2, transacc.cuenta_3,usuarios, GETDATE(), transacc.control_clientes, transacc.control_despacho, transacc.control_devolucion,transacc.control_transferencia, transacc.control_departamento, transacc.control_produccion, transacc.control_ubicacion_almacen, transacc.control_facturacion, transacc.aplicacion_movil_inv, transacc.aplicacion_movil_doc,transacc.codigo_mov_transferencia, transacc.control_produccion,transacc.control_ubicacion_almacen, transacc.requisiciones,transacc.requiere_autorizacion) CALL integridad() if bandera = 1 THEN LET bandera = 0 RETURN end if LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM LET transacc.cod_mov = NULL LET transacc.descrip_mov = NULL LET transacc.status_mov = NULL LET transacc.cuenta_1 = NULL LET transacc.cuenta_2 = NULL LET transacc.cuenta_3 = NULL NEXT FIELD cod_mov END IF AFTER FIELD fech_mod EXIT INPUT END INPUT END FUNCTION FUNCTION ippcmf003() ## Aqui se prepara para la captura del criterio de seleccion #WHENEVER ERROR CONTINUE CONSTRUCT criterio ON iptb00005.cod_mov,iptb00005.descrip_mov FROM cod_mov,descrip_mov BEFORE CONSTRUCT CALL cmovimientos_t() AFTER CONSTRUCT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF EXIT CONSTRUCT END CONSTRUCT LET SELEC = " SELECT UNIQUE * FROM iptb00005 where ", " status_t is null and ", criterio clipped, " ORDER BY cod_mov" PREPARE busca FROM selec CALL integridad() if bandera = 1 THEN LET bandera = 0 RETURN end if DECLARE datos SCROLL CURSOR WITH HOLD FOR busca OPEN datos FETCH FIRST datos INTO transacc.* IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF ELSE CALL integridad() if bandera = 1 THEN LET bandera = 0 RETURN end if END IF DISPLAY BY NAME transacc.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO transacc.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF CALL integridad() if bandera = 1 THEN LET bandera = 0 RETURN end if DISPLAY BY NAME transacc.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO transacc.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF CALL integridad() if bandera = 1 THEN LET bandera = 0 RETURN end if DISPLAY BY NAME transacc.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO transacc.* DISPLAY BY NAME transacc.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO transacc.* DISPLAY BY NAME transacc.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" INPUT BY NAME transacc.descrip_mov, transacc.status_mov, transacc.cuenta_1, transacc.cuenta_2, transacc.cuenta_3, transacc.cuenta_imp_material, transacc.control_clientes, transacc.control_despacho, transacc.control_devolucion, transacc.control_produccion, transacc.control_ubicacion_almacen, transacc.control_facturacion, transacc.control_transferencia, transacc.codigo_mov_transferencia, transacc.control_departamento, transacc.aplicacion_movil_doc, transacc.aplicacion_movil_inv, transacc.requisiciones, transacc.requiere_autorizacion, transacc.us_crea, transacc.fech_crea, transacc.us_mod, transacc.fech_mod WITHOUT DEFAULTS AFTER FIELD descrip_mov IF transacc.descrip_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descrip_mov END IF AFTER FIELD cuenta_1 IF transacc.cuenta_1 IS NOT NULL THEN CALL descripcion_cta(transacc.cuenta_1) RETURNING xdescripcion DISPLAY xdescripcion TO descripcion_cta_material END IF AFTER FIELD cuenta_2 IF transacc.cuenta_2 IS NOT NULL THEN CALL descripcion_cta(transacc.cuenta_2) RETURNING xdescripcion DISPLAY xdescripcion TO descripcion_cta_labor END IF AFTER FIELD cuenta_3 IF transacc.cuenta_3 IS NOT NULL THEN CALL descripcion_cta(transacc.cuenta_3) RETURNING xdescripcion DISPLAY xdescripcion TO descripcion_cta_gasto END IF AFTER FIELD cuenta_imp_material IF transacc.cuenta_imp_material IS NOT NULL THEN CALL descripcion_cta(transacc.cuenta_imp_material) RETURNING xdescripcion DISPLAY xdescripcion TO descripcion_imp_material END IF { AFTER FIELD cuenta_imp_labor IF transacc.cuenta_imp_labor IS NOT NULL THEN CALL descripcion_cta(transacc.cuenta_imp_labor) RETURNING xdescripcion DISPLAY xdescripcion TO descripcion_imp_labor END IF AFTER FIELD cuenta_imp_gasto IF transacc.cuenta_imp_gasto IS NOT NULL THEN CALL descripcion_cta(transacc.cuenta_imp_gasto) RETURNING xdescripcion DISPLAY xdescripcion TO descripcion_imp_gasto END IF } AFTER FIELD control_transferencia IF transacc.control_transferencia = "SI" THEN NEXT FIELD codigo_mov_transferencia ELSE NEXT FIELD control_departamento END IF AFTER INPUT #### Verifica si el usuario presiono la tecla IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF UPDATE iptb00005 SET descrip_mov = transacc.descrip_mov, status_mov = transacc.status_mov, cuenta_1 = transacc.cuenta_1, cuenta_2 = transacc.cuenta_2, cuenta_3 = transacc.cuenta_3, cuenta_imp_material = transacc.cuenta_imp_material, aplicacion_movil_inv = transacc.aplicacion_movil_inv, aplicacion_movil_doc = transacc.aplicacion_movil_doc, us_mod = usuarios, fech_mod = GETDATE(), control_clientes = transacc.control_clientes, control_despacho = transacc.control_despacho, control_devolucion = transacc.control_devolucion, control_transferencia = transacc.control_transferencia, control_produccion = transacc.control_produccion, control_ubicacion_almacen = transacc.control_ubicacion_almacen, control_facturacion = transacc.control_facturacion, codigo_mov_transferencia = transacc.codigo_mov_transferencia, control_departamento = transacc.control_departamento, requisiciones = transacc.requisiciones, requiere_autorizacion = transacc.requiere_autorizacion WHERE cod_mov = transacc.cod_mov CALL integridad() if bandera = 1 THEN LET bandera = 0 RETURN end if LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT COMMAND KEY ("L") "eLiminar" UPDATE iptb00005 SET status_t = "E" WHERE cod_mov = transacc.cod_mov LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION FUNCTION descripcion_cta(xcuenta) DEFINE xcuenta VARCHAR(14), zdescripcion VARCHAR(100) SELECT a.descripcion INTO zdescripcion FROM cgtb00001 a WHERE a.cuenta_no = xcuenta IF STATUS = NOTFOUND THEN LET zdescripcion = 'NO EXISTE' END IF RETURN zdescripcion END FUNCTION