Files

160 lines
4.4 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : IRPRCS004
OBJETIVO : Consulta Maestra de Repuestos.
PROGRAMADOR : Juan Fco. Soto.
FECHA REALIZACION : Marzo 15, 1993.
-------------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE dat_pre RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
precio DECIMAL(12,2)
END RECORD
DEFINE salir,salir1 CHAR(1)
DEFINE idx1 INTEGER
MAIN
DEFER INTERRUPT
SELECT * INTO p_companias.* FROM companias
CALL irprcs004()
END MAIN
FUNCTION irprcs004()
#WHENEVER ERROR CONTINUE
CLEAR SCREEN
OPTIONS
FORM LINE 7,
ERROR LINE 23,
COMMENT LINE 22
OPEN FORM irfmcs004 FROM "irfmcs004"
DISPLAY FORM irfmcs004
CALL PANTALLA()
DISPLAY "irprcs004" AT 4,3
DISPLAY "Consulta Maestra de Repuestos " AT 6,25
DISPLAY "<Esc> Continua Consultando" AT 2,7 ATTRIBUTE (blue,REVERSE)
DISPLAY "<Ctrl-C> Cancela Operacion" AT 2,50 ATTRIBUTE (blue,REVERSE)
## Aqui se prepara el criterio de seleccion
LABEL volver:
CONSTRUCT BY NAME criterio ON
a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
c.descrip_esp,c.descrip_ing
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
{LET selec1 = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,max(a.precio) ",
"FROM cotb00015 a WHERE a.status_t IS NULL AND ",
criterio CLIPPED, " GROUP BY 1,2,3,4 ORDER BY 1,2,3,4 "
PREPARE comando FROM selec1
DECLARE accion1 SCROLL CURSOR FOR comando
OPEN accion1
}
LET SELEC = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
" c.unidad_med,SUM(b.cantidad_2), a.dia_llegada, ",
" MAX(d.precio),c.descrip_ing ",
"FROM irtb00002 a,irtb00006 b,cotb00015 d ",
"WHERE a.cod_n IN (7,8) AND a.cod_n = c.cod_n AND ",
" a.cod_grupo = c.cod_grupo AND a.cod_tipo=c.cod_tipo AND ",
" a.cod_sec = c.cod_sec AND a.status_t IS NULL AND ",
" a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND ",
" a.cod_tipo=b.cod_tipo AND a.cod_sec = b.cod_sec AND ",
" a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND ",
" a.cod_tipo=d.cod_tipo AND a.cod_sec = d.cod_sec AND ",
" b.status_t IS NULL AND ",CRITERIO CLIPPED,
" GROUP BY 1,2,3,4,5,6,8,10 ORDER BY 1,2,3,4 "
PREPARE busca FROM selec
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
DECLARE accion CURSOR FOR busca
OPEN accion
## Busca los registros con la condicion dada y verifica si el repuesto existe
## en el catalogo de bienes y servicios.
LET idx = 1
LET general = 0
LET salir = "N"
WHILE salir != "S"
FETCH accion INTO art[idx].*
IF STATUS = NOTFOUND THEN
LET salir = "S"
EXIT WHILE
END IF
IF int_flag THEN
LET int_flag = FALSE
LET numero_msg = 2
CALL msg(numero_msg)
RETURN
END IF
{ LET idx1 = 1
LET salir1 = "N"
WHILE salir1 != "S"
FETCH ABSOLUTE idx1 accion1 INTO dat_pre.*
IF STATUS = NOTFOUND THEN
LET salir1 = "S"
EXIT WHILE
END IF
LET idx1 = idx1 + 1
IF art[idx].cod_n1 = dat_pre.cod_n AND
art[idx].cod_grupo1 = dat_pre.cod_grupo AND
art[idx].cod_tipo1 = dat_pre.cod_tipo AND
art[idx].cod_sec1 = dat_pre.cod_sec THEN
LET art[idx].precio = dat_pre.precio
LET salir1 = "S"
EXIT WHILE
END IF
END WHILE}
IF art[idx].precio IS NULL THEN
LET art[idx].precio = 0
END IF
LET art[idx].valor = art[idx].existencia * art[idx].precio
LET general = general + art[idx].valor
LET idx = idx + 1
END WHILE
#END FOREACH
DISPLAY "Total General = " AT 24,45
DISPLAY general using "##,###,###.##" AT 24,58
CALL set_count (idx-1)
DISPLAY ARRAY art TO consart.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
ELSE
CLEAR FORM
GOTO volver
END IF
END FUNCTION