diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 69db643..fba670f 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -17,7 +17,8 @@
- Jetzt die Daten synchen
- https://alexander-logistics-dwc.office-workflow.de/api/cargosoft/bp-sync?maxcount=25000
- ACHTUNG kann sehr sehr sehr!! lange laufen (3 Stunde) Eigentlich geht das gar nciht :-(((
+ ACHTUNG kann sehr sehr sehr!! lange laufen (3 Stunde)
+ kann aber auch dann mehrfach aufgerufen werden so dass sich das alles zum guten wendet
### 1.3.3
diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java
index d879912..fef6f14 100644
--- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java
+++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AGLAnalyticControllerDebitor.java
@@ -34,7 +34,7 @@ import jakarta.inject.Named;
/**
* Der AGLAnalyticControllerDebitor berechnet verschiedene Analyse Daten von
- * Ausgangsrechnungen
+ * Ausgangsrechnungen zu einem Business partner
*
* @author rsoika
*
@@ -84,10 +84,6 @@ public class AGLAnalyticControllerDebitor implements Serializable {
String chartData = "";
public void onEvent(@Observes AnalyticEvent event) {
- if (!"workitem".equals(event.getWorkitem().getType())) {
- // no op
- return;
- }
if (!event.getWorkitem().getModelVersion().startsWith("businesspartner")
&& !event.getWorkitem().getModelVersion().startsWith("analyse-debitor")) {
diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerController.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerController.java
index c1d3b9a..74db841 100644
--- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerController.java
+++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerController.java
@@ -163,9 +163,18 @@ public class BusinessPartnerController implements Serializable {
return searchResult;
}
+ public ItemCollection getBusinessPartnerByID(String bpid) {
+ ItemCollection partner = businessPartnerService.getBusinessPartnerByID(bpid);
+ return partner;
+ }
+
/**
- * WorkflowEvent listener to convert the IBAN child list embeded HashMaps into
- * ItemCollections and reconvert them before processing
+ * WorkflowEvent listener resolved additional data.
+ *
+ * For businesspartner the method converts the IBAN child list embeded HashMaps
+ * into ItemCollections and reconvert them before processing
+ *
+ * for invoices the method resolve the partner.id and partner.name
*
* @param workflowEvent
* @throws AccessDeniedException
@@ -174,25 +183,51 @@ public class BusinessPartnerController implements Serializable {
int eventType = workflowEvent.getEventType();
ItemCollection workitem = workflowEvent.getWorkitem();
- if (workitem == null || !workitem.getModelVersion().startsWith("businesspartner-")) {
+ if (workitem == null) {
return;
}
+ if (workitem.getModelVersion().startsWith("businesspartner-")) {
+ // reset orderItems if workItem has changed
+ if (WorkflowEvent.WORKITEM_CHANGED == eventType || WorkflowEvent.WORKITEM_CREATED == eventType) {
- // reset orderItems if workItem has changed
- if (WorkflowEvent.WORKITEM_CHANGED == eventType || WorkflowEvent.WORKITEM_CREATED == eventType) {
- // reset state
- ibanList = BusinessPartnerService.explodeBanks(workitem);
- loadStats(workitem);
+ // reset state
+ ibanList = BusinessPartnerService.explodeBanks(workitem);
+ loadStats(workitem);
+ }
+
+ // before the workitem is saved we update the field txtOrderItems
+ if (WorkflowEvent.WORKITEM_BEFORE_PROCESS == eventType) {
+ BusinessPartnerService.implodeBanks(workitem, ibanList);
+ }
+
+ if (WorkflowEvent.WORKITEM_AFTER_PROCESS == eventType) {
+ // reset state
+ ibanList = BusinessPartnerService.explodeBanks(workitem);
+ }
}
- // before the workitem is saved we update the field txtOrderItems
- if (WorkflowEvent.WORKITEM_BEFORE_PROCESS == eventType) {
- BusinessPartnerService.implodeBanks(workitem, ibanList);
+ if (workitem.getModelVersion().startsWith("rechnungsausgang-")) {
+ // resolve partner.id and partner.name
+ if (workitem.getItemValueString("partner.id").isEmpty()) {
+ // try to resolve the data
+ ItemCollection bpWorkitem = getBusinessPartnerByID(InvoiceUtil.getBPID(workitem));
+ if (bpWorkitem != null) {
+ workitem.setItemValue("partner.id", bpWorkitem.getItemValueString("partner.id"));
+ workitem.setItemValue("partner.name", bpWorkitem.getItemValueString("partner.name"));
+ }
+ }
}
- if (WorkflowEvent.WORKITEM_AFTER_PROCESS == eventType) {
- // reset state
- ibanList = BusinessPartnerService.explodeBanks(workitem);
+ if (workitem.getModelVersion().startsWith("rechnungseingang-")) {
+ // resolve partner.id and partner.name
+ if (workitem.getItemValueString("partner.id").isEmpty()) {
+ // try to resolve the data
+ ItemCollection bpWorkitem = getBusinessPartnerByID(InvoiceUtil.getBPID(workitem));
+ if (bpWorkitem != null) {
+ workitem.setItemValue("partner.id", bpWorkitem.getItemValueString("partner.id"));
+ workitem.setItemValue("partner.name", bpWorkitem.getItemValueString("partner.name"));
+ }
+ }
}
}
diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceUtil.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceUtil.java
index 24cdc3e..e176474 100644
--- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceUtil.java
+++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceUtil.java
@@ -182,6 +182,23 @@ public class InvoiceUtil {
}
+ /**
+ * Diese Hilfmethode berechnet die BusinessPartner id aus einer Invoice
+ *
+ * @param Invoice
+ * @return
+ */
+ public static String getBPID(ItemCollection invoice) {
+
+ if (isCreditorInvoice(invoice)) {
+ // key ist cdtr.number
+ return buildBPID(invoice.getItemValueString("cdtr.number"));
+ } else {
+ // key ist dbtr.number
+ return buildBPID(invoice.getItemValueString("dbtr.number"));
+ }
+ }
+
/**
* Diese Hilfmethode berechnet die BusinessPartner Namen aus einer Invoice
*
diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/businesspartner_search.xhtml b/office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/businesspartner_search.xhtml
index 2173bb7..2735216 100644
--- a/office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/businesspartner_search.xhtml
+++ b/office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/businesspartner_search.xhtml
@@ -17,9 +17,9 @@
https://dzone.com/articles/execute-a-jsf-ajax-request-by-just-a-function-call
https://www.w3schools.com/howto/howto_js_autocomplete.asp
-->
-
-
-
+
+
+
@@ -27,7 +27,7 @@
-