{ 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