{ -------------------------------------------------------------------------- PROGRAMA : INPRMT046 OBJETIVO : Programa Captura Documento Otros Movimientos de Inventario de Materia Prima. PROGRAMADOR : Betania Guerrero Perez FECHA REALIZACION : Agosto 07, 1992. MODIFICADO POR : Tadeo A. Ferreras F. FECHA : Octubre 27, 1995. DESCRIPCION : Eliminar Funcion de Anular Registros -------------------------------------------------------------------------- } GLOBALS "inprgb000.4gl" DEFINE descrip_mov,descripcion,nombre,apellido CHAR(30),unidad_med CHAR(4) DEFINE insertamedida,modifica CHAR(1), ultimo_numero,tmpnumero INTEGER MAIN DEFER INTERRUPT #WHENEVER ERROR CONTINUE 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 * INTO p_companias.* FROM companias CALL inprmt046() END MAIN FUNCTION busca_material() LET int_flag = FALSE OPEN WINDOW material1 AT 10,9 WITH FORM "infmwd004" ATTRIBUTE(BORDER,FORM LINE FIRST + 2) CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, a.unidad_med FROM cod_n,cod_grupo,cod_tipo,cod_sec,descrip_esp, unidad_med LET selec = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ", "a.unidad_med FROM intb00001 a ", "WHERE a.status_t IS NULL AND ",criterio CLIPPED, "ORDER BY 1,2,3,4" PREPARE comando4 FROM selec DECLARE comp4 CURSOR FOR comando4 LET idx = 1 FOREACH comp4 INTO datos_mt[idx].* LET idx = idx + 1 END FOREACH CALL SET_COUNT(idx - 1) IF idx = 1 THEN LET numero_msg = 3 CALL msg(numero_msg) GOTO salir END IF DISPLAY ARRAY datos_mt TO datos_mt1.* LET idx = ARR_CURR() LABEL salir: CLOSE WINDOW material1 END FUNCTION FUNCTION inprmt046() DEFINE fecha CHAR(8) DEFINE hora CHAR(5) CLEAR SCREEN OPTIONS ERROR LINE 24, FORM LINE 4, COMMENT LINE 22, PROMPT LINE 23 LET fecha = today USING "dd/mm/yy" LET hora = time OPEN FORM infmmt046 FROM "infmmt046" DISPLAY FORM infmmt046 MENU ON ACTION nuevo CALL inprad046() ON ACTION buscar LET pprograma = 'inprmt046' CALL reimprime(pprograma) ON ACTION salir EXIT MENU END MENU END FUNCTION FUNCTION inprad046() DEFINE fecha_c DATE DEFINE dia SMALLINT # WHENEVER ERROR CONTINUE LET int_flag = FALSE INITIALIZE otros_mov.* TO NULL IF (OPC = "S" OR OPC = "s") OR opc IS NULL THEN INITIALIZE otros_mov.* TO NULL END IF LET insertamedida = 'N' INPUT BY NAME otros_mov.*,datos1.depto_a,pnum_emp BEFORE INPUT LET nombre = NULL LET apellido = NULL AFTER FIELD pnum_emp IF pnum_emp IS NOT NULL THEN SELECT a.nom1_emp,a.apell1_Emp INTO nombre,apellido FROM adtb00003 a WHERE a.num_Emp = pnum_emp IF STATUS = NOTFOUND THEN CALL msg(3) NEXT FIELD pnum_Emp END IF DISPLAY BY NAME nombre,apellido END IF AFTER FIELD depto_a IF datos1.depto_a IS NOT NULL THEN SELECT a.nom_dpto INTO nombre_d FROM adtb00001 a WHERE a.departamento = datos1.depto_a IF STATUS = NOTFOUND THEN CALL msg(3) NEXT FIELD departamento END IF DISPLAY BY NAME nombre_d END IF AFTER FIELD fecha IF otros_mov.fecha IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha END IF IF otros_mov.fecha > TODAY THEN LET numero_msg = 160 CALL msg(numero_msg) NEXT FIELD fecha END IF LET p_fechas = otros_mov.fecha CALL prd(p_fechas,usuarios) RETURNING bandera IF bandera = 1 THEN LET bandera = 0 NEXT FIELD fecha END IF BEFORE FIELD bodega LET otros_mov.bodega = 1 DISPLAY BY NAME otros_mov.bodega AFTER FIELD bodega SELECT *FROM intb00009 WHERE cod_bodega = otros_mov.bodega IF STATUS >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD bodega END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF BEFORE FIELD num_doc LET otros_mov.fecha = today DISPLAY BY NAME otros_mov.fecha AFTER FIELD cod_mov IF otros_mov.cod_mov IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_mov END IF IF otros_mov.cod_mov = 36 THEN LET numero_msg = 40 CALL msg(numero_msg) NEXT FIELD cod_mov END IF {IF otros_mov.cod_mov = 34 OR otros_mov.cod_mov = 35 OR otros_mov.cod_mov = 48 OR otros_mov.cod_mov = 36 OR otros_mov.cod_mov = 38 THEN LET numero_msg = 40 CALL msg(numero_msg) NEXT FIELD cod_mov END IF } SELECT a.descrip_mov,a.status_mov INTO otros_mov.descrip_mov,status_m FROM intb00005 a WHERE a.cod_mov = otros_mov.cod_mov AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_mov END IF DISPLAY BY NAME otros_mov.descrip_mov { SELECT a.num_doc INTO otros_mov.num_doc FROM intb00023 a WHERE a.cod_mov = otros_mov.cod_mov IF STATUS = NOTFOUND THEN LET otros_mov.num_doc = 0 END IF LET otros_mov.num_doc = otros_mov.num_doc + 1 DISPLAY BY NAME otros_mov.num_doc ATTRIBUTE(REVERSE,YELLOW) SELECT UNIQUE cod_mov INTO otros_mov.cod_mov FROM intb00006 WHERE num_doc = otros_mov.num_doc AND cod_mov = otros_mov.cod_mov AND status_t IS NULL IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) DISPLAY BY NAME otros_mov.cod_mov,otros_mov.fecha NEXT FIELD num_doc END IF # Verifica que el numero del documento de otros movimientos no este en el # archivo de movimientos. IF otros_mov.num_doc IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_doc END IF } END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE DELETE FROM intb00018 WHERE documento = tmpnumero AND cod_mov = otros_mov.cod_mov RETURN END IF INPUT ARRAY movi2 FROM s_movi1.* ON KEY (F10) LET p_act =arr_curr() LET scr_l = scr_line() LET descripcion= movi2[p_act].descrip_esp LET unidad_med = movi2[p_act].unidad_med CALL medidas() DISPLAY movi2[p_act].cantidad_2 TO s_movi1[scr_l].cantidad_2 ON KEY(CONTROL-W) CALL busca_material() LET movi2[p_act].cod_n = datos_mt[idx].cod_n LET movi2[p_act].cod_grupo = datos_mt[idx].cod_grupo LET movi2[p_act].cod_tipo = datos_mt[idx].cod_tipo LET movi2[p_act].cod_sec = datos_mt[idx].cod_sec LET movi2[p_act].descrip_esp = datos_mt[idx].descrip_esp LET movi2[p_act].unidad_med = datos_mt[idx].unidad_med DISPLAY movi2[p_act].cod_n TO s_movi1.cod_n DISPLAY movi2[p_act].cod_grupo TO s_movi1.cod_grupo DISPLAY movi2[p_act].cod_tipo TO s_movi1.cod_tipo DISPLAY movi2[p_act].cod_sec TO s_movi1.cod_sec DISPLAY movi2[p_act].descrip_esp TO s_movi1.descrip_esp BEFORE ROW LET p_act = arr_curr() LET scr_l = scr_line() AFTER FIELD cod_sec IF movi2[p_act].cod_n IS NOT NULL AND movi2[p_act].cod_grupo IS NOT NULL and movi2[p_act].cod_tipo IS NOT NULL AND movi2[p_act].cod_sec IS NOT NULL THEN FOR idx = 1 TO arr_count() IF idx != p_act THEN IF movi2[idx].cod_n = movi2[p_act].cod_n AND movi2[idx].cod_grupo = movi2[p_act].cod_grupo AND movi2[idx].cod_tipo = movi2[p_act].cod_tipo AND movi2[idx].cod_sec = movi2[p_act].cod_sec THEN LET numero_msg = 21 CALL msg(numero_msg) LET p_act = p_act - 1 NEXT FIELD cod_n END IF END IF END FOR SELECT a.descrip_esp,a.unidad_med INTO descrip1,descrip2 FROM intb00001 a, intb00002 b WHERE a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND a.cod_n = movi2[p_act].cod_n AND a.cod_grupo = movi2[p_act].cod_grupo AND a.cod_tipo = movi2[p_act].cod_tipo AND a.cod_sec = movi2[p_act].cod_sec AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_n END IF LET movi2[p_act].descrip_esp = descrip1 LET movi2[p_act].unidad_med = descrip2 clipped DISPLAY movi2[p_act].descrip_esp TO s_movi1[scr_l].descrip_esp DISPLAY movi2[p_act].unidad_med TO s_movi1[scr_l].unidad_med END IF AFTER FIELD cantidad_2 IF movi2[p_act].cod_n IS NOT NULL AND movi2[p_act].cod_grupo IS NOT NULL and movi2[p_act].cod_tipo IS NOT NULL AND movi2[p_act].cod_sec IS NOT NULL THEN IF movi2[p_act].cantidad_2 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cantidad_2 END IF LET chequea.existe = 0 SELECT sum(cantidad_2) INTO chequea.existe FROM intb00006 WHERE cod_n = movi2[p_act].cod_n and cod_grupo = movi2[p_act].cod_grupo and cod_tipo = movi2[p_act].cod_tipo and cod_sec = movi2[p_act].cod_sec AND status_t IS NULL IF status_m = "2" THEN IF movi2[p_act].cantidad_2 > chequea.existe THEN LET numero_msg = 30 CALL msg(numero_msg) NEXT FIELD cod_n END IF END IF END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false DELETE FROM intb00018 WHERE documento = tmpnumero AND cod_mov = otros_mov.cod_mov RETURN END IF PROMPT "Toda la Informacion Esta Correcta? (S/N)" FOR CHAR opc SELECT MAX(a.num_doc) INTO ultimo_numero FROM intb00006 a WHERE a.cod_mov = otros_mov.cod_mov IF ultimo_numero IS NULL THEN LET ultimo_numero = 0 END IF LET otros_mov.num_doc = ultimo_numero + 1 DISPLAY BY NAME otros_mov.num_doc IF OPC = "S" or OPC = "s" THEN CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of, doble_on,doble_off,comp_on,comp_off, doce,normal,archivo,copia START REPORT formu46 TO archivo BEGIN WORK FOR idx = 1 TO arr_count() IF movi2[idx].cod_n IS NOT NULL AND movi2[idx].cod_grupo IS NOT NULL and movi2[idx].cod_tipo IS NOT NULL AND movi2[idx].cod_sec IS NOT NULL AND movi2[idx].cantidad_2 IS NOT NULL THEN IF status_m = 2 THEN LET movi2[idx].cantidad_2 = movi2[idx].cantidad_2 * -1 END IF INSERT INTO intb00006 (num_doc,fecha,cod_mov,cod_n,cod_grupo,cod_tipo,cod_Sec,cantidad_2, bodega,us_Crea,fech_crea,num_emp,depto_a ) VALUES (otros_mov.num_doc,otros_mov.fecha, otros_mov.cod_mov,movi2[idx].cod_n,movi2[idx].cod_grupo, movi2[idx].cod_tipo,movi2[idx].cod_sec, movi2[idx].cantidad_2, otros_mov.bodega,SUSER_NAME(),GETDATE(),pnum_emp,datos1.depto_a) IF STATUS < 0 THEN ROLLBACK WORK CALL fgl_winmessage("Error","ERROR INSERTANDO INFORMACION","STOP") EXIT PROGRAM END IF OUTPUT TO REPORT formu46(otros_mov.num_doc,otros_mov.fecha, otros_mov.cod_mov,otros_mov.descrip_mov, nombre_d, movi2[idx].*) END IF END FOR IF insertamedida = 'S' THEN UPDATE intb00018 set documento = otros_mov.num_doc WHERE documento = tmpnumero AND cod_mov = otros_mov.cod_mov IF STATUS < 0 THEN ROLLBACK WORK CALL fgl_winmessage("Error","ERROR ACTUALIZANDO TABLA MEDIDAS","STOP") EXIT PROGRAM END IF END IF COMMIT WORK FINISH REPORT formu46 RUN imprime { SELECT a.* FROM intb00023 a WHERE a.cod_mov = otros_mov.cod_mov IF STATUS = NOTFOUND THEN INSERT INTO intb00023(num_doc,cod_mov) VALUES (otros_mov.num_doc,otros_mov.cod_mov) END IF UPDATE intb00023 SET num_doc = otros_mov.num_doc WHERE @cod_mov = otros_mov.cod_mov } LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM END IF END FUNCTION REPORT formu46(x,xnombre_d,z) DEFINE x RECORD num_doc LIKE iptb00006.num_doc, fecha LIKE iptb00006.fecha, cod_mov LIKE intb00005.cod_mov, descrip_mov CHAR(30) END RECORD DEFINE z RECORD cod_n LIKE intb00003.cod_n, cod_grupo LIKE intb00003.cod_grupo, cod_tipo LIKE intb00003.cod_tipo, cod_sec LIKE intb00003.cod_sec, cantidad_2 LIKE intb00006.cantidad_2, unidad_med LIKE intb00001.unidad_med, descrip_esp LIKE intb00001.descrip_esp END RECORD, xancho1,xlargo1,xespesor1,xancho2,xlargo2,xespesor2,xmedida1,xmedida2, total_medida1,total_medida2 DEC(12,4), xcodigo_bloque CHAR(12),xnombre_d CHAR(30) DEFINE doce,normal,doble,doble_of,negras,negras_off CHAR(2) OUTPUT LEFT MARGIN 0 ORDER BY x.num_doc,z.cod_sec FORMAT BEFORE GROUP OF x.num_doc LET doble = ASCII 14 LET doble_of = ASCII 20 LET negras = ASCII 27, ASCII 69 LET negras_off = ASCII 27, ASCII 70 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 PRINT comp_on PRINT COLUMN 1, negras,doble,p_companias.nombre CLIPPED PRINT COLUMN 71,"No. ",doble,x.num_doc using "<<<<<<" PRINT COLUMN 30, x.cod_mov using "&&"," ",x.descrip_mov CLIPPED, COLUMN 71, x.fecha using "dd/mm/yy" PRINT COLUMN 1, "DEPARTAMENTO: ",datos1.depto_a," ",xnombre_d PRINT COLUMN 1, "OPERADOR : ",pnum_emp,"-",nombre," ",apellido PRINT COLUMN 1, "------------------------------------------------------------------------------", "-------------" PRINT COLUMN 68, "CANTIDAD" PRINT COLUMN 2,doble, "PRODUCTO",doble_of clipped, #COLUMN 61, "ORDENADA", COLUMN 61, "ENTREGADA" PRINT COLUMN 1, "------------------------------------------------------------------------------", "-------------" SKIP 1 LINES ON EVERY ROW PRINT COLUMN 2, z.cod_n using "&","-", COLUMN 4, z.cod_grupo using "&","-", COLUMN 6, z.cod_tipo using "&&","-", COLUMN 9, z.cod_sec using "&&&", COLUMN 17, z.descrip_esp clipped," ", z.unidad_med, #COLUMN 63, z.cantidad_1 using "###,###,###.##", COLUMN 63, z.cantidad_2 using "###,###.####" IF insertamedida = 'S' THEN PRINT COLUMN 2, "=========","========================================","===========================================" PRINT COLUMN 2, " CODIGO "," MEDIDAS RECIBIDAS |"," MEDIDAS ENVIADAS |" PRINT COLUMN 2, "=========","========================================","===========================================" PRINT COLUMN 2, " ANCHO LARGO ESPES ",z.unidad_med," |"," ANCHO LARGO ESPES MEDIDA" DECLARE busca_medida CURSOR FOR SELECT a.codigo_bloque,a.ancho1,a.largo1,a.espesor1,a.medida1, a.ancho2,a.largo2,a.espesor2,a.medida2 INTO xcodigo_bloque,xancho1,xlargo1,xespesor1,xmedida1, xancho2,xlargo2,xespesor2,xmedida2 FROM intb00018 a WHERE a.cod_n = z.cod_n and a.cod_grupo = z.cod_grupo and a.cod_tipo = z.cod_tipo and a.cod_Sec = z.cod_Sec and a.documento =x.num_doc and a.cod_mov = x.cod_mov LET total_medida1 = 0 LET total_medida2 = 0 FOREACH busca_medida PRINT COLUMN 2,xcodigo_bloque," ",xancho1 USING "###.####", 2 spaces, xlargo1 USING "###.####", 2 spaces, xespesor1 USING "###.####", 2 spaces, xmedida1 USING "#,###.####", 3 spaces, xancho2 USING "###.####",2 spaces, xlargo2 USING "###.####", 2 spaces, xespesor2 USING "###.####", 2 spaces, xmedida2 USING "#,###.####" LET total_medida1 = xmedida1 + total_medida1 LET total_medida2 = xmedida2 + total_medida2 END FOREACH PRINT COLUMN 45,"==========", COLUMN 90,"==========" PRINT COLUMN 45, total_medida1 USING "#,###.####", COLUMN 90, total_medida2 USING "#,###.####" END IF PAGE TRAILER PRINT COLUMN 1, "------------------", COLUMN 22, "------------------", COLUMN 45, "------------------", COLUMN 65, "------------------" PRINT COLUMN 5, "Entregado Por", COLUMN 24, "Recibido Por", COLUMN 48, "Aprobado Por", COLUMN 68, "Aprobado Por" PRINT normal END REPORT FUNCTION medidas() DEFINE arrmedida DYNAMIC ARRAY OF RECORD codigo_bloque CHAR(25), ancho1 DEC(12,5), largo1 DEC(12,5), espesor1 DEC(12,5), medida1 DEC(12,5), ancho2 DEC(12,5), largo2 DEC(12,5), espesor2 DEC(12,5), medida2 DEC(12,5), cantidad DEC(12,5) END RECORD, total_medida DEC(12,5), sidx SMALLINT OPEN WINDOW prfmwd012 AT 5,3 WITH FORM "infmwd012" ATTRIBUTE (BORDER) DISPLAY BY NAME descripcion,medida,movi2[p_act].cod_n,movi2[p_act].cod_grupo,movi2[p_act].cod_tipo, movi2[p_act].cod_sec SELECT UNIQUE a.documento FROM intb00018 a WHERE a.documento = tmpnumero AND a.cod_mov = otros_mov.cod_mov AND a.cod_n = movi2[p_act].cod_n and a.cod_grupo = movi2[p_act].cod_grupo and a.cod_tipo = movi2[p_act].cod_tipo and a.cod_sec = movi2[p_act].cod_sec IF STATUS != NOTFOUND THEN LET modifica = "S" DECLARE busca_m CURSOR FOR SELECT a.codigo_bloque,a.ancho1,a.largo1,a.espesor1,a.medida1, a.ancho2,a.largo2,a.espesor2,a.medida2,a.cantidad FROM intb00018 a WHERE a.documento = tmpnumero AND a.cod_mov = otros_mov.cod_mov AND a.cod_n = movi2[p_act].cod_n and a.cod_grupo = movi2[p_act].cod_grupo and a.cod_tipo = movi2[p_act].cod_tipo and a.cod_sec = movi2[p_act].cod_sec LET idx = 1 FOREACH busca_m INTO arrmedida[idx].* IF arrmedida[idx].cantidad < 0 THEN LET arrmedida[idx].cantidad = arrmedida[idx].cantidad * -1 END IF LET idx = idx +1 END FOREACH CALL set_count(idx-1) ELSE LET modifica = "N" SELECT MAX(numero) INTO tmpnumero FROM cttb00016 IF tmpnumero IS NULL THEN LET tmpnumero = 9999999 END IF LET tmpnumero = tmpnumero + 1 INSERT INTO cttb00016 values (SUSER_NAME(),tmpnumero,GETDATE()) FOR idx = 1 TO 10 LET arrmedida[idx].ancho1 = 0 LET arrmedida[idx].largo1 = 0 LET arrmedida[idx].espesor1 = 0 LET arrmedida[idx].ancho2 = 0 LET arrmedida[idx].largo2 = 0 LET arrmedida[idx].espesor2 = 0 END FOR END IF INPUT ARRAY arrmedida WITHOUT DEFAULTS FROM sdespiece.* BEFORE ROW LET idx = arr_curr() LET sidx = scr_line() AFTER FIELD codigo_bloque IF status_m = 2 THEN IF arrmedida[idx].codigo_bloque IS NOT NULL THEN SELECT a.codigo_bloque FROM intb00018 a WHERE a.codigo_bloque = arrmedida[idx].codigo_bloque IF STATUS = NOTFOUND THEN CALL msg(3) NEXT FIELD codigo_bloque END IF END IF END IF AFTER FIELD cantidad IF arrmedida[idx].espesor1 = 0 THEN LET arrmedida[idx].medida1 = arrmedida[idx].ancho1 * arrmedida[idx].largo1 END IF IF arrmedida[idx].espesor1 <> 0 THEN LET arrmedida[idx].medida1 = arrmedida[idx].ancho1 * arrmedida[idx].largo1 * arrmedida[idx].espesor1 END IF IF arrmedida[idx].espesor2 = 0 THEN LET arrmedida[idx].medida2 = arrmedida[idx].ancho2 * arrmedida[idx].largo2 END IF IF arrmedida[idx].espesor2 <> 0 THEN LET arrmedida[idx].medida2 = arrmedida[idx].ancho2 * arrmedida[idx].largo2 * arrmedida[idx].espesor2 END IF DISPLAY arrmedida[idx].medida1 TO sdespiece[sidx].medida1 DISPLAY arrmedida[idx].medida2 TO sdespiece[sidx].medida2 AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) EXIT INPUT END IF END INPUT IF int_flag THEN CLOSE WINDOW prfmwd012 RETURN END IF LET total_medida = 0 IF modifica = "N" THEN FOR idx =1 TO arr_count() IF arrmedida[idx].codigo_bloque IS NOT NULL THEN IF status_m = "2" THEN IF arrmedida[idx].cantidad > 0 THEN LET arrmedida[idx].cantidad = arrmedida[idx].cantidad * -1 END IF IF arrmedida[idx].medida1 > 0 THEN LET arrmedida[idx].medida1 = arrmedida[idx].medida1*-1 END IF END IF INSERT INTO intb00018 (documento,cod_mov,fecha,codigo_bloque, cod_n,cod_grupo,cod_tipo,cod_sec,ancho1,largo1, espesor1,medida1,largo2,ancho2,espesor2,medida2,cantidad) VALUES (tmpnumero,otros_mov.cod_mov,otros_mov.fecha,arrmedida[idx].codigo_bloque, movi2[p_act].cod_n,movi2[p_act].cod_grupo,movi2[p_act].cod_tipo, movi2[p_act].cod_sec, arrmedida[idx].ancho1,arrmedida[idx].largo1, arrmedida[idx].espesor1,arrmedida[idx].medida1, arrmedida[idx].largo2,arrmedida[idx].ancho2,arrmedida[idx].espesor2, arrmedida[idx].medida2,arrmedida[idx].cantidad) LET total_medida = arrmedida[idx].medida1 + total_medida LET insertamedida = 'S' END IF END FOR ELSE DELETE FROM intb00018 WHERE documento = tmpnumero AND cod_n = movi2[p_act].cod_n and cod_grupo = movi2[p_act].cod_grupo and cod_tipo = movi2[p_act].cod_tipo and cod_sec = movi2[p_act].cod_sec FOR idx =1 TO arr_count() IF arrmedida[idx].codigo_bloque IS NOT NULL THEN IF status_m = "2" THEN IF arrmedida[idx].cantidad > 0 THEN LET arrmedida[idx].cantidad = arrmedida[idx].cantidad * -1 LET arrmedida[idx].cantidad = arrmedida[idx].medida1 * -1 END IF END IF INSERT INTO intb00018 VALUES (tmpnumero,otros_mov.cod_mov,otros_mov.fecha,arrmedida[idx].codigo_bloque, movi2[p_act].cod_n,movi2[p_act].cod_grupo,movi2[p_act].cod_tipo, movi2[p_act].cod_sec, arrmedida[idx].ancho1,arrmedida[idx].largo1, arrmedida[idx].espesor1,arrmedida[idx].medida1, arrmedida[idx].largo2,arrmedida[idx].ancho2,arrmedida[idx].espesor2, arrmedida[idx].medida2,arrmedida[idx].cantidad) LET total_medida = arrmedida[idx].medida1 + total_medida LET insertamedida = 'S' END IF END FOR END IF LET movi2[p_act].cantidad_2 = total_medida CLOSE WINDOW prfmwd012 END FUNCTION