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"?>
|
||||
<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">
|
||||
<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">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<artifactId>office-alexander-logistics</artifactId>
|
||||
|
|
@ -77,7 +76,7 @@
|
|||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
|
||||
|
||||
<profile>
|
||||
<id>kubernetes</id>
|
||||
<build>
|
||||
|
|
@ -94,21 +93,17 @@
|
|||
<exec executable="docker">
|
||||
<arg value="build" />
|
||||
<arg value="-t" />
|
||||
<arg
|
||||
value="imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
<arg value="imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
<arg value="../." />
|
||||
</exec>
|
||||
<exec executable="docker">
|
||||
<arg value="tag" />
|
||||
<arg
|
||||
value="imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
<arg
|
||||
value="${org.imixs.kubernetes.registry}/imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
<arg value="imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
<arg value="${org.imixs.kubernetes.registry}/imixs/${imixs-office.applicationname}:${project.version}" />
|
||||
</exec>
|
||||
<exec executable="docker">
|
||||
<arg value="push" />
|
||||
<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>
|
||||
</target>
|
||||
</configuration>
|
||||
|
|
@ -122,7 +117,7 @@
|
|||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
|
||||
|
||||
</profiles>
|
||||
<build>
|
||||
<plugins>
|
||||
|
|
@ -137,9 +132,9 @@
|
|||
<!-- this is relative to the pom.xml directory -->
|
||||
<directory>${custom.webResources}</directory>
|
||||
<includes>
|
||||
<include>**/WEB-INF/*</include>
|
||||
<!-- include any other file types you want to filter -->
|
||||
</includes>
|
||||
<include>**/WEB-INF/*</include>
|
||||
<!-- include any other file types you want to filter -->
|
||||
</includes>
|
||||
</resource>
|
||||
</webResources>
|
||||
<workDirectory>target/overlay-war-folder</workDirectory>
|
||||
|
|
@ -155,10 +150,45 @@
|
|||
</overlays>
|
||||
</configuration>
|
||||
</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>
|
||||
</build>
|
||||
|
||||
|
||||
|
||||
|
||||
<dependencies>
|
||||
<!-- Imixs Workflow -->
|
||||
<dependency>
|
||||
|
|
@ -198,66 +228,66 @@
|
|||
<type>jar</type>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Imixs-Office-Workflow -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-office-workflow-app</artifactId>
|
||||
<type>war</type>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-office-workflow-util</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Imixs-Archive -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-archive-api</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Imixs-Archive Documents -->
|
||||
</dependency>
|
||||
|
||||
<!-- Imixs-Archive Documents -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-archive-documents</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Imixs-Archive Importer -->
|
||||
</dependency>
|
||||
|
||||
<!-- Imixs-Archive Importer -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-archive-importer</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependency>
|
||||
|
||||
<!-- SEPA Adapter -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-sepa</artifactId>
|
||||
<scope>compile</scope>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-sepa</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<!-- DATEV Adapter -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-datev</artifactId>
|
||||
<scope>compile</scope>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-datev</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<!-- QR Code -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-qrcode</artifactId>
|
||||
<scope>compile</scope>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-qrcode</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<!-- POI Adapter -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-poi</artifactId>
|
||||
<scope>compile</scope>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
<artifactId>imixs-adapters-poi</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Imixs-ML -->
|
||||
<dependency>
|
||||
<groupId>org.imixs.workflow</groupId>
|
||||
|
|
@ -265,7 +295,7 @@
|
|||
<version>${org.imixs.ml.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Apache PDFBox -->
|
||||
<dependency>
|
||||
<groupId>org.apache.pdfbox</groupId>
|
||||
|
|
@ -273,7 +303,7 @@
|
|||
<version>2.0.19</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- xsl 2.0 support -->
|
||||
<dependency>
|
||||
<groupId>net.sf.saxon</groupId>
|
||||
|
|
@ -287,7 +317,7 @@
|
|||
<groupId>commons-net</groupId>
|
||||
<artifactId>commons-net</artifactId>
|
||||
<version>3.6</version>
|
||||
</dependency>
|
||||
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
@ -19,9 +19,6 @@ import org.imixs.workflow.engine.WorkflowService;
|
|||
import org.imixs.workflow.exceptions.QueryException;
|
||||
import org.imixs.workflow.faces.data.WorkflowController;
|
||||
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
|
||||
|
|
@ -45,8 +42,6 @@ public class OPListController implements Serializable {
|
|||
private static final long serialVersionUID = 1L;
|
||||
|
||||
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 String lastDbtrNumber = null;
|
||||
|
|
@ -55,12 +50,13 @@ public class OPListController implements Serializable {
|
|||
|
||||
@Inject
|
||||
protected WorkflowController workflowController;
|
||||
|
||||
|
||||
@Inject
|
||||
protected WorkflowService workflowService;
|
||||
|
||||
@Inject
|
||||
protected WorkitemLinkController workitemLinkController;
|
||||
ZahlungseingangService zahlungseingangService;
|
||||
|
||||
@Inject
|
||||
protected DocumentService documentService;
|
||||
|
||||
|
|
@ -79,7 +75,7 @@ public class OPListController implements Serializable {
|
|||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<ItemCollection> getInvoices(String _dbtrNumber) {
|
||||
|
||||
|
||||
// Compute all open invoices if 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'
|
||||
List<String> selection = workflowController.getWorkitem().getItemValue("$workitemref");
|
||||
List<ItemCollection> paymentList=explodePaymentDetails(workflowController.getWorkitem());
|
||||
List<ItemCollection> paymentList = zahlungseingangService.loadPaymentDetails(workflowController.getWorkitem());
|
||||
for (ItemCollection invoice : invoiceList) {
|
||||
if (selection.contains(invoice.getUniqueID())) {
|
||||
invoice.setItemValue("selected", true);
|
||||
// set amount
|
||||
for (ItemCollection payment: paymentList) {
|
||||
for (ItemCollection payment : paymentList) {
|
||||
if (invoice.getUniqueID().equals(payment.getUniqueID())) {
|
||||
invoice.setItemValue("payment.amount",payment.getItemValue("payment.amount"));
|
||||
invoice.setItemValue("payment.amount", payment.getItemValue("payment.amount"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -146,7 +142,6 @@ public class OPListController implements Serializable {
|
|||
return invoiceList;
|
||||
}
|
||||
|
||||
|
||||
// /**
|
||||
// * Liefert die Payments die mit diesem workitem verbunden sind...
|
||||
// * @return
|
||||
|
|
@ -169,30 +164,6 @@ public class OPListController implements Serializable {
|
|||
// 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
|
||||
*
|
||||
|
|
@ -201,15 +172,14 @@ public class OPListController implements Serializable {
|
|||
public void onWorkflowEvent(@Observes WorkflowEvent workflowEvent) {
|
||||
if (workflowEvent == null || workflowEvent.getWorkitem() == null) {
|
||||
return;
|
||||
|
||||
}
|
||||
// store a collection of child items
|
||||
if (workflowEvent.getEventType() == WorkflowEvent.WORKITEM_BEFORE_PROCESS) {
|
||||
// store a collection of child items if you are in a Zahlungseingang
|
||||
if (workflowEvent.getWorkitem().getModelVersion().startsWith("zahlungseingang")
|
||||
&& workflowEvent.getEventType() == WorkflowEvent.WORKITEM_BEFORE_PROCESS) {
|
||||
updateChildList(workflowEvent.getWorkitem());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public ItemCollection loadInvoice(String id) {
|
||||
return documentService.load(id);
|
||||
}
|
||||
|
|
@ -240,9 +210,9 @@ public class OPListController implements Serializable {
|
|||
}
|
||||
|
||||
// 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
|
||||
workitem.replaceItemValue(ITEM_PAYMENT_DETAILS, mapInvoiceItems);
|
||||
workitem.replaceItemValue(ZahlungseingangService.ITEM_PAYMENT_DETAILS, mapInvoiceItems);
|
||||
// Update $workitemref
|
||||
workitem.setItemValue("$workitemref", selectionList);
|
||||
}
|
||||
|
|
@ -263,6 +233,15 @@ public class OPListController implements Serializable {
|
|||
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
|
||||
*
|
||||
|
|
@ -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>
|
||||
<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>
|
||||
|
||||
</tr>
|
||||
|
|
@ -32,23 +33,52 @@
|
|||
<ui:repeat var="payment_stub" value="#{payments}">
|
||||
<ui:param name="payment"
|
||||
value="#{opListController.loadInvoice(payment_stub.getUniqueID())}"></ui:param>
|
||||
|
||||
<ui:param name="paymentDetails"
|
||||
value="#{opListController.loadPaymentDetails(payment)}"></ui:param>
|
||||
|
||||
|
||||
<tr>
|
||||
<td><h:link outcome="/pages/workitems/workitem">
|
||||
#{payment.item['name']}
|
||||
#{payment.item['$workflowsummary']}
|
||||
<f:param name="id" value="#{payment.item['$uniqueid']}" />
|
||||
</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>
|
||||
</ui:repeat>
|
||||
|
||||
<!-- summary -->
|
||||
<tr>
|
||||
<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
|
||||
value="#{workitem.item['invoice.total']}">
|
||||
<td class="" style="text-align: right;"><h:outputText
|
||||
value="#{workitem.item['invoice.saldo']}">
|
||||
<f:convertNumber minFractionDigits="2" locale="de" />
|
||||
</h:outputText></td>
|
||||
<td />
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@
|
|||
<bpmn2:flowNodeRef>ExclusiveGateway_4</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>IntermediateThrowEvent_3</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>IntermediateCatchEvent_18</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>IntermediateCatchEvent_1</bpmn2:flowNodeRef>
|
||||
</bpmn2:lane>
|
||||
<bpmn2:lane id="Lane_6" name="Bereich Manager">
|
||||
<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_20</bpmn2:incoming>
|
||||
<bpmn2:incoming>SequenceFlow_44</bpmn2:incoming>
|
||||
<bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
|
||||
<bpmn2:outgoing>SequenceFlow_39</bpmn2:outgoing>
|
||||
<bpmn2:outgoing>SequenceFlow_46</bpmn2:outgoing>
|
||||
<bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
|
||||
|
|
@ -1513,6 +1515,78 @@ Betrag: <itemvalue>invoice.total</itemvalue> <itemvalue>invoice.currency</itemva
|
|||
</bpmn2:intermediateThrowEvent>
|
||||
<bpmn2:sequenceFlow id="SequenceFlow_58" sourceRef="Task_5005" targetRef="IntermediateThrowEvent_2"/>
|
||||
<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:process>
|
||||
<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"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</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">
|
||||
<di:waypoint xsi:type="dc:Point" x="155.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"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_2"/>
|
||||
</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:BPMNLabelStyle id="BPMNLabelStyle_1">
|
||||
<dc:Font name="arial" size="9.0"/>
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<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: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>IntermediateCatchEvent_3</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>EventBasedGateway_1</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>IntermediateCatchEvent_1</bpmn2:flowNodeRef>
|
||||
</bpmn2:lane>
|
||||
</bpmn2:laneSet>
|
||||
<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:incoming>SequenceFlow_14</bpmn2:incoming>
|
||||
<bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
|
||||
<bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
|
||||
<bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
|
||||
</bpmn2:task>
|
||||
<bpmn2:sequenceFlow id="SequenceFlow_1" sourceRef="Task_1" targetRef="EventBasedGateway_1"/>
|
||||
|
|
@ -494,6 +497,77 @@ result.isValid=true;
|
|||
</imixs-form>]]></bpmn2:documentation>
|
||||
<bpmn2:dataState id="DataState_1"/>
|
||||
</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:process>
|
||||
<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"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</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">
|
||||
<di:waypoint xsi:type="dc:Point" x="400.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"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_17"/>
|
||||
</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:BPMNLabelStyle id="BPMNLabelStyle_1">
|
||||
<dc:Font name="arial" size="9.0"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue