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