176 lines
5.8 KiB
Plaintext
176 lines
5.8 KiB
Plaintext
{
|
|
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 |