{ PROGRAMA : VEPRMT024 DESARROLLADO POR : ING. JUAN SOTO FECHA : 01/01/2017 OBJETIVO : ACTUALIZAR PRECIOS DE VENTAS A LA TASA VIGENTE } GLOBALS "veprgb000.4gl" MAIN DEFER INTERRUPT CALL STARTLOG("veprmt024.log") CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave CALL veprmt024() END MAIN FUNCTION veprmt024() DEFINE datos_c RECORD ventas SMALLINT, descripcion VARCHAR(50), tasa DEC(12,2) END RECORD, progreso SMALLINT, no_registros,idx INT, xfecha DATETIME YEAR TO MINUTE, xusuario VARCHAR(50), respuesta VARCHAR(3), vetb25 RECORD ventas CHAR(1), cod_lista SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, precio DEC(12,2), tipo_cliente,sec_cliente int END RECORD, exito BOOLEAN, actualiza STRING, pestado VARCHAR(30) OPEN WINDOW w1 AT 1,1 WITH FORM "vefmmt024" INPUT BY NAME datos_c.* BEFORE INPUT LET pestado = NULL SELECT MAX(a.fecha) INTO xfecha FROM vetb00096 a SELECT a.tasa,a.usuario INTO datos_c.tasa,xusuario FROM vetb00096 a WHERE a.fecha = xfecha DISPLAY BY NAME datos_c.tasa,xusuario # TABLA EXTERIOR PARA LOS CLIENTES EN USD$ LET actualiza = "UPDATE exterior.dbo.vetb00060 set tasa = ? where ventas in (2,3)" PREPARE actual FROM actualiza AFTER FIELD ventas SELECT a.descripcion INTO datos_c.descripcion FROM vetb00061 a WHERE a.ventas = datos_c.ventas IF STATUS = NOTFOUND THEN CALL msg(3) NEXT FIELD ventas END IF DISPLAY BY NAME datos_c.descripcion AFTER INPUT IF INT_FLAG THEN CALL msg(2) LET INT_FLAG = FALSE EXIT INPUT END IF LET respuesta=fgl_winquestion("ACTUALIZA","USTED VA ACTUALIZAR EN MASA TODOS LOS PRECIOS EN USD$ A RD$, ESTA SEGURO?","NO","YES|NO","QUESTION",0) IF respuesta = "YES" THEN IF datos_c.tasa IS NOT NULL THEN LET progreso = 0 DISPLAY progreso TO progreso CALL ui.Interface.refresh() LET exito = TRUE # BEGIN WORK UPDATE vetb00019 SET prima = datos_c.tasa,fech_mod=getdate(),us_mod=usuarios WHERE disponible = "S" SELECT COUNT(*) INTO no_registros FROM vetb00025 WHERE ventas = '3' # ACTUALIZA TASA PARA LAS COMPRAS UPDATE cotb00031 SET tasa_cambio = datos_c.tasa,us_mod = usuarios,fech_mod=getdate() WHERE cod_mon = 2 # ACTUALIZA LA TABLA EN EXTERIOR CON LAS VENTAS 2, 3 EXECUTE actual USING datos_c.tasa UPDATE vetb00061 SET tasa = datos_c.tasa WHERE ventas IN (2,3) DECLARE busca_p CURSOR FOR SELECT a.ventas,a.cod_lista,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.precio, a.tipo_cliente,a.sec_cliente FROM vetb00025 a,iptb00002 b WHERE a.ventas = 3 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 b.status_t IS NULL LET idx = 1 FOREACH busca_p INTO vetb25.* SELECT DISTINCT ventas FROM vetb00025 WHERE (ventas = 1 AND cod_n = vetb25.cod_n AND cod_Grupo = vetb25.cod_grupo AND cod_tipo = vetb25.cod_tipo AND cod_sec = vetb25.cod_sec AND tipo_cliente = vetb25.tipo_cliente AND sec_cliente = vetb25.sec_cliente) AND cod_lista = cod_lista IF STATUS <> NOTFOUND THEN UPDATE vetb00025 SET precio = vetb25.precio* datos_c.tasa, us_mod = usuarios, fech_mod = getdate() WHERE (ventas = 1 AND cod_n = vetb25.cod_n AND cod_Grupo = vetb25.cod_grupo AND cod_tipo = vetb25.cod_tipo AND cod_sec = vetb25.cod_sec AND tipo_cliente = vetb25.tipo_cliente AND sec_cliente = vetb25.sec_cliente) AND cod_lista = cod_lista ELSE INSERT INTO vetb00025 (ventas,cod_lista,cod_n,cod_grupo,cod_tipo,cod_sec,precio,us_crea,fech_crea, tipo_cliente,sec_cliente ) VALUES ('1',vetb25.cod_lista,vetb25.cod_n,vetb25.cod_grupo,vetb25.cod_tipo,vetb25.cod_sec, vetb25.precio*datos_c.tasa,usuarios,getdate(),vetb25.tipo_cliente,vetb25.sec_cliente) IF STATUS <0 THEN # ROLLBACK WORK CALL fgl_winmessage("ERROR", "PROCESO ACTUALIZACION PRECIOS FALLO","INFO") LET exito = FALSE LET pestado = 'FALLIDO' EXIT FOREACH END IF END IF LET progreso = (idx /no_registros )*100 DISPLAY progreso TO progreso CALL ui.Interface.refresh() LET pestado="EXITO" LET idx = idx + 1 END FOREACH INSERT INTO vetb00096 (fecha,usuario,ventas,tasa,estado) VALUES (getdate(),usuarios,datos_c.ventas,datos_c.tasa,pestado) # ACTUALIZACION PRODUCTOS TIENDA ONLINE # IF vetb25.ventas = '3' THEN # UPDATE iptb00016 SET precio_usd =vetb25.precio,us_mod = usuarios,fech_mod = getdate() # WHERE cod_n = vetb25.cod_n AND cod_grupo = vetb25.cod_grupo AND cod_tipo = vetb25.cod_tipo AND # cod_sec = vetb25.cod_tipo # END IF # IF exito THEN # COMMIT WORK # END IF CALL fgl_winmessage("INFO","ACTUALIZACION EXITOSA","INFO") END IF END IF END INPUT CLOSE WINDOW w1 END FUNCTION