diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SteuerbescheidPlugin.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SteuerbescheidPlugin.java index 7430eb9..36b1cdd 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SteuerbescheidPlugin.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SteuerbescheidPlugin.java @@ -135,14 +135,17 @@ public class SteuerbescheidPlugin extends AbstractPlugin { // Beträge subtrahieren.... double saldo = amount; - logger.info("Found " + invoices.size() + " matching invoices..."); + logger.info("Found " + invoices.size() + " matching invoices for ATC-No: " + atcNummer); for (ItemCollection invoice : invoices) { workitem.setItemValueUnique("$workitemRef", invoice.getUniqueID()); // suche die Zeile in der die ATC Nummer vorkommt. List positionen = InvoiceUtil.explodeChildList(invoice); for (ItemCollection pos : positionen) { - if (atcNummer.equals(pos.getItemValueString("atc.number"))) { + // if (atcNummer.equals(pos.getItemValueString("atc.number"))) { + // Support both variants.... + String posAtcNummer = pos.getItemValueString("atc.number"); + if (!posAtcNummer.isEmpty() && atcNummer.startsWith(posAtcNummer)) { double umsatz = pos.getItemValueDouble("datev.umsatz"); logger.info("...Umsatz=" + umsatz); saldo = InvoiceUtil.round(saldo - umsatz); @@ -160,8 +163,29 @@ public class SteuerbescheidPlugin extends AbstractPlugin { */ protected List findInvoices(String atcNumber) { List result = new ArrayList(); + // String query = "(type:workitem OR type:workitemarchive) AND ($taskid:[5000 TO + // 5990])" + // + " AND invoice.atc.number:\"" + atcNumber + "\" " + " AND + // $workflowgroup:\"Rechnungsausgang\" "; + + /** + * Änderung 2.4.2026 - die ATC Nummer ist nun häufig eine Kombination + * z.B: 26DE2452CCA004P4R3/ATC400057440320262452 + * Relevant ist nur der vordere Teil weil nur der vordere in die Invoice + * geschrieben wurde. + * Deswegen schneiden wir den vorderen Teil ab und suchen mit OR nach beiden + * Schreibweisen + */ + String query = "(type:workitem OR type:workitemarchive) AND ($taskid:[5000 TO 5990])" - + " AND invoice.atc.number:\"" + atcNumber + "\" " + " AND $workflowgroup:\"Rechnungsausgang\" "; + + " AND ($workflowgroup:\"Rechnungsausgang\") "; + if (atcNumber.contains("/")) { + String atcNumberShort = atcNumber.substring(0, atcNumber.indexOf("/")); + query = query + " AND (invoice.atc.number:\"" + atcNumber + "\" OR invoice.atc.number:\"" + atcNumberShort + + "\") "; + } else { + query = query + " AND (invoice.atc.number:\"" + atcNumber + "\") "; + } try { result = documentService.find(query, 999, 0, "$created", false); return result;