diff --git a/core/src/main/java/de/srsoftware/umbrella/core/model/User.java b/core/src/main/java/de/srsoftware/umbrella/core/model/User.java index eb6a33c..1d2f438 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/model/User.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/model/User.java @@ -7,6 +7,7 @@ import static de.srsoftware.umbrella.core.Constants.LANGUAGE; import static de.srsoftware.umbrella.core.Constants.NAME; import static de.srsoftware.umbrella.core.Constants.THEME; import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingFieldException; +import static java.text.MessageFormat.format; import de.srsoftware.umbrella.core.exceptions.UmbrellaException; import org.json.JSONObject; @@ -46,7 +47,10 @@ public class User { return new UmbrellaUser(id.longValue(), name, addr, theme, lang); } return new User(name,addr,lang); + } - + @Override + public String toString() { + return format("{0} ({1})",name,email); } } diff --git a/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentApi.java b/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentApi.java index 8286881..5aca53f 100644 --- a/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentApi.java +++ b/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentApi.java @@ -19,6 +19,7 @@ import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.forbidden import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingFieldException; import static de.srsoftware.umbrella.documents.Constants.*; import static de.srsoftware.umbrella.documents.model.Document.State.NEW; +import static de.srsoftware.umbrella.documents.model.Document.State.SENT; import static java.lang.System.Logger.Level.DEBUG; import static java.lang.System.Logger.Level.WARNING; import static java.net.HttpURLConnection.*; @@ -218,20 +219,19 @@ public class DocumentApi extends BaseHandler { } private boolean sendDocument(HttpExchange ex, Path path, UmbrellaUser user, long docId) throws IOException, UmbrellaException { - var doc = getDocument(docId,user).a; + var doc = getDocumentWithCompanyData(docId,user); var rendered = renderDocument(doc,user); var json = json(ex); if (!(json.has(EMAIL) && json.get(EMAIL) instanceof String email)) throw missingFieldException(EMAIL); if (!(json.has(SUBJECT) && json.get(SUBJECT) instanceof String subject)) throw missingFieldException(SUBJECT); if (!(json.has(CONTENT) && json.get(CONTENT) instanceof String content)) throw missingFieldException(CONTENT); - + LOG.log(WARNING,"Updating settings of company-customer-document combination not implemented!"); var attachment = new Attachment(doc.number()+".pdf",rendered.mimeType(),rendered.bytes()); var message = new Message(user,subject,content,null,List.of(attachment)); - var envelope = new Envelope(message,new User(doc.customer().name(),new EmailAddress(email),doc.customer().language())); + var envelope = new Envelope(message,new User(doc.customer().shortName(),new EmailAddress(email),doc.customer().language())); messages.send(envelope); - // TODO postBox.send(…) - - return sendEmptyResponse(HTTP_NOT_IMPLEMENTED,ex); + db.save(doc.set(SENT)); + return ok(ex); } private boolean getCompanies(HttpExchange ex, UmbrellaUser user, Token token) throws IOException, UmbrellaException { diff --git a/documents/src/main/java/de/srsoftware/umbrella/documents/model/Customer.java b/documents/src/main/java/de/srsoftware/umbrella/documents/model/Customer.java index cbd0822..830e82e 100644 --- a/documents/src/main/java/de/srsoftware/umbrella/documents/model/Customer.java +++ b/documents/src/main/java/de/srsoftware/umbrella/documents/model/Customer.java @@ -91,6 +91,13 @@ public final class Customer implements Mappable { } } + public String shortName(){ + var lines = name.split("\n"); + var result = lines[0]; + if (lines.length>1 && !lines[1].matches(".*\\d.*")) result += " "+lines[1]; + return result; + } + public String taxNumber() { return taxNumber; } diff --git a/documents/src/main/java/de/srsoftware/umbrella/documents/model/Position.java b/documents/src/main/java/de/srsoftware/umbrella/documents/model/Position.java index 11c1599..4dbd96a 100644 --- a/documents/src/main/java/de/srsoftware/umbrella/documents/model/Position.java +++ b/documents/src/main/java/de/srsoftware/umbrella/documents/model/Position.java @@ -5,13 +5,14 @@ package de.srsoftware.umbrella.documents.model; import static de.srsoftware.umbrella.core.Constants.*; import static de.srsoftware.umbrella.core.Util.markdown; import static de.srsoftware.umbrella.documents.Constants.*; +import static java.lang.System.Logger.Level.WARNING; import de.srsoftware.tools.Mappable; import java.util.*; import org.json.JSONObject; public final class Position implements Mappable { - + public static final System.Logger LOG = System.getLogger(Position.class.getSimpleName()); private long docId; private final int num; private String itemCode; @@ -121,7 +122,9 @@ public final class Position implements Mappable { case FIELD_TAX: tax = json.getInt(key); break; case TITLE: title = json.getString(key); break; case FIELD_UNIT: unit = json.getString(key); break; - case FIELD_UNIT_PRICE: unitPrice = json.getLong(key); break; + case FIELD_UNIT_PRICE: unitPrice = json.getLong(key); + LOG.log(WARNING,"Updating unit price for customer in company settings not implemented!"); + break; default: key = null; } if (key != null) dirtyFields.add(key); diff --git a/frontend/src/routes/document/List.svelte b/frontend/src/routes/document/List.svelte index 41ebc60..be1745f 100644 --- a/frontend/src/routes/document/List.svelte +++ b/frontend/src/routes/document/List.svelte @@ -4,11 +4,14 @@ import { t } from '../../translations.svelte.js'; import TypeSelector from './TypeSelector.svelte'; + + let error = null; let companies = {}; let documents = null; let selected_company = null; let router = useTinyRouter(); + let company_id = +router.query.company_id; let docType = 0; async function loadCompanies(){ @@ -19,9 +22,20 @@ } else { error = await resp.text(); } + + if (company_id) { + for (var comp of companies){ + if (comp.id == company_id){ + load(comp); + break; + } + } + + } } async function load(company){ + router.navigate(`/document?company_id=${company.id}`); selected_company = company; const url = `${location.protocol}//${location.host.replace('5173','8080')}/api/document/list`; const resp = await fetch(url,{ diff --git a/frontend/src/routes/document/Send.svelte b/frontend/src/routes/document/Send.svelte index 1a40e72..be0f274 100644 --- a/frontend/src/routes/document/Send.svelte +++ b/frontend/src/routes/document/Send.svelte @@ -37,13 +37,13 @@ async function doSend(){ var data = {email:email,subject:subject,content:content}; const url = `${location.protocol}//${location.host.replace('5173','8080')}/api/document/${id}/send`; - const resp = fetch(url,{ + const resp = await fetch(url,{ credentials:'include', method: 'POST', body: JSON.stringify(data) }); if (resp.ok){ - router.navigate('/document'); + router.navigate(`/document?company_id=${doc.company.id}`); } else { error = await resp.text(); } diff --git a/messages/src/main/java/de/srsoftware/umbrella/message/Constants.java b/messages/src/main/java/de/srsoftware/umbrella/message/Constants.java index 2473ba8..d0018b5 100644 --- a/messages/src/main/java/de/srsoftware/umbrella/message/Constants.java +++ b/messages/src/main/java/de/srsoftware/umbrella/message/Constants.java @@ -10,7 +10,7 @@ public class Constants { public static final String CONFIG_SMTP_PORT = "umbrella.modules.message.smtp.port"; public static final String CONFIG_SMTP_USER = "umbrella.modules.message.smtp.user"; - public static final String DEBUG_ADDREESS = "debug_addres"; + public static final String DEBUG_ADDREESS = "umbrella.modules.message.debug_address"; public static final String ENVELOPE_FROM = "mail.smtp.from"; public static final String FIELD_MESSAGES = "messages"; public static final String FIELD_HOST = "host"; diff --git a/translations/src/main/java/de/srsoftware/umbrella/translations/Translations.java b/translations/src/main/java/de/srsoftware/umbrella/translations/Translations.java index 1442592..3fdb970 100644 --- a/translations/src/main/java/de/srsoftware/umbrella/translations/Translations.java +++ b/translations/src/main/java/de/srsoftware/umbrella/translations/Translations.java @@ -62,7 +62,9 @@ public class Translations extends PathHandler implements Translator { } else current = null; } var translated = current instanceof String translation ? translation : text; - for (var entry : fills.entrySet()) translated = translated.replaceAll("\\{"+entry.getKey()+"}",entry.getValue()); + if (fills != null) for (var entry : fills.entrySet()) { + translated = translated.replaceAll("\\{"+entry.getKey()+"}",entry.getValue()); + } return translated; } catch (IOException e) { return text;