primer commit subida
This commit is contained in:
@@ -0,0 +1,242 @@
|
||||
{
|
||||
-------------------------------------------------------------------------------
|
||||
PROGRAMA : IPPRCS004
|
||||
OBJETIVO : Consulta Maestra de Productos con existencia y precios
|
||||
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 "decomarmol" USER usuarios USING clave
|
||||
|
||||
SELECT administrador,cod_comp,control2factura,controlordenpedidos,direccion,
|
||||
facturacontrolconduce,fax,fech_crea,fech_mod,nombre,rnc,rutalogocia,
|
||||
status_t,telefono,tipo_db,url,us_crea,us_mod,usuario
|
||||
INTO p_companias.administrador,p_companias.cod_comp,
|
||||
p_companias.control2factura,p_companias.controlordenpedidos,p_companias.direccion,
|
||||
p_companias.facturacontrolconduce,p_companias.fax,p_companias.fech_crea,
|
||||
p_companias.fech_mod,p_companias.nombre,p_companias.rnc,p_companias.rutalogocia,
|
||||
p_companias.status_t,p_companias.telefono,p_companias.tipo_db,
|
||||
p_companias.url,p_companias.us_crea,p_companias.us_mod,p_companias.usuario FROM companias
|
||||
CALL ipprcs004()
|
||||
END MAIN
|
||||
|
||||
FUNCTION ipprcs004()
|
||||
DEFINE transito,pcantidadconduce DEC(12,5),
|
||||
chexistencia CHAR(2),
|
||||
codigo,codigo1 VARCHAR(50),
|
||||
progreso,noreg INT,
|
||||
fecha_ordenada,fecha_recibida DATE
|
||||
|
||||
|
||||
OPEN FORM ipfmcs004 FROM "ipfmcs004_1"
|
||||
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,chexistencia
|
||||
BEFORE INPUT
|
||||
LET datos_cons.fech_fi = TODAY USING "dd/mm/yyyy"
|
||||
DISPLAY BY NAME datos_cons.fech_fi
|
||||
|
||||
AFTER INPUT
|
||||
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
|
||||
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
|
||||
END CONSTRUCT
|
||||
|
||||
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, '0', '0','0',b.descripcion, c.precio ",
|
||||
"FROM vetb00061 AS b INNER JOIN ",
|
||||
" vetb00025 AS c ON b.ventas = c.ventas AND c.tipo_cliente = 0 and c.sec_cliente = 0 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 "
|
||||
|
||||
LET selec2=
|
||||
"SELECT COUNT(*) ",
|
||||
"FROM vetb00061 AS b INNER JOIN ",
|
||||
" vetb00025 AS c ON b.ventas = c.ventas and c.tipo_cliente = 0 and c.sec_cliente = 0 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
|
||||
|
||||
|
||||
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
|
||||
|
||||
PREPARE cuenta FROM selec2
|
||||
EXECUTE cuenta INTO noreg
|
||||
|
||||
## 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()
|
||||
LET codigo1 = 1
|
||||
LET codigo = 2
|
||||
|
||||
LET progreso = 3
|
||||
DISPLAY progreso TO progreso
|
||||
CALL ui.Interface.refresh()
|
||||
|
||||
FOREACH accion INTO prod11[idx].*,descrip1
|
||||
LET codigo = prod11[idx].cod_n1 USING "&&&&","-",
|
||||
prod11[idx].cod_grupo1 USING "&&&&&","-",
|
||||
prod11[idx].cod_tipo1 USING "&&&&&","-",
|
||||
prod11[idx].cod_sec1 USING "&&&&&&&&&"
|
||||
|
||||
|
||||
# Busca La Existencia del Producto
|
||||
LET prod11[idx].existencia=NULL
|
||||
IF inventario = "PRODUCTOS TERMINADOS" THEN
|
||||
IF codigo <> codigo1 THEN
|
||||
LET codigo1 = prod11[idx].cod_n1 USING "&&&&","-",
|
||||
prod11[idx].cod_grupo1 USING "&&&&&","-",
|
||||
prod11[idx].cod_tipo1 USING "&&&&&","-",
|
||||
prod11[idx].cod_sec1 USING "&&&&&&&&&"
|
||||
|
||||
|
||||
LET prod11[idx].estado=NULL
|
||||
SELECT UNIQUE a.cod_sec FROM iptb00050 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
|
||||
|
||||
IF STATUS <> NOTFOUND THEN
|
||||
LET prod11[idx].estado = "information.png"
|
||||
END IF
|
||||
|
||||
CALL disponibles(prod11[idx].cod_n1,prod11[idx].cod_grupo1,prod11[idx].cod_tipo1,prod11[idx].cod_sec1,datos_cons.fech_fi)
|
||||
RETURNING prod11[idx].cantidad_ordenes,pcantidadConduce,prod11[idx].transito,prod11[idx].existencia,
|
||||
prod11[idx].reservado
|
||||
|
||||
IF prod11[idx].existencia IS NULL THEN
|
||||
LET prod11[idx].existencia = 0
|
||||
END IF
|
||||
|
||||
LET prod11[idx].cantidad_ordenes = prod11[idx].cantidad_ordenes -
|
||||
pcantidadConduce
|
||||
|
||||
IF prod11[idx].cantidad_ordenes IS NULL THEN
|
||||
LET prod11[idx].cantidad_ordenes=0
|
||||
END IF
|
||||
|
||||
IF prod11[idx].cantidad_ordenes >0 THEN
|
||||
LET prod11[idx].pventas = prod11[idx].existencia - prod11[idx].cantidad_ordenes
|
||||
ELSE
|
||||
LET prod11[idx].pventas=prod11[idx].existencia
|
||||
END IF
|
||||
IF prod11[idx].reservado >0 THEN
|
||||
LET prod11[idx].pventas = prod11[idx].pventas - prod11[idx].reservado
|
||||
END IF
|
||||
|
||||
# MERCANCIA EN TRANSITO
|
||||
CALL mercancia_transito(prod11[idx].cod_n1,prod11[idx].cod_grupo1,
|
||||
prod11[idx].cod_tipo1,prod11[idx].cod_sec1,datos_cons.fech_fi,'02')
|
||||
RETURNING transito,fecha_ordenada,fecha_recibida
|
||||
LET prod11[idx].transito = transito
|
||||
LET prod11[idx].fecha_llegada = fecha_recibida
|
||||
LET prod11[idx].fecha_ordenada = fecha_ordenada
|
||||
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
|
||||
|
||||
|
||||
LET idx = idx + 1
|
||||
|
||||
LET progreso = (idx /noreg )*100
|
||||
DISPLAY progreso TO progreso
|
||||
CALL ui.Interface.refresh()
|
||||
|
||||
END FOREACH
|
||||
|
||||
DISPLAY ARRAY prod11 TO consart.*
|
||||
ON ACTION ordenDisponible
|
||||
IF prod11[arr_curr()].cantidad_ordenes > 0 THEN
|
||||
CALL busca_ordenes_reservadas(prod11[arr_curr()].cod_n1,prod11[arr_curr()].cod_grupo1,
|
||||
prod11[arr_curr()].cod_tipo1,prod11[arr_curr()].cod_Sec1)
|
||||
ELSE
|
||||
CALL fgl_winmessage("INFO","PRODUCTO NO TIENE ORDENES COLOCADAS","INFO")
|
||||
END IF
|
||||
|
||||
ON ACTION foto
|
||||
LET idx = arr_curr()
|
||||
CALL fotos(prod11[idx].cod_n1,prod11[idx].cod_grupo1,prod11[idx].cod_tipo1,
|
||||
prod11[idx].cod_sec1,prod11[idx].descrip_esp1,usuarios)
|
||||
|
||||
SELECT UNIQUE a.cod_sec FROM iptb00050 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
|
||||
|
||||
IF STATUS <> NOTFOUND THEN
|
||||
LET prod11[idx].estado = "information.png"
|
||||
END IF
|
||||
DISPLAY prod11[idx].estado TO consart[scr_line()].estado
|
||||
|
||||
ON ACTION reservado
|
||||
LET idx = arr_curr()
|
||||
IF prod11[idx].reservado >0 THEN
|
||||
CALL busca_reservas(prod11[idx].cod_n1,prod11[idx].cod_grupo1,prod11[idx].cod_tipo1,prod11[idx].cod_sec1)
|
||||
ELSE
|
||||
CALL fgl_winmessage("ERROR","PRODUCTO NO TIENE CANTIDAD RESERVADA","INFO")
|
||||
END IF
|
||||
ON ACTION bexistencia
|
||||
LET idx = arr_curr()
|
||||
CALL almacenes(prod11[idx].cod_n1,prod11[idx].cod_grupo1,prod11[idx].cod_tipo1,prod11[idx].cod_sec1)
|
||||
ON ACTION btransito
|
||||
CALL fechas_llegadas(prod11[idx].cod_n1,prod11[idx].cod_grupo1,prod11[idx].cod_tipo1,
|
||||
prod11[idx].cod_sec1,datos_cons.fech_fi)
|
||||
AFTER DISPLAY
|
||||
DISPLAY 0 TO progreso
|
||||
END DISPLAY
|
||||
|
||||
ON ACTION CANCEL
|
||||
LET INT_FLAG =FALSE
|
||||
EXIT PROGRAM
|
||||
END DIALOG
|
||||
END FUNCTION
|
||||
Reference in New Issue
Block a user