{ =========================================================================== Programa : CTPRMT005 Sistema : Sistema de Costos Proceso : Gastos Indirectos Autor : Tadeo A. Ferreras Fecha : Junio 23, 1993 =========================================================================== } GLOBALS "ctprgb000.4gl" DEFINE datos_g RECORD cod_prod INTEGER, ano CHAR(4), departamento INTEGER, gasto_ind DECIMAL(14,4) END RECORD, descripg CHAR(30), dptog CHAR(25), unidadg CHAR(15) FUNCTION ctprmt005() LET int_flag = FALSE #WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 CALL pantalla() DISPLAY "ctprmt005" AT 4,3 DISPLAY "Gastos Indirectos" AT 6,31 OPEN FORM ctfmmt005 FROM "ctfmmt005" DISPLAY FORM ctfmmt005 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" CLEAR FORM CALL ctadmt005() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" CLEAR FORM CALL ctmdmt005() COMMAND "Salir" EXIT MENU END MENU END FUNCTION FUNCTION ctadmt005() LABEL nuevo: INPUT BY NAME datos_g.* AFTER FIELD cod_prod IF datos_g.cod_prod IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_prod END IF SELECT UNIQUE descripcion,unidad_med INTO descripg,unidadg FROM cttb00001 WHERE status_t IS NULL AND cod_prod = datos_g.cod_prod IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_prod END IF DISPLAY BY NAME descripg,unidadg,dptog BEFORE FIELD ano LET datos_g.ano = YEAR(today) USING "&&&&" DISPLAY BY NAME datos_g.ano AFTER FIELD ano IF datos_g.ano IS NULL THEN LET datos_g.ano = YEAR(today) USING "&&&&" END IF AFTER FIELD departamento IF datos_g.departamento IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD departamento END IF SELECT *FROM cttb00016 WHERE cod_prod = datos_g.cod_prod AND departamento = datos_g.departamento AND ano = datos_g.ano AND status_t IS NULL IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_prod END IF SELECT a.nom_dpto INTO dptog FROM adtb00001 a WHERE a.status_t IS NULL AND a.departamento = datos_g.departamento IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD departamento END IF DISPLAY BY NAME dptog AFTER FIELD gasto_ind IF datos_g.gasto_ind IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD gasto_ind END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF INSERT INTO cttb00016 VALUES(datos_g.*,NULL,USER,CURRENT,NULL,NULL) LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM GOTO nuevo END FUNCTION FUNCTION ctmdmt005() LET int_flag = FALSE CONSTRUCT criterio ON a.cod_prod,a.ano,a.departamento FROM cod_prod,ano,departamento IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET selec = "SELECT a.cod_prod,a.ano,a.departamento,a.gasto_ind,b.descripcion, ", " b.unidad_med,c.nom_dpto ", "FROM cttb00016 a, cttb00001 b,adtb00001 c ", "WHERE a.status_t IS NULL AND a.cod_prod = b.cod_prod AND ", " a.departamento = c.departamento AND ",criterio CLIPPED," ORDER BY 1" PREPARE comando FROM selec DECLARE pro SCROLL CURSOR FOR comando OPEN pro FETCH FIRST pro INTO datos_g.*,descripg,unidadg,dptog IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY BY NAME datos_g.*,descripg,unidadg,dptog MENU "Opcion" COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT pro INTO datos_g.*,descripg,unidadg,dptog IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) FETCH LAST pro INTO datos_g.*,descripg,unidadg END IF DISPLAY BY NAME datos_g.*,descripg,unidadg,dptog COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS pro INTO datos_g.*,descripg,unidadg,dptog IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) FETCH LAST pro INTO datos_g.*,descripg,unidadg,dptog END IF DISPLAY BY NAME datos_g.*,descripg,unidadg,dptog COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST pro INTO datos_g.*,descripg,unidadg,dptog LET numero_msg = 5 CALL msg(numero_msg) DISPLAY BY NAME datos_g.*,descripg,unidadg,dptog COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST pro INTO datos_g.*,descripg,unidadg,dptog DISPLAY BY NAME datos_g.*,descripg,unidadg,dptog COMMAND "Escoger" INPUT BY NAME datos_g.gasto_ind WITHOUT DEFAULTS AFTER FIELD gasto_ind IF datos_g.gasto_ind IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD gasto_ind END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF UPDATE cttb00016 SET (gasto_ind,us_mod,fech_mod) = (datos_g.gasto_ind,USER,CURRENT) WHERE cod_prod = datos_g.cod_prod AND departamento = datos_g.departamento AND ano = datos_g.ano AND status_t IS NULL LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" UPDATE cttb00016 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT) WHERE cod_prod = datos_g.cod_prod AND departamento = datos_g.departamento AND ano = datos_g.ano COMMAND "Retornar" EXIT MENU END MENU END FUNCTION