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

266 lines
8.0 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
OPEN FORM infmcs006 FROM "infmcs006"
DISPLAY FORM infmcs006
call ui.Interface.loadStyles("formularios")
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))+')',p.bodega ",
" 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
CALL csmov2.clear()
LET idx = 1
LET csmov2[1].parent_id = NULL
FOREACH jhonn_1 INTO csmov.*,xbodega
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
LET balance = balance + csmov.cantidad_2
LET csmov2[idx].fecha_2 = csmov.fecha_1
LET csmov2[idx].balance = balance USING "---,---,---.##"
LET csmov2[idx].num_doc = "(",csmov.cod_mov using "&&",")"," ",
csmov.num_doc USING "&&&&&&"
LET csmov2[idx].bodega1 = csmov.bodega1
IF csmov.cantidad_2 < 0 THEN
LET csmov2[idx].entrada = null
LET csmov2[idx].salida = csmov.cantidad_2 USING "---,---,---.##"
ELSE
LET csmov2[idx].salida = null
LET csmov2[idx].entrada = csmov.cantidad_2 USING "###,###,###.##"
END IF
LET csmov2[idx].chield_id = idx USING "<<<"
# DISPLAY csmov2[idx].num_doc," ",csmov2[idx].fecha_2," ",csmov2[idx].entrada," p ",csmov2[idx].parent_id," c ",csmov2[idx].chield_id
CALL llenahijos(idx,datos_cons.cod_n,datos_cons.cod_grupo,datos_cons.cod_tipo,datos_cons.cod_sec,csmov.num_doc,csmov.cod_mov,xbodega)
LET idx = idx + 1
LET csmov2[idx].parent_id = null
END FOREACH
{
LET csmov2[1].parent_id = NULL
LET csmov2[1].chield_id = 1
LET csmov2[1].num_doc = '2020'
LET csmov2[1].fecha_2 = '28/11/2023'
LET csmov2[1].entrada = '1'
LET csmov2[2].parent_id = '1'
LET csmov2[2].chield_id = '1.1'
LET csmov2[2].num_doc = '1.20'
LET csmov2[2].fecha_2 = '2.20'
LET csmov2[2].salida = '2'
LET csmov2[3].parent_id = null
LET csmov2[3].chield_id = '2'
LET csmov2[3].num_doc = '4040'
LET csmov2[3].fecha_2 = '29/11/2023'
LET csmov2[3].salida = '3'
LET csmov2[4].parent_id = 2
LET csmov2[4].chield_id = '2.1'
LET csmov2[4].num_doc = '1.24'
LET csmov2[4].fecha_2 = '2.24'
LET csmov2[4].salida = '4'
}
# FOR idx = 1 TO csmov2.getLength()
# DISPLAY csmov2[idx].num_doc," ",csmov2[idx].fecha_2," ",csmov2[idx].entrada," p ",csmov2[idx].parent_id," c ",csmov2[idx].chield_id
# END FOR
END CONSTRUCT
DISPLAY ARRAY csmov2 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
FUNCTION llenahijos(i1,pcodn,pcodgrupo,pcodtipo,pcodsec,pnumdoc,pcodmov,pbodega)
DEFINE i1,i2,i3,pcodn,pcodgrupo,pcodtipo,pcodsec,pnumdoc,pbodega,pcodmov INT,
xcodigo_bloque VARCHAR(30),
xancho1,xlargo1,xespesor1,xancho2,xlargo2,xespesor2,xmedida1,xmedida2 DEC(12,5)
DECLARE busca_desglose CURSOR FOR
SELECT a.codigo_bloque,a.ancho1,a.largo1,a.espesor1,SUM(a.medida1)
INTO xcodigo_bloque,xancho1,xlargo1,xespesor1,xmedida1
FROM intb00018 a
WHERE a.cod_n = pcodn and
a.cod_grupo = pcodgrupo and
a.cod_tipo = pcodtipo and
a.cod_Sec = pcodSec and
a.documento =pnumdoc and
a.cod_mov = pcodmov AND
a.bodega = pbodega
GROUP BY a.codigo_bloque,a.ancho1,a.largo1,a.espesor1
#DISPLAY "datos1: ",pcodn,pcodgrupo,pcodtipo,pcodsec," d ",pnumdoc," m ",pcodmov,"b ",pbodega
LET i2 = i1 +1
LET i3 =1
#LET csmov2[i2].chield_id = i1 USING "<<<"
FOREACH busca_desglose
LET csmov2[i2].parent_id = i1 USING "<<<"
LET csmov2[i2].num_doc = xcodigo_bloque CLIPPED
LET CSMOV2[I2].fecha_2 = xancho1 USING "<<.<<<<<"," X "
LET CSMOV2[I2].entrada = xlargo1 USING "<<.<<<<<"," X "
LET csmov2[i2].salida = xespesor1 USING "<<.<<<<<"
LET csmov2[i2].balance = xmedida1 USING "<<.<<<<<"
LET csmov2[i2].chield_id = i1 USING "<<<",".",i3 USING "<<<"
# DISPLAY csmov2[i2].num_doc," ",csmov2[i2].fecha_2," ",csmov2[i2].entrada," p ",csmov2[i2].parent_id," c ",csmov2[i2].chield_id
LET i2 = i2 + 1
LET i3 = i3 +1
END FOREACH
LET idx = i2 -1
END FUNCTION