Files
MBS/MOVIL401/MBSinventario/resources/conteo.4gl
T

798 lines
28 KiB
Plaintext

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