use of org.incode.module.document.dom.impl.docs.DocumentAbstract in project estatio by estatio.
the class Paperclip method getDocumentDate.
/**
* Either the {@link Document#getCreatedAt()} or {@link Document#getRenderedAt()}, depending upon the
* {@link Document#getState()} of the {@link Document}. Returns <tt>null</tt> for {@link DocumentTemplate}s.
*/
@NotPersistent
@Property(domainEvent = DocumentDateDomainEvent.class, editing = Editing.DISABLED)
public DateTime getDocumentDate() {
final DocumentAbstract documentAbstract = getDocument();
if (documentAbstract instanceof Document) {
final Document document = (Document) documentAbstract;
DocumentState state = document.getState();
return state.dateOf(document);
}
return null;
}
use of org.incode.module.document.dom.impl.docs.DocumentAbstract in project estatio by estatio.
the class Communication method sendByEmail.
// so can invoke via BackgroundService
@Action(hidden = Where.EVERYWHERE)
public Communication sendByEmail() {
// body...
final Document coverNoteDoc = findDocument(DocumentConstants.PAPERCLIP_ROLE_COVER);
final String emailBody = coverNoteDoc.asChars();
// (email) attachments..
// this corresponds to the primary document and any attachments
final List<DataSource> attachments = Lists.newArrayList();
final Document primaryDocument = getPrimaryDocument();
if (primaryDocument != null) {
// should be the case
attachments.add(primaryDocument.asDataSource());
}
attachments.addAll(findDocumentsInRoleAsStream(DocumentConstants.PAPERCLIP_ROLE_ATTACHMENT).map(DocumentAbstract::asDataSource).collect(Collectors.toList()));
// cc..
final List<String> toList = findCorrespondents(CommChannelRoleType.TO);
final List<String> ccList = findCorrespondents(CommChannelRoleType.CC);
final List<String> bccList = findCorrespondents(CommChannelRoleType.BCC);
// subject ...
final String subject = getSubject();
// finally, we send
final boolean send = emailService.send(toList, ccList, bccList, subject, emailBody, attachments.toArray(new DataSource[] {}));
if (!send) {
throw new ApplicationException("Failed to send email; see system logs for details.");
}
// mark this comm as having been sent.
sent();
return this;
}
use of org.incode.module.document.dom.impl.docs.DocumentAbstract in project estatio by estatio.
the class InvoiceForLease_sendByEmail method choices0$$.
public List<Document> choices0$$() {
final List<Paperclip> paperclips = paperclipRepository.findByAttachedTo(invoice);
final List<Document> documents = Lists.newArrayList();
for (Paperclip paperclip : paperclips) {
final DocumentAbstract documentAbs = paperclip.getDocument();
if (!(documentAbs instanceof Document)) {
continue;
}
final Document document = (Document) documentAbs;
if (document.getState() != DocumentState.RENDERED) {
continue;
}
if (!DocumentTypeData.isPrimaryType(document)) {
continue;
}
final Document_sendByEmail document_email = document_sendByEmail(document);
if (document_email.disableAct() != null) {
continue;
}
documents.add(document);
}
return documents;
}
use of org.incode.module.document.dom.impl.docs.DocumentAbstract in project estatio by estatio.
the class InvoiceSummaryForPropertyDueDateStatus_actionAbstract method findMostRecentAttachedTo.
Document findMostRecentAttachedTo(final Invoice invoice, final DocumentType documentType) {
final List<Paperclip> paperclips = paperclipRepository.findByAttachedTo(invoice);
for (Paperclip paperclip : paperclips) {
final DocumentAbstract documentAbstract = paperclip.getDocument();
if (!(documentAbstract instanceof Document)) {
continue;
}
final Document document = (Document) documentAbstract;
if (document.getType() == documentType) {
return document;
}
}
return null;
}
use of org.incode.module.document.dom.impl.docs.DocumentAbstract in project estatio by estatio.
the class Smoke_IntegTest method can_send_email.
@Test
public void can_send_email() throws Exception {
// given
fixtureScripts.runFixtureScript(new CommandDomModule().getTeardownFixtureWillDelete(), null);
fixtureScripts.runFixtureScript(new DemoObjectWithNotes_and_DemoInvoice_and_docs_and_comms_create(), null);
transactionService.nextTransaction();
// and so given customer with an email
final DemoObjectWithNotes fred = customerMenu.findDemoObjectsWithNotesByName(DemoObjectWithNote_and_DemoInvoice_create3.FRED_HAS_EMAIL_AND_PHONE).get(0);
final EmailAddress fredEmail = (EmailAddress) linkRepository.findByOwnerAndCommunicationChannelType(fred, CommunicationChannelType.EMAIL_ADDRESS).get(0).getCommunicationChannel();
// and with an invoice
final DemoInvoice fredInvoice = invoiceRepository.findByCustomer(fred).get(0);
// that has an attached document
final Paperclip paperclip = paperclipRepository.findByAttachedTo(fredInvoice).get(0);
final DocumentAbstract document = paperclip.getDocument();
// when
final Document_sendByEmail documentEmail = mixin(Document_sendByEmail.class, document);
final Set<EmailAddress> emailAddresses = documentEmail.choices0Act();
// then
assertThat(emailAddresses).contains(fredEmail);
// and when
// REVIEW: should be wrapped, however the DocumentCommunicationSupportForDocumentsAttachedToInvoiceForLease
// vetoes this, and there is current no way to exclude classes that are not part of the "effective" module
// final Communication comm = wrap(documentEmail).act(fredEmail, null, null, null, null, null);
final Communication comm = documentEmail.act(fredEmail, null, null, null, null, null);
// then
assertThat(comm).isNotNull();
assertThat(comm.getState()).isEqualTo(CommunicationState.PENDING);
assertThat(comm.getCreatedAt()).isNotNull();
assertThat(comm.getType()).isEqualTo(CommunicationChannelType.EMAIL_ADDRESS);
assertThat(comm.getSubject()).isNotNull();
assertThat(comm.getSentAt()).isNull();
final List<CommunicationChannel> correspondentChannels = Lists.newArrayList(comm.getCorrespondents()).stream().map(CommChannelRole::getChannel).filter(Objects::nonNull).collect(Collectors.toList());
assertThat(correspondentChannels).contains(fredEmail);
List<EmailMessage> emailMessages = fakeEmailService.listSentEmails();
assertThat(emailMessages).isEmpty();
List<CommandJdo> commands = backgroundCommandRepository.findBackgroundCommandsNotYetStarted();
assertThat(commands.size()).isEqualTo(1);
// when
fakeScheduler.runBackgroundCommands(5000);
// then
assertThat(comm.getState()).isEqualTo(CommunicationState.SENT);
assertThat(comm.getSentAt()).isNotNull();
emailMessages = fakeEmailService.listSentEmails();
assertThat(emailMessages).isNotEmpty();
}
Aggregations