Files
MBS/PROYECTOS/ipdir/piking_1.4gl
T

374 lines
16 KiB
Plaintext

SCHEMA smarmotech
DEFINE piking DYNAMIC ARRAY OF RECORD
transportista STRING,
bodega SMALLINT,
nombre_b CHAR(25),
bodega2 SMALLINT,
nombre_b2 CHAR(25),
num_doc INTEGER,
fecha DATE,
cod_mov SMALLINT,
nombre VARCHAR(100),
usuario CHAR(60),
recibo CHAR(1),
impresion CHAR(1),
cod_mov_transferencia SMALLINT,
cod_transp SMALLINT,
sec_transp SMALLINT,
placa VARCHAR(50)
END RECORD,
ximpresion CHAR(1)
DEFINE movi2 DYNAMIC ARRAY OF RECORD
area SMALLINT,
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_1 DEC(12,5),
cantidad_2 DEC(12,5),
cantidad_p DEC(12,5),
unidad_med LIKE iptb00002.unidad_med,
descrip_esp CHAR(80),
existencia DEC(12,5),
disponible DEC(12,5),
codigo_bloque CHAR(15),
id_kit INT
END RECORD,
negrilla_on,negrillas_of,doble_on,doble_off,comp_on,comp_off,
doce,NORMAL CHAR(3),
imprime,gclave,gusuario,archivo, DESCRIP_TRANSP,copia CHAR(100),
gimpresor,idx1,idx,p_act,numero_msg SMALLINT,
tituloBodega STRING,
otros_mov1 RECORD
num_doc INT,
cod_cia SMALLINT,
cod_mov SMALLINT,
fact_no CHAR(25),
cod_transp SMALLINT,
sec_transp SMALLINT,
cod_tarifa SMALLINT,
placa CHAR(25),
conduce_no CHAR(25),
fecha DATE,
descrip_mov CHAR(30),
bodega SMALLINT,
bodega2 SMALLINT,
bodega_d CHAR(30),
num_bultos SMALLINT,
detalle CHAR(30),
cod_sp SMALLINT,
cod_sp_sec INT,
descrip4 CHAR(30),
cod_mov_transferencia INT
END RECORD
DEFINE otros_mov RECORD
num_doc LIKE iptb00006.num_doc,
cod_cia LIKE iptb00006.cod_cia,
cod_mov LIKE iptb00006.cod_mov,
fact_no LIKE iptb00006.fact_no,
cod_transp LIKE iptb00006.cod_transp,
sec_transp LIKE iptb00006.sec_transp,
cod_tarifa LIKE iptb00006.cod_tarifa,
placa LIKE iptb00006.placa,
fecha LIKE iptb00006.fecha,
conduce_no LIKE iptb00006.conduce_no,
descrip_mov CHAR(80),
bodega LIKE iptb00006.bodega,
bodega_destino SMALLINT,
detalle LIKE iptb00006.detalle,
cod_sp LIKE iptb00006.cod_sp,
cod_sp_sec LIKE iptb00006.cod_sp_sec,
departamento SMALLINT,
nombre_depto CHAR(30),
cod_mov1 SMALLINT,
entrada INT,
descrip_mov1 CHAR(40),
descrip4 CHAR(30),
factura INT
END RECORD
FUNCTION piking(usuario,clave,impresor,xbodega,sucursal)
DEFINE letras RECORD
negrillas_on CHAR(6),
negrillas_off CHAR(6),
doble_on CHAR(6),
doble_off CHAR(6),
comp_on CHAR(6),
comp_off CHAR(6),
doce CHAR(6),
normal CHAR(6)
END RECORD,
usuario,clave CHAR(50),
impresor,xbodega,sucursal SMALLINT
LET gusuario = usuario
LET gclave = clave
LET gimpresor = impresor
DECLARE busca_piking CURSOR FOR
SELECT DISTINCT d.nombre, a.bodega,e.descripcion,a.bodega_d,' ',a.num_doc,a.fecha,a.cod_mov,
c.descrip_mov,a.us_crea,a.cond_recep,'N',
c.codigo_mov_transferencia,a.cod_transp,a.sec_transp,a.placa
FROM iptb00033 a LEFT OUTER JOIN vetb00015 d ON a.cod_transp =d.cod_transp AND
a.sec_transp = d.sec_transp,
iptb00005 c,intb00009 e,iptb00048 b
WHERE a.bodega_d = b.bodega AND
b.usuario = usuario AND
e.cod_bodega = a.bodega_d AND
a.cond_recep = 'N' AND
a.cod_mov = c.cod_mov AND c.control_transferencia= "SI" AND
a.status_t IS NULL
LET idx = 1
FOREACH busca_piking INTO piking[idx].*
SELECT a.descripcion INTO piking[idx].nombre_b2
FROM intb00009 a
WHERE a.cod_bodega = piking[idx].bodega2
#BRIAN LO PUSO
SELECT a.descripcion INTO piking[idx].nombre_b
FROM intb00009 a
WHERE a.cod_bodega = piking[idx].bodega
LET otros_mov1.cod_mov_transferencia = piking[idx].cod_mov_transferencia
LET idx = idx + 1
END FOREACH #fin foreach busca_piking
IF idx > 1 THEN
# FORMULARIO RELACION DE TRANSFERENCIA POR RECIBIR
OPEN WINDOW ipfmwd007 AT 1,1 WITH FORM "ipfmwd013"
LET int_flag = FALSE
INPUT ARRAY piking WITHOUT DEFAULTS FROM spiking.*
ON ACTION visualiza
LET p_Act= arr_curr()
CALL buscadata(p_act)
CALL itemsTransferencia()
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT INPUT
END IF
END INPUT
IF int_flag THEN
LET int_flag = FALSE
CLOSE WINDOW ipfmwd007
RETURN
END IF
FOR idx1 = 1 TO piking.getLength()
LET ximpresion = 'N'
IF piking[idx1].recibo = "S" THEN
CALL buscadata(idx1)
IF piking[idx1].impresion = 'S' THEN
LET ximpresion = 'S'
END IF
CALL adicionaTransf()
END IF
END FOR
CLOSE WINDOW ipfmwd007
END IF
LET int_flag = FALSE
END FUNCTION
FUNCTION itemsTransferencia()
DEFINE xcodmov,xbodega STRING,
xnumdoc INT
DISPLAY "BUSCA DATA ",otros_mov1.num_doc," ",otros_mov.cod_mov," ",otros_mov.bodega
OPEN WINDOW w1 WITH FORM "ipfmwd013a"
DECLARE busca_items CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad_1,a.cantidad_2,
b.unidad_med,b.descrip_esp,a.costo,a.bodega_d
FROM iptb00033 a,iptb00002 b
WHERE a.num_doc = otros_mov1.num_doc
AND a.cod_mov = otros_mov.cod_mov
AND 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.bodega = otros_mov.bodega
AND a.bodega_d = otros_mov.bodega_destino
AND a.status_t IS NULL and a.cond_recep = 'N'
LET idx = 1
LET xcodmov = "(",otros_mov.cod_mov USING "&&&&",")",otros_mov.descrip_mov CLIPPED
LET xnumdoc = otros_mov1.num_doc
LET xbodega = "(",otros_mov.bodega USING "<<<",")",otros_mov.descrip4 CLIPPED
DISPLAY BY NAME xcodmov,xnumdoc,xbodega
FOREACH busca_items INTO movi2[idx].cod_n,
movi2[idx].cod_grupo,
movi2[idx].cod_tipo,
movi2[idx].cod_sec,
movi2[idx].cantidad_1,
movi2[idx].cantidad_2,
movi2[idx].unidad_med,
movi2[idx].descrip_esp,
otros_mov1.bodega2
LET idx = idx + 1
END FOREACH #fin del foreach busca_items into movi2
DISPLAY ARRAY movi2 TO detallepiking.*
ON ACTION imprimir ATTRIBUTE(TEXT="Imprime",IMAGE="printer2")
CALL defecto(gusuario,gclave,gimpresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT formu4 TO archivo
FOR idx = 1 TO movi2.getLength()
OUTPUT TO REPORT formu4(otros_mov.*,movi2[idx].*)
END FOR
FINISH REPORT formu4
RUN imprime
CALL fgl_winmessage("INFO","IMPRESION TERMINADA","INFO")
AFTER DISPLAY
EXIT DISPLAY
END DISPLAY
CLOSE WINDOW w1
END FUNCTION
FUNCTION adicionaTransf()
DEFINE selec STRING
DISPLAY "otra data ",otros_mov1.cod_mov_transferencia
SELECT a.num_doc INTO otros_mov.num_doc
FROM iptb00007 a
WHERE a.bodega = otros_mov.bodega_destino AND
a.cod_mov = otros_mov1.cod_mov_transferencia
IF otros_mov.num_doc IS NULL THEN
LET otros_mov.num_doc = 0
INSERT INTO iptb00007 (num_doc,cod_mov,bodega) VALUES (0,otros_mov1.cod_mov_transferencia,otros_mov.bodega_destino)
END IF
LET otros_mov.num_doc = otros_mov.num_doc + 1
# BEGIN WORK
UPDATE iptb00007 SET num_doc = otros_mov.num_doc
WHERE cod_mov = otros_mov1.cod_mov_transferencia AND bodega = otros_mov.bodega_destino
LET selec = "INSERT INTO iptb00006 (cod_cia,num_doc,fecha,
cod_transp,sec_transp,
placa,cod_tarifa,
cod_mov,detalle,
cod_n,cod_grupo,cod_tipo,
cod_sec,cantidad_1,cantidad_2,
bodega,us_crea,fech_crea,
cod_mov_transferencia,
num_doc_transferencia,bodega_procedencia)
SELECT a.cod_cia, ",otros_mov.num_doc,", getdate(),a.cod_transp,a.sec_transp,",
"a.placa,a.cod_tarifa,",otros_mov1.cod_mov_transferencia,
",a.detalle,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,
a.cantidad_1,a.cantidad_2*-1,",otros_mov.bodega_destino,",'",gusuario CLIPPED,"',getdate(),",
otros_mov.cod_mov,",", otros_mov1.num_doc,",",otros_mov.bodega,
" FROM iptb00033 a WHERE a.num_doc =",otros_mov1.num_doc," and a.bodega = ",otros_mov.bodega,
" AND a.cod_mov = ",otros_mov.cod_mov," AND a.bodega_d = ",otros_mov.bodega_destino,
" AND a.cond_recep = 'N' "
# DISPLAY selec
PREPARE comando FROM selec
EXECUTE comando
IF STATUS = NOTFOUND THEN
ROLLBACK WORK
CALL fgl_Winmessage("INFO","NO FUE POSIBLE ADICIONAR LA TRANSFERENCIA","INFO")
RETURN
END IF
UPDATE iptb00033 SET cond_recep = "S",us_mod = gusuario,fech_mod = getdate()
WHERE cod_mov =otros_mov.cod_mov AND num_doc =otros_mov1.num_doc AND
bodega = otros_mov.bodega
# COMMIT WORK
IF ximpresion = 'S' THEN
# IMPRESION
DECLARE busca_data CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.cantidad_1,a.cantidad_2,
b.descrip_Esp,b.unidad_med,a.num_doc,a.fecha,a.cod_mov,c.descrip_mov, a.bodega,
a.placa,a.cod_transp,a.sec_transp
FROM iptb00006 a,iptb00002 b,iptb00005 c
WHERE a.num_doc = otros_mov.num_doc AND a.cod_mov = otros_mov1.cod_mov_transferencia AND
a.bodega = otros_mov.bodega_destino AND a.cod_mov = c.cod_mov AND
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
LET idx = 1
CALL defecto(gusuario,gclave,gimpresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT formu4 TO archivo
FOREACH busca_data INTO movi2[idx].cod_n,movi2[idx].cod_grupo,movi2[idx].cod_tipo,
movi2[idx].cod_sec,movi2[idx].cantidad_1,movi2[idx].cantidad_2,
movi2[idx].descrip_esp,movi2[idx].unidad_med,
otros_mov.num_doc,otros_mov.fecha,otros_mov.cod_mov,otros_mov.descrip_mov,
otros_mov.bodega,otros_mov.placa,otros_mov.cod_transp,otros_mov.sec_transp
OUTPUT TO REPORT formu4(otros_mov.*,movi2[idx].*)
END FOREACH
FINISH REPORT formu4
RUN imprime
END IF
CALL fgl_Winmessage("INFO","TRANSFERENCIA ADICIONADA CON EXITO","INFO")
END FUNCTION
FUNCTION buscadata(i)
DEFINE i INT
SELECT UNIQUE a.detalle,b.descrip_mov,a.cod_cia,a.bodega,a.bodega_d,c.nombre,a.cod_transp,
a.sec_transp,b.codigo_mov_transferencia,a.placa
INTO otros_mov.detalle,otros_mov.descrip_mov,otros_mov.cod_cia,
otros_mov.bodega,otros_mov.bodega_destino,DESCRIP_TRANSP,otros_mov.cod_transp,
otros_mov.sec_transp,otros_mov1.cod_mov_transferencia,otros_mov.placa
FROM iptb00033 a,iptb00005 b,vetb00015 c
WHERE a.num_doc = piking[i].num_doc
AND a.cod_mov = piking[i].cod_mov
AND a.cod_mov = b.cod_mov and a.bodega = piking[i].bodega
AND a.status_t IS NULL AND a.cond_recep = 'N'
AND c.cod_transp=a.cod_transp AND
c.sec_transp = a.sec_transp
LET otros_mov.detalle = otros_mov1.detalle
LET otros_mov.cod_cia = otros_mov1.cod_cia
LET otros_mov1.num_Doc = piking[i].num_doc
LET otros_mov.fecha = piking[i].fecha
LET otros_mov.cod_mov = piking[i].cod_mov
LET otros_mov.bodega = piking[i].bodega
LET otros_mov.bodega_destino = piking[i].bodega2
LET tituloBodega = piking[i].nombre_b2
END FUNCTION
FUNCTION pendienteRecibir(xbodega)
DEFINE xbodega,j INT
DECLARE cuenta CURSOR FOR
SELECT DISTINCT d.nombre, a.bodega,e.descripcion,a.bodega_d,' ',a.num_doc,a.fecha,a.cod_mov,
c.descrip_mov,a.us_crea,a.cond_recep,
c.codigo_mov_transferencia,a.cod_transp,a.sec_transp,a.placa
FROM iptb00033 a,iptb00005 c,intb00009 e,vetb00015 d
WHERE a.bodega_d = xbodega and
e.cod_bodega = a.bodega_d AND
a.cond_recep = 'N' AND
a.cod_mov = c.cod_mov AND c.control_transferencia= "SI" AND
a.cod_transp = d.cod_transp AND
a.sec_transp = d.sec_transp AND
a.status_t IS NULL
LET j = 0
FOREACH cuenta
LET j = j +1
END FOREACH
RETURN j
END FUNCTION