Businesspartner search

This commit is contained in:
Ralph Soika 2025-02-12 23:23:53 +01:00
parent dfa089ba31
commit 4f0f4aefd8
4 changed files with 71 additions and 20 deletions

View file

@ -71,7 +71,7 @@ public class BusinessPartnerController implements Serializable {
@Inject @Inject
BusinessPartnerService businessPartnerService; BusinessPartnerService businessPartnerService;
private List<ItemCollection> searchResult = null; private List<BusinessPartnerSearchEntry> searchResult = null;
private static Logger logger = Logger.getLogger(BusinessPartnerController.class.getName()); private static Logger logger = Logger.getLogger(BusinessPartnerController.class.getName());
@ -88,7 +88,7 @@ public class BusinessPartnerController implements Serializable {
*/ */
public void search(String regexPattern) { public void search(String regexPattern) {
List<ItemCollection> resultList = null; List<ItemCollection> resultList = null;
searchResult = new ArrayList<ItemCollection>(); searchResult = new ArrayList<BusinessPartnerSearchEntry>();
// get the param from faces context.... // get the param from faces context....
FacesContext fc = FacesContext.getCurrentInstance(); FacesContext fc = FacesContext.getCurrentInstance();
String phrase = fc.getExternalContext().getRequestParameterMap().get("phrase"); String phrase = fc.getExternalContext().getRequestParameterMap().get("phrase");
@ -110,6 +110,7 @@ public class BusinessPartnerController implements Serializable {
pattern = Pattern.compile(regexPattern); pattern = Pattern.compile(regexPattern);
} }
// Filter by Regex and convert ItemCollection into a BusinessPartnerSearchEntry
for (ItemCollection businessPartner : resultList) { for (ItemCollection businessPartner : resultList) {
String name = businessPartner.getItemValueString("name"); String name = businessPartner.getItemValueString("name");
// Prüfen, ob der name der Regex entspricht // Prüfen, ob der name der Regex entspricht
@ -121,10 +122,12 @@ public class BusinessPartnerController implements Serializable {
} }
} }
String display = businessPartner.getItemValueString("$workflowsummary"); String display = businessPartner.getItemValueString("$workflowsummary");
;
display = display.replace("\"", ""); display = display.replace("\"", "");
display = display.replace("'", ""); display = display.replace("'", "");
searchResult.add(businessPartner);
searchResult.add(new BusinessPartnerSearchEntry(name, display, buildJsonData(businessPartner)));
} }
} }
@ -134,7 +137,7 @@ public class BusinessPartnerController implements Serializable {
* *
* @return * @return
*/ */
public List<ItemCollection> getSearchResult() { public List<BusinessPartnerSearchEntry> getSearchResult() {
return searchResult; return searchResult;
} }
@ -262,7 +265,7 @@ public class BusinessPartnerController implements Serializable {
add("name", jsonVal(businessPartner.getItemValueString("name"))). // add("name", jsonVal(businessPartner.getItemValueString("name"))). //
add("cdtr.number", jsonVal(businessPartner.getItemValueString("cdtr.number"))). // add("cdtr.number", jsonVal(businessPartner.getItemValueString("cdtr.number"))). //
add("dbtr.number", jsonVal(businessPartner.getItemValueString("dbtr.number"))). // add("dbtr.number", jsonVal(businessPartner.getItemValueString("dbtr.number"))). //
add("name", jsonVal(businessPartner.getItemValueString("partner.name"))); add("partner.name", jsonVal(businessPartner.getItemValueString("partner.name")));
// get iban list // get iban list
// {iban=[Dxxxxxx1], name=[Bank 1], id=[bank1], bic=[CITIDEFF]} // {iban=[Dxxxxxx1], name=[Bank 1], id=[bank1], bic=[CITIDEFF]}

View file

@ -0,0 +1,48 @@
package com.alexanderlogistics;
/**
* Diese Kleine Hilfsklasse dient als DTO für die Übertragugn eines
* Sucheregenisses nach kreditoren an das Frontend. Die Klasse besteht aus einem
* Key, einer DisplayZeile für die Darstellung und einen JSON String der
* beliebige Daten enthalten kann.
*
* @author rsoika
*
*/
public class BusinessPartnerSearchEntry {
private String key;
private String display;
private String data;
public BusinessPartnerSearchEntry(String key, String display, String data) {
super();
this.key = key;
this.display = display;
this.data = data;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getDisplay() {
return display;
}
public void setDisplay(String display) {
this.display = display;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}

View file

@ -3,11 +3,11 @@
xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:pt="http://xmlns.jcp.org/jsf/passthrough" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"
xmlns:marty="http://xmlns.jcp.org/jsf/composite/marty" xmlns:i="http://xmlns.jcp.org/jsf/composite/imixs"> xmlns:marty="http://xmlns.jcp.org/jsf/composite/marty" xmlns:i="http://xmlns.jcp.org/jsf/composite/imixs">
<!-- DATEV Kreditor/Debitor Search integration <!-- businsspartner Search integration
This subform is a custom form part. This subform is a custom form part.
The subform provides a jsf commandScript which calls the datevSearchController.search method in the backend. The subform provides a jsf commandScript which calls the businessPartnerController.search method in the backend.
The script below inits a autocompletion feature for the input field. The script below inits a autocompletion feature for the input field.
See imixs-office.autocompletion.js See imixs-office.autocompletion.js
@ -23,9 +23,9 @@
<h:inputText value="#{workitem.item[item.name]}" pt:data-item="#{item.name}" /> <h:inputText value="#{workitem.item[item.name]}" pt:data-item="#{item.name}" />
<h:inputHidden value="#{workitem.item[item_konto_name]}" pt:data-item="#{item_konto_name}" /> <h:inputHidden value="#{workitem.item[item_konto_name]}" pt:data-item="#{item_konto_name}" />
<br /> <br />
<span id='datev-konto-id' class='small'>#{workitem.item[item_konto_name]}</span> <span id='businsspartner-konto-id' class='small'>#{workitem.item[item_konto_name]}</span>
<h:commandScript name="datevSearch" action="#{businessPartnerController.search(options)}" <h:commandScript name="businsspartnerSearch" action="#{businessPartnerController.search(options)}"
render="autocomplete-resultlist-datev-debkredkonto" onevent="autocompleteShowResult" /> render="autocomplete-resultlist-businsspartner" onevent="autocompleteShowResult" />
<script type="text/javascript"> <script type="text/javascript">
/*<![CDATA[*/ /*<![CDATA[*/
@ -36,7 +36,7 @@
var creditorField = $("input[data-item='#{item.name}']"); var creditorField = $("input[data-item='#{item.name}']");
$(creditorField).each(function () { $(creditorField).each(function () {
$(this).addClass("imixs-ml"); $(this).addClass("imixs-ml");
autocompleteInitInput(this, datevSearch, 'autocomplete-resultlist-datev-debkredkonto', selectDebitorCreditorCallback); autocompleteInitInput(this, businsspartnerSearch, 'autocomplete-resultlist-businsspartner', selectDebitorCreditorCallback);
}); });
}); });
@ -47,20 +47,20 @@
// fill data into the fields.... // fill data into the fields....
var inputElementKonto = $("input[data-item='#{item.name}']"); var inputElementKonto = $("input[data-item='#{item.name}']");
var inputElementKreditor = $("input[data-item='#{item_konto_name}']"); var inputElementKreditor = $("input[data-item='#{item_konto_name}']");
inputElementKonto.val(kontoData.konto); inputElementKonto.val(kontoData.name);
inputElementKreditor.val(kontoData.name); inputElementKreditor.val(kontoData['partner.name']);
// remove old konto name // remove old konto name
$('#datev-konto-id').remove(); $('#businsspartner-konto-id').remove();
// append span with konto name.... // append span with konto name....
inputElementKonto.after("<span id='datev-konto-id' class='small'>" + kontoData.name + "</span>"); inputElementKonto.after("<span id='businsspartner-konto-id' class='small'>" + kontoData['partner.name'] + "</span>");
} }
/*]]>*/ /*]]>*/
</script> </script>
<!-- datev debkredkonto suggest list --> <!-- businsspartner suggest list -->
<h:panelGroup id="autocomplete-resultlist-datev-debkredkonto" layout="block" class="autocomplete-resultlist"> <h:panelGroup id="autocomplete-resultlist-businsspartner" layout="block" class="autocomplete-resultlist">
<ui:repeat var="suggest" value="#{datevSearchController.searchResult}"> <ui:repeat var="suggest" value="#{businessPartnerController.searchResult}">
<div class="autocomplete-resultlist-element" onclick="autocompleteSelectElement('#{suggest.data}')"> <div class="autocomplete-resultlist-element" onclick="autocompleteSelectElement('#{suggest.data}')">
<a href="#"> <a href="#">
<h:outputText value="#{suggest.display}" escape="false" /> <h:outputText value="#{suggest.display}" escape="false" />

View file

@ -5535,7 +5535,7 @@ result.isValid=true;
<imixs-form-section columns="2" label="Rechnungsdaten"> <imixs-form-section columns="2" label="Rechnungsdaten">
<item name="cdtr.name" type="text" label="Kreditor:"/> <item name="cdtr.name" type="text" label="Kreditor:"/>
<item name="cdtr.number" type="custom" path="alexander/cdtreingabe" required="true" label="Kreditorennummer:" /> <item name="cdtr.number" type="custom" path="alexander/cdtreingabe" required="true" label="Kreditorennummer:" />
<item name="bp.number" type="custom" path="alexander/businesspartner_search" required="true" label="Partnernummer:" /> <item name="bpid" type="custom" path="alexander/businesspartner_search" required="true" label="Businesspartner:" />
</imixs-form-section> </imixs-form-section>
<imixs-form-section columns="3"> <imixs-form-section columns="3">
<item name="invoice.number" type="text" label="Rechnungsnummer:" /> <item name="invoice.number" type="text" label="Rechnungsnummer:" />