798 lines
28 KiB
Plaintext
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 |