Files
MBS/PROYECTO/ctdir/ctprmt005.4gl
T

254 lines
6.1 KiB
Plaintext

{
===========================================================================
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"
"<Esc> Adiciona Registro <Supr> Cancela Operacion"
CLEAR FORM
CALL ctadmt005()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Supr> 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