fix ATC Number

This commit is contained in:
Ralph Soika 2026-04-02 12:34:22 +02:00
parent d7619a7c21
commit 3ebd619df4

View file

@ -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<ItemCollection> 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<ItemCollection> findInvoices(String atcNumber) {
List<ItemCollection> result = new ArrayList<ItemCollection>();
// 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;