From 620dbbcc28937348a442a351179a59f59452bf64 Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Thu, 19 Sep 2024 18:46:32 +0200 Subject: [PATCH] berechnung steuer salden --- .../SteuerbescheidPlugin.java | 79 +- .../section_steuerbescheid_details.xhtml | 26 +- .../section_steuerbescheid_invoices.xhtml | 16 + workflow/steuerbescheid-de-1.0.4-debug.bpmn | 1372 +++++++++++++++++ workflow/steuerbescheid-de-1.0.4.bpmn | 65 +- 5 files changed, 1534 insertions(+), 24 deletions(-) create mode 100644 workflow/steuerbescheid-de-1.0.4-debug.bpmn 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 4d26c9d..7d08b46 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 @@ -1,6 +1,7 @@ package com.alexanderlogistics; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.logging.Logger; @@ -45,8 +46,83 @@ public class SteuerbescheidPlugin extends AbstractPlugin { @Override public ItemCollection run(ItemCollection workitem, ItemCollection event) throws PluginException { + // Update Fälligkeit + updateFaelligkeit(workitem); + + // Update Salden + updateTotalEustZoll(workitem); + updateInvoiceSaldo(workitem); + + return workitem; + } + + /** + * Aktualisiert die EUST/ZOLL Summen + * + */ + protected void updateTotalEustZoll(ItemCollection workitem) { + + double saldoEust = 0; + double saldoZoll = 0; + List positionsTabelle = InvoiceUtil.explodeChildList(workitem); + for (ItemCollection pos : positionsTabelle) { + if ("EUST".equalsIgnoreCase(pos.getItemValueString("activity.type"))) { + saldoEust = saldoEust + pos.getItemValueDouble("amount"); + } + if ("ZOLL".equalsIgnoreCase(pos.getItemValueString("activity.type"))) { + saldoZoll = saldoZoll + pos.getItemValueDouble("amount"); + } + } + + workitem.setItemValue("steuer.eust", saldoEust); + workitem.setItemValue("steuer.zoll", saldoZoll); + + } + + /** + * Aktualisiert die EUST/ZOLL Fälligkeiten in den Detailtabellen + * Die Daten kommen von der KI und werden auf die Positionsnummern gemappt. + * + */ + protected void updateFaelligkeit(ItemCollection workitem) { + Date datEust = workitem.getItemValueDate("steuer.eust.due"); + Date datZoll = workitem.getItemValueDate("steuer.zoll.due"); + + List rows = InvoiceUtil.explodeChildList(workitem); + boolean update = false; + for (ItemCollection pos : rows) { + + if (datZoll != null) { + if ("ZOLL".equalsIgnoreCase(pos.getItemValueString("activity.type")) + && pos.getItemValueDate("duedate") == null) { + pos.setItemValue("duedate", datZoll); + update = true; + } + } + if (datEust != null) { + if ("EUST".equalsIgnoreCase(pos.getItemValueString("activity.type")) + && pos.getItemValueDate("duedate") == null) { + pos.setItemValue("duedate", datEust); + update = true; + } + } + } + + if (update) { + InvoiceUtil.implodeChildList(workitem, rows); + } + + } + + /** + * Aktualisiert den invoice.saldo anhand der ausgehenden Rechnungen zu einer ATC + * Nummer + * + */ + protected void updateInvoiceSaldo(ItemCollection workitem) { + String atcNummer = workitem.getItemValueString("invoice.atc.number"); - logger.info("Verify ATC-Nr.: " + atcNummer); + logger.fine("Verify ATC-Nr.: " + atcNummer); double amount = workitem.getItemValueDouble("invoice.total.net"); List invoices = findInvoices(atcNummer); @@ -70,7 +146,6 @@ public class SteuerbescheidPlugin extends AbstractPlugin { // Update Saldo workitem.setItemValue("invoice.saldo", InvoiceUtil.round(saldo)); - return workitem; } /* diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/section_steuerbescheid_details.xhtml b/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/section_steuerbescheid_details.xhtml index e2d4357..f732bd0 100644 --- a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/section_steuerbescheid_details.xhtml +++ b/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/section_steuerbescheid_details.xhtml @@ -9,7 +9,7 @@ Positionsnummer Art - Steuer + Fälligkeit Betrag @@ -22,8 +22,10 @@ #{row.item['activity.type']} - - #{row.item['tax.code']} + + + + @@ -38,6 +40,24 @@ + + + + Summe: + + + + + + + + + + + + + + diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/section_steuerbescheid_invoices.xhtml b/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/section_steuerbescheid_invoices.xhtml index 9254b22..c6406d3 100644 --- a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/section_steuerbescheid_invoices.xhtml +++ b/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/section_steuerbescheid_invoices.xhtml @@ -38,7 +38,23 @@ + + + Saldo: + + + + + + + + + + + + + diff --git a/workflow/steuerbescheid-de-1.0.4-debug.bpmn b/workflow/steuerbescheid-de-1.0.4-debug.bpmn new file mode 100644 index 0000000..1c9a4a1 --- /dev/null +++ b/workflow/steuerbescheid-de-1.0.4-debug.bpmn @@ -0,0 +1,1372 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + +<itemvalue>$workflowstatus</itemvalue> + +]]> + + + +]]> + + + + + + + + + + + + + + + + + + + + StartEvent_1 + Task_1 + IntermediateCatchEvent_3 + Task_4 + EndEvent_3 + + DataObject_2 + event_XJbC5A + textAnnotation_HwSKqQ + event_9fS4uw + event_mPDOzA + gateway_u86UTw + gateway_5riVig + event_0j5Tyg + gateway_4Jce4w + task_Xtwzqw + textAnnotation_SkyWAQ + task_O06T6Q + event_uYUtGg + event_SXqpPw + gateway_yONKfQ + gateway_XuJUAw + event_CGDJnQ + event_q0jrHA + event_bQtvJQ + event_gskJ4Q + task_OLIdnQ + event_x7R5Sw + event_ZEDh4Q + task_Em0QgQ + dataObject_P0BaVA + + + + + sequenceFlow_ikwt6g + + + SequenceFlow_19 + + + + + + invoice.number invoice.booking_text invoice.atc.number vom invoice.date ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AbteilungBelegdatumSumme Zoll/EUStSaldo + + + space.name + invoice.date + invoice.total.net + invoice.saldo + +]]> + + + $workflowgroup - $workflowstatus]]> + sequenceFlow_EzmiPA + sequenceFlow_rbVgQA + sequenceFlow_KOaBSw + sequenceFlow_tpBldQ + + + + + true + + + + + + + + + + + + + + + + + + invoice.number invoice.booking_text invoice.atc.number vom invoice.date ]]> + + + + + AbteilungBelegdatumSumme Zoll/EUStSaldo + + + space.name + invoice.date + invoice.total.net + invoice.saldo + +]]> + + + $workflowgroup - $workflowstatus]]> + SequenceFlow_19 + sequenceFlow_d60CVg + + + + + + + + + + + + + + + + + + + + + Mahnwesen]]> + + + + sequenceFlow_ikwt6g + sequenceFlow_60LKZw + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]> + + + + + + + + + + + + + + + + sequenceFlow_hLkSLA + sequenceFlow_oRy3qw + sequenceFlow_UW18Jw + + + + + + + + + + + + + + + + sequenceFlow_rbVgQA + + + + + + + + + + + + + + + + + + + + + + + + + sequenceFlow_tpBldQ + sequenceFlow_lrR0DQ + sequenceFlow_GmmBvA + + + + sequenceFlow_lrR0DQ + sequenceFlow_KOaBSw + sequenceFlow_hLkSLA + + + + sequenceFlow_EzmiPA + sequenceFlow_omVTTA + sequenceFlow_r7sdOg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + home]]> + + + + sequenceFlow_hLkSLA + sequenceFlow_aaLOTA + sequenceFlow_r7sdOg + sequenceFlow_HWrJ6A + + + + sequenceFlow_oRy3qw + sequenceFlow_d60CVg + sequenceFlow_aaLOTA + + + + + + + + + + + invoice.number invoice.booking_text invoice.atc.number vom invoice.date ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AbteilungBelegdatumSumme Zoll/EUStSaldo + + + space.name + invoice.date + invoice.total.net + invoice.saldo + +]]> + + + $workflowgroup - $workflowstatus]]> + sequenceFlow_J0GjVg + sequenceFlow_60LKZw + sequenceFlow_n9vw7A + Association_3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + invoice.number invoice.booking_text invoice.atc.number vom invoice.date ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AbteilungBelegdatumSumme Zoll/EUStSaldo + + + space.name + invoice.date + invoice.total.net + invoice.saldo + +]]> + + + $workflowgroup - $workflowstatus]]> + sequenceFlow_KOaBSw + sequenceFlow_HvXbYg + sequenceFlow_HWrJ6A + sequenceFlow_FTi0cA + sequenceFlow_QxNNCQ + sequenceFlow_QxaZJA + + + + + + + + + + + + + + + + + + + + + + + Html-Header +Mahnung +Html-Footer]]> + + + + + + + + + + + + invoice.atc.number wurde noch nicht abgerechnet!]]> + + + $lasteventdate + + reminder + @weekly +]]> + + + + + sequenceFlow_n9vw7A + sequenceFlow_omVTTA + sequenceFlow_o6glqQ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sequenceFlow_n9vw7A + sequenceFlow_HvXbYg + sequenceFlow_0AEnAQ + + + + + + + sequenceFlow_hLkSLA + sequenceFlow_0AEnAQ + sequenceFlow_sNhh5g + sequenceFlow_UW18Jw + + + + + + + + + + + + + + + + + sequenceFlow_o6glqQ + sequenceFlow_FTi0cA + sequenceFlow_sNhh5g + + + + + + + + + + + + + + + + + + + + + sequenceFlow_QxNNCQ + + + + + + + + + + + Html-Header +Mahnung +Html-Footer]]> + + + + + + + + + + + + invoice.atc.number wurde wiederholt noch nicht abgerechnet!]]> + + + + reminder + @weekly +]]> + + + + + + + + + + + + + + + + + + + + sequenceFlow_QxaZJA + + + + + + + + + + + + + + + + + + + + + +X-Tika-OCRLanguage=deu +X-Tika-PDFocrStrategy=OCR_ONLY +(PDF|pdf)$ +10 +]]> + + + + sequenceFlow_n9vw7A + sequenceFlow_Kw58EQ + sequenceFlow_lwTFxw + + + + + + 1000 + + sequenceFlow_Kw58EQ + + + + + + + + invoice.number invoice.booking_text invoice.atc.number vom invoice.date ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AbteilungBelegdatumSumme Zoll/EUStSaldo + + + space.name + invoice.date + invoice.total.net + invoice.saldo + +]]> + + + $workflowgroup - $workflowstatus]]> + sequenceFlow_J0GjVg + Association_3 + sequenceFlow_lwTFxw + sequenceFlow_PMoo7w + + + + + + + + + + + + + + + + + + + + + false + + https://llama.cpp.imixs.com/ + XML + true +]]> + + + + sequenceFlow_Kw58EQ + sequenceFlow_PMoo7w + sequenceFlow_2NTSsQ + sequenceFlow_8NjTWw + + + + + + + + + sequenceFlow_2NTSsQ + + + + + + + + invoice.number invoice.booking_text invoice.atc.number vom invoice.date ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AbteilungBelegdatumSumme Zoll/EUStSaldo + + + space.name + invoice.date + invoice.total.net + invoice.saldo + +]]> + + + $workflowgroup - $workflowstatus]]> + sequenceFlow_J0GjVg + Association_3 + sequenceFlow_8NjTWw + sequenceFlow_GmmBvA + + + + + + + + + + + {"n_predict": 4096, "temperature": 0 } + ^.+\.([pP][dD][fF])$ + +[INST] Übertrage die Informationen aus dem Steuerbescheid in eine XML Struktur: + + + .... + + + + +Den Anmelder findest du im Absatz 'Anmelder'. Hier ist nur der Firmenname interessant und nicht die Steuernummer und Adresse. + +In der Tabelle mit den Buchungsschlüsseln können Fälligkeits Daten ausgewiesen sein. Diese sind für die beiden XML Tags und relevant. +Werte nur die Zeilen aus, in denen der Aufschubnehmer 'Alexander Global Logistics GmbH' ist und auch ein Fälligkeitsdatum ausgewiesen ist. +Der Buchungsschlüssel 'A0000' gibt das Fälligkeitsdatum für 'steuer.zoll.due' an. Der Buchungsschlüssel 'B0000' gibt das Fälligkeitsdatum für 'steuer.eust.due' an. +Es kann für beide Buchungsschlüssel ein Fälligkeitsdatum geben oder aber nur für einen der beiden! + +Beachte: Die beiden XML Tags und sind optional und können entfallen, wenn es keinen Wert gibt. + +Beachte: Gib nur das XML Objekt aus. Füge keine Erklärungen oder Kommentare hinzu. Formatiere Datumswerte im ISO 8601-Format (YYYY-MM-DD). + +[/INST] + +]]]]> + + ]]> + + + + + + + + + + Hallo,

+

+folgender Steuerbescheid wurde bisher noch nicht abgerechnet. Bitte prüfen Sie diesen Vorgang: +

+

+application.urlpages/workitems/workitem.jsf?id=$uniqueid +

+

+Nachdem Sie die Rechnung erstellt haben, wird dieser Vorgang automatisch abgeschlossen. +

+

+Einen Überblick über alle überflälligen noch offenen Steuerbescheide finden Sie +hier + +([^\s]+(\.(?i)(pdf))$)]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/workflow/steuerbescheid-de-1.0.4.bpmn b/workflow/steuerbescheid-de-1.0.4.bpmn index 0fdc680..7701556 100644 --- a/workflow/steuerbescheid-de-1.0.4.bpmn +++ b/workflow/steuerbescheid-de-1.0.4.bpmn @@ -123,6 +123,7 @@ th { font-weight: bold;} dataObject_P0BaVA event_2I6HNw event_rxM0Nw + event_zZMlig @@ -255,7 +256,11 @@ th { font-weight: bold;} - + + + + + @@ -266,14 +271,15 @@ th { font-weight: bold;} + + - - - + + @@ -585,12 +591,6 @@ if (workitem.getItemValueString('txtcomment') == '' ) { invoice.atc.number wurde noch nicht abgerechnet!]]> - - - - - - $lasteventdate @@ -716,12 +716,6 @@ if (workitem.getItemValueString('txtcomment') == '' ) { invoice.atc.number wurde wiederholt noch nicht abgerechnet!]]> - - - - - - reminder @@ -865,7 +859,7 @@ if (workitem.getItemValueString('txtcomment') == '' ) { https://llama.cpp.imixs.com/ XML - true + false ]]> @@ -936,6 +930,7 @@ if (workitem.getItemValueString('txtcomment') == '' ) { sequenceFlow_8NjTWw sequenceFlow_GmmBvA sequenceFlow_zXpIXw + sequenceFlow_za0Rkw @@ -1039,6 +1034,21 @@ Beachte: Gib nur das XML Objekt aus. Füge keine Erklärungen oder Kommentare hi + + + + + + + + sequenceFlow_za0Rkw + + + + + + + Hallo,

@@ -1458,8 +1468,8 @@ Einen Überblick über alle überflälligen noch offenen Steuerbescheide finden - - + + @@ -1486,6 +1496,23 @@ Einen Überblick über alle überflälligen noch offenen Steuerbescheide finden + + + + + + + + + + + + + + + + +