Files
MBS/PROYECTOS/indir/inprcs006_1.4gl
T

185 lines
5.1 KiB
Plaintext

{
PROGRAMA : INPRCS006
OBJETIVO : Programa Consulta Balances Materia Prima.
PROGRAMADOR : Juan Fco. Soto (Johnny)
FECHA REALIZACION : Agosto 18,1992.
}
GLOBALS
"inprgb000.4gl"
DEFINE xbodega SMALLINT
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
#let usuarios = "jsoto"
#let clave = "lmmjvsd2009"
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL inprcs006()
END MAIN
FUNCTION inprcs006()
DEFINE fecha1 char(8)
DEFINE hora1 char(5)
DEFINE balance_in DECIMAL(12,2),
query1,mensaje_ini STRING
LET fecha1 = today using "dd/mm/yy"
LET hora1 = time
LET int_flag = false
LET bandera = 0
#WHENEVER ERROR CONTINUE
CLEAR SCREEN
OPTIONS
ERROR LINE 24,
FORM LINE 4,
COMMENT LINE 22,
PROMPT LINE 23
call ui.Interface.loadStyles("formularios")
OPEN FORM infmcs006 FROM "infmcs006"
DISPLAY FORM infmcs006
DIALOG ATTRIBUTE(UNBUFFERED)
INPUT BY NAME datos_cons.*
BEFORE INPUT
INITIALIZE datos_gen.* TO NULL
LET balance = 0
CALL bodegas('1')
BEFORE FIELD fech_in
LET datos_cons.fech_in = today using "dd/mm/yyyy"
DISPLAY BY NAME datos_cons.fech_in
BEFORE FIELD fech_fi
LET datos_cons.fech_fi = today using "dd/mm/yyyy"
DISPLAY BY NAME datos_cons.fech_fi
AFTER FIELD cod_sec
SELECT descrip_esp,unidad_med
INTO datos_cons.descrip_esp,articulos.unidad_med
FROM intb00001
WHERE cod_n = datos_cons.cod_n and cod_grupo = datos_cons.cod_grupo and
cod_tipo = datos_cons.cod_tipo and cod_sec = datos_cons.cod_sec and
status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
CLEAR FORM
NEXT FIELD cod_n
END IF
DISPLAY BY NAME datos_cons.descrip_esp,articulos.unidad_med
AFTER FIELD fech_fi
IF datos_cons.fech_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
IF datos_cons.fech_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
IF datos_cons.fech_in > datos_cons.fech_fi THEN
LET numero_msg = 86
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
END INPUT
CONSTRUCT criterio ON p.bodega FROM bodega
BEFORE CONSTRUCT
CALL bodegas('1')
ON ACTION buscar ATTRIBUTE(TEXT="Ejecuta Busqueda",IMAGE="find")
IF datos_cons.fech_fi IS NULL THEN
CALL msg(16)
NEXT FIELD fecha_in
END IF
LET query1 =
"SELECT ISNULL(SUM(p.cantidad_2),0) FROM intb00006 p
WHERE ", criterio clipped," and p.cod_n = ? and p.cod_grupo = ? and
p.cod_tipo = ? and p.cod_sec = ? AND
p.fecha < ? and p.status_t is null
"
PREPARE balanceini FROM query1
EXECUTE balanceini USING datos_cons.cod_n,datos_cons.cod_grupo,datos_cons.cod_tipo,datos_cons.cod_sec, datos_cons.fech_in
INTO balance
LET balance_in = balance
LET mensaje_ini = "Blance Inicial: ",balance_in using "---,---,---.##"
DISPLAY BY NAME mensaje_ini
LET query1 =
"SELECT p.num_doc,convert(char(10),p.fecha,103),sum(p.cantidad_2),p.cod_mov,b.descripcion + '('+cast(p.bodega as char(2))+')' ",
" FROM intb00006 p,intb00009 b ",
" WHERE ", criterio CLIPPED," AND p.cod_n = ? and p.cod_grupo = ? and ",
" p.cod_tipo = ? and p.cod_sec = ? and ",
" p.bodega = b.cod_bodega and ",
" p.status_t is null and p.fecha between ? and ? ",
" GROUP BY p.num_doc,p.fecha,p.cod_mov,b.descripcion,p.bodega ",
" ORDER BY p.fecha "
PREPARE comando FROM query1
DECLARE jhonn_1 CURSOR FOR comando
CALL csmov1.clear()
OPEN jhonn_1 USING datos_cons.cod_n,datos_cons.cod_grupo,datos_cons.cod_tipo,
datos_cons.cod_sec,datos_cons.fech_in,datos_cons.fech_fi
LET idx = 1
FOREACH jhonn_1 INTO csmov.*
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
LET balance = balance + csmov.cantidad_2
LET csmov1[idx].fecha_2 = csmov.fecha_1
LET csmov1[idx].balance = balance USING "---,---,---.##"
LET csmov1[idx].num_doc = "(",csmov.cod_mov using "&&",")"," ",
csmov.num_doc USING "&&&&&&"
LET csmov1[idx].bodega1 = csmov.bodega1
IF csmov.cantidad_2 < 0 THEN
LET csmov1[idx].entrada = null
LET csmov1[idx].salida = csmov.cantidad_2 USING "---,---,---.##"
ELSE
LET csmov1[idx].salida = null
LET csmov1[idx].entrada = csmov.cantidad_2 USING "###,###,###.##"
END IF
LET idx = idx + 1
END FOREACH
END CONSTRUCT
DISPLAY ARRAY csmov1 TO s_csmov.*
END DISPLAY
ON ACTION CANCEL
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
EXIT PROGRAM
END DIALOG
END FUNCTION