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
BusinessPartnerService businessPartnerService;
private List<ItemCollection> searchResult = null;
private List<BusinessPartnerSearchEntry> searchResult = null;
private static Logger logger = Logger.getLogger(BusinessPartnerController.class.getName());
@ -88,7 +88,7 @@ public class BusinessPartnerController implements Serializable {
*/
public void search(String regexPattern) {
List<ItemCollection> resultList = null;
searchResult = new ArrayList<ItemCollection>();
searchResult = new ArrayList<BusinessPartnerSearchEntry>();
// get the param from faces context....
FacesContext fc = FacesContext.getCurrentInstance();
String phrase = fc.getExternalContext().getRequestParameterMap().get("phrase");
@ -110,6 +110,7 @@ public class BusinessPartnerController implements Serializable {
pattern = Pattern.compile(regexPattern);
}
// Filter by Regex and convert ItemCollection into a BusinessPartnerSearchEntry
for (ItemCollection businessPartner : resultList) {
String name = businessPartner.getItemValueString("name");
// Prüfen, ob der name der Regex entspricht
@ -121,10 +122,12 @@ public class BusinessPartnerController implements Serializable {
}
}
String display = businessPartner.getItemValueString("$workflowsummary");
;
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
*/
public List<ItemCollection> getSearchResult() {
public List<BusinessPartnerSearchEntry> getSearchResult() {
return searchResult;
}
@ -262,7 +265,7 @@ public class BusinessPartnerController implements Serializable {
add("name", jsonVal(businessPartner.getItemValueString("name"))). //
add("cdtr.number", jsonVal(businessPartner.getItemValueString("cdtr.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
// {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: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.
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.
See imixs-office.autocompletion.js
@ -23,9 +23,9 @@
<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}" />
<br />
<span id='datev-konto-id' class='small'>#{workitem.item[item_konto_name]}</span>
<h:commandScript name="datevSearch" action="#{businessPartnerController.search(options)}"
render="autocomplete-resultlist-datev-debkredkonto" onevent="autocompleteShowResult" />
<span id='businsspartner-konto-id' class='small'>#{workitem.item[item_konto_name]}</span>
<h:commandScript name="businsspartnerSearch" action="#{businessPartnerController.search(options)}"
render="autocomplete-resultlist-businsspartner" onevent="autocompleteShowResult" />
<script type="text/javascript">
/*<![CDATA[*/
@ -36,7 +36,7 @@
var creditorField = $("input[data-item='#{item.name}']");
$(creditorField).each(function () {
$(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....
var inputElementKonto = $("input[data-item='#{item.name}']");
var inputElementKreditor = $("input[data-item='#{item_konto_name}']");
inputElementKonto.val(kontoData.konto);
inputElementKreditor.val(kontoData.name);
inputElementKonto.val(kontoData.name);
inputElementKreditor.val(kontoData['partner.name']);
// remove old konto name
$('#datev-konto-id').remove();
$('#businsspartner-konto-id').remove();
// 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>
<!-- datev debkredkonto suggest list -->
<h:panelGroup id="autocomplete-resultlist-datev-debkredkonto" layout="block" class="autocomplete-resultlist">
<ui:repeat var="suggest" value="#{datevSearchController.searchResult}">
<!-- businsspartner suggest list -->
<h:panelGroup id="autocomplete-resultlist-businsspartner" layout="block" class="autocomplete-resultlist">
<ui:repeat var="suggest" value="#{businessPartnerController.searchResult}">
<div class="autocomplete-resultlist-element" onclick="autocompleteSelectElement('#{suggest.data}')">
<a href="#">
<h:outputText value="#{suggest.display}" escape="false" />

View file

@ -5535,7 +5535,7 @@ result.isValid=true;
<imixs-form-section columns="2" label="Rechnungsdaten">
<item name="cdtr.name" type="text" label="Kreditor:"/>
<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 columns="3">
<item name="invoice.number" type="text" label="Rechnungsnummer:" />