zahlungseingang
This commit is contained in:
parent
c124d06d74
commit
eb40432b74
7 changed files with 548 additions and 99 deletions
|
|
@ -1,6 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>office-alexander-logistics</artifactId>
|
<artifactId>office-alexander-logistics</artifactId>
|
||||||
|
|
@ -77,7 +76,7 @@
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</profile>
|
</profile>
|
||||||
|
|
||||||
<profile>
|
<profile>
|
||||||
<id>kubernetes</id>
|
<id>kubernetes</id>
|
||||||
<build>
|
<build>
|
||||||
|
|
@ -94,21 +93,17 @@
|
||||||
<exec executable="docker">
|
<exec executable="docker">
|
||||||
<arg value="build" />
|
<arg value="build" />
|
||||||
<arg value="-t" />
|
<arg value="-t" />
|
||||||
<arg
|
<arg value="imixs/${imixs-office.applicationname}:${project.version}" />
|
||||||
value="imixs/${imixs-office.applicationname}:${project.version}" />
|
|
||||||
<arg value="../." />
|
<arg value="../." />
|
||||||
</exec>
|
</exec>
|
||||||
<exec executable="docker">
|
<exec executable="docker">
|
||||||
<arg value="tag" />
|
<arg value="tag" />
|
||||||
<arg
|
<arg value="imixs/${imixs-office.applicationname}:${project.version}" />
|
||||||
value="imixs/${imixs-office.applicationname}:${project.version}" />
|
<arg value="${org.imixs.kubernetes.registry}/imixs/${imixs-office.applicationname}:${project.version}" />
|
||||||
<arg
|
|
||||||
value="${org.imixs.kubernetes.registry}/imixs/${imixs-office.applicationname}:${project.version}" />
|
|
||||||
</exec>
|
</exec>
|
||||||
<exec executable="docker">
|
<exec executable="docker">
|
||||||
<arg value="push" />
|
<arg value="push" />
|
||||||
<arg
|
<arg value="${org.imixs.kubernetes.registry}/imixs/${imixs-office.applicationname}:${project.version}" />
|
||||||
value="${org.imixs.kubernetes.registry}/imixs/${imixs-office.applicationname}:${project.version}" />
|
|
||||||
</exec>
|
</exec>
|
||||||
</target>
|
</target>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
@ -122,7 +117,7 @@
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</profile>
|
</profile>
|
||||||
|
|
||||||
</profiles>
|
</profiles>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
|
@ -137,9 +132,9 @@
|
||||||
<!-- this is relative to the pom.xml directory -->
|
<!-- this is relative to the pom.xml directory -->
|
||||||
<directory>${custom.webResources}</directory>
|
<directory>${custom.webResources}</directory>
|
||||||
<includes>
|
<includes>
|
||||||
<include>**/WEB-INF/*</include>
|
<include>**/WEB-INF/*</include>
|
||||||
<!-- include any other file types you want to filter -->
|
<!-- include any other file types you want to filter -->
|
||||||
</includes>
|
</includes>
|
||||||
</resource>
|
</resource>
|
||||||
</webResources>
|
</webResources>
|
||||||
<workDirectory>target/overlay-war-folder</workDirectory>
|
<workDirectory>target/overlay-war-folder</workDirectory>
|
||||||
|
|
@ -155,10 +150,45 @@
|
||||||
</overlays>
|
</overlays>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.imixs.maven</groupId>
|
||||||
|
<artifactId>manik-hotdeploy-maven-plugin</artifactId>
|
||||||
|
<version>2.0.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>install</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>deploy</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<!-- List Source and Target folders for Autodeploy and Hotdeploy -->
|
||||||
|
<autodeployments>
|
||||||
|
<deployment>
|
||||||
|
<!-- wildcard deployment -->
|
||||||
|
<source>target/*.{war,ear,jar}</source>
|
||||||
|
<target>../docker/deployments/</target>
|
||||||
|
<unpack>true</unpack>
|
||||||
|
</deployment>
|
||||||
|
</autodeployments>
|
||||||
|
<hotdeployments>
|
||||||
|
<deployment>
|
||||||
|
<source>src/main/webapp</source>
|
||||||
|
<target>../docker/deployments/office-alexander-logistics.war</target>
|
||||||
|
</deployment>
|
||||||
|
</hotdeployments>
|
||||||
|
|
||||||
|
</configuration>
|
||||||
|
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- Imixs Workflow -->
|
<!-- Imixs Workflow -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
@ -198,66 +228,66 @@
|
||||||
<type>jar</type>
|
<type>jar</type>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Imixs-Office-Workflow -->
|
<!-- Imixs-Office-Workflow -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.imixs.workflow</groupId>
|
<groupId>org.imixs.workflow</groupId>
|
||||||
<artifactId>imixs-office-workflow-app</artifactId>
|
<artifactId>imixs-office-workflow-app</artifactId>
|
||||||
<type>war</type>
|
<type>war</type>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.imixs.workflow</groupId>
|
<groupId>org.imixs.workflow</groupId>
|
||||||
<artifactId>imixs-office-workflow-util</artifactId>
|
<artifactId>imixs-office-workflow-util</artifactId>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Imixs-Archive -->
|
<!-- Imixs-Archive -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.imixs.workflow</groupId>
|
<groupId>org.imixs.workflow</groupId>
|
||||||
<artifactId>imixs-archive-api</artifactId>
|
<artifactId>imixs-archive-api</artifactId>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Imixs-Archive Documents -->
|
<!-- Imixs-Archive Documents -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.imixs.workflow</groupId>
|
<groupId>org.imixs.workflow</groupId>
|
||||||
<artifactId>imixs-archive-documents</artifactId>
|
<artifactId>imixs-archive-documents</artifactId>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Imixs-Archive Importer -->
|
<!-- Imixs-Archive Importer -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.imixs.workflow</groupId>
|
<groupId>org.imixs.workflow</groupId>
|
||||||
<artifactId>imixs-archive-importer</artifactId>
|
<artifactId>imixs-archive-importer</artifactId>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- SEPA Adapter -->
|
<!-- SEPA Adapter -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.imixs.workflow</groupId>
|
<groupId>org.imixs.workflow</groupId>
|
||||||
<artifactId>imixs-adapters-sepa</artifactId>
|
<artifactId>imixs-adapters-sepa</artifactId>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- DATEV Adapter -->
|
<!-- DATEV Adapter -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.imixs.workflow</groupId>
|
<groupId>org.imixs.workflow</groupId>
|
||||||
<artifactId>imixs-adapters-datev</artifactId>
|
<artifactId>imixs-adapters-datev</artifactId>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- QR Code -->
|
<!-- QR Code -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.imixs.workflow</groupId>
|
<groupId>org.imixs.workflow</groupId>
|
||||||
<artifactId>imixs-adapters-qrcode</artifactId>
|
<artifactId>imixs-adapters-qrcode</artifactId>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- POI Adapter -->
|
<!-- POI Adapter -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.imixs.workflow</groupId>
|
<groupId>org.imixs.workflow</groupId>
|
||||||
<artifactId>imixs-adapters-poi</artifactId>
|
<artifactId>imixs-adapters-poi</artifactId>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Imixs-ML -->
|
<!-- Imixs-ML -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.imixs.workflow</groupId>
|
<groupId>org.imixs.workflow</groupId>
|
||||||
|
|
@ -265,7 +295,7 @@
|
||||||
<version>${org.imixs.ml.version}</version>
|
<version>${org.imixs.ml.version}</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Apache PDFBox -->
|
<!-- Apache PDFBox -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.pdfbox</groupId>
|
<groupId>org.apache.pdfbox</groupId>
|
||||||
|
|
@ -273,7 +303,7 @@
|
||||||
<version>2.0.19</version>
|
<version>2.0.19</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- xsl 2.0 support -->
|
<!-- xsl 2.0 support -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.sf.saxon</groupId>
|
<groupId>net.sf.saxon</groupId>
|
||||||
|
|
@ -287,7 +317,7 @@
|
||||||
<groupId>commons-net</groupId>
|
<groupId>commons-net</groupId>
|
||||||
<artifactId>commons-net</artifactId>
|
<artifactId>commons-net</artifactId>
|
||||||
<version>3.6</version>
|
<version>3.6</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|
@ -19,9 +19,6 @@ import org.imixs.workflow.engine.WorkflowService;
|
||||||
import org.imixs.workflow.exceptions.QueryException;
|
import org.imixs.workflow.exceptions.QueryException;
|
||||||
import org.imixs.workflow.faces.data.WorkflowController;
|
import org.imixs.workflow.faces.data.WorkflowController;
|
||||||
import org.imixs.workflow.faces.data.WorkflowEvent;
|
import org.imixs.workflow.faces.data.WorkflowEvent;
|
||||||
import org.imixs.workflow.office.forms.ChildItemController;
|
|
||||||
import org.imixs.workflow.office.forms.WorkitemLinkController;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Der OPListeController dient dazu eine liste aller offenen Ausgangsrechnungen
|
* Der OPListeController dient dazu eine liste aller offenen Ausgangsrechnungen
|
||||||
|
|
@ -45,8 +42,6 @@ public class OPListController implements Serializable {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
public static final int TASK_ERSTELLUNG = 1000;
|
public static final int TASK_ERSTELLUNG = 1000;
|
||||||
public static final String ITEM_PAYMENT_DETAILS="payment.details";
|
|
||||||
|
|
||||||
private static Logger logger = Logger.getLogger(OPListController.class.getName());
|
private static Logger logger = Logger.getLogger(OPListController.class.getName());
|
||||||
|
|
||||||
private String lastDbtrNumber = null;
|
private String lastDbtrNumber = null;
|
||||||
|
|
@ -55,12 +50,13 @@ public class OPListController implements Serializable {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
protected WorkflowController workflowController;
|
protected WorkflowController workflowController;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
protected WorkflowService workflowService;
|
protected WorkflowService workflowService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
protected WorkitemLinkController workitemLinkController;
|
ZahlungseingangService zahlungseingangService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
protected DocumentService documentService;
|
protected DocumentService documentService;
|
||||||
|
|
||||||
|
|
@ -79,7 +75,7 @@ public class OPListController implements Serializable {
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public List<ItemCollection> getInvoices(String _dbtrNumber) {
|
public List<ItemCollection> getInvoices(String _dbtrNumber) {
|
||||||
|
|
||||||
// Compute all open invoices if TASK_ERSTELLUNG....
|
// Compute all open invoices if TASK_ERSTELLUNG....
|
||||||
if (workflowController.getWorkitem().getTaskID() == TASK_ERSTELLUNG) {
|
if (workflowController.getWorkitem().getTaskID() == TASK_ERSTELLUNG) {
|
||||||
|
|
||||||
|
|
@ -126,17 +122,17 @@ public class OPListController implements Serializable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// finally we set the 'selection' item depending on the $workitemList
|
// finally we set the 'selection' item depending on the $workitemList
|
||||||
// and the payment amount form the 'payment.details'
|
// and the payment amount form the 'payment.details'
|
||||||
List<String> selection = workflowController.getWorkitem().getItemValue("$workitemref");
|
List<String> selection = workflowController.getWorkitem().getItemValue("$workitemref");
|
||||||
List<ItemCollection> paymentList=explodePaymentDetails(workflowController.getWorkitem());
|
List<ItemCollection> paymentList = zahlungseingangService.loadPaymentDetails(workflowController.getWorkitem());
|
||||||
for (ItemCollection invoice : invoiceList) {
|
for (ItemCollection invoice : invoiceList) {
|
||||||
if (selection.contains(invoice.getUniqueID())) {
|
if (selection.contains(invoice.getUniqueID())) {
|
||||||
invoice.setItemValue("selected", true);
|
invoice.setItemValue("selected", true);
|
||||||
// set amount
|
// set amount
|
||||||
for (ItemCollection payment: paymentList) {
|
for (ItemCollection payment : paymentList) {
|
||||||
if (invoice.getUniqueID().equals(payment.getUniqueID())) {
|
if (invoice.getUniqueID().equals(payment.getUniqueID())) {
|
||||||
invoice.setItemValue("payment.amount",payment.getItemValue("payment.amount"));
|
invoice.setItemValue("payment.amount", payment.getItemValue("payment.amount"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -146,7 +142,6 @@ public class OPListController implements Serializable {
|
||||||
return invoiceList;
|
return invoiceList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * Liefert die Payments die mit diesem workitem verbunden sind...
|
// * Liefert die Payments die mit diesem workitem verbunden sind...
|
||||||
// * @return
|
// * @return
|
||||||
|
|
@ -169,30 +164,6 @@ public class OPListController implements Serializable {
|
||||||
// return result;
|
// return result;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
/**
|
|
||||||
* Convert the List of ItemCollections back into a List of Map elements
|
|
||||||
*
|
|
||||||
* @param workitem
|
|
||||||
*/
|
|
||||||
@SuppressWarnings({ "rawtypes" })
|
|
||||||
protected List<ItemCollection> explodePaymentDetails(ItemCollection workitem) {
|
|
||||||
// convert current list of childItems into ItemCollection elements
|
|
||||||
ArrayList<ItemCollection> childItems = new ArrayList<ItemCollection>();
|
|
||||||
|
|
||||||
List<Object> mapOrderItems = workitem.getItemValue(ITEM_PAYMENT_DETAILS);
|
|
||||||
int pos = 1;
|
|
||||||
for (Object mapOderItem : mapOrderItems) {
|
|
||||||
|
|
||||||
if (mapOderItem instanceof Map) {
|
|
||||||
ItemCollection itemCol = new ItemCollection((Map) mapOderItem);
|
|
||||||
itemCol.replaceItemValue("numPos", pos);
|
|
||||||
|
|
||||||
childItems.add(itemCol);
|
|
||||||
pos++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return childItems;
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* On Before Process we store the selected invoices in $worktiemRef
|
* On Before Process we store the selected invoices in $worktiemRef
|
||||||
*
|
*
|
||||||
|
|
@ -201,15 +172,14 @@ public class OPListController implements Serializable {
|
||||||
public void onWorkflowEvent(@Observes WorkflowEvent workflowEvent) {
|
public void onWorkflowEvent(@Observes WorkflowEvent workflowEvent) {
|
||||||
if (workflowEvent == null || workflowEvent.getWorkitem() == null) {
|
if (workflowEvent == null || workflowEvent.getWorkitem() == null) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
// store a collection of child items
|
// store a collection of child items if you are in a Zahlungseingang
|
||||||
if (workflowEvent.getEventType() == WorkflowEvent.WORKITEM_BEFORE_PROCESS) {
|
if (workflowEvent.getWorkitem().getModelVersion().startsWith("zahlungseingang")
|
||||||
|
&& workflowEvent.getEventType() == WorkflowEvent.WORKITEM_BEFORE_PROCESS) {
|
||||||
updateChildList(workflowEvent.getWorkitem());
|
updateChildList(workflowEvent.getWorkitem());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemCollection loadInvoice(String id) {
|
public ItemCollection loadInvoice(String id) {
|
||||||
return documentService.load(id);
|
return documentService.load(id);
|
||||||
}
|
}
|
||||||
|
|
@ -240,9 +210,9 @@ public class OPListController implements Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
// rond with 2 digits
|
// rond with 2 digits
|
||||||
workitem.replaceItemValue("payment.total", Math.round(paymentTotal * 100.0) / 100.0);
|
workitem.replaceItemValue("payment.total", Math.round(paymentTotal * 100.0) / 100.0);
|
||||||
// update childitems
|
// update childitems
|
||||||
workitem.replaceItemValue(ITEM_PAYMENT_DETAILS, mapInvoiceItems);
|
workitem.replaceItemValue(ZahlungseingangService.ITEM_PAYMENT_DETAILS, mapInvoiceItems);
|
||||||
// Update $workitemref
|
// Update $workitemref
|
||||||
workitem.setItemValue("$workitemref", selectionList);
|
workitem.setItemValue("$workitemref", selectionList);
|
||||||
}
|
}
|
||||||
|
|
@ -263,6 +233,15 @@ public class OPListController implements Serializable {
|
||||||
workflowController.getWorkitem().setItemValue("dbtr.number", dbtrNumber);
|
workflowController.getWorkitem().setItemValue("dbtr.number", dbtrNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hilfsmethode delegates to ZahlungseingangServcie
|
||||||
|
* @param payment
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<ItemCollection> loadPaymentDetails(ItemCollection payment) {
|
||||||
|
return zahlungseingangService.loadPaymentDetails(payment);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Berechnet den gesammten OP Saldo
|
* Berechnet den gesammten OP Saldo
|
||||||
*
|
*
|
||||||
|
|
@ -278,5 +257,4 @@ public class OPListController implements Serializable {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,105 @@
|
||||||
|
package com.alexanderlogistics;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import org.imixs.workflow.ItemCollection;
|
||||||
|
import org.imixs.workflow.SignalAdapter;
|
||||||
|
import org.imixs.workflow.exceptions.AdapterException;
|
||||||
|
import org.imixs.workflow.exceptions.PluginException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Der ZahlungseingangSaldoAdapter korrigiert den Saldo einer Ausgangsrechnung
|
||||||
|
* anhand der Zahlungsdaten in einem Zahlungseingangsworkflow.
|
||||||
|
* <p>
|
||||||
|
* Die verknüpften Rechnungen in einem Zahlungseingang können am Item
|
||||||
|
* $workitemref ermittelt werden.
|
||||||
|
* <p>
|
||||||
|
* Relevant für den Abgleich sin die felder:
|
||||||
|
* <ul>
|
||||||
|
* <li>invoice.currency
|
||||||
|
* <li>payment.amount
|
||||||
|
* <p>
|
||||||
|
* <code>com.alexanderlogistics.ZahlungseingangSaldoAdapter</code>
|
||||||
|
*
|
||||||
|
* @version 1.0
|
||||||
|
* @author rsoika
|
||||||
|
*/
|
||||||
|
public class ZahlungseingangSaldoAdapter implements SignalAdapter {
|
||||||
|
|
||||||
|
private static Logger logger = Logger.getLogger(ZahlungseingangSaldoAdapter.class.getName());
|
||||||
|
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
ZahlungseingangService zahlungseingangService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method finds the outgoing invoicdes and updates the saldo
|
||||||
|
* (payment.total).
|
||||||
|
*
|
||||||
|
* @throws PluginException
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ItemCollection execute(ItemCollection document, ItemCollection event)
|
||||||
|
throws AdapterException, PluginException {
|
||||||
|
|
||||||
|
updateSaldo(document);
|
||||||
|
|
||||||
|
return document;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Diese method hängt eine referenz der aktuellen Rechnung an den Zahlungsavis
|
||||||
|
*
|
||||||
|
* @param document
|
||||||
|
* @throws PluginException
|
||||||
|
*/
|
||||||
|
private void updateSaldo(ItemCollection document) throws PluginException {
|
||||||
|
|
||||||
|
// payment currency
|
||||||
|
String paymentCurrency = document.getItemValueString("payment.currency");
|
||||||
|
|
||||||
|
List<ItemCollection> paymentDetails = zahlungseingangService.loadPaymentDetails(document);
|
||||||
|
|
||||||
|
logger.info("......Updating " + paymentDetails.size() + " outgoing invoices....");
|
||||||
|
for (ItemCollection payment : paymentDetails) {
|
||||||
|
|
||||||
|
ItemCollection invoice = zahlungseingangService.findInvoice(payment.getUniqueID());
|
||||||
|
|
||||||
|
if (invoice != null) {
|
||||||
|
String invoiceNumber = invoice.getItemValueString("invoice.number");
|
||||||
|
String invoiceCurrency = invoice.getItemValueString("invoice.currency");
|
||||||
|
|
||||||
|
if (!invoiceCurrency.equals(paymentCurrency)) {
|
||||||
|
throw new PluginException(PluginException.class.getName(),ZahlungseingangService.ERROR_PAYMENT_BOOKING_FAILED,
|
||||||
|
"Der Zahlungseingang kann nicht verbucht werden, da die Währung " + paymentCurrency
|
||||||
|
+ " nicht mit der Währung der Rechnung " + invoiceNumber + " übereinstimmt!");
|
||||||
|
}
|
||||||
|
|
||||||
|
float invoiceSaldo = invoice.getItemValueFloat("invoice.saldo");
|
||||||
|
float paymentAmount = payment.getItemValueFloat("payment.amount");
|
||||||
|
|
||||||
|
if (Math.abs(paymentAmount) > Math.abs(invoiceSaldo)) {
|
||||||
|
throw new PluginException(PluginException.class.getName(), ZahlungseingangService.ERROR_PAYMENT_BOOKING_FAILED,
|
||||||
|
"Der Zahlungseingang kann nicht verbucht werden, da der Restsaldo der Rechnung "
|
||||||
|
+ invoiceNumber + " kleiner als der Zahlbetrag ist!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
invoiceSaldo=invoiceSaldo-paymentAmount;
|
||||||
|
invoice.setItemValue("invoice.saldo", invoiceSaldo);
|
||||||
|
invoice.event(ZahlungseingangService.EVENT_UPDATE_INVOICE);
|
||||||
|
zahlungseingangService.processInvoice(invoice);
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
throw new PluginException(PluginException.class.getName(), ZahlungseingangService.ERROR_PAYMENT_BOOKING_FAILED,
|
||||||
|
"Rechnung konnte nicht gefunden werden!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,134 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Imixs Workflow
|
||||||
|
* Copyright (C) 2001, 2011 Imixs Software Solutions GmbH,
|
||||||
|
* http://www.imixs.com
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* General Public License for more details.
|
||||||
|
*
|
||||||
|
* You can receive a copy of the GNU General Public
|
||||||
|
* License at http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
* Project:
|
||||||
|
* http://www.imixs.org
|
||||||
|
* http://java.net/projects/imixs-workflow
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Imixs Software Solutions GmbH - initial API and implementation
|
||||||
|
* Ralph Soika - Software Developer
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
package com.alexanderlogistics;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import javax.annotation.security.DeclareRoles;
|
||||||
|
import javax.annotation.security.RolesAllowed;
|
||||||
|
import javax.annotation.security.RunAs;
|
||||||
|
import javax.ejb.Singleton;
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import org.imixs.workflow.ItemCollection;
|
||||||
|
import org.imixs.workflow.engine.DocumentService;
|
||||||
|
import org.imixs.workflow.engine.WorkflowService;
|
||||||
|
import org.imixs.workflow.exceptions.AccessDeniedException;
|
||||||
|
import org.imixs.workflow.exceptions.ModelException;
|
||||||
|
import org.imixs.workflow.exceptions.PluginException;
|
||||||
|
import org.imixs.workflow.exceptions.ProcessingErrorException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Der ZahlungseingangService wird vom ZahlungseingangSaldoAdapter verwendet um
|
||||||
|
* Ausgangsrechnungen zu akutalisieren.
|
||||||
|
*
|
||||||
|
* @author rsoika
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@DeclareRoles({ "org.imixs.ACCESSLEVEL.NOACCESS", "org.imixs.ACCESSLEVEL.READERACCESS",
|
||||||
|
"org.imixs.ACCESSLEVEL.AUTHORACCESS", "org.imixs.ACCESSLEVEL.EDITORACCESS",
|
||||||
|
"org.imixs.ACCESSLEVEL.MANAGERACCESS" })
|
||||||
|
@RolesAllowed({ "org.imixs.ACCESSLEVEL.NOACCESS", "org.imixs.ACCESSLEVEL.READERACCESS",
|
||||||
|
"org.imixs.ACCESSLEVEL.AUTHORACCESS", "org.imixs.ACCESSLEVEL.EDITORACCESS",
|
||||||
|
"org.imixs.ACCESSLEVEL.MANAGERACCESS" })
|
||||||
|
@Singleton
|
||||||
|
@RunAs("org.imixs.ACCESSLEVEL.MANAGERACCESS")
|
||||||
|
public class ZahlungseingangService {
|
||||||
|
|
||||||
|
public static final int EVENT_UPDATE_INVOICE = 200;
|
||||||
|
public static final String ERROR_PAYMENT_BOOKING_FAILED = "PAYMENT_BOOKING_FAILED";
|
||||||
|
public static final String ITEM_PAYMENT_DETAILS = "payment.details";
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private static Logger logger = Logger.getLogger(ZahlungseingangService.class.getName());
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DocumentService documentService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
WorkflowService workflowService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Diese Method sucht eine Invoice mit Manager Rechnten
|
||||||
|
*
|
||||||
|
* @throws PluginException
|
||||||
|
*/
|
||||||
|
public ItemCollection findInvoice(String id) throws PluginException {
|
||||||
|
|
||||||
|
return documentService.load(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* * Diese Method processed eine Invoice mit Manager Rechnten
|
||||||
|
*
|
||||||
|
* @throws PluginException
|
||||||
|
* @throws ModelException
|
||||||
|
* @throws ProcessingErrorException
|
||||||
|
* @throws AccessDeniedException
|
||||||
|
*/
|
||||||
|
public ItemCollection processInvoice(ItemCollection invoice) throws PluginException {
|
||||||
|
try {
|
||||||
|
return workflowService.processWorkItem(invoice);
|
||||||
|
} catch (AccessDeniedException | ProcessingErrorException | PluginException | ModelException e) {
|
||||||
|
throw new PluginException(PluginException.class.getName(), ERROR_PAYMENT_BOOKING_FAILED,
|
||||||
|
"Der Rechnungs Saldo konnte nicht korrekt verbucht werden - " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The method returns a List of ItemCollection holding the payment details
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Convert the List of ItemCollections back into a List of Map elements
|
||||||
|
*
|
||||||
|
* @param invoice
|
||||||
|
*/
|
||||||
|
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||||
|
public List<ItemCollection> loadPaymentDetails(ItemCollection payment) {
|
||||||
|
ArrayList<ItemCollection> childItems = new ArrayList<ItemCollection>();
|
||||||
|
|
||||||
|
List<Map> mapOrderItems = payment.getItemValue(ITEM_PAYMENT_DETAILS);
|
||||||
|
int pos = 1;
|
||||||
|
for (Object mapOderItem : mapOrderItems) {
|
||||||
|
|
||||||
|
if (mapOderItem instanceof Map) {
|
||||||
|
ItemCollection itemCol = new ItemCollection((Map) mapOderItem);
|
||||||
|
itemCol.replaceItemValue("numPos", pos);
|
||||||
|
|
||||||
|
childItems.add(itemCol);
|
||||||
|
pos++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return childItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -15,14 +15,15 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<table class="imixsdatatable imixs-orderitems">
|
<table class="imixsdatatable ">
|
||||||
|
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th style="width: 20px;">#</th>
|
|
||||||
<th style="">Datum<span class="imixs-required"> *</span></th>
|
|
||||||
<th style="width: 100px;">Betrag</th>
|
|
||||||
|
|
||||||
|
<th style="">Zahlungseingang</th>
|
||||||
|
<th>Referenz</th>
|
||||||
|
<th style="width: 100px;">Betrag</th>
|
||||||
|
<th style="width: 100px;">Zahlung</th>
|
||||||
<th style="width: 40px;">Währung</th>
|
<th style="width: 40px;">Währung</th>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -32,23 +33,52 @@
|
||||||
<ui:repeat var="payment_stub" value="#{payments}">
|
<ui:repeat var="payment_stub" value="#{payments}">
|
||||||
<ui:param name="payment"
|
<ui:param name="payment"
|
||||||
value="#{opListController.loadInvoice(payment_stub.getUniqueID())}"></ui:param>
|
value="#{opListController.loadInvoice(payment_stub.getUniqueID())}"></ui:param>
|
||||||
|
|
||||||
|
<ui:param name="paymentDetails"
|
||||||
|
value="#{opListController.loadPaymentDetails(payment)}"></ui:param>
|
||||||
|
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><h:link outcome="/pages/workitems/workitem">
|
<td><h:link outcome="/pages/workitems/workitem">
|
||||||
#{payment.item['name']}
|
#{payment.item['$workflowsummary']}
|
||||||
<f:param name="id" value="#{payment.item['$uniqueid']}" />
|
<f:param name="id" value="#{payment.item['$uniqueid']}" />
|
||||||
</h:link></td>
|
</h:link></td>
|
||||||
<td>#{payment.item['payment.total']}
|
|
||||||
</td>
|
<td><h:outputText
|
||||||
|
value="#{payment.item['name']}" /></td>
|
||||||
|
|
||||||
|
<td style="text-align: right;"><h:outputText
|
||||||
|
value="#{payment.item['payment.total']}">
|
||||||
|
<f:convertNumber minFractionDigits="2" locale="de" />
|
||||||
|
</h:outputText></td>
|
||||||
|
|
||||||
|
<!-- show payment amount of corresponding invoice entry -->
|
||||||
|
<ui:repeat var="paymentDetail" value="#{paymentDetails}">
|
||||||
|
<ui:fragment
|
||||||
|
rendered="#{paymentDetail.item['$uniqueid'] eq workitem.item['$uniqueid']}">
|
||||||
|
|
||||||
|
<td style="text-align: right;"><h:outputText
|
||||||
|
value="#{paymentDetail.item['payment.amount']}">
|
||||||
|
<f:convertNumber minFractionDigits="2" locale="de" />
|
||||||
|
</h:outputText></td>
|
||||||
|
</ui:fragment>
|
||||||
|
</ui:repeat>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<td style="text-align: right;"><h:outputText
|
||||||
|
value="#{payment.item['payment.currency']}" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
</ui:repeat>
|
</ui:repeat>
|
||||||
|
|
||||||
<!-- summary -->
|
<!-- summary -->
|
||||||
<tr>
|
<tr>
|
||||||
<td />
|
<td />
|
||||||
<td style="text-align: right;">Summe:</td>
|
<td />
|
||||||
|
<td style="text-align: right;font-weight:bold;">Saldo:</td>
|
||||||
|
|
||||||
<td class="orderlist_summary" style="text-align: right;"><h:outputText
|
<td class="" style="text-align: right;"><h:outputText
|
||||||
value="#{workitem.item['invoice.total']}">
|
value="#{workitem.item['invoice.saldo']}">
|
||||||
<f:convertNumber minFractionDigits="2" locale="de" />
|
<f:convertNumber minFractionDigits="2" locale="de" />
|
||||||
</h:outputText></td>
|
</h:outputText></td>
|
||||||
<td />
|
<td />
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@
|
||||||
<bpmn2:flowNodeRef>ExclusiveGateway_4</bpmn2:flowNodeRef>
|
<bpmn2:flowNodeRef>ExclusiveGateway_4</bpmn2:flowNodeRef>
|
||||||
<bpmn2:flowNodeRef>IntermediateThrowEvent_3</bpmn2:flowNodeRef>
|
<bpmn2:flowNodeRef>IntermediateThrowEvent_3</bpmn2:flowNodeRef>
|
||||||
<bpmn2:flowNodeRef>IntermediateCatchEvent_18</bpmn2:flowNodeRef>
|
<bpmn2:flowNodeRef>IntermediateCatchEvent_18</bpmn2:flowNodeRef>
|
||||||
|
<bpmn2:flowNodeRef>IntermediateCatchEvent_1</bpmn2:flowNodeRef>
|
||||||
</bpmn2:lane>
|
</bpmn2:lane>
|
||||||
<bpmn2:lane id="Lane_6" name="Bereich Manager">
|
<bpmn2:lane id="Lane_6" name="Bereich Manager">
|
||||||
<bpmn2:flowNodeRef>Task_3</bpmn2:flowNodeRef>
|
<bpmn2:flowNodeRef>Task_3</bpmn2:flowNodeRef>
|
||||||
|
|
@ -314,6 +315,7 @@ Bei Fragen wenden Sie sich bitte an info@imixs.com
|
||||||
<bpmn2:incoming>SequenceFlow_33</bpmn2:incoming>
|
<bpmn2:incoming>SequenceFlow_33</bpmn2:incoming>
|
||||||
<bpmn2:incoming>SequenceFlow_20</bpmn2:incoming>
|
<bpmn2:incoming>SequenceFlow_20</bpmn2:incoming>
|
||||||
<bpmn2:incoming>SequenceFlow_44</bpmn2:incoming>
|
<bpmn2:incoming>SequenceFlow_44</bpmn2:incoming>
|
||||||
|
<bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
|
||||||
<bpmn2:outgoing>SequenceFlow_39</bpmn2:outgoing>
|
<bpmn2:outgoing>SequenceFlow_39</bpmn2:outgoing>
|
||||||
<bpmn2:outgoing>SequenceFlow_46</bpmn2:outgoing>
|
<bpmn2:outgoing>SequenceFlow_46</bpmn2:outgoing>
|
||||||
<bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
|
<bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
|
||||||
|
|
@ -1513,6 +1515,78 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
|
||||||
</bpmn2:intermediateThrowEvent>
|
</bpmn2:intermediateThrowEvent>
|
||||||
<bpmn2:sequenceFlow id="SequenceFlow_58" sourceRef="Task_5005" targetRef="IntermediateThrowEvent_2"/>
|
<bpmn2:sequenceFlow id="SequenceFlow_58" sourceRef="Task_5005" targetRef="IntermediateThrowEvent_2"/>
|
||||||
<bpmn2:sequenceFlow id="SequenceFlow_2" sourceRef="Task_2" targetRef="IntermediateCatchEvent_8"/>
|
<bpmn2:sequenceFlow id="SequenceFlow_2" sourceRef="Task_2" targetRef="IntermediateCatchEvent_8"/>
|
||||||
|
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1" imixs:activityid="200" name="[UpdatePayment]">
|
||||||
|
<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[]]></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[]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyversion" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[0]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyaddwritefields" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[$creator]]></imixs:value>
|
||||||
|
<imixs:value><![CDATA[$editor]]></imixs:value>
|
||||||
|
<imixs:value><![CDATA[process.manager]]></imixs:value>
|
||||||
|
<imixs:value><![CDATA[process.team]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<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:value><![CDATA[$editor]]></imixs:value>
|
||||||
|
<imixs:value><![CDATA[$creator]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="numnextid" type="xs:int">
|
||||||
|
<imixs:value><![CDATA[5000]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtnextprocesstree" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtactivityresult" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[<item name="comment" ignore="true"/>]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtname" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[Speichern]]></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[Zahlungseingang verbucht]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyupdateacl" type="xs:boolean">
|
||||||
|
<imixs:value>false</imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keymailreceiverfields" type="xs:string"/>
|
||||||
|
</bpmn2:extensionElements>
|
||||||
|
<bpmn2:documentation id="Documentation_12"><![CDATA[Zwischenspeichern]]></bpmn2:documentation>
|
||||||
|
<bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
|
||||||
|
</bpmn2:intermediateCatchEvent>
|
||||||
|
<bpmn2:sequenceFlow id="SequenceFlow_6" sourceRef="IntermediateCatchEvent_1" targetRef="Task_2"/>
|
||||||
<bpmn2:association id="Association_2" sourceRef="DataObject_2" targetRef="Task_2"/>
|
<bpmn2:association id="Association_2" sourceRef="DataObject_2" targetRef="Task_2"/>
|
||||||
</bpmn2:process>
|
</bpmn2:process>
|
||||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
|
|
@ -1753,6 +1827,12 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
|
||||||
<dc:Bounds height="14.0" width="51.0" x="353.0" y="836.0"/>
|
<dc:Bounds height="14.0" width="51.0" x="353.0" y="836.0"/>
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_3" bpmnElement="IntermediateCatchEvent_1">
|
||||||
|
<dc:Bounds height="36.0" width="36.0" x="423.0" y="276.0"/>
|
||||||
|
<bpmndi:BPMNLabel id="BPMNLabel_4">
|
||||||
|
<dc:Bounds height="28.0" width="51.0" x="416.0" y="312.0"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_0" sourceElement="BPMNShape_StartEvent_1" targetElement="BPMNShape_ExclusiveGateway_1">
|
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_0" sourceElement="BPMNShape_StartEvent_1" targetElement="BPMNShape_ExclusiveGateway_1">
|
||||||
<di:waypoint xsi:type="dc:Point" x="155.0" y="205.0"/>
|
<di:waypoint xsi:type="dc:Point" x="155.0" y="205.0"/>
|
||||||
<di:waypoint xsi:type="dc:Point" x="187.0" y="205.0"/>
|
<di:waypoint xsi:type="dc:Point" x="187.0" y="205.0"/>
|
||||||
|
|
@ -1986,6 +2066,12 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
|
||||||
<di:waypoint xsi:type="dc:Point" x="342.0" y="649.0"/>
|
<di:waypoint xsi:type="dc:Point" x="342.0" y="649.0"/>
|
||||||
<bpmndi:BPMNLabel id="BPMNLabel_2"/>
|
<bpmndi:BPMNLabel id="BPMNLabel_2"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_6" sourceElement="BPMNShape_IntermediateCatchEvent_3" targetElement="BPMNShape_Task_5">
|
||||||
|
<di:waypoint xsi:type="dc:Point" x="441.0" y="276.0"/>
|
||||||
|
<di:waypoint xsi:type="dc:Point" x="441.0" y="213.0"/>
|
||||||
|
<di:waypoint xsi:type="dc:Point" x="418.0" y="213.0"/>
|
||||||
|
<bpmndi:BPMNLabel id="BPMNLabel_7"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNPlane>
|
||||||
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
|
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
|
||||||
<dc:Font name="arial" size="9.0"/>
|
<dc:Font name="arial" size="9.0"/>
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@
|
||||||
</imixs:item>
|
</imixs:item>
|
||||||
</bpmn2:extensionElements>
|
</bpmn2:extensionElements>
|
||||||
<bpmn2:signal id="Signal_1" name="com.alexanderlogistics.ZahlungsavisExportAdapter"/>
|
<bpmn2:signal id="Signal_1" name="com.alexanderlogistics.ZahlungsavisExportAdapter"/>
|
||||||
|
<bpmn2:signal id="Signal_2" name="com.alexanderlogistics.ZahlungseingangSaldoAdapter"/>
|
||||||
<bpmn2:message id="Message_6" name="SEPA-Body">
|
<bpmn2:message id="Message_6" name="SEPA-Body">
|
||||||
<bpmn2:documentation id="Documentation_15"><![CDATA[Der folgende SEPA Lauf wurde für die Verarbeitung fertiggestellt:
|
<bpmn2:documentation id="Documentation_15"><![CDATA[Der folgende SEPA Lauf wurde für die Verarbeitung fertiggestellt:
|
||||||
|
|
||||||
|
|
@ -63,6 +64,7 @@
|
||||||
<bpmn2:flowNodeRef>Task_1</bpmn2:flowNodeRef>
|
<bpmn2:flowNodeRef>Task_1</bpmn2:flowNodeRef>
|
||||||
<bpmn2:flowNodeRef>IntermediateCatchEvent_3</bpmn2:flowNodeRef>
|
<bpmn2:flowNodeRef>IntermediateCatchEvent_3</bpmn2:flowNodeRef>
|
||||||
<bpmn2:flowNodeRef>EventBasedGateway_1</bpmn2:flowNodeRef>
|
<bpmn2:flowNodeRef>EventBasedGateway_1</bpmn2:flowNodeRef>
|
||||||
|
<bpmn2:flowNodeRef>IntermediateCatchEvent_1</bpmn2:flowNodeRef>
|
||||||
</bpmn2:lane>
|
</bpmn2:lane>
|
||||||
</bpmn2:laneSet>
|
</bpmn2:laneSet>
|
||||||
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5" imixs:activityid="30" name="Stornieren">
|
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5" imixs:activityid="30" name="Stornieren">
|
||||||
|
|
@ -217,6 +219,7 @@ result.isValid=true;
|
||||||
<bpmn2:documentation id="Documentation_3"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
|
<bpmn2:documentation id="Documentation_3"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
|
||||||
<bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
|
<bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
|
||||||
<bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
|
<bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
|
||||||
|
<bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
|
||||||
<bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
|
<bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
|
||||||
</bpmn2:task>
|
</bpmn2:task>
|
||||||
<bpmn2:sequenceFlow id="SequenceFlow_1" sourceRef="Task_1" targetRef="EventBasedGateway_1"/>
|
<bpmn2:sequenceFlow id="SequenceFlow_1" sourceRef="Task_1" targetRef="EventBasedGateway_1"/>
|
||||||
|
|
@ -494,6 +497,77 @@ result.isValid=true;
|
||||||
</imixs-form>]]></bpmn2:documentation>
|
</imixs-form>]]></bpmn2:documentation>
|
||||||
<bpmn2:dataState id="DataState_1"/>
|
<bpmn2:dataState id="DataState_1"/>
|
||||||
</bpmn2:dataObject>
|
</bpmn2:dataObject>
|
||||||
|
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1" imixs:activityid="40" name="Test Adapter">
|
||||||
|
<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[]]></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[]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<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[5000]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtnextprocesstree" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtactivityresult" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[<item name="comment" ignore="true"/>]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="txtname" type="xs:string">
|
||||||
|
<imixs:value><![CDATA[Speichern]]></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[]]></imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
<imixs:item name="keyupdateacl" type="xs:boolean">
|
||||||
|
<imixs:value>false</imixs:value>
|
||||||
|
</imixs:item>
|
||||||
|
</bpmn2:extensionElements>
|
||||||
|
<bpmn2:documentation id="Documentation_1"><![CDATA[Zwischenspeichern]]></bpmn2:documentation>
|
||||||
|
<bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
|
||||||
|
<bpmn2:dataOutput id="DataOutput_1" name="Signal_1_Output"/>
|
||||||
|
<bpmn2:dataOutputAssociation id="DataOutputAssociation_1">
|
||||||
|
<bpmn2:sourceRef>DataOutput_1</bpmn2:sourceRef>
|
||||||
|
</bpmn2:dataOutputAssociation>
|
||||||
|
<bpmn2:outputSet id="OutputSet_2" name="Output Set 2">
|
||||||
|
<bpmn2:dataOutputRefs>DataOutput_1</bpmn2:dataOutputRefs>
|
||||||
|
</bpmn2:outputSet>
|
||||||
|
<bpmn2:signalEventDefinition id="SignalEventDefinition_1" signalRef="Signal_2"/>
|
||||||
|
</bpmn2:intermediateCatchEvent>
|
||||||
|
<bpmn2:sequenceFlow id="SequenceFlow_3" sourceRef="IntermediateCatchEvent_1" targetRef="Task_1"/>
|
||||||
<bpmn2:association id="Association_2" sourceRef="DataObject_1" targetRef="Task_1"/>
|
<bpmn2:association id="Association_2" sourceRef="DataObject_1" targetRef="Task_1"/>
|
||||||
</bpmn2:process>
|
</bpmn2:process>
|
||||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1" name="Default Process Diagram">
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1" name="Default Process Diagram">
|
||||||
|
|
@ -586,6 +660,12 @@ result.isValid=true;
|
||||||
<dc:Bounds height="14.0" width="28.0" x="294.0" y="238.0"/>
|
<dc:Bounds height="14.0" width="28.0" x="294.0" y="238.0"/>
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="BPMNShape_IntermediateCatchEvent_1" bpmnElement="IntermediateCatchEvent_1">
|
||||||
|
<dc:Bounds height="36.0" width="36.0" x="440.0" y="392.0"/>
|
||||||
|
<bpmndi:BPMNLabel id="BPMNLabel_2">
|
||||||
|
<dc:Bounds height="14.0" width="67.0" x="425.0" y="428.0"/>
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="BPMNShape_Task_1" targetElement="BPMNShape_EventBasedGateway_1">
|
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="BPMNShape_Task_1" targetElement="BPMNShape_EventBasedGateway_1">
|
||||||
<di:waypoint xsi:type="dc:Point" x="400.0" y="319.0"/>
|
<di:waypoint xsi:type="dc:Point" x="400.0" y="319.0"/>
|
||||||
<di:waypoint xsi:type="dc:Point" x="470.0" y="319.0"/>
|
<di:waypoint xsi:type="dc:Point" x="470.0" y="319.0"/>
|
||||||
|
|
@ -652,6 +732,12 @@ result.isValid=true;
|
||||||
<di:waypoint xsi:type="dc:Point" x="345.0" y="294.0"/>
|
<di:waypoint xsi:type="dc:Point" x="345.0" y="294.0"/>
|
||||||
<bpmndi:BPMNLabel id="BPMNLabel_17"/>
|
<bpmndi:BPMNLabel id="BPMNLabel_17"/>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="BPMNShape_IntermediateCatchEvent_1" targetElement="BPMNShape_Task_1">
|
||||||
|
<di:waypoint xsi:type="dc:Point" x="458.0" y="392.0"/>
|
||||||
|
<di:waypoint xsi:type="dc:Point" x="458.0" y="327.0"/>
|
||||||
|
<di:waypoint xsi:type="dc:Point" x="400.0" y="327.0"/>
|
||||||
|
<bpmndi:BPMNLabel id="BPMNLabel_7"/>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNPlane>
|
||||||
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
|
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
|
||||||
<dc:Font name="arial" size="9.0"/>
|
<dc:Font name="arial" size="9.0"/>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue