O uso de um formato no template não define que o anexo será disponibilizado neste mesmo formato. Nas aplicações mais típicas, o template é um arquivo ".docx" ou ".odt" e o anexo no e-mail será um ".pdf".
Para maiores detalhes em como criar um template, veja Templates de documentos.
CUSTOM.ENVIO_CONTRATO.TEMPLATEOnde "ENVIO_CONTRATO" remete ao que estamos fazendo e as palavras "CUSTOM" e "TEMPLATE" seriam fixas.
Para cadastrar a preferência, basta acessar a interface Preferências e criar um registro assim:
[img:pref-template]
Depois de cadastrada, basta fazer o upload do template:
[img:upload-template]
Acesse a interface Operações customizadas e cadastre a rotina. Novamente, o nome é livre mas sugere-se utilizar o mesmo que foi utilizado para a preferência, apenas mudando o final .TEMPLATE para .ROTINA:
CUSTOM.ENVIO_CONTRATO.ROTINAA implementação pode ser feita em qualquer linguagem script que esteja sendo suportada pelo Eligo. Sugerimos utilizar Groovy:
A implementação em Groovy seguiria o seguinte modelo:
import br.com.eligo.ent.EntAtividades;
import br.com.telescope.adsrt.dom.DomAttachedFile;
import br.com.telescope.adsrt.lib.AdsException;
import br.com.telescope.adsrt.lib.BaseRuntime;
import br.com.telescope.t2.config.Config;
import br.com.telescope.t2.exception.UnexpectedException;
import br.com.telescope.template.Template;
import br.com.telescope.util.MailMessage;
import br.com.telescope.util.MailSender;
import br.com.telescope.util.WebFileTemp;
import java.io.File;
import java.io.IOException;
try {
// Pega o objeto que disparou o evento
EntAtividades ativ = (EntAtividades) ctx.getEvent().getObject();
// Verifica a condição para enviar o documento
if (ativ.getTitulo().isModified()) {
// Pega o arquivo que será usado como template
DomAttachedFile tempFile = new DomAttachedFile();
tempFile.setValue(Config.getInstance().get("CUSTOM.ENVIO_CONTRATO.TEMPLATE"));
File file = new File(tempFile.getFilePath());
Template template = br.com.telescope.template.Template.newInstance(file);
// Registra as variáveis permitidas
template.getProperties().putAll(ativ.findTipoAtividade().asMap());
template.getProperties().putAll(ativ.asMap());
// Gera o documento
WebFileTemp temp = WebFileTemp.createInstance("pdf");
template.generate(temp.getFile());
// Monta a mensagem a ser enviada por e-mail
MailMessage msg = MailMessage.create("Corpo da mensagem")
.attach(temp.getFile());
// Envia o e-mail
MailSender sender = new MailSender();
sender.to("destino@eligo.com.br")
.subject("Atividade " + ativ.valueOfAtividade())
.message(msg)
.run();
}
} catch (IOException ex) {
throw new UnexpectedException(ex);
}
Para maiores detalhes sobre envent-listeners, acesse Eventos de sistema