Files
MBS/PROYECTO/classes/envio_email.4gl
T

171 lines
4.0 KiB
Plaintext

DEFINE
i INT,
client_data DYNAMIC ARRAY OF RECORD
flag BOOLEAN,
contactos STRING,
nombre STRING,
puesto STRING
END RECORD
DEFINE MailStruct RECORD
contactos STRING,
subject STRING,
body STRING
END RECORD
DEFINE xusername, xsmtphost, xsmtpport, xpassword STRING
DEFINE
documentName STRING,
conduce BYTE
FUNCTION envio_email(
tip_cliente INT,
sec_client INT,
nombre STRING,
num_orden INT,
usuario STRING)
OPEN WINDOW w2 WITH FORM "envio_email"
CALL fgl_settitle("Envio factura a cliente")
INITIALIZE client_data TO NULL
INITIALIZE mailStruct TO NULL
CALL buscarData(tip_cliente, sec_client, num_orden)
DISPLAY nombre TO nombre_cliente
INPUT ARRAY client_Data
FROM record1.*
ATTRIBUTES(UNBUFFERED, WITHOUT DEFAULTS)
ON ACTION CANCEL
EXIT INPUT
CLOSE WINDOW w2
AFTER INPUT
INPUT BY NAME MailStruct.* ATTRIBUTES(UNBUFFERED, WITHOUT DEFAULTS)
BEFORE INPUT
DISPLAY documentName TO documentName
CALL BuildMail()
ON ACTION CANCEL
EXIT INPUT
CLOSE WINDOW w2
AFTER INPUT
CALL SendMail(num_orden, usuario)
END INPUT
END INPUT
CLOSE WINDOW w2
END FUNCTION
FUNCTION buscarData(tip_cliente INT, sec_client INT, orden INT)
SET CONNECTION "MARMOTECH"
SELECT 0, patente, nombre
INTO client_data[1].flag,
client_data[1].contactos,
client_data[1].nombre
FROM vetb00004
WHERE tipo_cliente = tip_cliente AND sec_cliente = sec_client
IF client_data[1].contactos IS NOT NULL THEN
LET client_data[1].puesto = "PRINCIPAL"
END IF
SELECT 0, email, 'Elvis', 'PRUEBA'
INTO client_data[2].flag,
client_data[2].contactos,
client_data[2].nombre,
client_data[2].puesto
FROM seg0001
WHERE usuario = 'egarcia'
DECLARE buscar CURSOR FOR
SELECT 0, a.email, a.contacto, a.puesto
FROM vetb00087 a
WHERE a.tipo_cliente = tip_cliente AND a.sec_cliente = sec_client
LET i = 3
FOREACH buscar INTO client_data[i].*
LET i = i + 1
END FOREACH
LOCATE conduce IN MEMORY
SELECT TOP(1) nombre_file, documento
INTO documentName, conduce
FROM prtb00029
WHERE num_oc = orden AND tipo_file = 'CO'
SET CONNECTION "EXTERIOR"
END FUNCTION
FUNCTION BuildMail()
INITIALIZE mailstruct.* TO NULL
FOR i = 1 TO client_data.getLength()
IF client_data[i].flag == 1 THEN
IF mailstruct.contactos IS NULL THEN
LET mailstruct.contactos = client_data[i].contactos
ELSE
LET mailstruct.contactos =
mailstruct.contactos || ", " || client_data[i].contactos
END IF
END IF
END FOR
END FUNCTION
FUNCTION SendMail(orden INT, usuario STRING)
DEFINE attachment STRING
SET CONNECTION "MARMOTECH"
SELECT from_address, nombre_Servidor, puerto, clave
INTO xusername, xsmtphost, xsmtpport, xpassword
FROM tbperfil_mail
WHERE cod_perfil = 2
SET CONNECTION "EXTERIOR"
LET attachment = "archivos\\", usuario CLIPPED, documentName
CALL conduce.writeFile(attachment)
LET mailstruct.body = "<table><tr><td>",MAILSTRUCT.body CLIPPED,"</td></tr></table>"
TRY
CALL enviaemail(
mailstruct.contactos,
mailstruct.subject,
mailstruct.body,
attachment,
xusername,
xsmtphost,
xsmtpport,
xpassword)
CATCH
CALL fgl_winmessage(
"ESTADO DEL EMAIL",
"Ha ocurrido un error al mandar el email",
"INFO")
END TRY
END FUNCTION