IMPORT util GLOBALS DEFINE id1 base.StringTokenizer define producto RECORD codigo string, cod_n smallint, cod_grupo smallint , cod_tipo smallint , cod_sec smallint , descripcion varchar(80) , unidad_med VARCHAR(4), cantidad DECIMAL(12,5), pdesglose CHAR(1) END RECORD, mensaje STRING, pcodid,xidtrx,cuenta_conteo INT DEFINE url STRING,f ui.Form DEFINE fecha DATE DEFINE cod_n,cod_grupo, cod_tipo,cod_sec SMALLINT DEFINE cantidad,balance DECIMAL(10,2) DEFINE tipo_inventario,bodega,tramo,seccion,cod,cod_fila,cod_pos String DEFINE desc_bodega CHAR(50) DEFINE codigo CHAR(30), opt CHAR(3), respuesta,host ,pfecha1,pfecha2,msg STRING, port INT,bodega1 ui.ComboBox DEFINE detalle DYNAMIC ARRAY OF RECORD SMALLINT, codid VARCHAR(13), codigo VARCHAR(20), cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descripcion VARCHAR(100), cantidad DEC(12,5) END RECORD, xproductos rECORD codigo VARCHAR(40), descripcion VARCHAR(100), unidad_med VARCHAR(4), cantidad float END RECORD, xmodifica STRING END GLOBALS FUNCTION conteo(kusuario) DEFINE kusuario VARCHAR(50), l_opc VARCHAR(3) OPEN WINDOW inventario WITH FORM "inventario" CALL desplega_fecha(kusuario) MENU ON ACTION adiciona ATTRIBUTE(TEXT="",IMAGE="accept") CLEAR FORM LET xmodifica = "NO" CALL adicionar_item(kusuario) ON ACTION detalle ATTRIBUTE(TEXT="Modificar", COMMENT="Modificar Productos adicionados") LET xmodifica = "SI" CLEAR FORM CALL detalle_conteo() CALL adicionar_item(kusuario) ON ACTION resumen ATTRIBUTES(TEXT="Resumen") CLEAR FORM CALL resumen() ON ACTION salir ATTRIBUTE(TEXT="",IMAGE="quit") EXIT MENU END MENU CLOSE WINDOW inventario END FUNCTION FUNCTION adicionar_item(xusuario) DEFINE xusuario VARCHAR(50), pexistencia FLOAT INPUT BY NAME tipo_inventario,fecha,bodega,seccion,tramo,cod_fila,cod_pos, xproductos.codigo, xproductos.cantidad ATTRIBUTE(WITHOUT DEFAULTS,ACCEPT=FALSE) BEFORE INPUT LET fecha = TODAY LET xproductos.descripcion =NULL LET xproductos.unidad_med = NULL LET producto.pdesglose =NULL DISPLAY BY NAME xproductos.descripcion,xproductos.unidad_med,pcodid,fecha CALL DIALOG.setFieldActive( "cantidad",TRUE) CALL bodegas() CALL DIALOG.getForm().setElementHidden("label12", 1) CALL DIALOG.getForm().setElementHidden("label13", 1) CALL DIALOG.getForm().setFieldHidden("formonly.seccion", 0) CALL DIALOG.getForm().setFieldHidden("formonly.tramo", 0) CALL DIALOG.getForm().setElementHidden("label5", 0) CALL DIALOG.getForm().setElementHidden("label3", 0) AFTER FIELD bodega CALL seccion() AFTER FIELD seccion CALL tramo(seccion,bodega) CALL filas(bodega,seccion) AFTER FIELD cod_fila CALL posicion(bodega,seccion,cod_fila) AFTER FIELD tramo ERROR "TRAMO ",tramo # ON TIMER 1 # CALL adicionar_item(xusuario) AFTER FIELD cantidad IF xproductos.cantidad IS NULL OR xproductos.cantidad =0 THEN ERROR "CANTIDAD EN BLANCO" NEXT FIELD cantidad END IF CONTINUE INPUT AFTER FIELD tipo_inventario # IF tipo_inventario IS NOT NULL THEN # WHENEVER ERROR CONTINUE # SELECT a.fecha_conteo INTO fecha FROM intb00044 a # WHERE a.tipo_inventario = tipo_inventario # IF STATUS = NOTFOUND OR STATUS < 0 THEN # LET mensaje = SFMT("NO EXISTEN FECHAS DE CONTROL PARA ESTE INVENTARIO %1",fecha) # CALL fgl_winmessage("FECHA",mensaje,"INFO") # NEXT FIELD tipo_inventario # END IF # END IF IF fecha IS NULL THEN CALL fgl_winmessage("FECHA","FECHA CONTEO ESTA EN BLANCO","INFO") LET fecha = TODAY DISPLAY BY NAME fecha NEXT FIELD fecha END IF DISPLAY BY NAME fecha AFTER FIELD codigo IF tipo_inventario IS NULL THEN CALL fgl_winmessage("INFO","INVENTARIO EN BLANCO","INFO") NEXT FIELD tipo_inventario END IF IF tipo_inventario = "PRODUCTOS TERMINADOS" THEN LET id1 = base.StringTokenizer.create(xproductos.codigo,"+") LET pcodid = id1.nextToken() LET xproductos.cantidad = id1.nextToken() SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, a.descrip_esp,a.unidad_med,a.desglose INTO producto.cod_n,producto.cod_grupo, producto.cod_tipo,producto.cod_Sec, xproductos.descripcion, xproductos.unidad_med, producto.pdesglose FROM productos a WHERE a.codid =pcodid AND a.tipo_inventario = tipo_inventario IF STATUS = NOTFOUND THEN ERROR "REGISTRO NO EXISTE" NEXT FIELD codigo END IF DISPLAY BY NAME xproductos.descripcion,xproductos.unidad_med # EXISTENCIAS LET pexistencia = 0 SELECT a.cantidad INTO pexistencia FROM existencia a WHERE a.codid = pcodid AND a.tipo_inventario = tipo_inventario AND a.bodega = bodega AND a.cod_seccion = seccion AND a.cod_fila = cod_fila AND a.cod_pos = cod_pos DISPLAY BY NAME pexistencia CALL DIALOG.getForm().setFieldHidden("formonly.seccion", 0) CALL DIALOG.getForm().setFieldHidden("formonly.tramo", 0) IF producto.pdesglose = 'S' THEN CALL DIALOG.getForm().setElementHidden("label12", 0) CALL DIALOG.getForm().setElementHidden("label13", 0) CALL DIALOG.getForm().setElementHidden("label5", 1) CALL DIALOG.getForm().setElementHidden("label3", 1) CALL desglose(pcodid,bodega,fecha,tipo_inventario,seccion,tramo) RETURNING xproductos.cantidad # SUMA CANTIDAD SELECT SUM(a.cantidad2) INTO xproductos.cantidad FROM desglose a WHERE a.codid = pcodid IF xproductos.cantidad IS NULL THEN LET xproductos.cantidad=0 ERROR "CANTIDAD EN NULO" CONTINUE INPUT END IF CALL DIALOG.setFieldActive( "cantidad",FALSE) ELSE CALL DIALOG.setFieldActive( "cantidad",TRUE) END IF DISPLAY BY NAME xproductos.cantidad END IF IF tipo_inventario = "REPUESTOS" THEN LET id1 = base.StringTokenizer.create(xproductos.codigo,"-+") LET producto.cod_n = id1.nextToken() LET producto.cod_grupo = id1.nextToken() LET producto.cod_tipo = id1.nextToken() LET producto.cod_sec = id1.nextToken() LET xproductos.cantidad = id1.nextToken() SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, a.descrip_esp,a.unidad_med INTO producto.cod_n,producto.cod_grupo, producto.cod_tipo,producto.cod_Sec, xproductos.descripcion, xproductos.unidad_med FROM productos a WHERE a.cod_n = producto.cod_n AND a.cod_grupo = producto.cod_grupo AND a.cod_tipo = producto.cod_tipo AND a.cod_sec = producto.cod_sec AND a.tipo_inventario = tipo_inventario IF STATUS = NOTFOUND THEN ERROR "REGISTRO NO EXISTE" NEXT FIELD codigo END IF END IF IF tipo_inventario = "MATERIA PRIMA" THEN LET id1 = base.StringTokenizer.create(xproductos.codigo,"-+") LET producto.cod_n = id1.nextToken() LET producto.cod_grupo = id1.nextToken() LET producto.cod_tipo = id1.nextToken() LET producto.cod_sec = id1.nextToken() LET xproductos.cantidad = id1.nextToken() SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, a.descrip_esp,a.unidad_med INTO producto.cod_n,producto.cod_grupo, producto.cod_tipo,producto.cod_Sec, xproductos.descripcion, xproductos.unidad_med FROM productos a WHERE a.cod_n = producto.cod_n AND a.cod_grupo = producto.cod_grupo AND a.cod_tipo = producto.cod_tipo AND a.cod_sec = producto.cod_sec AND a.tipo_inventario = tipo_inventario IF STATUS = NOTFOUND THEN ERROR "REGISTRO NO EXISTE" NEXT FIELD codigo END IF END IF DISPLAY xproductos.descripcion TO descripcion DISPLAY BY NAME xproductos.unidad_med,pcodid,xproductos.cantidad ON ACTION guardar ATTRIBUTE(TEXT="Salvar", IMAGE="save") IF xproductos.cantidad IS NULL OR xproductos.cantidad=0 THEN NEXT FIELD cantidad END IF IF seccion IS NULL THEN CALL fgl_winmessage("INFO","SECCION EN BLANCO","INFO") NEXT FIELD seccion END IF IF xproductos.cantidad IS NULL THEN CALL fgl_winmessage("INFO","CANTIDAD EN BLANCO","INFO") NEXT FIELD cantidad END IF IF tramo IS NULL THEN CALL fgl_winmessage("INFO","TRAMO EN BLANCO","INFO") NEXT FIELD tramo END IF CALL adiciona(xusuario) IF xmodifica = "SI" THEN CALL detalle_conteo() CALL adicionar_item(Xusuario) END IF LET xproductos.cantidad=0 LET xproductos.codigo=NULL LET xproductos.unidad_med=NULL LET xproductos.descripcion=NULL DISPLAY BY NAME xproductos.descripcion,xproductos.cantidad,xproductos.unidad_med,xproductos.cantidad CALL desplega_fecha(xusuario) NEXT FIELD codigo AFTER INPUT CALL DIALOG.setFieldActive( "cantidad",TRUE) IF int_flag THEN IF tipo_inventario = "PRODUCTOS TERMINADOS" THEN LET cuenta_conteo =0 IF pcodid IS NOT NULL THEN SELECT DISTINCT a.codid FROM iptb00012 a WHERE a.codid = pcodid AND a.cod_seccion = seccion AND a.cod_tramo = tramo AND a.fecha =fecha IF STATUS = NOTFOUND THEN SELECT COUNT(*) INTO cuenta_conteo FROM desglose WHERE codid = pcodid AND cod_seccion =seccion AND cod_tramo=tramo IF cuenta_conteo > 0 THEN LET respuesta = fgl_winquestion("INFO","DESEA SALIR SIN GUARDAR ESTE REGISTRO?","NO","YES|NO","QUESTION",0) IF respuesta = "YES" THEN CALL limpia() ELSE CONTINUE INPUT END IF END IF END IF END IF END IF ############# TERMINA PROCESO PRODUCTOS TERMINADOS LET int_flag = false EXIT INPUT END IF CONTINUE INPUT END INPUT END FUNCTION FUNCTION adiciona(xusuario) DEFINE xid INT, xusuario,fecha_creacion VARCHAR(50) LET fecha_creacion = current BEGIN WORK IF xmodifica ="NO" THEN IF tipo_inventario = "MATERIA PRIMA" THEN SELECT MAX(a.idtrx) INTO xid FROM intb00012 a IF xid IS NULL THEN LET xid = 0 END IF LET xid = xid + 1 INSERT INTO intb00012 (idtrx,fecha,bodega,cod_seccion,cod_tramo, cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,us_crea,fech_crea,codid) VALUES (xid,fecha,bodega,seccion,tramo, producto.cod_n,producto.cod_grupo,producto.cod_tipo,producto.cod_sec, xproductos.cantidad,xusuario,fecha_creacion,pcodid) END IF IF tipo_inventario = "REPUESTOS" THEN SELECT MAX(a.idtrx) INTO xid FROM irtb00012 a IF xid IS NULL THEN LET xid = 0 END IF LET xid = xid + 1 INSERT INTO irtb00012 (idtrx,fecha,bodega,cod_seccion,cod_tramo, cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,us_crea,fech_crea,codid) VALUES (xid,fecha,bodega,seccion,tramo, producto.cod_n,producto.cod_grupo,producto.cod_tipo,producto.cod_sec, xproductos.cantidad,xusuario,date('now'),pcodid) END IF IF tipo_inventario = "PRODUCTOS TERMINADOS" THEN SELECT MAX(a.idtrx) INTO xid FROM iptb00012 a IF xid IS NULL THEN LET xid = 0 END IF LET xid = xid + 1 INSERT INTO iptb00012 (idtrx,fecha,bodega,cod_seccion,cod_tramo,cod_fila,cod_pos, cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,us_crea,fech_crea,codid, cod_fila,cod_pos) VALUES (xid,fecha,bodega,seccion,tramo,cod_fila,cod_pos, producto.cod_n,producto.cod_grupo,producto.cod_tipo,producto.cod_sec, xproductos.cantidad,xusuario,fecha_creacion,pcodid,cod_fila,cod_pos) UPDATE desglose SET idtrx = xid WHERE codid = pcodid END IF COMMIT WORK CALL fgl_winmessage("INFO","ADICION EXITOSA","INFO") ELSE IF tipo_inventario = "MATERIA PRIMA" THEN UPDATE intb00012 SET(bodega,cod_seccion,cod_tramo, cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,us_mod,fech_mod) = (bodega,seccion,tramo, producto.cod_n,producto.cod_grupo,producto.cod_tipo,producto.cod_sec, xproductos.cantidad,xusuario,date('now')) WHERE idtrx = xidtrx END IF IF tipo_inventario = "REPUESTOS" THEN UPDATE irtb00012 SET(bodega,cod_seccion,cod_tramo, cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,us_mod,fech_mod) = (bodega,seccion,tramo, producto.cod_n,producto.cod_grupo,producto.cod_tipo,producto.cod_sec, xproductos.cantidad,xusuario,date('now')) WHERE idtrx = xidtrx END IF IF tipo_inventario = "PRODUCTOS TERMINADOS" THEN UPDATE iptb00012 SET(bodega,cod_seccion,cod_tramo, cod_n,cod_grupo,cod_tipo,cod_sec,cantidad,us_mod,fech_mod) = (bodega,seccion,tramo, producto.cod_n,producto.cod_grupo,producto.cod_tipo,producto.cod_sec, xproductos.cantidad,xusuario,date('now')) WHERE idtrx = xidtrx END IF COMMIT WORK CALL fgl_winmessage("INFO","ACTUALIZACION EXITOSA","INFO") END IF END FUNCTION FUNCTION bodegas() DEFINE bodega ui.ComboBox DEFINE pbodega DYNAMIC ARRAY OF RECORD cod_bodega SMALLINT, descripcion VARCHAR(60) END RECORD,i smallint LET bodega = ui.combobox.forname("formonly.bodega") CALL bodega.clear() DECLARE c1 CURSOR FOR SELECT DISTINCT a.cod_bodega,a.descripcion FROM bodegas a LET i = 1 FOREACH c1 INTO pbodega[i].* CALL bodega.additem(pbodega[i].*) LET i = i + 1 END FOREACH END FUNCTION FUNCTION seccion() DEFINE secc ui.ComboBox, xbodega smallint DEFINE pseccion DYNAMIC ARRAY OF RECORD cod_seccion SMALLINT, desc_seccion VARCHAR(60) END RECORD,i smallint LET secc = ui.combobox.forname("formonly.seccion") DECLARE se CURSOR FOR SELECT DISTINCT a.cod_seccion,a.descripcion FROM secciones a WHERE a.cod_bodega = bodega LET i = 1 FOREACH se INTO pseccion[i].* CALL secc.addItem(pseccion[i].*) LET i = i + 1 END FOREACH END FUNCTION FUNCTION tramo(xseccion,xbodega) DEFINE tramo ui.ComboBox, xseccion,xbodega SMALLINT DEFINE ptramo DYNAMIC ARRAY OF RECORD cod_tramo SMALLINT, desc_tramo VARCHAR(60) END RECORD,i SMALLINT, msg string LET tramo = ui.combobox.forname("formonly.tramo") # LET msg=SFMT("informacion %1 otra %2",bodega,seccion) #CALL fgl_winmessage("tramo",msg,"info") DECLARE tra CURSOR FOR SELECT distinct a.cod_tramo,a.descripcion FROM tramos a WHERE a.cod_bodega = xbodega AND a.cod_seccion = xseccion LET i = 1 FOREACH tra INTO ptramo[i].* CALL tramo.addItem(ptramo[i].*) LET i = i + 1 END FOREACH END FUNCTION FUNCTION filas(xbodega,xseccion) DEFINE p_fila ui.ComboBox, xbodega,xseccion smallint DEFINE pfilas DYNAMIC ARRAY OF RECORD cod_fila SMALLINT, desc_seccion VARCHAR(60) END RECORD,i smallint LET p_fila = ui.combobox.forname("formonly.cod_fila") DECLARE fila CURSOR FOR SELECT DISTINCT a.cod_fila,a.descripcion FROM filas a WHERE a.cod_bodega = xbodega AND a.cod_seccion =xseccion LET i = 1 FOREACH fila INTO pfilas[i].* CALL p_fila.addItem(pfilas[i].*) LET i = i + 1 END FOREACH END FUNCTION FUNCTION posicion(xbodega,xseccion,xfila) DEFINE pos ui.ComboBox, xbodega,xseccion,xfila smallint DEFINE ppos DYNAMIC ARRAY OF RECORD cod_pos SMALLINT, desc_pos VARCHAR(60) END RECORD,i smallint LET pos = ui.combobox.forname("formonly.cod_pos") DECLARE dpos CURSOR FOR SELECT DISTINCT a.cod_pos,a.descripcion FROM posiciones a WHERE a.cod_bodega = bodega AND a.cod_seccion=xseccion AND a.cod_fila = xfila LET i = 1 FOREACH dpos INTO ppos[i].* CALL pos.addItem(ppos[i].*) LET i = i + 1 END FOREACH END FUNCTION FUNCTION detalle_conteo() DEFINE arr_info DYNAMIC ARRAY OF RECORD info1 STRING, info2 STRING, codid INT, fecha1 CHAR(10), bodega1 SMALLINT, seccion1 SMALLINT, tramo1 SMALLINT, idtrx1 INT END RECORD, arr_datos DYNAMIC ARRAY OF RECORD cod_n SMALLINT, cod_Grupo SMALLINT, cod_tipo SMALLINT, cod_Sec SMALLINT, descripcion STRING, unidad_med CHAR(3), cantidad FLOAT, codid INT, idtrx INT, fecha DATE, bodega SMALLINT, seccion SMALLINT, tramo SMALLINT, fech_crea VARCHAR(20), us_crea VARCHAR(50) END RECORD, i SMALLINT, ch_a,selec STRING INPUT BY NAME tipo_inventario BEFORE INPUT CALL limpia() ON CHANGE tipo_inventario IF tipo_inventario IS NOT NULL THEN SELECT a.fecha_conteo INTO fecha FROM intb00044 a WHERE a.tipo_inventario = tipo_inventario IF STATUS = NOTFOUND THEN CALL fgl_winmessage("FECHA","NO EXISTEN FECHAS DE CONTEO PARA ESTE INVENTARIO","INFO") NEXT FIELD tipo_inventario END IF DISPLAY BY NAME fecha END IF IF fecha IS NULL THEN CALL fgl_winmessage("FECHA","FECHA CONTEO ESTA EN BLANCO","INFO") NEXT FIELD tipo_inventario END IF AFTER INPUT EXIT INPUT END INPUT IF int_flag THEN CALL limpia() LET int_flag=false RETURN END IF IF tipo_inventario = "PRODUCTOS TERMINADOS" THEN LET selec ="SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med,a.cantidad,a.codid,", " a.idtrx,a.fecha,a.bodega,a.cod_seccion,a.cod_tramo,a.fech_crea,a.us_crea ", " FROM iptb00012 a,productos b ", " WHERE (a.codid = b.codid) AND (a.fecha =?) AND (b.tipo_inventario =?) ", " ORDER BY a.idtrx" END IF IF tipo_inventario = "REPUESTOS" THEN LET selec ="SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med,a.cantidad,a.codid, a.idtrx,a.fecha,a.bodega,a.cod_seccion,a.cod_tramo,a.fech_crea,a.us_crea FROM irtb00012 a,productos b WHERE a.codid = b.codid AND a.fecha =? AND b.tipo_inventario =?", " ORDER BY a.idtrx" END IF IF tipo_inventario = "MATERIA PRIMA" THEN LET selec ="SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp,b.unidad_med,a.cantidad,a.codid, a.idtrx,a.fecha,a.bodega,a.cod_seccion,a.cod_tramo,a.fech_crea,a.us_crea FROM intb00012 a,productos b WHERE a.codid = b.codid AND a.fecha=? AND b.tipo_inventario =?", " ORDER BY a.idtrx" END IF PREPARE comando FROM selec DECLARE busca_item CURSOR FOR comando OPEN busca_item USING fecha,tipo_inventario LET i = 1 FOREACH busca_item INTO arr_datos[i].* LET arr_info[i].info1 = "(",arr_datos[i].cantidad USING "<<<<.####",")", arr_datos[i].descripcion CLIPPED, arr_datos[i].unidad_med CLIPPED LET arr_info[i].info2 = "(",arr_datos[i].idtrx USING "<<<<",")", arr_datos[i].cod_n USING "&&&&&","-", arr_datos[i].cod_grupo USING "&&&&&","-", arr_datos[i].cod_tipo USING "&&&&&","-", arr_datos[i].cod_sec USING "&&&&&","-CID:", arr_datos[i].codid USING "<<<<<<", arr_datos[i].fech_crea,"(",arr_datos[i].us_crea CLIPPED,")" LET arr_info[i].bodega1 =arr_datos[i].bodega LET arr_info[i].seccion1 = arr_datos[i].seccion LET arr_info[i].tramo1 = arr_datos[i].tramo LET arr_info[i].fecha1=arr_datos[i].fecha LET arr_info[i].codid=arr_datos[i].codid LET arr_info[i].idtrx1 = arr_datos[i].idtrx LET i = i + 1 END FOREACH DISPLAY ARRAY arr_info TO s_info.* ATTRIBUTE( ACCESSORYTYPE=DISCLOSUREINDICATOR,DETAILACTION=DELETE,ACCEPT=FALSE,DOUBLECLICK=modificar) BEFORE DISPLAY IF i < 1 THEN EXIT DISPLAY END IF ON ACTION modificar ATTRIBUTE(TEXT="Modificar") LET producto.cod_n=arr_datos[arr_curr()].cod_n LET producto.cod_grupo=arr_datos[arr_curr()].cod_grupo LET producto.cod_tipo = arr_datos[arr_curr()].cod_tipo LET producto.cod_Sec=arr_datos[arr_curr()].cod_sec LET xproductos.descripcion=arr_datos[arr_curr()].descripcion LET xproductos.unidad_med=arr_datos[arr_curr()].unidad_med LET xproductos.cantidad=arr_datos[arr_curr()].cantidad LET pcodid = arr_datos[arr_curr()].codid LET xidtrx = arr_info[arr_curr()].idtrx1 LET bodega = arr_info[arr_curr()].bodega1 LET seccion = arr_info[arr_curr()].seccion1 LET tramo = arr_info[arr_curr()].tramo1 CALL bodegas() CALL seccion() CALL tramo(seccion,bodega) DISPLAY BY NAME bodega,seccion,tramo DISPLAY xidtrx TO idtrx EXIT DISPLAY ON ACTION delete IF tipo_inventario = "PRODUCTOS TERMINADOS" THEN LET ch_a = fgl_winquestion("ELIMINAR","ESTA SEGURO?","NO","NO|YES","QUESTION",0) IF ch_a = "YES" THEN DELETE FROM iptb00012 WHERE idtrx = arr_info[arr_curr()].idtrx1 CALL arr_info.deleteElement(arr_curr()) CALL limpia() END IF END IF IF tipo_inventario = "REPUESTOS" THEN LET ch_a = fgl_winquestion("ELIMINAR","ESTA SEGURO?","NO","NO|YES","QUESTION",0) IF ch_a = "YES" THEN DELETE FROM irtb00012 WHERE idtrx = arr_info[arr_curr()].idtrx1 CALL arr_info.deleteElement(arr_curr()) CALL limpia() END IF END IF IF tipo_inventario = "MATERIA PRIMA" THEN LET ch_a = fgl_winquestion("ELIMINAR","ESTA SEGURO?","NO","NO|YES","QUESTION",0) IF ch_a = "YES" THEN DELETE FROM intb00012 WHERE idtrx = arr_info[arr_curr()].idtrx1 CALL arr_info.deleteElement(arr_curr()) CALL limpia() END IF END IF AFTER DISPLAY EXIT DISPLAY END DISPLAY END FUNCTION FUNCTION visualiza() DEFINE intb44 DYNAMIC ARRAY OF RECORD edit1 STRING, edit2 STRING END RECORD, i smallint OPEN WINDOW w10 WITH FORM "form" DECLARE c10 CURSOR FOR SELECT a.tipo_inventario,a.fecha_conteo FROM intb00044 a LET i = 1 FOREACH c10 INTO intb44[i].* LET i = i +1 END FOREACH DISPLAY ARRAY intb44 TO record1.* END FUNCTION FUNCTION limpia() DELETE FROM desglose WHERE codid = pcodid AND cod_seccion = seccion AND cod_tramo = tramo AND desglose.cod_bodega=bodega LET bodega = NULL LET producto.cod_n=NULL LET producto.cod_grupo=NULL LET producto.cod_tipo = NULL LET producto.cod_Sec=NULL LET xproductos.descripcion=NULL LET xproductos.unidad_med=NULL LET xproductos.cantidad=NULL LET pcodid = NULL LET seccion = NULL LET tramo = NULL DISPLAY BY NAME bodega,producto.cantidad,pcodid,seccion,tramo,xproductos.descripcion,xproductos.unidad_med END FUNCTION FUNCTION resumen() DEFINE arr_secciones DYNAMIC ARRAY OF RECORD secciones STRING, cuenta_secciones INT END RECORD, i,total_cuenta INT INPUT BY NAME bodega BEFORE INPUT CLEAR FORM CALL arr_secciones.clear() CALL bodegas() AFTER FIELD bodega IF bodega IS NULL THEN CALL fgl_winmessage("INFO","BODEGA EN BLANCO","INFO") NEXT FIELD bodega END IF AFTER INPUT IF int_flag THEN LET int_flag = FALSE RETURN END IF END INPUT DECLARE c12 CURSOR FOR SELECT a.descripcion,COUNT(*) FROM secciones a,iptb00012 b WHERE a.cod_bodega = b.bodega AND b.bodega = bodega AND a.cod_seccion = b.cod_seccion UNION SELECT a.descripcion,COUNT(*) FROM secciones a,intb00012 b WHERE a.cod_bodega = b.bodega AND b.bodega = bodega AND a.cod_seccion = b.cod_seccion UNION SELECT a.descripcion,COUNT(*) FROM secciones a,irtb00012 b WHERE a.cod_bodega = b.bodega AND b.bodega = bodega AND a.cod_seccion = b.cod_seccion GROUP BY a.descripcion ORDER BY a.descripcion LET i=1 LET total_cuenta = 0 FOREACH c12 INTO arr_secciones[i].* LET total_cuenta = total_cuenta+ arr_secciones[i].cuenta_secciones LET i = i +1 END FOREACH LET arr_secciones[i+2].secciones='TOTAL' LET arr_secciones[i+2].cuenta_secciones = total_cuenta DISPLAY ARRAY arr_secciones TO s_secciones.* END FUNCTION FUNCTION datos() DEFINE d DYNAMIC ARRAY OF RECORD edit1 VARCHAR(100), edit2 VARCHAR (100) END RECORD, J int DECLARE c20 CURSOR FOR SELECT a.bodega,a.cantidad FROM existencia a LET j = 1 FOREACH c20 INTO d[j].* IF j > 10 THEN EXIT FOREACH END IF LET j=j+1 END FOREACH DISPLAY ARRAY d TO record1.* END FUNCTION FUNCTION desplega_fecha(zusuario) DEFINE fecha_hora DATETIME YEAR TO MINUTE, zusuario STRING LET fecha_hora = CURRENT DISPLAY BY NAME fecha_hora,zusuario END FUNCTION