192 lines
7.4 KiB
Plaintext
192 lines
7.4 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
|
|
|
|
CALL ipprcs004()
|
|
END MAIN
|
|
|
|
FUNCTION ipprcs004()
|
|
DEFINE pcantidadConduce,pexistencia DEC(12,5),
|
|
codigo_act,codigo_ant VARCHAR(50)
|
|
|
|
OPEN FORM ipfmcs004 FROM "ipfmcs004"
|
|
DISPLAY FORM ipfmcs004
|
|
CALL ui.Interface.LoadStyles("mbsStyle")
|
|
|
|
## Aqui se prepara el criterio de seleccion
|
|
DIALOG ATTRIBUTES(FIELD ORDER FORM, UNBUFFERED)
|
|
INPUT BY NAME datos_cons.fech_fi,inventario
|
|
BEFORE INPUT
|
|
LET datos_cons.fech_fi = TODAY
|
|
|
|
CALL prod1.clear()
|
|
|
|
DISPLAY BY NAME datos_cons.fech_fi
|
|
IF datos_cons.fech_fi IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fech_fi
|
|
END IF
|
|
AFTER INPUT
|
|
|
|
END INPUT
|
|
|
|
CONSTRUCT criterio ON b.bodega,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp
|
|
FROM bodega,cod_n,cod_grupo, cod_tipo,cod_sec,descrip_esp
|
|
BEFORE CONSTRUCT
|
|
CALL prod1.clear()
|
|
CALL bodegas("1")
|
|
ON ACTION buscar
|
|
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,c.descripcion,SUM(b.cantidad_2), ",
|
|
" '0','0','0','0',c.cod_bodega ",
|
|
"FROM iptb00002 a,iptb00006 b,intb00009 c ",
|
|
"WHERE ",
|
|
" (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 b.bodega = c.cod_bodega AND b.status_t is null and ",
|
|
" CONVERT(DATE,b.fecha,104) <= '",datos_cons.fech_fi USING "mm/dd/yyyy" ,"' and ",
|
|
" a.status_t is null AND ",criterio CLIPPED,
|
|
" GROUP BY c.cod_bodega,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med,c.descripcion ",
|
|
" ORDER BY c.cod_bodega,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,a.descrip_esp,",
|
|
" a.unidad_med,c.descripcion,SUM(b.cantidad_2) ",
|
|
"FROM intb00001 a,intb00006 b,intb00009 c ",
|
|
"WHERE ",
|
|
" 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 b.bodega = c.cod_bodega and ",
|
|
" CONVERT(CHAR(10), b.fecha,104) <= '",datos_cons.fech_fi USING "mm/dd/yyyy","' ",
|
|
" AND a.status_t is null AND ",criterio CLIPPED,
|
|
" GROUP BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med,c.descripcion ",
|
|
" ORDER BY 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 prod1.clear()
|
|
LET codigo_ant = '0'
|
|
LET codigo_act = '0'
|
|
FOREACH accion INTO prod1[idx].*
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
LET codigo_act = prod1[idx].cod_n1 USING "&&&&&",prod1[idx].cod_grupo1 USING "&&&&&",
|
|
prod1[idx].cod_tipo1 USING "&&&&&",prod1[idx].cod_sec1 USING "&&&&&&&&"
|
|
|
|
LET prod1[idx].estado=NULL
|
|
SELECT UNIQUE a.cod_sec FROM iptb00050 a
|
|
WHERE a.cod_n = prod1[idx].cod_n1 AND
|
|
a.cod_grupo = prod1[idx].cod_grupo1 AND
|
|
a.cod_tipo = prod1[idx].cod_tipo1 AND
|
|
a.cod_sec = prod1[idx].cod_sec1
|
|
|
|
IF STATUS <> NOTFOUND THEN
|
|
LET prod1[idx].estado = "information.png"
|
|
END IF
|
|
IF prod1[idx].existencia IS NULL THEN
|
|
LET prod1[idx].existencia = 0
|
|
END IF
|
|
|
|
LET prod1[idx].cantidad_ordenes = 0
|
|
|
|
IF codigo_ant <> codigo_act THEN
|
|
LET codigo_ant = prod1[idx].cod_n1 USING "&&&&",prod1[idx].cod_grupo1 USING "&&&&",prod1[idx].cod_tipo1 USING "&&&&",prod1[idx].cod_sec1 USING "&&&&&&"
|
|
|
|
CALL disponibles(prod1[idx].cod_n1,prod1[idx].cod_grupo1,prod1[idx].cod_tipo1,prod1[idx].cod_sec1,datos_cons.fech_fi) RETURNING
|
|
prod1[idx].cantidad_ordenes,pcantidadConduce,prod1[idx].transito,pexistencia,prod1[idx].reservado
|
|
|
|
DISPLAY "ordenes1 ",prod1[idx].cantidad_ordenes
|
|
LET prod1[idx].cantidad_ordenes = prod1[idx].cantidad_ordenes -
|
|
pcantidadConduce
|
|
DISPLAY "ordenes ",prod1[idx].cantidad_ordenes," ",pcantidadConduce
|
|
END IF
|
|
IF prod1[idx].existencia IS NULL THEN
|
|
LET prod1[idx].existencia=0
|
|
END IF
|
|
IF prod1[idx].cantidad_ordenes IS NULL THEN
|
|
LET prod11[idx].cantidad_ordenes=0
|
|
END IF
|
|
IF prod1[idx].disponible IS NULL THEN
|
|
LET prod1[idx].disponible=0
|
|
END IF
|
|
|
|
LET prod1[idx].disponible = pexistencia - prod1[idx].cantidad_ordenes - prod1[idx].reservado
|
|
LET idx = idx + 1
|
|
|
|
END FOREACH
|
|
IF idx = 1 THEN
|
|
CALL msg(3)
|
|
CONTINUE DIALOG
|
|
END IF
|
|
|
|
DISPLAY ARRAY prod1 TO consart.*
|
|
ON ACTION ordenDisponible
|
|
IF prod1[arr_curr()].cantidad_ordenes <> 0 THEN
|
|
CALL busca_ordenes_reservadas(prod1[arr_curr()].cod_n1,prod1[arr_curr()].cod_grupo1,
|
|
prod1[arr_curr()].cod_tipo1,prod1[arr_curr()].cod_Sec1)
|
|
ELSE
|
|
CALL fgl_winmessage("INFO","PRODUCTO NO TIENE ORDENES COLOCADAS","INFO")
|
|
END IF
|
|
|
|
ON ACTION reservado
|
|
LET idx = arr_curr()
|
|
IF prod1[idx].reservado >0 THEN
|
|
CALL busca_reservas(prod1[idx].cod_n1,prod1[idx].cod_grupo1,prod1[idx].cod_tipo1,prod1[idx].cod_sec1)
|
|
ELSE
|
|
CALL fgl_winmessage("ERROR","PRODUCTO NO TIENE CANTIDAD RESERVADA","INFO")
|
|
END IF
|
|
ON ACTION foto
|
|
LET idx = arr_curr()
|
|
CALL fotos(prod1[idx].cod_n1,prod1[idx].cod_grupo1,prod1[idx].cod_tipo1,
|
|
prod1[idx].cod_sec1,prod1[idx].descrip_esp1,usuarios)
|
|
LET prod1[idx].estado = " "
|
|
SELECT UNIQUE a.cod_sec FROM iptb00050 a
|
|
WHERE a.cod_n = prod1[idx].cod_n1 AND
|
|
a.cod_grupo = prod1[idx].cod_grupo1 AND
|
|
a.cod_tipo = prod1[idx].cod_tipo1 AND
|
|
a.cod_sec = prod1[idx].cod_sec1
|
|
|
|
IF STATUS <> NOTFOUND THEN
|
|
LET prod1[idx].estado = "information.png"
|
|
END IF
|
|
DISPLAY prod1[idx].estado TO consart[scr_line()].estado
|
|
AFTER DISPLAY
|
|
CALL prod1.clear()
|
|
END DISPLAY
|
|
END CONSTRUCT
|
|
|
|
ON ACTION CANCEL
|
|
CALL prod1.clear()
|
|
CALL msg(2)
|
|
LET INT_FLAG = FALSE
|
|
EXIT PROGRAM
|
|
END DIALOG
|
|
END FUNCTION
|