Files
MBS/PROYECTO/TEST/enviarEncuestaTask/ProcesoEnviarEncuesta.4gl
T

115 lines
3.4 KiB
Plaintext

DEFINE usuarios, clave STRING
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
CALL ProcesoEnviarEncuesta()
END MAIN
FUNCTION ProcesoEnviarEncuesta()
DEFINE
Conduces DYNAMIC ARRAY OF RECORD
num_oc INT,
Dias INT,
Cliente STRING,
Correo STRING,
venta INT
END RECORD,
i INT
LET i = 1
INITIALIZE conduces TO NULL
PREPARE query
FROM "WITH CorreosUnicos AS (
SELECT
a.num_doc AS 'DOCUMENTO',
a.num_oc AS 'ORDEN',
DATEDIFF(day, a.fech_crea, GETDATE()) AS 'DIAS',
c.tipo_cliente AS 'CLIENTE',
d.patente AS 'CORREO',
c.ventas AS 'VENTA',
ROW_NUMBER() OVER (PARTITION BY d.patente ORDER BY a.fech_crea DESC) AS rn
FROM prtb00029 a
INNER JOIN iptb00006 b
ON a.num_oc = b.num_oc
AND a.num_doc = b.num_doc
INNER JOIN prtb00012 c
ON a.num_oc = c.num_oc
INNER JOIN vetb00004 d
ON c.tipo_cliente = d.tipo_cliente
AND c.sec_cliente = d.sec_cliente
WHERE
a.tipo_file = 'CO'
AND DATEDIFF(day, a.fech_crea, GETDATE()) >= 5
AND a.enviaEncuesta IS NULL
AND b.status_t IS NULL
AND b.cod_n = 12
AND c.status_t IS NULL
AND d.status_t IS NULL
AND d.patente IS NOT NULL
AND d.patente LIKE '%@%'
)
SELECT
ORDEN,
DIAS,
CLIENTE,
CORREO,
VENTA
FROM
CorreosUnicos
WHERE
rn = 1
ORDER BY
ORDEN DESC;
"
DECLARE buscar CURSOR FOR query
FOREACH buscar INTO Conduces[i].*
LET i = i + 1
END FOREACH
LET i = 1
#PRUEBA QUE LA ENCUESTA SE ENVÍA CORRECTAMENTE
{LET conduces[i].Correo = 'egarcia@marmotech.com.do'
CALL envia_encuesta(conduces[i].Correo,conduces[i].num_oc,
conduces[i].Cliente,conduces[i].venta, 'CONDUCES')}
#Producción
WHILE i <= conduces.getLength() - 1
--cambio de correo para pruebas
#LET conduces[i].Correo = 'egarcia@marmotech.com.do'
CALL envia_encuesta(conduces[i].Correo,conduces[i].num_oc,
conduces[i].Cliente,conduces[i].venta, 'CONDUCES')
TRY
UPDATE prtb00029 SET enviaEncuesta = 'SI'
WHERE num_oc = conduces[i].num_oc
AND tipo_file = 'CO'
CATCH
DISPLAY "Error actualizando la tabla prtb00029: ", sqlca.sqlcode
END TRY
LET i = i + 1
END WHILE
END FUNCTION