Files
MBS/PROYECTOS/ipdir - 21102021/ipprcs004_1_1.4gl
T

201 lines
6.9 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : IPPRCS004
OBJETIVO : Consulta Maestra de Productos con existencia
PROGRAMADOR : Ing. Juan F. Soto
FECHA REALIZACION : Julio 18, 1996.
-------------------------------------------------------------------------------
}
GLOBALS "ipprgb000.4gl"
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 ipprcs004()
END MAIN
FUNCTION ipprcs004()
DEFINE pcantidadconduce DEC(12,5),
chexistencia,chordenes CHAR(2),
pbodega smallint
OPTIONS
FORM LINE 7,
ERROR LINE 24,
COMMENT LINE 23
OPEN FORM ipfmcs004 FROM "ipfmcs004_1"
DISPLAY FORM ipfmcs004
CALL ui.Interface.LoadStyles("mbsStyle")
## Aqui se prepara el criterio de seleccion
LABEL volver:
INPUT BY NAME datos_cons.fech_fi,inventario,chexistencia
BEFORE INPUT
LET datos_cons.fech_fi = TODAY USING "dd/mm/yyyy"
DISPLAY BY NAME datos_cons.fech_fi
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF Inventario IS NULL THEN
CALL msg(16)
NEXT FIELD inventario
END IF
IF datos_cons.fech_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_fi
END IF
EXIT INPUT
END INPUT
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp
FROM cod_n,cod_grupo, cod_tipo,cod_sec,descrip_esp
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF inventario = "PRODUCTOS TERMINADOS" THEN
LET SELEC =
"SELECT a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec, a.descrip_esp, a.unidad_med, '0' AS Expr1, '0','0',b.descripcion, c.precio ",
"FROM vetb00061 AS b INNER JOIN ",
" vetb00025 AS c ON b.ventas = c.ventas RIGHT OUTER JOIN ",
" iptb00002 AS a ON c.cod_n = a.cod_n AND c.cod_grupo = a.cod_grupo AND c.cod_tipo = a.cod_tipo AND c.cod_sec = a.cod_sec ",
" WHERE (a.status_t IS NULL) AND ",criterio CLIPPED,
" ORDER BY a.cod_n, a.cod_grupo, a.cod_tipo, a.cod_sec "
END IF
IF inventario = "MATERIA PRIMA" THEN
LET SELEC =
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,'0','0',a.descrip_esp,",
" a.unidad_med,'0','0','0',a.descrip_ing ",
"FROM intb00001 a ",
"WHERE a.status_t is null AND ",criterio CLIPPED,
" ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec "
END IF
PREPARE busca FROM selec
DECLARE accion CURSOR FOR busca
## Busca los registros con la condicion dada y verifica si el producto terminado
## existe en el catalogo de bienes y servicios.
LET idx = 1
CALL prod11.clear()
FOREACH accion INTO prod11[idx].*,descrip1
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
# Busca La Existencia del Producto
LET prod11[idx].existencia = 0
IF inventario = "PRODUCTOS TERMINADOS" THEN
IF chexistencia = 'SI' THEN
SELECT SUM(a.cantidad_2) INTO prod11[idx].existencia FROM iptb00006 a
WHERE (a.cod_n = prod11[idx].cod_n1 AND
a.cod_grupo=prod11[idx].cod_grupo1 AND
a.cod_tipo=prod11[idx].cod_tipo1 AND
a.cod_sec=prod11[idx].cod_sec1) AND
(a.fecha <= datos_cons.fech_fi) AND
a.status_t IS NULL
END IF
# QUERY PARA BUSCAR LAS CANTIDADES EN ORDENES
# IF chordenes= 'SI' THEN
LET prod11[idx].cantidad_ordenes = 0
SELECT SUM(a.cantidad) INTO prod11[idx].cantidad_ordenes
FROM prtb00013 a,prtb00012 b
WHERE a.num_oc = b.num_oc AND
b.cerrada = 'N' AND
b.status_t IS NULL AND
a.cod_n = prod11[idx].cod_n1 AND
a.cod_grupo=prod11[idx].cod_grupo1 AND
a.cod_tipo=prod11[idx].cod_tipo1 AND
a.cod_sec=prod11[idx].cod_sec1
LET pcantidadConduce = 0
SELECT SUM(c.cantidad_2) INTO pcantidadConduce
FROM prtb00013 a,prtb00012 b,iptb00006 c,iptb00005 d
WHERE a.num_oc = b.num_oc AND
b.cerrada = 'N' AND
b.status_t IS NULL AND
a.cod_n = prod11[idx].cod_n1 AND
a.cod_grupo=prod11[idx].cod_grupo1 AND
a.cod_tipo=prod11[idx].cod_tipo1 AND
a.cod_sec=prod11[idx].cod_sec1 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
c.cod_mov = d.cod_mov AND
(d.control_despacho = 'SI' OR d.control_devolucion = 'SI') AND
a.num_oc = c.num_oc AND
c.status_t IS NULL
LET prod11[idx].cantidad_ordenes = prod11[idx].cantidad_ordenes +
pcantidadConduce
IF prod11[idx].existencia IS NULL THEN
LET prod11[idx].existencia=0
END IF
IF prod11[idx].cantidad_ordenes IS NULL THEN
LET prod11[idx].cantidad_ordenes=0
END IF
LET prod11[idx].pventas = prod11[idx].existencia - prod11[idx].cantidad_ordenes
# END IF
END IF
IF inventario = "MATERIA PRIMA" THEN
IF chexistencia = 'SI' THEN
SELECT SUM(a.cantidad_2) INTO prod11[idx].existencia FROM intb00006 a
WHERE (a.cod_n = prod11[idx].cod_n1 AND
a.cod_grupo=prod11[idx].cod_grupo1 AND
a.cod_tipo=prod11[idx].cod_tipo1 AND
a.cod_sec=prod11[idx].cod_sec1) AND
(a.fecha <= datos_cons.fech_fi) AND
a.status_t IS NULL
END IF
END IF
IF prod11[idx].existencia IS NULL THEN
LET prod11[idx].existencia = 0
END IF
LET prod11[idx].descrip_esp1 =prod11[idx].descrip_esp1 CLIPPED
LET idx = idx + 1
END FOREACH
CALL set_count (idx-1)
DISPLAY ARRAY prod11 TO consart.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
ELSE
CALL prod11.clear()
GOTO volver
END IF
END FUNCTION