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