erweiterete Krediotrenverwaltung mit mehreren IBAN/BIC
This commit is contained in:
parent
eee7a96913
commit
90beebd5c0
7 changed files with 355 additions and 151 deletions
|
|
@ -5,7 +5,7 @@
|
|||
<parent>
|
||||
<artifactId>office-alexander-logistics</artifactId>
|
||||
<groupId>com.alexander-logistics</groupId>
|
||||
<version>1.2.6</version>
|
||||
<version>1.2.7</version>
|
||||
</parent>
|
||||
<artifactId>office-alexander-logistics-app</artifactId>
|
||||
<packaging>war</packaging>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
package com.alexanderlogistics;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.io.StringWriter;
|
||||
import java.io.Writer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
|
@ -9,6 +12,9 @@ import javax.enterprise.context.ConversationScoped;
|
|||
import javax.faces.context.FacesContext;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javax.json.Json;
|
||||
import javax.json.JsonObject;
|
||||
import javax.json.JsonObjectBuilder;
|
||||
|
||||
import org.imixs.workflow.ItemCollection;
|
||||
import org.imixs.workflow.engine.DocumentService;
|
||||
|
|
@ -21,6 +27,14 @@ import org.imixs.workflow.exceptions.QueryException;
|
|||
* The method search provides a suggest list searching a phrase within the
|
||||
* cargosoft creditor list (type=cargosoftkreditor).
|
||||
*
|
||||
* <p>
|
||||
* Besonderheit
|
||||
* <p>
|
||||
* Wir transportieren in der Resutl Liste eine versteckte JSON Struktur mit
|
||||
* allen IBAN Informationen Das ist im Grunde etwas irre aber durch die
|
||||
* JSF-Ajax-JavaScript Hölle kommern wir derzeit aus der Nummer nicht mehr
|
||||
* anders raus.
|
||||
*
|
||||
* @author rsoika
|
||||
*
|
||||
*/
|
||||
|
|
@ -28,140 +42,235 @@ import org.imixs.workflow.exceptions.QueryException;
|
|||
@ConversationScoped
|
||||
public class CargosoftController implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static Logger logger = Logger.getLogger(CargosoftController.class.getName());
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static Logger logger = Logger.getLogger(CargosoftController.class.getName());
|
||||
|
||||
public static final String TYPE_CARGOSOFTKREDITOR = "cargosoftkreditor";
|
||||
public static final String TYPE_CARGOSOFTKREDITOR = "cargosoftkreditor";
|
||||
|
||||
@Inject
|
||||
protected DocumentService documentService;
|
||||
@Inject
|
||||
protected DocumentService documentService;
|
||||
|
||||
private List<String> searchResult = null;
|
||||
private List<KreditorSearchEntry> searchResult = null;
|
||||
|
||||
private ItemCollection kreditor = null; // used for zahlungsziel (kreidtor.xhtml)
|
||||
private ItemCollection kreditor = null; // used for zahlungsziel (kreidtor.xhtml)
|
||||
|
||||
/**
|
||||
* This method searches a text phrase within the list of cargosoft kreditor
|
||||
* objects (type=cargosoftkreditor).
|
||||
* <p>
|
||||
* JSF Integration:
|
||||
*
|
||||
* {@code
|
||||
*
|
||||
* <h:commandScript name="imixsOfficeWorkflow.mlSearch" action=
|
||||
* "#{cargosoftController.search()}" rendered="#{cargosoftController!=null}"
|
||||
* render= "cargosoft-results" /> }
|
||||
*
|
||||
* <p>
|
||||
* JavaScript Example:
|
||||
*
|
||||
* <pre>
|
||||
* {@code
|
||||
* imixsOfficeWorkflow.cargosoftSearch({ item: '_invoicenumber' })
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
public void searchCreditor() {
|
||||
/**
|
||||
* This method searches a text phrase within the list of cargosoft kreditor
|
||||
* objects (type=cargosoftkreditor).
|
||||
* <p>
|
||||
* JSF Integration:
|
||||
*
|
||||
* {@code
|
||||
*
|
||||
* <h:commandScript name="imixsOfficeWorkflow.mlSearch" action=
|
||||
* "#{cargosoftController.search()}" rendered="#{cargosoftController!=null}"
|
||||
* render= "cargosoft-results" /> }
|
||||
*
|
||||
* <p>
|
||||
* JavaScript Example:
|
||||
*
|
||||
* <pre>
|
||||
* {@code
|
||||
* imixsOfficeWorkflow.cargosoftSearch({ item: '_invoicenumber' })
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* @param searchmode - if 'multi', display multiple IBANs in seperate lines
|
||||
*/
|
||||
public void searchCreditor(String searchmode) {
|
||||
boolean bMulitMode = "multi".equalsIgnoreCase(searchmode);
|
||||
searchResult = new ArrayList<KreditorSearchEntry>();
|
||||
// get the param from faces context....
|
||||
FacesContext fc = FacesContext.getCurrentInstance();
|
||||
String phrase = fc.getExternalContext().getRequestParameterMap().get("phrase");
|
||||
if (phrase == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
searchResult = new ArrayList<String>();
|
||||
// get the param from faces context....
|
||||
FacesContext fc = FacesContext.getCurrentInstance();
|
||||
String phrase = fc.getExternalContext().getRequestParameterMap().get("phrase");
|
||||
if (phrase == null) {
|
||||
return;
|
||||
}
|
||||
logger.fine("search prase '" + phrase + "'");
|
||||
|
||||
logger.fine("search prase '" + phrase + "'");
|
||||
// String input =workflowController.getWorkitem().getItemValueString(itemName);
|
||||
if (phrase == null || phrase.length() < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
// String input =workflowController.getWorkitem().getItemValueString(itemName);
|
||||
if (phrase == null || phrase.length() < 2) {
|
||||
return;
|
||||
}
|
||||
// die cargosoft Kreditornummer beginnt seltsamerweise mit einem K
|
||||
// und die Debitoren mit einem D.....
|
||||
String query = "(type:" + TYPE_CARGOSOFTKREDITOR + ") AND ( (name:K" + phrase + "*) OR (name:D" + phrase
|
||||
+ "*) OR (" + phrase.toLowerCase() + "*) )";
|
||||
|
||||
// die cargosoft Kreditornummer beginnt seltsamerweise mit einem K
|
||||
// und die Debitoren mit einem D.....
|
||||
String query = "(type:" + TYPE_CARGOSOFTKREDITOR + ") AND ( (name:K" + phrase + "*) OR (name:D" + phrase
|
||||
+ "*) OR (" + phrase.toLowerCase() + "*) )";
|
||||
try {
|
||||
List<ItemCollection> result = documentService.find(query, 20, 0, "$modified", true);
|
||||
logger.info("found " + result.size() + " creditors...");
|
||||
if (result != null) {
|
||||
for (ItemCollection cdtr : result) {
|
||||
|
||||
try {
|
||||
List<ItemCollection> result = documentService.find(query, 20, 0);
|
||||
logger.info("found " + result.size() + " creditors...");
|
||||
if (result != null) {
|
||||
for (ItemCollection cdtr : result) {
|
||||
// Aenderugn 22. Jun wir geben das K/D direkt witer
|
||||
String cdtrNo = cdtr.getItemValueString("_VENDOR_NUM");
|
||||
String display = cdtrNo + " - " + cdtr.getItemValueString("_VENDOR_Name");
|
||||
|
||||
// Aenderugn 22. Jun wir geben das K/D direkt witer
|
||||
String cdtrNo = cdtr.getItemValueString("_VENDOR_NUM");
|
||||
String data=cdtrNo + " - " + cdtr.getItemValueString("_VENDOR_Name");
|
||||
// Aenderung 11. Mai - wir geben nun creditperiod iban und bic mit | Zeichen getrennt weieter
|
||||
data=data + " |"+cdtr.getItemValueString("cdtr.creditperiod");
|
||||
data=data + "|"+cdtr.getItemValueString("cdtr.iban");
|
||||
data=data + "|"+cdtr.getItemValueString("cdtr.bic");
|
||||
// Im MulitMode zeigen wir pro IBAN (1-4) eine eigene Zeile an. Dieser
|
||||
// Modus wird für die Rechnungserfassung benötigt.
|
||||
// im SingleMode wird hingegen nur ein Datensatz in der Trefferliste angezeigt.
|
||||
// (Ein Kreditoren Eintrag kann bis zu 4 IBANs / BICs haben
|
||||
if (bMulitMode) {
|
||||
// in der JSON Struktur werden alle IBANS übertragen
|
||||
display = display + " |" + cdtr.getItemValueString("cdtr.creditperiod");
|
||||
display = display + "|" + cdtr.getItemValueString("cdtr.iban");
|
||||
display = display + "|" + cdtr.getItemValueString("cdtr.bic");
|
||||
searchResult.add(new KreditorSearchEntry(cdtrNo, display, buildJsonData(cdtr,
|
||||
cdtr.getItemValueString("cdtr.iban"), cdtr.getItemValueString("cdtr.bic"))));
|
||||
// haben wir noch weitere IBAN/BIC kombis?
|
||||
for (int j = 1; j < 4; j++) {
|
||||
if (!cdtr.getItemValueString("cdtr.iban" + j).isEmpty()) {
|
||||
// Dublette mit alternativer IBAN erzeugen
|
||||
display = cdtrNo + " - " + cdtr.getItemValueString("_VENDOR_Name");
|
||||
display = display + " |" + cdtr.getItemValueString("cdtr.creditperiod");
|
||||
display = display + "|" + cdtr.getItemValueString("cdtr.iban" + j);
|
||||
display = display + "|" + cdtr.getItemValueString("cdtr.bic" + j);
|
||||
searchResult.add(new KreditorSearchEntry(cdtrNo, display,
|
||||
buildJsonData(cdtr, cdtr.getItemValueString("cdtr.iban" + j),
|
||||
cdtr.getItemValueString("cdtr.bic" + j))));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Modus für Kreditoren Verwaltung
|
||||
searchResult.add(new KreditorSearchEntry(cdtrNo, display, buildJsonData(cdtr)));
|
||||
}
|
||||
|
||||
searchResult.add(data);
|
||||
}
|
||||
}
|
||||
} catch (QueryException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (QueryException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public List<String> getSearchResult() {
|
||||
return searchResult;
|
||||
}
|
||||
/**
|
||||
* Hilfsmethode die eine JSON Struktur mit einer IBAN/BIC kombinatuion erzeugt.
|
||||
* Diese JSON Struktur wird von der Rechnungserfassungs Maske benötigt
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private String buildJsonData(ItemCollection cdtr, String iban, String bic) {
|
||||
|
||||
/**
|
||||
* This method reset the search and input state.
|
||||
*/
|
||||
public void reset() {
|
||||
searchResult = new ArrayList<String>();
|
||||
logger.fine("reset");
|
||||
}
|
||||
JsonObjectBuilder objectBuilder = Json.createObjectBuilder(). //
|
||||
add("no", cdtr.getItemValueString("_VENDOR_NUM")). //
|
||||
add("name", cdtr.getItemValueString("_VENDOR_Name")). //
|
||||
add("creditperiod", cdtr.getItemValueString("cdtr.creditperiod")). //
|
||||
add("iban", iban). //
|
||||
add("bic", bic);
|
||||
JsonObject jsonObject = objectBuilder.build();
|
||||
|
||||
public ItemCollection getKreditor() {
|
||||
if (kreditor == null) {
|
||||
kreditor = new ItemCollection();
|
||||
}
|
||||
return kreditor;
|
||||
}
|
||||
String jsonString = "{}";
|
||||
try (Writer writer = new StringWriter()) {
|
||||
Json.createWriter(writer).write(jsonObject);
|
||||
jsonString = writer.toString();
|
||||
} catch (IOException e) {
|
||||
logger.warning("Unable to build json structure");
|
||||
}
|
||||
return jsonString;
|
||||
}
|
||||
|
||||
public void setKreditor(ItemCollection kreditor) {
|
||||
this.kreditor = kreditor;
|
||||
}
|
||||
/**
|
||||
* Hilfsmethode die eine JSON Struktur mit allen IBN/BIC kombinationen erzeugt.
|
||||
* Diese JSON Strukur wird dann von der Kreitoren.xhtml Maske wieder ausgelesen.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private String buildJsonData(ItemCollection cdtr) {
|
||||
|
||||
/**
|
||||
* Diese Method überträgt die geänderten Daten in das Kreidtoren Objekt (cdtr.creditperiod,cdtr.iban,cdtr.bic)
|
||||
*/
|
||||
public void updateZahlungsziel() {
|
||||
JsonObjectBuilder objectBuilder = Json.createObjectBuilder(). //
|
||||
add("no", cdtr.getItemValueString("_VENDOR_NUM")). //
|
||||
add("name", cdtr.getItemValueString("_VENDOR_Name")). //
|
||||
add("creditperiod", cdtr.getItemValueString("cdtr.creditperiod")). //
|
||||
add("iban", cdtr.getItemValueString("cdtr.iban")). //
|
||||
add("bic", cdtr.getItemValueString("cdtr.bic")). //
|
||||
// add ibans für kreditoren verwaltung
|
||||
add("iban3", cdtr.getItemValueString("cdtr.iban3")). //
|
||||
add("iban4", cdtr.getItemValueString("cdtr.iban4")). //
|
||||
add("bic2", cdtr.getItemValueString("cdtr.bic2")). //
|
||||
add("bic3", cdtr.getItemValueString("cdtr.bic3")). //
|
||||
add("bic4", cdtr.getItemValueString("cdtr.bic4")); //
|
||||
|
||||
String cdtrNumber = kreditor.getItemValueString("cdtr.number");
|
||||
String period = kreditor.getItemValueString("cdtr.creditperiod");
|
||||
String iban = kreditor.getItemValueString("cdtr.iban");
|
||||
String bic = kreditor.getItemValueString("cdtr.bic");
|
||||
logger.fine("Zahlungsziel = " + cdtrNumber + " / " + period);
|
||||
JsonObject jsonObject = objectBuilder.build();
|
||||
|
||||
// search workitem
|
||||
String query = "(type:" + TYPE_CARGOSOFTKREDITOR + ") AND (name:" + cdtrNumber + ")";
|
||||
String jsonString = "{}";
|
||||
try (Writer writer = new StringWriter()) {
|
||||
Json.createWriter(writer).write(jsonObject);
|
||||
jsonString = writer.toString();
|
||||
} catch (IOException e) {
|
||||
logger.warning("Unable to build json structure");
|
||||
}
|
||||
return jsonString;
|
||||
}
|
||||
|
||||
List<ItemCollection> result;
|
||||
try {
|
||||
result = documentService.find(query, 1, 0);
|
||||
if (result.size() == 1) {
|
||||
ItemCollection cargoCreditor = result.get(0);
|
||||
try {
|
||||
cargoCreditor.setItemValue("cdtr.creditperiod", Integer.parseInt(period));
|
||||
} catch (NumberFormatException nfe) {
|
||||
// no op
|
||||
}
|
||||
cargoCreditor.setItemValue("cdtr.iban", iban);
|
||||
cargoCreditor.setItemValue("cdtr.bic", bic);
|
||||
documentService.save(cargoCreditor);
|
||||
}
|
||||
} catch (QueryException e) {
|
||||
logger.severe("Unable to find cargosoft kreditor "+e.getMessage());
|
||||
}
|
||||
/**
|
||||
* Die Resultliste wird als eine Liste einen Arrays zurückgegeben. Der Erste
|
||||
* Eintrag
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public List<KreditorSearchEntry> getSearchResult() {
|
||||
return searchResult;
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* This method reset the search and input state.
|
||||
*/
|
||||
public void reset() {
|
||||
searchResult = new ArrayList<KreditorSearchEntry>();
|
||||
logger.fine("reset");
|
||||
}
|
||||
|
||||
public ItemCollection getKreditor() {
|
||||
if (kreditor == null) {
|
||||
kreditor = new ItemCollection();
|
||||
}
|
||||
return kreditor;
|
||||
}
|
||||
|
||||
public void setKreditor(ItemCollection kreditor) {
|
||||
this.kreditor = kreditor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Diese Method überträgt die geänderten Daten in das Kreidtoren Objekt
|
||||
* (cdtr.creditperiod,cdtr.iban,cdtr.bic)
|
||||
*/
|
||||
public void updateZahlungsziel() {
|
||||
|
||||
String cdtrNumber = kreditor.getItemValueString("cdtr.number");
|
||||
logger.fine("Zahlungsziel = " + cdtrNumber);
|
||||
|
||||
// search workitem
|
||||
String query = "(type:" + TYPE_CARGOSOFTKREDITOR + ") AND (name:" + cdtrNumber + ")";
|
||||
|
||||
List<ItemCollection> result;
|
||||
try {
|
||||
result = documentService.find(query, 1, 0);
|
||||
if (result.size() == 1) {
|
||||
ItemCollection cargoCreditor = result.get(0);
|
||||
try {
|
||||
cargoCreditor.setItemValue("cdtr.creditperiod",
|
||||
Integer.parseInt(kreditor.getItemValueString("cdtr.creditperiod")));
|
||||
} catch (NumberFormatException nfe) {
|
||||
// no op
|
||||
}
|
||||
cargoCreditor.setItemValue("cdtr.iban", kreditor.getItemValueString("cdtr.iban"));
|
||||
cargoCreditor.setItemValue("cdtr.bic", kreditor.getItemValueString("cdtr.bic"));
|
||||
cargoCreditor.setItemValue("cdtr.iban2", kreditor.getItemValueString("cdtr.iban2"));
|
||||
cargoCreditor.setItemValue("cdtr.bic2", kreditor.getItemValueString("cdtr.bic2"));
|
||||
cargoCreditor.setItemValue("cdtr.iban3", kreditor.getItemValueString("cdtr.iban3"));
|
||||
cargoCreditor.setItemValue("cdtr.bic3", kreditor.getItemValueString("cdtr.bic3"));
|
||||
cargoCreditor.setItemValue("cdtr.iban4", kreditor.getItemValueString("cdtr.iban4"));
|
||||
cargoCreditor.setItemValue("cdtr.bic4", kreditor.getItemValueString("cdtr.bic4"));
|
||||
documentService.save(cargoCreditor);
|
||||
}
|
||||
} catch (QueryException e) {
|
||||
logger.severe("Unable to find cargosoft kreditor " + e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 KreditorSearchEntry {
|
||||
|
||||
private String key;
|
||||
private String display;
|
||||
private String data;
|
||||
|
||||
public KreditorSearchEntry(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;
|
||||
}
|
||||
}
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
<ui:include
|
||||
src="/pages/workitems/forms/alexander/cargsoft-creditor-search.xhtml">
|
||||
<ui:param name="workitem" value="#{cargosoftController.kreditor}" />
|
||||
<ui:param name="searchmode" value="single" />
|
||||
</ui:include>
|
||||
<div class="imixs-form">
|
||||
<div class="imixs-header">
|
||||
|
|
@ -79,6 +80,51 @@
|
|||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<!-- IBAN 1-5 -->
|
||||
<dl>
|
||||
|
||||
<dd>
|
||||
<h:inputText
|
||||
value="#{cargosoftController.kreditor.item['cdtr.iban2']}" pt:data-item="cdtr.iban2"/>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
|
||||
<dd>
|
||||
<h:inputText
|
||||
value="#{cargosoftController.kreditor.item['cdtr.bic2']}" pt:data-item="cdtr.bic2"/>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
|
||||
<dd>
|
||||
<h:inputText
|
||||
value="#{cargosoftController.kreditor.item['cdtr.iban3']}" pt:data-item="cdtr.iban3"/>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
|
||||
<dd>
|
||||
<h:inputText
|
||||
value="#{cargosoftController.kreditor.item['cdtr.bic3']}" pt:data-item="cdtr.bic3"/>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
|
||||
<dd>
|
||||
<h:inputText
|
||||
value="#{cargosoftController.kreditor.item['cdtr.iban4']}" pt:data-item="cdtr.iban4"/>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl>
|
||||
|
||||
<dd>
|
||||
<h:inputText
|
||||
value="#{cargosoftController.kreditor.item['cdtr.bic4']}" pt:data-item="cdtr.bic4"/>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
https://dzone.com/articles/execute-a-jsf-ajax-request-by-just-a-function-call
|
||||
https://www.w3schools.com/howto/howto_js_autocomplete.asp
|
||||
-->
|
||||
<h:commandScript name="cargosoftSearch" action="#{cargosoftController.searchCreditor()}"
|
||||
<h:commandScript name="cargosoftSearch" action="#{cargosoftController.searchCreditor(searchmode)}"
|
||||
render="autocomplete-resultlist-cargosoft" onevent="autocompleteShowResult" />
|
||||
|
||||
|
||||
|
|
@ -35,65 +35,63 @@
|
|||
var creditorField= $("input[data-item='cdtr.number']");
|
||||
$(creditorField).each(function() {
|
||||
$(this).addClass("imixs-ml");
|
||||
//$(creditorField).attr('data-resultlist', 'autocomplete-resultlist-cargosoft');
|
||||
autocompleteInitInput(this,cargosoftSearch,'autocomplete-resultlist-cargosoft',selectCdtrCallback);
|
||||
});
|
||||
|
||||
// add cargsoft label if available
|
||||
var cdtrName="#{workflowController.workitem.item['cdtr.name.cargosoft']}";
|
||||
//alert(cdtrName);
|
||||
var inputElement=$("input[data-item='cdtr.number']");
|
||||
inputElement.after( "<span id='cdtr-name-id' class='small'>" + cdtrName + "</p>" );
|
||||
|
||||
// on change auf rechnugnsdatum ändert das fälligkeitsdatum
|
||||
|
||||
//inputElement.after( "<span id='cdtr-name-id' class='small'>" + cdtrName + "</p>" );
|
||||
});
|
||||
|
||||
// schneide die kreditornnummer aus dem selectierten Text aus (wir brauchen nur die)
|
||||
function selectCdtrCallback(selection) {
|
||||
// extract the number between start and ' - '
|
||||
var cdtrNo=selection.substring(0,selection.indexOf(' - '));
|
||||
var cdtrName=selection.substring(selection.indexOf(' - ')+3,selection.indexOf('|') );
|
||||
// Hier bekommen wir die JSON Struktur mit allen daten.
|
||||
// diese Daten werden auf die einzelnen Felder verteilt.
|
||||
function selectCdtrCallback(selection) {
|
||||
|
||||
const cdtrData = JSON.parse(selection);
|
||||
|
||||
// fill data into the fields....
|
||||
var inputElement=$("input[data-item='cdtr.number']");
|
||||
inputElement.val(cdtrNo);
|
||||
inputElement.val(cdtrData.no);
|
||||
// remove old cdtr.name
|
||||
$('#cdtr-name-id').remove();
|
||||
// append span with cdtr.name....
|
||||
inputElement.after( "<span id='cdtr-name-id' class='small'>" + cdtrName + "</p>" );
|
||||
|
||||
// Data format
|
||||
// K00000 - Kreditorenname |3|00000IBAN|000BIC
|
||||
// zahlungsziel
|
||||
var paramsData=selection.substring(selection.indexOf('|')+1);
|
||||
var params=paramsData.split('|');
|
||||
var cdtrPaymentPeriod=params[0];
|
||||
var cdtrIBAN=params[1];
|
||||
var cdtrBIC=params[2];
|
||||
inputElement.after( "<span id='cdtr-name-id' class='small'>" + cdtrData.name + "</p>" );
|
||||
|
||||
var inputElementZahlungsziel=$("input[data-item='cdtr.creditperiod']");
|
||||
var inputElementZahlungszielCdtr=$("input[id$='cdtr_creditperiod']");
|
||||
var inputElementInvoiceDate=$("input[id$='date_invoice']");
|
||||
var inputElementIban=$("input[data-item='cdtr.iban']");
|
||||
var inputElementBic=$("input[data-item='cdtr.bic']");
|
||||
if (inputElementZahlungszielCdtr && cdtrPaymentPeriod!='') {
|
||||
inputElementZahlungszielCdtr.val(cdtrPaymentPeriod);
|
||||
if (inputElementZahlungszielCdtr && cdtrData.creditperiod!='') {
|
||||
inputElementZahlungszielCdtr.val(cdtrData.creditperiod);
|
||||
}
|
||||
// nur wenn ein Rechnugnsdatum eingegeben wurde
|
||||
if (inputElementInvoiceDate && inputElementInvoiceDate.val()!='' && inputElementZahlungsziel && cdtrPaymentPeriod!='') {
|
||||
inputElementZahlungsziel.val(cdtrPaymentPeriod);
|
||||
if (inputElementInvoiceDate && inputElementInvoiceDate.val()!='' && inputElementZahlungsziel && cdtrData.creditperiod!='') {
|
||||
inputElementZahlungsziel.val(cdtrData.creditperiod);
|
||||
inputElementZahlungsziel.change();
|
||||
//$('.alexander-logistic-date').focus().select();
|
||||
$("input[data-item='invoice.number']").focus().select();
|
||||
|
||||
}
|
||||
// update iban/bic
|
||||
if (inputElementIban && cdtrIBAN!='') {
|
||||
inputElementIban.val(cdtrIBAN);
|
||||
if (inputElementIban && cdtrData.iban!='') {
|
||||
inputElementIban.val(cdtrData.iban);
|
||||
}
|
||||
if (inputElementBic && cdtrBIC!='') {
|
||||
inputElementBic.val(cdtrBIC);
|
||||
if (inputElementBic && cdtrData.bic!='') {
|
||||
inputElementBic.val(cdtrData.bic);
|
||||
}
|
||||
|
||||
// update all possible data fields von kredorenverwaltung
|
||||
if ($("input[data-item='cdtr.iban']")) {
|
||||
$("input[data-item='cdtr.iban2']").val(cdtrData.iban2);
|
||||
$("input[data-item='cdtr.bic2']").val(cdtrData.bic2);
|
||||
$("input[data-item='cdtr.iban3']").val(cdtrData.iban3);
|
||||
$("input[data-item='cdtr.bic3']").val(cdtrData.bic3);
|
||||
$("input[data-item='cdtr.iban4']").val(cdtrData.iban4);
|
||||
$("input[data-item='cdtr.bic4']").val(cdtrData.bic4);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*]]>*/
|
||||
|
|
@ -101,12 +99,14 @@
|
|||
|
||||
<!-- Hier speichern das von Kreditor vorgeschlagene zahlungsziel -->
|
||||
<h:inputHidden id="cdtr_creditperiod" value="#{workflowController.workitem.item['cdtr.creditperiod']}" />
|
||||
|
||||
|
||||
<!-- cargosoft creditor suggest list -->
|
||||
<h:panelGroup id="autocomplete-resultlist-cargosoft" layout="block" class="autocomplete-resultlist">
|
||||
<ui:repeat var="suggest" value="#{cargosoftController.searchResult}">
|
||||
<div class="autocomplete-resultlist-element" onclick="autocompleteSelectElement('#{suggest}')">
|
||||
<div class="autocomplete-resultlist-element" onclick="autocompleteSelectElement('#{suggest.data}')">
|
||||
<a href="#">
|
||||
<h:outputText value="#{suggest}" escape="false"/>
|
||||
<h:outputText value="#{suggest.display}" escape="false"/>
|
||||
</a>
|
||||
</div>
|
||||
</ui:repeat>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
<!-- Cargosoft Creditor Search integration -->
|
||||
<ui:include src="/pages/workitems/forms/alexander/cargsoft-creditor-search.xhtml">
|
||||
<ui:param name="workitem" value="#{workflowController.workitem}" />
|
||||
<ui:param name="searchmode" value="multi" /> <!-- display multiple ibans in separate lines -->
|
||||
</ui:include>
|
||||
|
||||
|
||||
|
|
|
|||
2
pom.xml
2
pom.xml
|
|
@ -4,7 +4,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.alexander-logistics</groupId>
|
||||
<artifactId>office-alexander-logistics</artifactId>
|
||||
<version>1.2.6</version>
|
||||
<version>1.2.7</version>
|
||||
<packaging>pom</packaging>
|
||||
<name>Imixs Office Workflow - Custom Build</name>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue