Files
MBS/PROYECTO/vedir/veprmt045.4gl
T

306 lines
7.9 KiB
Plaintext

{
------------------------------------------------------------------------------
PROGRAMA : VEPRMT045
OBJETIVO : Mantenimiento Presupuesto Por Producto
PROGRAMADOR : Ing. Juan F. Soto
FECHA REALIZACION : OCTUBRE 2, 1997.
------------------------------------------------------------------------------
}
GLOBALS
"veprgb000.4gl"
DEFINE nombre_mes CHAR(20),
pmarca SMALLINT,
nombre_v CHAR(40)
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL veprmt045()
END MAIN
FUNCTION veprmt045()
OPTIONS
FORM LINE 9,
ERROR LINE 24,
COMMENT LINE 23
# CALL pantalla()
OPEN FORM vefmmt045 FROM "vefmmt045"
DISPLAY FORM vefmmt045
MENU "OPCION"
COMMAND "Adicionar" "<Esc> Adiciona Registro <Ctrl-C> Cancela Operacion"
LET int_flag = false
CALL vepcad45()
COMMAND "Consultar-modificar"
"<Esc> Busca Registro <Ctrl-C> Cancela Operacion"
CALL vepcmod45()
COMMAND "Salir"
EXIT MENU
END MENU
END FUNCTION
FUNCTION vepcad45()
# Captura de informacion
INITIALIZE presupuesto.* TO NULL
INPUT BY NAME presupuesto.* WITHOUT DEFAULTS
BEFORE INPUT
LET presupuesto.cantidad=0
AFTER FIELD sec_vend
SELECT a.nom1_emp,a.apell1_emp INTO descrip1,descrip4
FROM adtb00003 a
WHERE a.num_emp = presupuesto.sec_vend AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD mes
END IF
LET nombre_v = descrip1 CLIPPED," ",descrip4 CLIPPED
DISPLAY BY NAME nombre_v
AFTER FIELD mes
SELECT a.descrip INTO nombre_mes
FROM mestable a
WHERE a.mes = presupuesto.mes
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD mes
END IF
DISPLAY BY NAME nombre_mes
AFTER FIELD cod_n
SELECT a.descripcion INTO descrip2
FROM iptb00034 a
WHERE a.cod_categoria = presupuesto.cod_n
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
SELECT a.nombre_marca INTO nombre_m
FROM iptb00019 a
WHERE a.marca = pmarca
LET descripcion = descrip2 CLIPPED," ",nombre_m CLIPPED," ",
descrip3 CLIPPED
DISPLAY BY NAME descripcion
NEXT FIELD cantidad
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
SELECT UNIQUE a.* FROM vetb00045 a
WHERE a.ano = presupuesto.ano AND
a.mes = presupuesto.mes AND
a.sec_vend = presupuesto.sec_vend AND
a.cod_n = presupuesto.cod_n
IF STATUS != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD ano
END IF
LET presupuesto.fech_crea = CURRENT
INSERT INTO vetb00045
(ano
,mes
,ventas
,sec_vend
,cod_cia
,cod_n
,cod_grupo
,cod_tipo
,cod_sec
,cantidad
,valor
,us_crea
,fech_crea
)
VALUES
(presupuesto.ano
,presupuesto.mes
,presupuesto.ventas
,presupuesto.sec_vend
,presupuesto.cod_n
,presupuesto.cod_grupo
,presupuesto.cod_tipo
,presupuesto.cod_sec
,presupuesto.cantidad
,presupuesto.valor
,usuarios
,getdate()
)
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
CLEAR FORM
LET numero_msg = 1
CALL msg(numero_msg)
NEXT FIELD ano
EXIT INPUT
END INPUT
END FUNCTION
FUNCTION vepcmod45()
# Captura del criterio de seleccion
CONSTRUCT BY NAME criterio ON vetb00045.*
LET selec2 =
"SELECT *,rowid FROM vetb00045 WHERE ",criterio clipped,
" and status_t is null ",
" ORDER BY 1"
PREPARE comando FROM selec2
DECLARE busca SCROLL CURSOR FOR comando
OPEN busca
FETCH FIRST busca INTO presupuesto.*,idx
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CALL busca_codigo()
CALL busca_vend()
DISPLAY BY NAME presupuesto.* ATTRIBUTE(CYAN)
MENU "OPCION"
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT busca INTO presupuesto.*,idx
IF status = notfound THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
CALL busca_codigo()
CALL busca_vend()
DISPLAY BY NAME presupuesto.* ATTRIBUTE(CYAN)
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS busca INTO presupuesto.*,idx
IF status = notfound THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
CALL busca_codigo()
CALL busca_vend()
DISPLAY BY NAME presupuesto.* ATTRIBUTE(CYAN)
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST busca INTO presupuesto.*,idx
LET numero_msg = 5
CALL msg(numero_msg)
CALL busca_codigo()
CALL busca_vend()
DISPLAY BY NAME presupuesto.* ATTRIBUTE(CYAN)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH FIRST busca INTO presupuesto.*,idx
LET numero_msg = 4
CALL msg(numero_msg)
CALL busca_codigo()
CALL busca_vend()
DISPLAY BY NAME presupuesto.* ATTRIBUTE(CYAN)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
IF presupuesto.status_t = "E" THEN
LET numero_msg = 39
CALL msg(numero_msg)
RETURN
END IF
INPUT BY NAME presupuesto.cantidad,presupuesto.valor WITHOUT DEFAULTS
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
EXIT INPUT
END INPUT
DELETE FROM vetb00045
WHERE rowid = idx
INSERT INTO vetb00045 values
(presupuesto.*)
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
CLEAR FORM
LET numero_msg = 13
CALL msg(numero_msg)
COMMAND KEY("L") "eLiminar"
DELETE FROM vetb00045
WHERE rowid = idx
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
EXIT MENU
END MENU
END FUNCTION
FUNCTION busca_codigo()
SELECT a.descripcion INTO descrip2
FROM iptb00034 a
WHERE a.cod_categoria = presupuesto.cod_n
SELECT a.nombre_marca INTO nombre_m
FROM iptb00019 a
WHERE a.marca = pmarca
LET descripcion = descrip2 CLIPPED," ",nombre_m CLIPPED," ",
descrip3 CLIPPED
DISPLAY BY NAME descripcion ATTRIBUTE(CYAN)
END FUNCTION
FUNCTION busca_vend()
SELECT a.nom1_emp,a.apell1_emp INTO descrip1,descrip4
FROM adtb00003 a
WHERE a.num_emp = presupuesto.sec_vend AND
a.status_t IS NULL
LET nombre_v = descrip1 CLIPPED," ",descrip4 CLIPPED
DISPLAY BY NAME nombre_v ATTRIBUTE(CYAN)
END FUNCTION