621 lines
18 KiB
Plaintext
621 lines
18 KiB
Plaintext
{
|
|
FUNCTION : piking.4gl
|
|
DESARROLLADO POR: ING. JUAN SOTO
|
|
FECHA : 1/10/20218
|
|
OBJETIVO : Visualizar las transferencias que se realizan
|
|
|
|
}
|
|
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),
|
|
numero_doc INT
|
|
END RECORD,
|
|
ximpresion CHAR(1)
|
|
|
|
DEFINE
|
|
movi2 DYNAMIC ARRAY OF RECORD
|
|
area SMALLINT,
|
|
descripcion_area VARCHAR(30),
|
|
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,
|
|
a.numero_doc
|
|
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,
|
|
idseccion, idtramo, idfila, idpos INT
|
|
|
|
SELECT a.cod_seccion, a.cod_tramo, a.cod_fila, a.cod_pos
|
|
INTO idseccion, idtramo, idfila, idpos
|
|
FROM companias a
|
|
|
|
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
|
|
WHENEVER ERROR CONTINUE
|
|
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,numero_doc,num_oc,cod_sp,cod_sp_sec)
|
|
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,
|
|
",a.numero_doc,a.num_oc,a.cod_sp,a.cod_sp_Sec ",
|
|
" 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' "
|
|
|
|
PREPARE comando FROM selec
|
|
EXECUTE comando
|
|
IF STATUS <> 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1679)
|
|
RETURN
|
|
END IF
|
|
|
|
LET selec =
|
|
"INSERT INTO iptb00062
|
|
(num_doc
|
|
,fecha
|
|
,cod_n
|
|
,cod_grupo
|
|
,cod_tipo
|
|
,cod_sec
|
|
,cod_mov
|
|
,bodega
|
|
,cod_seccion
|
|
,cod_tramo
|
|
,cod_fila
|
|
,cod_pos
|
|
,cantidad
|
|
,cantidad2
|
|
,us_crea
|
|
,fech_crea)
|
|
SELECT
|
|
",
|
|
otros_mov.num_doc,
|
|
"
|
|
,getdate()
|
|
,a.cod_n
|
|
,a.cod_grupo
|
|
,a.cod_tipo
|
|
,a.cod_sec,
|
|
",
|
|
otros_mov1.cod_mov_transferencia,
|
|
"
|
|
,",
|
|
otros_mov.bodega_destino,
|
|
"
|
|
,",
|
|
idseccion,
|
|
"
|
|
,",
|
|
idtramo,
|
|
"
|
|
,",
|
|
idfila,
|
|
"
|
|
,",
|
|
idpos,
|
|
"
|
|
,a.cantidad_1
|
|
,a.cantidad_2 * -1
|
|
|
|
,'",
|
|
gusuario CLIPPED,
|
|
"'
|
|
,getdate()
|
|
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'
|
|
"
|
|
|
|
PREPARE entrada FROM selec
|
|
EXECUTE entrada
|
|
IF STATUS <> 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1679)
|
|
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
|
|
IF STATUS <> 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1679)
|
|
RETURN
|
|
END IF
|
|
|
|
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
|