160 lines
4.4 KiB
Plaintext
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
|
|
|