diff --git a/README.md b/README.md index e05ed46..9b9b9e6 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ Es gibt ein Email Konto das wir für den Import von Rechnungen nutzen # Cargosoft -Die Cargosoft Schnittstelle besteht aus einem eigenen Export modell "cargosoft-export-1.0.0". In diesem wird der CargoosftExportAdapter getriggert, der die Daten einer Rechnung an den FTP Server übermittelt. +Die Cargosoft Schnittstelle besteht aus einem eigenen BPMN modell "cargosoft-export-1.0.0". In diesem wird der CargoosftExportAdapter getriggert, der die Daten einer Rechnung an den FTP Server übermittelt. Cargosoft prüft alle 10 Sekunden ob sich Dateien mit der Dateiendung ".xml" auf dem FTP befinden und holt diese ab. @@ -76,6 +76,20 @@ Die Konfiguration der FTP Schnittstelle erfolgt über den Konfigurationsdialog i cargosoft.export.ftp.user=u248962-sub2 cargosoft.export.ftp.password=aXa61n9Un3jDNQlL + +## Cargosoft Kreditoren + +Wir importieren auch eine CSV Datei von Kreditoren mit dem namen *Vendors.csv*. Für den Import verwenden wir den Standard CSV Import Service aus dem [Imixs-Archive Importer Projekt](https://github.com/imixs/imixs-archive/tree/master/imixs-archive-importer). + +Die Datei wird von Cargosoft einmal Täglich bereitgestellt und befindet sich auf dem FTP Sever unter: + + /office-alexander-logistics/cargosoft/fromCargosoft/stammdaten/Vendors.csv + +Das Schlüsselfeld ist *_VENDOR_NUM*. Zusätzlich indizieren wir das feld *_VENDOR_NAME*. So kann man über die Lucene SUche sowohl nach dem namen oder der Nummer suchen. + +In der Erfassungsmaske haben wir dann eine JavaScript Implementierung mit Ajax die bei Eingabe in das Feld *cdtr.number* Vorschläge aus den importieren Kreditoren macht. Das ist ähnlich implementiert wie die Imixs-ML Suggest LIste + + # Imixs-ML diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftController.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftController.java new file mode 100644 index 0000000..2e6ff8c --- /dev/null +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/CargosoftController.java @@ -0,0 +1,121 @@ +package com.alexanderlogistics; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Logger; + +import javax.enterprise.context.ConversationScoped; +import javax.faces.context.FacesContext; +import javax.inject.Inject; +import javax.inject.Named; + +import org.imixs.workflow.ItemCollection; +import org.imixs.workflow.engine.DocumentService; +import org.imixs.workflow.exceptions.QueryException; + +/** + * The CargosoftController CDI Bean provides Front-End methods for the cargosoft kreditore objects. + *

+ * The method search provides a suggest list searching a phrase within the + * cargosoft creditor list (type=cargosoftkreditor). + * + * @author rsoika + * + */ +@Named +@ConversationScoped +public class CargosoftController implements Serializable { + + private static final long serialVersionUID = 1L; + private static Logger logger = Logger.getLogger(CargosoftController.class.getName()); + + + @Inject + protected DocumentService documentService; + + private List searchResult = null; + + + /** + * This method searches a text phrase within the list of cargosoft kreditor objects (type=cargosoftkreditor). + *

+ * JSF Integration: + * + * {@code + * + * } + * + *

+ * JavaScript Example: + * + *

+     * {@code
+     *  imixsOfficeWorkflow.cargosoftSearch({ item: '_invoicenumber' })
+     *  }
+     * 
+ * + */ + public void searchCreditor() { + + searchResult = new ArrayList(); + // 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 + "'"); + + + // String input =workflowController.getWorkitem().getItemValueString(itemName); + if (phrase == null || phrase.length() < 2) { + return; + } + + // die cargosoft Kreditornummer beginnt seltsamerweise mit einem K..... + String query="(type:cargosoftkreditor) AND ( (name:K" + phrase + "*) OR ("+phrase.toLowerCase() + "*) )"; + + + try { + List result = documentService.find(query, 20, 0); + logger.info("found " + result.size() + " creditors..."); + if (result!=null) { + for (ItemCollection cdtr: result) { + // wir entfernen das führende K + String cdtrNo=cdtr.getItemValueString("_VENDOR_NUM"); + if (cdtrNo.startsWith("K")) { + cdtrNo=cdtrNo.substring(1); + } + searchResult.add(cdtrNo + " - "+cdtr.getItemValueString("_VENDOR_Name")); + //logger.finest("...add: " + cdtr.getItemValueString("_VENDOR_NUM") + " - "+cdtr.getItemValueString("_VENDOR_Name")); + } + } + } catch (QueryException e) { + e.printStackTrace(); + } + + + + } + + + + + + public List getSearchResult() { + return searchResult; + } + + /** + * This method reset the search and input state. + */ + public void reset() { + searchResult = new ArrayList(); + logger.fine("reset"); + } + +} diff --git a/office-alexander-logistics-app/src/main/resources/imixs.properties b/office-alexander-logistics-app/src/main/resources/imixs.properties index 7d7efa3..b77659a 100644 --- a/office-alexander-logistics-app/src/main/resources/imixs.properties +++ b/office-alexander-logistics-app/src/main/resources/imixs.properties @@ -2,7 +2,7 @@ # Imixs Lucene Plugin ############################## lucence.indexDir=${imixs-office.IndexDir} -index.fields=txtsearchstring,txtSubject,txtname,txtEmail,txtUserName,namCreator,txtworkflowgroup,txtworkflowstatus,txtWorkflowAbstract,txtWorkflowSummary,txtworkflowhistory,txtspacename,txtprocessname,_subject,_description,_name,_projectnumber,_projectname,_ordernumber,_contractnumber,datDueDate,txtcommentlog,htmldescription,htmldocumentation,dms,dms_names,_childitems,$file.names +index.fields=txtsearchstring,txtSubject,txtname,txtEmail,txtUserName,namCreator,txtworkflowgroup,txtworkflowstatus,txtWorkflowAbstract,txtWorkflowSummary,txtworkflowhistory,txtspacename,txtprocessname,_subject,_description,_name,_projectnumber,_projectname,_ordernumber,_contractnumber,datDueDate,txtcommentlog,htmldescription,htmldocumentation,dms,dms_names,_childitems,$file.names,_VENDOR_NAME index.fields.analyze=txtUsername index.fields.noanalyze=type,$UniqueIDRef,$created,$modified,$ModelVersion,namCreator,$ProcessID,datDate,txtWorkflowGroup,txtemail, datdate, datfrom, datto, numsequencenumber,dms_count,invoice.number index.fields.store=process.name,txtProcessName,txtWorkflowImageURL diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/document_import.xhtml b/office-alexander-logistics-app/src/main/webapp/pages/admin/document_import.xhtml index 082ef5d..20472b8 100644 --- a/office-alexander-logistics-app/src/main/webapp/pages/admin/document_import.xhtml +++ b/office-alexander-logistics-app/src/main/webapp/pages/admin/document_import.xhtml @@ -183,6 +183,7 @@ + @@ -194,6 +195,7 @@
+ diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/cargsoft-creditor-search.xhtml b/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/cargsoft-creditor-search.xhtml new file mode 100644 index 0000000..cc4dc4d --- /dev/null +++ b/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/cargsoft-creditor-search.xhtml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + +
+ + + +
+
+
+ + + + +
+ + diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/form_basic.xhtml b/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/form_basic.xhtml index f742c05..4f4db61 100644 --- a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/form_basic.xhtml +++ b/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/form_basic.xhtml @@ -7,6 +7,14 @@ xmlns:marty="http://xmlns.jcp.org/jsf/composite/marty" xmlns:i="http://xmlns.jcp.org/jsf/composite/imixs"> + + + + + + + + diff --git a/pom.xml b/pom.xml index fb8dfea..74a56f5 100644 --- a/pom.xml +++ b/pom.xml @@ -27,9 +27,9 @@ 5.2.9 4.1.11 - 4.4.4 + 4.4.5-SNAPSHOT 2.2.5-SNAPSHOT - 2.2.9 + 2.2.11-SNAPSHOT 1.0.20 1.1.0-SNAPSHOT 2.2