Files
MBS/PROYECTOS/irdir/desglose_conteo.4gl
T

128 lines
5.3 KiB
Plaintext

DEFINE curr,i INT,
kdatos DYNAMIC ARRAY OF RECORD
bookmash VARCHAR(50),
tipos VARCHAR(50),
lado_1 DEC(8,2),
lado_2 DEC(8,2),
lado_3 DEC(8,2),
cantidad SMALLINT,
cantidad2 FLOAT,
tono,calidad VARCHAR(100),
xobservacion VARCHAR(200),
id_producto CHAR(25),
bodega INT,
seccion INT,
tramo INT,
codid,idrow,idtrx INT
END RECORD,
xcodid,xbodega,xseccion,xtramo,xcodn,xcodgrupo,xcodtipo,xcodsec,kidtrx INT,
xfecha DATE,
totalmedida DEC(12,5)
FUNCTION desglose_conteo(pcodid,pfecha,pbodega,pseccion,ptramo,pcodn,pcodgrupo,pcodtipo,pcodsec,descripcion,idtrx)
DEFINE pcodid,pbodega,pseccion,ptramo,pcodn,pcodgrupo,pcodtipo,pcodsec,idtrx INT,pfecha DATE,
descripcion VARCHAR(100)
LET xcodid = pcodid
LET xbodega = pbodega
LET xseccion = pseccion
LET xtramo = ptramo
LET xfecha = pfecha
LET xcodn = pcodn
LET xcodgrupo = pcodgrupo
LET xcodtipo = pcodtipo
LET xcodsec = pcodsec
LET kidtrx = idtrx
CALL kdatos.clear()
CALL busca_detalle()
OPEN WINDOW w1 WITH FORM "irfmwd015"
DISPLAY BY NAME pcodn,pcodgrupo,pcodtipo,pcodsec,descripcion
INPUT ARRAY kdatos FROM sdatos.* ATTRIBUTES(WITHOUT DEFAULTS)
BEFORE INPUT
LET curr = arr_curr()
LET totalmedida =0
LET kdatos[curr].cantidad2 =0
CALL bodegas('1')
CALL cseccion(kdatos[curr].bodega)
CALL ctramo(kdatos[curr].bodega,kdatos[curr].seccion)
AFTER FIELD cantidad
IF kdatos[arr_curr()].cantidad IS NOT NULL THEN
IF kdatos[arr_curr()].lado_1 IS NOT NULL THEN
LET kdatos[arr_curr()].cantidad2 =kdatos[arr_curr()].lado_1 *kdatos[arr_curr()].cantidad
END IF
IF kdatos[arr_curr()].lado_2 IS NOT NULL THEN
LET kdatos[arr_curr()].cantidad2 =kdatos[arr_curr()].lado_1 * kdatos[arr_curr()].lado_2* kdatos[arr_curr()].cantidad
END IF
IF kdatos[arr_curr()].lado_3 IS NOT NULL THEN
LET kdatos[arr_curr()].cantidad2 =kdatos[arr_curr()].cantidad2* kdatos[arr_curr()].lado_3* kdatos[arr_curr()].cantidad
END IF
DISPLAY kdatos[arr_curr()].cantidad2 TO sdatos[scr_line()].cantidad2
LET totalmedida = totalmedida + kdatos[arr_curr()].cantidad2
DISPLAY BY NAME totalmedida
END IF
AFTER INPUT
IF int_flag THEN
LET int_flag = FALSE
CALL msg(2)
END IF
LET totalmedida =0
FOR i =1 to kdatos.getLength()
IF kdatos[i].cantidad IS NOT NULL THEN
IF kdatos[i].lado_1 IS NOT NULL THEN
LET kdatos[i].cantidad2 =kdatos[i].lado_1 *kdatos[i].cantidad
END IF
IF kdatos[i].lado_2 IS NOT NULL THEN
LET kdatos[i].cantidad2 =kdatos[i].lado_1 * kdatos[i].lado_2* kdatos[i].cantidad
END IF
IF kdatos[i].lado_3 IS NOT NULL THEN
LET kdatos[i].cantidad2 =kdatos[i].cantidad2* kdatos[i].lado_3
END IF
LET totalmedida = totalmedida + kdatos[i].cantidad2
END IF
END FOR
EXIT INPUT
ON ACTION salvar ATTRIBUTE(TEXT="Guardar",IMAGE="fa-save")
CALL guarda_info()
END INPUT
CLOSE WINDOW w1
RETURN totalmedida
END FUNCTION
FUNCTION busca_detalle()
DECLARE busca_desglose CURSOR FOR
SELECT a.book,a.tipos,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.cantidad2,a.tono,a.calidad,
a.observacion,
a.idproducto,a.bodega,a.cod_seccion,a.cod_tramo,a.codid, a.idrow,a.idtrx
FROM iptb00062 a WHERE a.codid = xcodid AND a.fecha = xfecha
ORDER BY a.lado_1
LET i = 1
FOREACH busca_desglose INTO kdatos[i].*
LET i = i + 1
END FOREACH
END FUNCTION
FUNCTION guarda_info()
BEGIN WORK
DELETE FROM iptb00062 WHERE fecha = xfecha AND bodega = xbodega AND codid = xcodid
FOR i = 1 TO kdatos.getLength()
IF kdatos[i].cantidad2 IS NOT NULL THEN
INSERT INTO iptb00062 (codid,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad,cantidad2,lado_1,lado_2,lado_3,
book,tipos,cod_seccion,cod_tramo,bodega,us_crea,fech_crea,idproducto,idtrx,tono,calidad,fecha,
observacion)
VALUES (kdatos[i].codid,xcodn,xcodgrupo,xcodtipo,xcodsec,kdatos[i].cantidad,kdatos[i].cantidad2,
kdatos[i].lado_1,kdatos[i].lado_2,kdatos[i].lado_3,kdatos[i].bookmash,kdatos[i].tipos,
kdatos[i].seccion,kdatos[i].tramo,kdatos[i].bodega,suser_sname(),getdate(),
kdatos[i].id_producto,kidtrx,kdatos[i].tono,kdatos[i].calidad,xfecha,
kdatos[i].xobservacion)
END IF
END FOR
COMMIT WORK
CALL msg(1)
END FUNCTION