fixes - imixs-ai upadte

This commit is contained in:
Ralph Soika 2024-07-26 16:10:21 +02:00
parent fbfc141298
commit e6a234bcb8
19 changed files with 332 additions and 387 deletions

View file

@ -8,6 +8,7 @@
- Upgrade Imixs-Workflow 6.7
- Beim XML Invoice Import wird nun auch die Sprache für das Mahnwesen ermittelt (fehlte)
- Währungsunabhängigkeit
- Lucen Index: item 'cdtr.name' wurde in den index aufgenommen wegen AI Examples Adapter
**Migration**

View file

@ -71,10 +71,10 @@ services:
###############################################
# Imixs-Admin
###############################################
#imixsadmin:
# image: imixs/imixs-admin
# ports:
# - "8888:8080"
imixsadmin:
image: imixs/imixs-admin
ports:
- "8888:8080"
###############################################
# Mailgateway

View file

@ -0,0 +1,170 @@
package com.alexanderlogistics.ai;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.imixs.ai.workflow.ImixsAIPromptEvent;
import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.exceptions.QueryException;
import jakarta.enterprise.event.Observes;
import jakarta.inject.Inject;
/**
* The PromptExampleAdapterXML is a CDI bean that creates XML examples based
* on the last 3 invoices.
*
* The adapter only runs if the prompt template contains
*
* <<EXAMPLES_XML>>
*
* Prompt example generated by this Adapter:
*
* Example:
*
* <pre>
* {@code
* 1. Company Data:
* - Name and address of the supplier
* - Supplier contact information (phone number, email, etc.)
*
* 2. Invoice Data:
* - Invoice number
* - Invoice date
* - Order number
* - Customer number
* - Total invoice amount
*
* <invoice>
* <cdtr.name>...</cdtr.name>
* <invoice.number>...</invoice.number>
* <invoice.date>2024-12-31</invoice.date>
* <payment.date>2024-12-31</payment.date>
* <invoice.total type="double">1234.00</invoice.total>
* <cdtr.iban>...</cdtr.iban>
* <cdtr.bic>...</cdtr.bic>
* </invoice>
* }
* </pre>
*
*/
public class PromptExampleAdapterXML {
private static Logger logger = Logger.getLogger(PromptExampleAdapterXML.class.getName());
@Inject
DocumentService documentService;
/**
* @param event
*/
public void onEvent(@Observes ImixsAIPromptEvent event) {
if (event.getWorkitem() == null) {
return;
}
String prompt = event.getPromptTemplate();
if (!prompt.contains("<<EXAMPLES_XML>>")) {
return;
}
String exampleHeaderData = "\n\n### Example Invoice Data:\n\n";
String exampleHeaderXML = "\n\n### Example XML Object:\n\n";
String cdtrName = event.getWorkitem().getItemValueString("document.company");
List<ItemCollection> invoices = findLastInvoices(cdtrName, event.getWorkitem().getUniqueID());
String promptExamples = "";
if (invoices != null && invoices.size() > 0) {
// Build an example for each invoice
for (ItemCollection invoice : invoices) {
promptExamples = promptExamples + buildExampleDE(invoice, exampleHeaderData,
exampleHeaderXML);
}
}
prompt = prompt.replace("<<EXAMPLES_XML>>", "" + promptExamples);
// System.out.println(prompt);
event.setPromptTemplate(prompt);
}
/**
* Helper Method that builds a prompt example out of an existing invoice:
*
* <pre>
* {@code
*
* <invoice>
* <cdtr.name>...</cdtr.name>
* <invoice.number>...</invoice.number>
* <invoice.date>2024-12-31</invoice.date>
* <payment.date>2024-12-31</payment.date>
* <invoice.total type="double">1234.00</invoice.total>
* <cdtr.iban>...</cdtr.iban>
* <cdtr.bic>...</cdtr.bic>
* </invoice>
* }
* </pre>
*
* @param invoice
* @return
*/
private String buildExampleDE(ItemCollection invoice, String dataExampleHeader, String xmlExampleHeader) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
StringBuffer example = new StringBuffer();
// add the invoice summary and the example code
if (invoice.hasItem("invoice.summary")) {
example.append(dataExampleHeader);
example.append(invoice.getItemValueString("invoice.summary"));
example.append(xmlExampleHeader);
// add JSON result object:
example.append("<invoice>\n");
example.append(" <cdtr.name>" + invoice.getItemValueString("cdtr.name") + "</cdtr.name>\n");
example.append(
" <invoice.number>" + invoice.getItemValueString("invoice.number") + "</invoice.number>\n");
if (invoice.getItemValueDate("invoice.date") != null) {
example.append(
" <invoice.date>" + dateFormat.format(invoice.getItemValueDate("invoice.date"))
+ "</invoice.date>\n");
}
if (invoice.getItemValueDate("payment.date") != null) {
example.append(
" <payment.date>" + dateFormat.format(invoice.getItemValueDate("payment.date"))
+ "</payment.date>\n");
}
example.append(" <invoice.total type=\"double\">" + invoice.getItemValueDouble("invoice.total")
+ "</invoice.total>\n");
example.append(" <cdtr.iban>" + invoice.getItemValueString("cdtr.iban") + "</cdtr.iban>\n");
example.append(" <cdtr.bic>" + invoice.getItemValueString("cdtr.bic") + "</cdtr.bic>\n");
example.append("</invoice>\n");
}
return example.toString();
}
/**
* Helper method to find the last 3 invoices by cdtr.name
*
* @param cdtrName
* @return
*/
private List<ItemCollection> findLastInvoices(String cdtrName, String currentID) {
List<ItemCollection> result = new ArrayList<>();
String searchTerm = "(type:workitemarchive) AND ($modelversion:rechnungseingang*) AND ($taskid:5900) AND NOT ($uniqueid:"
+ currentID + ") AND (cdtr.name:\""
+ cdtrName + "\")";
try {
result = documentService.find(searchTerm, 3, 0, "$modified", true);
} catch (QueryException e) {
logger.log(Level.SEVERE, "findLastInvoices - invalid query: {0}", e.getMessage());
}
logger.info("Found " + result.size() + " examples for '" + cdtrName + "'");
return result;
}
}

View file

@ -4,7 +4,7 @@
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,invoice.number.stripped,_childitems,$file.names,_VENDOR_NAME,dbtr.number,cdtr.number,invoice.positions
index.fields.analyze=txtUsername
index.fields.noanalyze=type,$UniqueIDRef,$created,$modified,$ModelVersion,$participants,namCreator,$ProcessID,datDate,txtWorkflowGroup,txtemail, datdate, datfrom, datto, numsequencenumber,sequencenumber,dms_count,invoice.number,invoice.number.stripped,invoice.date,invoice.duedate,taxonomy.verteilung.stop,taxonomy.sachpruefung.stop,taxonomy.verteilung.start,taxonomy.sachpruefung.start,taxonomy.buchhaltung.start,taxonomy.buchhaltung.stop,dbtr.number,cdtr.number,payment.date,invoice.total,invoice.currency,invoice.positions,$lasteventdate,payment.type
index.fields.noanalyze=type,$UniqueIDRef,$created,$modified,$ModelVersion,$participants,namCreator,$ProcessID,datDate,txtWorkflowGroup,txtemail, datdate, datfrom, datto, numsequencenumber,sequencenumber,dms_count,invoice.number,invoice.number.stripped,invoice.date,invoice.duedate,taxonomy.verteilung.stop,taxonomy.sachpruefung.stop,taxonomy.verteilung.start,taxonomy.sachpruefung.start,taxonomy.buchhaltung.start,taxonomy.buchhaltung.stop,dbtr.number,cdtr.number,payment.date,invoice.total,invoice.currency,invoice.positions,$lasteventdate,payment.type,cdtr.name
index.fields.store=process.name,txtProcessName,txtWorkflowImageURL,payment.date,invoice.number,invoice.date,invoice.duedate
index.fields.category=space.name,space.ref,taxonomy.verteilung.stop.by,taxonomy.sachpruefung.stop.by,taxonomy.buchhaltung.stop.by
office.search.noanalyze=invoice.number,invoice.number.stripped,invoice.positions

View file

@ -13,7 +13,7 @@
<h:form id="import_form_id">
<!-- ########## Error ########## -->
<ui:include src="/pages/error_message.xhtml" />
<ui:include src="/error_message.xhtml" />
<div class="imixs-form">
<div class="imixs-header">
<h1>Parameter</h1>

View file

@ -35,10 +35,7 @@
<h:form id="import_form_id">
<!-- ########## Error ########## -->
<ui:include src="/pages/error_message.xhtml" />
<ui:include src="/error_message.xhtml" />
<div class="imixs-form">
<div class="imixs-header">

View file

@ -1,11 +1,7 @@
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:i="http://java.sun.com/jsf/composite/imixs"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:marty="http://java.sun.com/jsf/composite/marty"
template="/layout/template.xhtml">
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:i="http://java.sun.com/jsf/composite/imixs" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:marty="http://java.sun.com/jsf/composite/marty" template="/layout/template.xhtml">
<ui:define name="content">
<f:view>
@ -30,7 +26,7 @@
<h1>Ausgangsrechnungen</h1>
<!-- ########## Error ########## -->
<ui:include src="/pages/error_message.xhtml" />
<ui:include src="/error_message.xhtml" />
</div>
@ -76,8 +72,7 @@
</h:inputText>
/
<h:inputSecret required="false" style="width:47%;"
redisplay="true"
<h:inputSecret required="false" style="width:47%;" redisplay="true"
value="#{cargosoftExportController.configuration.item['_datev_ftp_password']}">
</h:inputSecret>
</dd>
@ -96,15 +91,15 @@
</dl>
<p>
<span class="typcn typcn-lightbulb"></span> In diesem Verzeichniss werden die Belegdaten
<span class="typcn typcn-lightbulb"></span> In diesem Verzeichniss werden
die Belegdaten
im DATEV Format abgelegt.
</p>
</div>
<h2>Scheduler</h2>
<!-- include timer control -->
<ui:include src="sub_scheduler_control.xhtml">
<ui:param name="schedulerController"
value="#{cargosoftExportController}" />
<ui:param name="schedulerController" value="#{cargosoftExportController}" />
</ui:include>
</div>
</div>
@ -113,8 +108,7 @@
<div class="imixs-footer">
<h:outputLabel value="#{message.modified}: " />
<h:outputText
value="#{cargosoftExportController.configuration.item['$modified']}">
<h:outputText value="#{cargosoftExportController.configuration.item['$modified']}">
<f:convertDateTime timeZone="#{message.timeZone}" type="both"
pattern="#{message.dateTimePattern}" />
</h:outputText>
@ -122,8 +116,7 @@
<br />
<h:commandButton
actionListener="#{cargosoftExportController.saveConfiguration()}"
<h:commandButton actionListener="#{cargosoftExportController.saveConfiguration()}"
value="#{message.save}">
</h:commandButton>

View file

@ -34,7 +34,7 @@
<h:form id="import_form_id">
<!-- ########## Error ########## -->
<ui:include src="/pages/error_message.xhtml" />
<ui:include src="/error_message.xhtml" />

View file

@ -13,7 +13,7 @@
<f:view>
<h:form id="zahlungsziel_form_id">
<!-- ########## Error ########## -->
<ui:include src="/pages/error_message.xhtml" />
<ui:include src="/error_message.xhtml" />
<!-- Cargosoft Creditor Search integration -->
<ui:include src="/pages/workitems/forms/alexander/cargsoft-creditor-search.xhtml">
@ -29,7 +29,7 @@
<!-- ########## Error ########## -->
<ui:include src="/pages/error_message.xhtml" />
<ui:include src="/error_message.xhtml" />
<div class="imixs-body">

View file

@ -1,11 +1,7 @@
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:i="http://java.sun.com/jsf/composite/imixs"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:marty="http://java.sun.com/jsf/composite/marty"
template="/layout/template.xhtml">
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:i="http://java.sun.com/jsf/composite/imixs" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:marty="http://java.sun.com/jsf/composite/marty" template="/layout/template.xhtml">
<ui:define name="content">
<f:view>
@ -30,15 +26,15 @@
<h1>OP-Listen Verwaltung</h1>
<!-- ########## Error ########## -->
<ui:include src="/pages/error_message.xhtml" />
<ui:include src="/error_message.xhtml" />
</div>
<div class="imixs-body">
<div class="ui-state-highlight ui-corner-all"
style="margin-bottom: 10px; padding: .5em;">
<div class="ui-state-highlight ui-corner-all" style="margin-bottom: 10px; padding: .5em;">
<p>
<span class="typcn typcn-lightbulb"></span> Die OP-Listen Verwaltung erzeugt regelmäßig
Workitems mit einem aktuellen Abbild der offenen Ausgangsrechnungen, sortiert nach Bereichen.
Workitems mit einem aktuellen Abbild der offenen Ausgangsrechnungen, sortiert nach
Bereichen.
</p>
</div>
<!-- **** Export OP-Listen ***** -->
@ -46,8 +42,7 @@
<h2>Scheduler</h2>
<!-- include timer control -->
<ui:include src="sub_scheduler_control.xhtml">
<ui:param name="schedulerController"
value="#{oplistExportController}" />
<ui:param name="schedulerController" value="#{oplistExportController}" />
</ui:include>
</div>
</div>
@ -55,8 +50,7 @@
<div class="imixs-footer">
<h:outputLabel value="#{message.modified}: " />
<h:outputText
value="#{oplistExportController.configuration.item['$modified']}">
<h:outputText value="#{oplistExportController.configuration.item['$modified']}">
<f:convertDateTime timeZone="#{message.timeZone}" type="both"
pattern="#{message.dateTimePattern}" />
</h:outputText>
@ -65,8 +59,7 @@
<br />
<h:commandButton
actionListener="#{oplistExportController.saveConfiguration()}"
<h:commandButton actionListener="#{oplistExportController.saveConfiguration()}"
value="#{message.save}">
</h:commandButton>

View file

@ -1,11 +1,7 @@
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:i="http://java.sun.com/jsf/composite/imixs"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:marty="http://java.sun.com/jsf/composite/marty"
xmlns:a="http://xmlns.jcp.org/jsf/passthrough"
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:i="http://java.sun.com/jsf/composite/imixs" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:marty="http://java.sun.com/jsf/composite/marty" xmlns:a="http://xmlns.jcp.org/jsf/passthrough"
template="/layout/template.xhtml">
<ui:define name="content">
@ -23,12 +19,12 @@
}
// display summary
$(document).ready(function() {
$(document).ready(function () {
// erste Zeile hinzufügen, falls tabelle noch leer ist
var posTableEmpty=#{empty sepaController.dbtrList};
var posTableEmpty =#{ empty sepaController.dbtrList };
if (posTableEmpty) {
// click on add button
posButton=$("[data-id='addposbutton_id']");
posButton = $("[data-id='addposbutton_id']");
if (posButton) {
$(posButton).click();
}
@ -49,7 +45,7 @@
<h:form id="import_form_id">
<!-- ########## Error ########## -->
<ui:include src="/pages/error_message.xhtml" />
<ui:include src="/error_message.xhtml" />
<div class="imixs-form">
<div class="imixs-header">
@ -59,7 +55,8 @@
<div class="imixs-body">
<!-- **** General info ***** -->
<div class="imixs-form-panel">
<h:panelGroup layout="block" styleClass="imixs-form-section" id="dbtrlist" binding="#{dbtrlistContainer}">
<h:panelGroup layout="block" styleClass="imixs-form-section" id="dbtrlist"
binding="#{dbtrlistContainer}">
<h1>Debitor IBAN/BIC</h1>
<p>
<span class="typcn typcn-lightbulb"></span> The Debitor IBAN/BIC configuration list
@ -79,36 +76,43 @@
</th>
</tr>
<ui:repeat var="dbtr"
value="#{sepaController.dbtrList}">
<ui:repeat var="dbtr" value="#{sepaController.dbtrList}">
<tr>
<!-- ID -->
<td><h:inputText value="#{dbtr.item['name']}"
style="width:100%;" /></td>
<td>
<h:inputText value="#{dbtr.item['name']}" style="width:100%;" />
</td>
<!-- dbtr.name -->
<td><h:inputText value="#{dbtr.item['dbtr.name']}"
style="width:100%;" /></td>
<td>
<h:inputText value="#{dbtr.item['dbtr.name']}"
style="width:100%;" />
</td>
<!-- dbtr.iban -->
<td><h:inputText value="#{dbtr.item['dbtr.iban']}"
style="width:100%;" /></td>
<td>
<h:inputText value="#{dbtr.item['dbtr.iban']}"
style="width:100%;" />
</td>
<!-- dbtr.bic -->
<td><h:inputText value="#{dbtr.item['dbtr.bic']}"
style="width:100%;" /></td>
<td>
<h:inputText value="#{dbtr.item['dbtr.bic']}" style="width:100%;" />
</td>
<!-- dbtr.bic -->
<td>
<h:inputText value="#{dbtr.item['report']}" style="width:100%;" />
</td>
<td><h:commandLink
<td>
<h:commandLink
actionListener="#{sepaController.removeDbtr(dbtr.item['name'])}">
<span class="typcn typcn-trash imixs-state-info"></span>
<f:ajax render="#{dbtrlistContainer.clientId}"
onevent="updateSepaList" />
</h:commandLink></td>
</h:commandLink>
</td>
</tr>
</ui:repeat>
@ -116,13 +120,13 @@
<!-- add button -->
<h:commandButton value="#{message.add}"
a:data-id="addposbutton_id"
<h:commandButton value="#{message.add}" a:data-id="addposbutton_id"
actionListener="#{sepaController.addDbtr}">
</h:commandButton>
</f:ajax>
</h:panelGroup>
<h:panelGroup layout="block" styleClass="imixs-form-section" id="cdtrlist" binding="#{cdtrlistContainer}">
<h:panelGroup layout="block" styleClass="imixs-form-section" id="cdtrlist"
binding="#{cdtrlistContainer}">
<h1>Creditor IBAN/BIC</h1>
<p>
<span class="typcn typcn-lightbulb"></span> The Creditor IBAN/BIC configuration list
@ -151,12 +155,14 @@
<!-- cdtr.name -->
<td>
<h:inputText value="#{cdtr.item['cdtr.name']}" style="width:100%;" />
<h:inputText value="#{cdtr.item['cdtr.name']}"
style="width:100%;" />
</td>
<!-- cdtr.iban -->
<td>
<h:inputText value="#{cdtr.item['cdtr.iban']}" style="width:100%;" />
<h:inputText value="#{cdtr.item['cdtr.iban']}"
style="width:100%;" />
</td>
<!-- cdtr.bic -->
@ -171,9 +177,11 @@
<td>
<h:commandLink actionListener="#{sepaController.removeCdtr(cdtr.item['name'])}">
<h:commandLink
actionListener="#{sepaController.removeCdtr(cdtr.item['name'])}">
<span class="typcn typcn-trash imixs-state-info"></span>
<f:ajax render="#{cdtrlistContainer.clientId}" onevent="updateSepaList" />
<f:ajax render="#{cdtrlistContainer.clientId}"
onevent="updateSepaList" />
</h:commandLink>
</td>
</tr>
@ -183,7 +191,8 @@
<!-- add button -->
<h:commandButton value="#{message.add}" a:data-id="addposbutton_id" actionListener="#{sepaController.addCdtr}">
<h:commandButton value="#{message.add}" a:data-id="addposbutton_id"
actionListener="#{sepaController.addCdtr}">
</h:commandButton>
</f:ajax>
</h:panelGroup>
@ -207,7 +216,8 @@
<dl>
<dt>SEPA Model Version</dt>
<dd>
<h:inputText required="false" value="#{sepaController.configuration.item['_model_version']}">
<h:inputText required="false"
value="#{sepaController.configuration.item['_model_version']}">
</h:inputText>
</dd>
</dl>
@ -216,7 +226,8 @@
<dl>
<dt>SEPA Initial Task</dt>
<dd>
<h:inputText required="false" value="#{sepaController.configuration.item['_initial_task']}">
<h:inputText required="false"
value="#{sepaController.configuration.item['_initial_task']}">
</h:inputText>
</dd>
</dl>
@ -238,8 +249,7 @@
<div class="imixs-footer">
<h:outputLabel value="#{message.modified}: " />
<h:outputText
value="#{sepaController.configuration.item['$modified']}">
<h:outputText value="#{sepaController.configuration.item['$modified']}">
<f:convertDateTime timeZone="#{message.timeZone}" type="both"
pattern="#{message.dateTimePattern}" />
</h:outputText>
@ -247,9 +257,7 @@
<br />
<h:commandButton
actionListener="#{sepaController.saveConfiguration()}"
value="#{message.save}">
<h:commandButton actionListener="#{sepaController.saveConfiguration()}" value="#{message.save}">
</h:commandButton>
<h:commandButton value="#{message.close}" action="notes" />

View file

@ -18,7 +18,7 @@
</ui:define>
<ui:define name="content">
<ui:include src="/pages/error_message.xhtml" />
<ui:include src="/error_message.xhtml" />
<f:view>
<h:form>
<ui:param name="searchresult" value="#{viewHandler.getData(searchController)}"></ui:param>

View file

@ -4,12 +4,12 @@
<ui:fragment rendered="#{!readonly}">
<h:selectOneMenu required="#{required?validationController.required:false}" value="#{workitem.item[itemname]}">
<h:selectOneMenu required="#{required?validationController.required:false}" value="#{workitem.item[item.name]}">
<f:selectItems value="#{aglConfigController.getSelectItems('currency.in')}" />
</h:selectOneMenu>
</ui:fragment>
<ui:fragment rendered="#{readonly}">
<h:outputText value="#{workitem.item[itemname]}" />
<h:outputText value="#{workitem.item[item.name]}" />
</ui:fragment>
</ui:composition>

View file

@ -29,7 +29,7 @@
<org.imixs.workflow.version>6.0.7-SNAPSHOT</org.imixs.workflow.version>
<org.imixs.marty.version>5.0.0</org.imixs.marty.version>
<org.imixs.archive.version>3.0.2-SNAPSHOT</org.imixs.archive.version>
<org.imixs.adapters.version>3.0.0</org.imixs.adapters.version>
<org.imixs.adapters.version>3.0.2-SNAPSHOT</org.imixs.adapters.version>
<org.imixs.melman.version>2.0.0-SNAPSHOT</org.imixs.melman.version>
<microprofile.version>6.0</microprofile.version>
<net.sf.saxon.version>9.9.1-4</net.sf.saxon.version>

View file

@ -6,7 +6,7 @@
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>bf073e72asdf512c4d60af7740872036</MsgId>
<CreDtTm>2024-07-25T19:03:13</CreDtTm>
<CreDtTm>2024-07-26T12:04:59</CreDtTm>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>655.90</CtrlSum>
<InitgPty>
@ -23,7 +23,7 @@
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>2024-07-25</ReqdExctnDt>
<ReqdExctnDt>2024-07-26</ReqdExctnDt>
<Dbtr>
<Nm>Targo Bank</Nm>
</Dbtr>

View file

@ -6,7 +6,7 @@
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>bf073e72asdf512c4d60af7740872036</MsgId>
<CreDtTm>2024-07-25T19:03:14</CreDtTm>
<CreDtTm>2024-07-26T12:04:59</CreDtTm>
<NbOfTxs>3</NbOfTxs>
<CtrlSum>655.90</CtrlSum>
<InitgPty>
@ -23,7 +23,7 @@
<Cd>SEPA</Cd>
</SvcLvl>
</PmtTpInf>
<ReqdExctnDt>2024-07-25</ReqdExctnDt>
<ReqdExctnDt>2024-07-26</ReqdExctnDt>
<Dbtr>
<Nm>Targo Bank</Nm>
</Dbtr>

View file

@ -81,16 +81,13 @@ Possible ImageTypes are:
<bpmn2:documentation id="documentation_tW5ivg"/>
<bpmn2:flowNodeRef>dataObject_FS1r0Q</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>task_uB6BGQ</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_1Vp9Fg</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>textAnnotation_CtU05A</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>task_PsBytg</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>dataObject_CRa7xA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_HhuoiQ</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_bYlo0w</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_za0KnA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_Zxhr0w</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>dataObject_vVKXIg</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_esmWYg</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_yQLmNA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>task_0YaQ2w</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>dataObject_HHM58Q</bpmn2:flowNodeRef>
@ -338,7 +335,6 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_17"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_zA065w</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_gXJm0w</bpmn2:incoming>
</bpmn2:task>
<bpmn2:endEvent id="EndEvent_1" name="End">
@ -388,80 +384,10 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_A2VzkA"/>
<bpmn2:incoming>sequenceFlow_30s7vA</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_VlPVJg</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_0N8cOQ</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_fN22Gg</bpmn2:outgoing>
</bpmn2:task>
<bpmn2:intermediateCatchEvent id="event_1Vp9Fg" imixs:activityid="1" name="Save">
<bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyarchive" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="txtmailsubject" type="xs:string">
<imixs:value><![CDATA[Eingangsrechnung erhalten: <itemvalue>_subject</itemvalue>]]></imixs:value>
</imixs:item>
<imixs:item name="keyaccessmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyscheduledactivity" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfmailbody" type="xs:string">
<imixs:value><![CDATA[Wir haben folgende Rechnung erhalten: bitte freigeben.
Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</itemvalue>)
<itemvalue>_description</itemvalue>]]></imixs:value>
</imixs:item>
<imixs:item name="keymailreceiverfields" type="xs:string"/>
<imixs:item name="keyversion" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="numnextactivityid" type="xs:int">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyfollowup" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[1]]></imixs:value>
</imixs:item>
<imixs:item name="keylogdateformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string"/>
<imixs:item name="numnextid" type="xs:int">
<imixs:value><![CDATA[5005]]></imixs:value>
</imixs:item>
<imixs:item name="txtnextprocesstree" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="action">home</item>]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Freigabe einholen]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Rechnungseingang]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_I6w0fw"><![CDATA[Digitalisierung einer neuen Eingangsrechnung]]></bpmn2:documentation>
<bpmn2:outgoing>sequenceFlow_30s7vA</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_30s7vA" sourceRef="event_1Vp9Fg" targetRef="task_uB6BGQ">
<bpmn2:documentation id="documentation_AGCEgw"/>
</bpmn2:sequenceFlow>
<bpmn2:textAnnotation id="textAnnotation_CtU05A" textFormat="">
<bpmn2:text id="text_ykDpyw"><![CDATA[Support for llama-cpp http server]]></bpmn2:text>
<bpmn2:documentation id="documentation_vNKNMA"/>
@ -507,7 +433,6 @@ Company: <itemvalue>document.company</itemvalue><br />]]></imixs:value>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_7BnjJw"/>
<bpmn2:incoming>sequenceFlow_JpNUKg</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_Fdk05g</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_lmU9IA</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_naZnAA</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_8SpIiA</bpmn2:outgoing>
@ -529,75 +454,6 @@ Company: <itemvalue>document.company</itemvalue><br />]]></imixs:value>
<bpmn2:association id="association_hZu4qg" sourceRef="dataObject_CRa7xA" targetRef="task_PsBytg">
<bpmn2:documentation id="documentation_du0vPw"/>
</bpmn2:association>
<bpmn2:intermediateCatchEvent id="event_HhuoiQ" imixs:activityid="1" name="Save">
<bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyarchive" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="txtmailsubject" type="xs:string">
<imixs:value><![CDATA[Eingangsrechnung erhalten: <itemvalue>_subject</itemvalue>]]></imixs:value>
</imixs:item>
<imixs:item name="keyaccessmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyscheduledactivity" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfmailbody" type="xs:string">
<imixs:value><![CDATA[Wir haben folgende Rechnung erhalten: bitte freigeben.
Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</itemvalue>)
<itemvalue>_description</itemvalue>]]></imixs:value>
</imixs:item>
<imixs:item name="keymailreceiverfields" type="xs:string"/>
<imixs:item name="keyversion" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="numnextactivityid" type="xs:int">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyfollowup" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[1]]></imixs:value>
</imixs:item>
<imixs:item name="keylogdateformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string"/>
<imixs:item name="numnextid" type="xs:int">
<imixs:value><![CDATA[5005]]></imixs:value>
</imixs:item>
<imixs:item name="txtnextprocesstree" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="action">home</item>]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Freigabe einholen]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Rechnungseingang]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_HvyhlA"><![CDATA[Digitalisierung einer neuen Eingangsrechnung]]></bpmn2:documentation>
<bpmn2:outgoing>sequenceFlow_Fdk05g</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_Fdk05g" sourceRef="event_HhuoiQ" targetRef="task_PsBytg">
<bpmn2:documentation id="documentation_9dc0sg"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateCatchEvent id="event_bYlo0w" imixs:activityid="40" name="Back">
<bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string">
@ -694,75 +550,6 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
</imixs-form-section>
</imixs-form>]]></bpmn2:documentation>
</bpmn2:dataObject>
<bpmn2:intermediateCatchEvent id="event_esmWYg" imixs:activityid="1" name="Save">
<bpmn2:extensionElements>
<imixs:item name="keylogtimeformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyarchive" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="txtmailsubject" type="xs:string">
<imixs:value><![CDATA[Eingangsrechnung erhalten: <itemvalue>_subject</itemvalue>]]></imixs:value>
</imixs:item>
<imixs:item name="keyaccessmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyscheduledactivity" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfmailbody" type="xs:string">
<imixs:value><![CDATA[Wir haben folgende Rechnung erhalten: bitte freigeben.
Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</itemvalue>)
<itemvalue>_description</itemvalue>]]></imixs:value>
</imixs:item>
<imixs:item name="keymailreceiverfields" type="xs:string"/>
<imixs:item name="keyversion" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddwritefields" type="xs:string"/>
<imixs:item name="numnextactivityid" type="xs:int">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyfollowup" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[1]]></imixs:value>
</imixs:item>
<imixs:item name="keylogdateformat" type="xs:string">
<imixs:value><![CDATA[2]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipfields" type="xs:string"/>
<imixs:item name="numnextid" type="xs:int">
<imixs:value><![CDATA[5005]]></imixs:value>
</imixs:item>
<imixs:item name="txtnextprocesstree" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="action">home</item>]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Freigabe einholen]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Rechnungseingang]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_N7xgRQ"><![CDATA[Digitalisierung einer neuen Eingangsrechnung]]></bpmn2:documentation>
<bpmn2:outgoing>sequenceFlow_zA065w</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_zA065w" sourceRef="event_esmWYg" targetRef="Task_4">
<bpmn2:documentation id="documentation_ACT8Kw"/>
</bpmn2:sequenceFlow>
<bpmn2:association id="association_NqDnFA" sourceRef="dataObject_vVKXIg" targetRef="Task_4">
<bpmn2:documentation id="documentation_y2gHkg"/>
</bpmn2:association>
@ -833,7 +620,13 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
<imixs:value><![CDATA[<imixs-ai name="PROMPT">
<endpoint>https://llama.cpp.imixs.com/</endpoint>
<result-event>XML</result-event>
<debug>true</debug>
</imixs-ai>
<imixs-ai name="SUGGEST">
<items>cdtr.name,invoice.number,invoice.date,invoice.total,payment.date,cdtr.iban,cdtr.bic,total</items>
<mode>ON</mode>
</imixs-ai>
<validation name="required">false</validation>
]]></imixs:value>
</imixs:item>
@ -916,7 +709,7 @@ Transfer the individual invoice data to the XML tags, taking into account the fo
- Invoice number ==> "invoice.number"
- Invoice Date ==> "invoice.date"
- Total ==> "invoice.total"
- Total ==> "invoice.total" (in EUR or if not available in USD or PLN)
- IBAN ==> "cdtr.iban"
- BIC or SWIFT ==> "cdtr.bic"
@ -1001,7 +794,7 @@ Transfer the individual invoice data to the XML tags, taking into account the fo
<version>rechnungseingang-de-1.2</version>
<task>5000</task>
<event>990</event>
</model>
</model>
]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
@ -1083,7 +876,8 @@ Transfer the individual invoice data to the XML tags, taking into account the fo
<imixs:value>false</imixs:value>
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<imixs-ai name="PROMPT">
<imixs:value><![CDATA[<validation name="required">false</validation>
<imixs-ai name="PROMPT">
<endpoint>https://llama.cpp.imixs.com/</endpoint>
<result-event>XML</result-event>
</imixs-ai>
@ -1214,7 +1008,7 @@ Note: Do not generate any other information instead of the XML object.
<endpoint>https://llama.cpp.imixs.com/</endpoint>
<result-item>invoice.summary</result-item>
</imixs-ai>
<item name="cdtr.name"><itemvalue>document.company</itemvalue></item>
<validation name="required">false</validation>
]]></imixs:value>
</imixs:item>
@ -1436,16 +1230,6 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
<bpmndi:BPMNShape bpmnElement="task_uB6BGQ" id="BPMNShape_027JKQ">
<dc:Bounds height="50.0" width="110.0" x="630.0" y="520.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_1Vp9Fg" id="BPMNShape_Lc826w">
<dc:Bounds height="36.0" width="36.0" x="667.0" y="617.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_mM6Waw">
<dc:Bounds height="20.0" width="100.0" x="634.0" y="658.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_30s7vA" id="BPMNEdge_Y0UmOg" sourceElement="BPMNShape_Lc826w" targetElement="BPMNShape_027JKQ">
<di:waypoint x="685.0" y="617.0"/>
<di:waypoint x="685.0" y="570.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="textAnnotation_CtU05A" id="BPMNShape_b8pQXg">
<dc:Bounds height="107.0" width="403.0" x="210.0" y="160.0"/>
</bpmndi:BPMNShape>
@ -1482,16 +1266,6 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
<di:waypoint x="945.0" y="605.0"/>
<di:waypoint x="945.0" y="570.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_HhuoiQ" id="BPMNShape_kxS7KQ">
<dc:Bounds height="36.0" width="36.0" x="927.0" y="417.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_6sp38g">
<dc:Bounds height="20.0" width="100.0" x="894.0" y="458.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_Fdk05g" id="BPMNEdge_lPAWcg" sourceElement="BPMNShape_kxS7KQ" targetElement="BPMNShape_AJWuJw">
<di:waypoint x="945.0" y="453.0"/>
<di:waypoint x="945.0" y="520.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_bYlo0w" id="BPMNShape_S9nkfw">
<dc:Bounds height="36.0" width="36.0" x="927.0" y="707.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_2yo8Aw">
@ -1528,16 +1302,6 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
<dc:Bounds height="20.0" width="100.0" x="1577.5" y="465.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_esmWYg" id="BPMNShape_6eMLSQ">
<dc:Bounds height="36.0" width="36.0" x="1607.0" y="627.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_bdCEaw">
<dc:Bounds height="20.0" width="100.0" x="1574.0" y="668.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_zA065w" id="BPMNEdge_b00LnQ" sourceElement="BPMNShape_6eMLSQ" targetElement="BPMNShape_Task_4">
<di:waypoint x="1625.0" y="627.0"/>
<di:waypoint x="1625.0" y="570.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="association_NqDnFA" id="BPMNEdge_Hu80mg" sourceElement="BPMNShape_xQVfDw" targetElement="BPMNShape_Task_4">
<di:waypoint x="1627.5" y="460.0"/>
<di:waypoint x="1627.5" y="490.0"/>

View file

@ -27,7 +27,7 @@ Transfer the individual invoice data to the XML tags, taking into account the fo
- Invoice number ==> "invoice.number"
- Invoice Date ==> "invoice.date"
- Total ==> "invoice.total"
- Total ==> "invoice.total" (in EUR or if not available in USD or PLN)
- IBAN ==> "cdtr.iban"
- BIC or SWIFT ==> "cdtr.bic"

View file

@ -812,6 +812,18 @@ result.isValid=true;
<item name="document.type" type="text" label="Doument Type: " />
<item name="document.language" type="text" label="Language: " />
</imixs-form-section>
<imixs-form-section columns="3">
<item name="invoice.number" type="text" label="Invoice No.:" />
<item name="invoice.date" type="date" label="Invoice Date:" />
<item name="invoice.duedate" type="date" label="Due date:" />
<item name="invoice.total" type="currency" required="true" label="Total:" />
<item name="invoice.currency" type="text" label="Currency:" />
</imixs-form-section>
<imixs-form-section columns="3">
<item name="cdtr.iban" type="text" label="IBAN:" />
<item name="cdtr.bic" type="text" label="BIC:" />
</imixs-form-section>
<imixs-form-section columns="1" label="Document Summary" readonly="true" >
<item name="invoice.summary" type="custom" path="markdown" />
@ -1092,20 +1104,23 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
<imixs:item name="txtbusinessrule" type="CDATA">
<imixs:item name="txtbusinessrule" type="xs:string">
<imixs:value><![CDATA[var result={};
result.isValid=true;
result.errorMessage="";
var paymentType=workitem.getItemValueString('payment.type');
var iban=workitem.getItemValueString('cdtr.iban');
var bic=workitem.getItemValueString('cdtr.bic');
// SEPA ?
if (workitem['payment.type'][0]!="direct_debit" && workitem['payment.type'][0]!="no_sepa" ) {
if ( workitem['cdtr.iban'][0]=='' || workitem['cdtr.bic'][0]=='' ) {
if (paymentType!="direct_debit" && paymentType!="no_sepa" ) {
if ( iban=='' || bic=='' ) {
result.isValid=false;
result.errorMessage='Bitte geben Sie eine gültige IBAN/BIC ein.';
}
// waerung?
if ( workitem['invoice.currency'][0]!='EUR' ) {
if ( workitem.getItemValueString('invoice.currency')!='EUR' ) {
result.isValid=false;
result.errorMessage=result.errorMessage+' Bei SEPA Zahlungen muss als Währung EUR angegeben werden.';
result.errorMessage=result.errorMessage+' Bei SEPA Zahlungen muss als Währung EUR angegeben werden. ='+ workitem.getItemValueString('invoice.currency') ;
}
}]]></imixs:value>
</imixs:item>
@ -1458,7 +1473,11 @@ Bei Fragen wenden Sie sich bitte an info@imixs.com
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<item name="comment" ignore="true"/>
<item name="process">Rechnungscontrolling</item>]]></imixs:value>
<item name="process">Rechnungscontrolling</item>
<imixs-ai name="SUGGEST">
<items>cdtr.name,invoice.number,invoice.date,invoice.total,payment.date,cdtr.iban,cdtr.bic,total</items>
<mode>ON</mode>
</imixs-ai>]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Speichern]]></imixs:value>