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