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 @@ -