From 2cd53b19cb420db434b04a740031e3672d13daa0 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Mon, 24 Nov 2025 23:24:31 +0100 Subject: [PATCH] Re-implemented guessing of next document id. Signed-off-by: Stephan Richter --- .../umbrella/documents/Constants.java | 10 +- .../umbrella/documents/DocumentApi.java | 10 +- .../umbrella/documents/DocumentDb.java | 15 +-- .../umbrella/documents/SqliteDb.java | 114 +++++++++--------- .../documents/model/CompanySettings.java | 33 ----- .../routes/document/PositionSelector.svelte | 3 +- .../routes/document/TemplateSelector.svelte | 12 +- frontend/src/routes/document/View.svelte | 8 +- translations/src/main/resources/de.json | 1 + translations/src/main/resources/en.json | 1 + 10 files changed, 72 insertions(+), 135 deletions(-) delete mode 100644 documents/src/main/java/de/srsoftware/umbrella/documents/model/CompanySettings.java diff --git a/documents/src/main/java/de/srsoftware/umbrella/documents/Constants.java b/documents/src/main/java/de/srsoftware/umbrella/documents/Constants.java index 271424a..426196f 100644 --- a/documents/src/main/java/de/srsoftware/umbrella/documents/Constants.java +++ b/documents/src/main/java/de/srsoftware/umbrella/documents/Constants.java @@ -9,7 +9,6 @@ import java.util.regex.Pattern; public class Constants { private Constants(){} - public static final Pattern POST_CODE = compile("(.*\\w+.*)\n(.*\\d+.*)\n(\\d{5}) (\\w+)",DOTALL); public static final String CLONE = "clone"; @@ -21,8 +20,6 @@ public class Constants { public static final String ERROR_ADDRESS_MISSING = "{0} address does not contain street address / post code / city"; - - public static final String MOVE = "move"; public static final String PATH_ADD_ITEM = "add_item"; @@ -38,8 +35,6 @@ public class Constants { public static final String POSITION = "position"; public static final String PROJECT_ID = "project_id"; - - public static final String TABLE_COMPANY_SETTINGS = "company_settings"; public static final String TABLE_CUSTOMER_SETTINGS = "company_customer_settings"; public static final String TABLE_DOCUMENTS = "documents"; public static final String TABLE_DOCUMENT_TYPES = "document_types"; @@ -47,4 +42,9 @@ public class Constants { public static final String TABLE_PRICES = "customer_prices"; public static final String TABLE_TEMPLATES = "templates"; public static final String TEMPLATES = "templates"; + + public static final String TYPE_CONFIRMATION = "confirmation"; + public static final String TYPE_INVOICE = "invoice"; + public static final String TYPE_OFFER = "offer"; + public static final String TYPE_REMINDER = "reminder"; } 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 80657f6..bfebea9 100644 --- a/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentApi.java +++ b/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentApi.java @@ -432,8 +432,7 @@ public class DocumentApi extends BaseHandler implements DocumentService { Document doc = getDocument(docId, user).a; - var companySettings = db.getCompanySettings(doc.companyId(),docType); - var nextNumber = companySettings.nextDocId(); + var nextNumber = db.nextDocId(user.language(),doc.companyId(),docType); Document clone = new Document( 0, @@ -469,19 +468,17 @@ public class DocumentApi extends BaseHandler implements DocumentService { if (!json.has(TYPE) || !(json.get(TYPE) instanceof Number docTypeId)) throw missingFieldException(TYPE); var type = db.getType(docTypeId.intValue()); var customer = Customer.of(customerData); - Template template = new Template(6,companyId,"unknwon",null); String currency = company.currency(); String sep = company.decimalSeparator(); var settings = db.getCustomerSettings(companyId,type,customer.id()); var newCustomer = settings == null; if (newCustomer) settings = CustomerSettings.empty(); - var companySettings = db.getCompanySettings(companyId,type); - var nextNumber = companySettings.nextDocId(); + var nextNumber = db.nextDocId(user.language(), companyId,type); String lastHead = settings.header(); String lastFooter = settings.footer(); var sender = Sender.of(senderData); LOG.log(DEBUG,json.toString(2)); - var doc = new Document(0,companyId,nextNumber,type, LocalDate.now(), NEW,template,null,lastHead,lastFooter,currency,sep,sender,customer,new PositionList()); + var doc = new Document(0,companyId,nextNumber,type, LocalDate.now(), NEW,null,null,lastHead,lastFooter,currency,sep,sender,customer,new PositionList()); var saved = db.save(doc); if (newCustomer) { if (customerData.get(CONTACT_ID) instanceof Number contactId) { @@ -491,7 +488,6 @@ public class DocumentApi extends BaseHandler implements DocumentService { } companyService().saveNewCustomer(companyId,customer.id()); } - db.step(companySettings); return sendContent(ex,saved); } diff --git a/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentDb.java b/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentDb.java index 71aaf1a..2745565 100644 --- a/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentDb.java +++ b/documents/src/main/java/de/srsoftware/umbrella/documents/DocumentDb.java @@ -27,8 +27,6 @@ public interface DocumentDb { CustomerSettings getCustomerSettings(long companyId, Type docType, String customerId) throws UmbrellaException; - CompanySettings getCompanySettings(long companyId, Type docType) throws UmbrellaException; - Collection