115 lines
3.4 KiB
Plaintext
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
|