neue DATEV Importfunktion für ATC Rechnungen
This commit is contained in:
parent
6dc793e337
commit
e66b3add86
10 changed files with 318 additions and 224 deletions
|
|
@ -98,9 +98,9 @@ public class CargosoftSplitAdapter implements SignalAdapter {
|
|||
List<String> buchungsPersioden = new ArrayList<String>();
|
||||
// add haupt buchungsperiode
|
||||
buchungsPersioden.add(workitem.getItemValueString("invoice.period"));
|
||||
List<ItemCollection> positionsTabelle = InvoicePlugin.explodeChildList(workitem);
|
||||
List<ItemCollection> positionsTabelle = InvoiceUtil.explodeChildList(workitem);
|
||||
for (ItemCollection posItem : positionsTabelle) {
|
||||
String childPeriod = posItem.getItemValueString(InvoicePlugin.ITEM_INVOICE_PERIOD);
|
||||
String childPeriod = posItem.getItemValueString(InvoiceUtil.ITEM_INVOICE_PERIOD);
|
||||
if (!childPeriod.isEmpty() && !buchungsPersioden.contains(childPeriod)) {
|
||||
buchungsPersioden.add(childPeriod);
|
||||
}
|
||||
|
|
@ -128,7 +128,7 @@ public class CargosoftSplitAdapter implements SignalAdapter {
|
|||
// float tax=0;
|
||||
while (iter.hasNext()) {
|
||||
ItemCollection posItem = iter.next();
|
||||
String childPeriod = posItem.getItemValueString(InvoicePlugin.ITEM_INVOICE_PERIOD);
|
||||
String childPeriod = posItem.getItemValueString(InvoiceUtil.ITEM_INVOICE_PERIOD);
|
||||
if (childPeriod.isEmpty() || buchungsPeriode.equals(childPeriod)) {
|
||||
posItem.setItemValue("numpos", row);
|
||||
splitPositionen.add(posItem.getAllItems());
|
||||
|
|
@ -139,7 +139,7 @@ public class CargosoftSplitAdapter implements SignalAdapter {
|
|||
|
||||
}
|
||||
}
|
||||
workitemSubProcess.setItemValue(InvoicePlugin.ITEM_INVOICE_PERIOD, buchungsPeriode);
|
||||
workitemSubProcess.setItemValue(InvoiceUtil.ITEM_INVOICE_PERIOD, buchungsPeriode);
|
||||
// jetzt muessen wir die neue Rechnungssumme bilden....
|
||||
workitemSubProcess.setItemValue("order.total", total);
|
||||
workitemSubProcess.setItemValue("order.total.tax", total - netto);
|
||||
|
|
@ -147,7 +147,7 @@ public class CargosoftSplitAdapter implements SignalAdapter {
|
|||
|
||||
logger.info("......create cargosoft split buchung - invoice.period=" + buchungsPeriode);
|
||||
// update the child items (reduzierte Positionstabelle)
|
||||
workitemSubProcess.setItemValue(InvoicePlugin.CHILD_ITEM_PROPERTY, splitPositionen);
|
||||
workitemSubProcess.setItemValue(InvoiceUtil.CHILD_ITEM_PROPERTY, splitPositionen);
|
||||
|
||||
workitemSubProcess.model(model).task(taskID).event(eventID);
|
||||
workitemSubProcess.replaceItemValue(WorkflowService.UNIQUEIDREF, workitem.getUniqueID());
|
||||
|
|
|
|||
|
|
@ -27,17 +27,21 @@ public class InvoiceOutgoingPlugin extends AbstractPlugin {
|
|||
**/
|
||||
@Override
|
||||
public ItemCollection run(ItemCollection workitem, ItemCollection event) throws PluginException {
|
||||
|
||||
// Update Invoice.positions
|
||||
InvoiceUtil.updateInvoicePositions(workitem);
|
||||
|
||||
String dbtrNumber = workitem.getItemValueString("dbtr.number");
|
||||
ItemCollection debitor = kreditorService.findDebitor(dbtrNumber);
|
||||
if (debitor!=null) {
|
||||
if (debitor != null) {
|
||||
// update mail
|
||||
workitem.setItemValue("dbtr.mail", debitor.getItemValueString("cdtr.mail"));
|
||||
}
|
||||
|
||||
String img="";
|
||||
String img = "";
|
||||
if (workitem.getItemValueBoolean("invoice.protest")) {
|
||||
img = img + "<img title='Reklamiert' src=\"/layout/icons/icon106.png\">";
|
||||
|
||||
|
||||
}
|
||||
workitem.setItemValue("_img", img);
|
||||
return workitem;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,7 @@
|
|||
package com.alexanderlogistics;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
|
@ -30,6 +28,10 @@ import org.imixs.workflow.faces.util.ResourceBundleHandler;
|
|||
* geprüft ob die Rechnungsnummer schon einmal vorkam. Falls ja, wird eine
|
||||
* Warnung ausgegeben. Der Benutzer kann diese dann skippen.
|
||||
* <p>
|
||||
* Zusäztlich berechnet das Plugin das feld invoice.positions mit einer Value
|
||||
* liste der Positionsnummern. Dieses Feld wird indiziert, so dass gezielt nach
|
||||
* Positionsnummern gesucht werden kann.
|
||||
* <p>
|
||||
* 2.2.22 - Das Plugin erzeugt auch das Feld _img welches die Images von
|
||||
* Sofortüberweisung, Mahnung und Ablehnung anzeigt.
|
||||
*
|
||||
|
|
@ -44,9 +46,7 @@ public class InvoicePlugin extends AbstractPlugin {
|
|||
public static final int TASK_SACHPRUEFUNG = 5200;
|
||||
public static final int TASK_SACHPRUEFUNG_DELEGATION = 5210;
|
||||
public static final int EVENT_FREIGEBEN = 20;
|
||||
public static final String ITEM_INVOICE_PERIOD = "invoice.period";
|
||||
|
||||
public static final String CHILD_ITEM_PROPERTY = "_ChildItems";
|
||||
public static final String ERROR_MISSING_DATA = "MISSING_DATA";
|
||||
public static final String ERROR_DUPPLICATE_INVOICE_NUMBER = "DUPPLICATE_INVOICE_NUMBER";
|
||||
public static final String ERROR_NEW_IBANBIC = "NEW_IBANBIC";
|
||||
|
|
@ -73,6 +73,9 @@ public class InvoicePlugin extends AbstractPlugin {
|
|||
|
||||
updateImg(workitem);
|
||||
|
||||
// Update Invoice.positions
|
||||
InvoiceUtil.updateInvoicePositions(workitem);
|
||||
|
||||
// skip if validaten tag is required=false
|
||||
ItemCollection evalItemCollection = this.getWorkflowService().evalWorkflowResult(event, "validation", workitem);
|
||||
if (evalItemCollection != null) {
|
||||
|
|
@ -94,9 +97,7 @@ public class InvoicePlugin extends AbstractPlugin {
|
|||
// doppelte Rechnungsnummer prüfen
|
||||
if (workitem.getTaskID() == TASK_ERFASSUNG) {
|
||||
validateInvoiceNumber(workitem);
|
||||
|
||||
checkIBANNumber(workitem);
|
||||
|
||||
}
|
||||
|
||||
if (workitem.getTaskID() == TASK_ERFASSUNG || ((workitem.getTaskID() == TASK_SACHPRUEFUNG
|
||||
|
|
@ -104,7 +105,7 @@ public class InvoicePlugin extends AbstractPlugin {
|
|||
&& workitem.getEventID() == EVENT_FREIGEBEN)) {
|
||||
// Buchungsperiode auf plausi prüfen
|
||||
if (isCargoRechnung(workitem) && "workitem".equals(workitem.getType())) {
|
||||
validateBuchungsperiode(workitem.getItemValueString(ITEM_INVOICE_PERIOD));
|
||||
validateBuchungsperiode(workitem.getItemValueString(InvoiceUtil.ITEM_INVOICE_PERIOD));
|
||||
}
|
||||
// Cargosoft Kreditorennnummer prüfen
|
||||
if (isCargoRechnung(workitem)) {
|
||||
|
|
@ -118,7 +119,7 @@ public class InvoicePlugin extends AbstractPlugin {
|
|||
if (isCargoRechnung(workitem)
|
||||
&& ((workitem.getTaskID() == TASK_SACHPRUEFUNG || workitem.getTaskID() == TASK_SACHPRUEFUNG_DELEGATION)
|
||||
&& workitem.getEventID() == EVENT_FREIGEBEN)) {
|
||||
List<ItemCollection> childs = explodeChildList(workitem);
|
||||
List<ItemCollection> childs = InvoiceUtil.explodeChildList(workitem);
|
||||
for (ItemCollection posItem : childs) {
|
||||
if (posItem.getItemValueString("name").trim().isEmpty()) {
|
||||
// throw a plugin exception - because name is missing!
|
||||
|
|
@ -159,8 +160,8 @@ public class InvoicePlugin extends AbstractPlugin {
|
|||
}
|
||||
|
||||
// Buchunsperiode
|
||||
if (!posItem.getItemValueString(ITEM_INVOICE_PERIOD).trim().isEmpty()) {
|
||||
validateBuchungsperiode(posItem.getItemValueString(ITEM_INVOICE_PERIOD));
|
||||
if (!posItem.getItemValueString(InvoiceUtil.ITEM_INVOICE_PERIOD).trim().isEmpty()) {
|
||||
validateBuchungsperiode(posItem.getItemValueString(InvoiceUtil.ITEM_INVOICE_PERIOD));
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -222,16 +223,6 @@ public class InvoicePlugin extends AbstractPlugin {
|
|||
}
|
||||
workitem.setItemValue("_img", img);
|
||||
|
||||
/*
|
||||
* for (String entry: eventLog) { // sofortüberweisung if (entry.contains(".96")
|
||||
* && !img.contains("100.png")) {
|
||||
* img=img+"<img src=\"/layout/icons/icon100.png\">"; } // mahnen if
|
||||
* (entry.contains(".95") && !img.contains("074.png")) {
|
||||
* img=img+"<img src=\"/layout/icons/icon074.png\">"; } // ablehnen if
|
||||
* (entry.contains("5100.90") && !img.contains("031.png")) {
|
||||
* img=img+"<img src=\"/layout/icons/icon031.png\">"; } }
|
||||
* workitem.setItemValue("_img", img);
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -352,7 +343,7 @@ public class InvoicePlugin extends AbstractPlugin {
|
|||
// wenn bereits eine Überneahme angedroht wurde dann übernehemen!
|
||||
if (!overtakeIBAN.isEmpty()) {
|
||||
kreditorService.addNewIBANBIC(cdtrNumber, iban, bic);
|
||||
workitem.setItemValue("ibanbic.overtake","");
|
||||
workitem.setItemValue("ibanbic.overtake", "");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -383,8 +374,6 @@ public class InvoicePlugin extends AbstractPlugin {
|
|||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Hilfsmethod prüft ob die cdtr.nummer mit einer nummer aus der Cargosoft
|
||||
* Import Datei übereinstimmt.
|
||||
|
|
@ -422,24 +411,6 @@ public class InvoicePlugin extends AbstractPlugin {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* converts the Map List of a workitem into a List of ItemCollectons
|
||||
*/
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
protected static List<ItemCollection> explodeChildList(ItemCollection workitem) {
|
||||
// convert current list of childItems into ItemCollection elements
|
||||
ArrayList<ItemCollection> childItems = new ArrayList<ItemCollection>();
|
||||
|
||||
List<Object> mapOrderItems = workitem.getItemValue(CHILD_ITEM_PROPERTY);
|
||||
for (Object mapOderItem : mapOrderItems) {
|
||||
if (mapOderItem instanceof Map) {
|
||||
ItemCollection itemCol = new ItemCollection((Map) mapOderItem);
|
||||
childItems.add(itemCol);
|
||||
}
|
||||
}
|
||||
return childItems;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns true if the current workitem is a Cargosoft Invoice.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -2,24 +2,39 @@ package com.alexanderlogistics;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.imixs.workflow.ItemCollection;
|
||||
|
||||
/**
|
||||
* Rundungs Methode
|
||||
* Hilfsmethoden für die Berechnung und Validierung von Ein und
|
||||
* Ausgangsrechnugnen
|
||||
*
|
||||
* See: https://stackoverflow.com/questions/2808535/round-a-double-to-2-decimal-places
|
||||
* - Rundungs Methode
|
||||
* - Berechnung der Positionsnummern
|
||||
* - Explode Childitems
|
||||
*
|
||||
* See:
|
||||
* https://stackoverflow.com/questions/2808535/round-a-double-to-2-decimal-places
|
||||
*
|
||||
* @author rsoika
|
||||
*
|
||||
*/
|
||||
public class InvoiceUtil {
|
||||
|
||||
public static final String CHILD_ITEM_PROPERTY = "_ChildItems";
|
||||
public static final String ITEM_INVOICE_PERIOD = "invoice.period";
|
||||
public static final String ITEM_INVOICE_POSITIONS = "invoice.positions";
|
||||
|
||||
public static double round(double value) {
|
||||
BigDecimal bd = BigDecimal.valueOf(value);
|
||||
bd = bd.setScale(2, RoundingMode.HALF_UP);
|
||||
return bd.doubleValue();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Hilfsmethode zum validieren der Mailadresse
|
||||
*
|
||||
|
|
@ -27,16 +42,15 @@ public class InvoiceUtil {
|
|||
* @return
|
||||
*/
|
||||
public static boolean validateEmail(String emailAddress) {
|
||||
//String regexPattern = "^(.+)@(\\S+)$";
|
||||
|
||||
String regexPattern = "^(?=.{1,64}@)[A-Za-z0-9_-]+(\\.[A-Za-z0-9_-]+)*@"
|
||||
// String regexPattern = "^(.+)@(\\S+)$";
|
||||
|
||||
String regexPattern = "^(?=.{1,64}@)[A-Za-z0-9_-]+(\\.[A-Za-z0-9_-]+)*@"
|
||||
+ "[^-][A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})$";
|
||||
return Pattern.compile(regexPattern)
|
||||
.matcher(emailAddress)
|
||||
.matches();
|
||||
.matcher(emailAddress)
|
||||
.matches();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Deprecated
|
||||
public static double roundConservative(double value) {
|
||||
value = value * 100;
|
||||
|
|
@ -44,4 +58,53 @@ public class InvoiceUtil {
|
|||
return (double) tmp / 100;
|
||||
}
|
||||
|
||||
/**
|
||||
* converts the Map List of a workitem into a List of ItemCollectons
|
||||
*/
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
public static List<ItemCollection> explodeChildList(ItemCollection workitem) {
|
||||
// convert current list of childItems into ItemCollection elements
|
||||
ArrayList<ItemCollection> childItems = new ArrayList<ItemCollection>();
|
||||
|
||||
List<Object> mapOrderItems = workitem.getItemValue(CHILD_ITEM_PROPERTY);
|
||||
for (Object mapOderItem : mapOrderItems) {
|
||||
if (mapOderItem instanceof Map) {
|
||||
ItemCollection itemCol = new ItemCollection((Map) mapOderItem);
|
||||
childItems.add(itemCol);
|
||||
}
|
||||
}
|
||||
return childItems;
|
||||
}
|
||||
|
||||
/**
|
||||
* Diese Methode berechnet das feld 'invoice.positions' welches eine Valueliste
|
||||
* mit allen Positionsnummern aus dem Childliste enthält.
|
||||
* Es wird sowohl für Ausgangs wie Eingangsrechnungen genutzt.
|
||||
* Das feld wird indiziert, so dass eine gezielte Suche nach positiosnummern
|
||||
* möglich ist.
|
||||
*
|
||||
* @param workitem
|
||||
*/
|
||||
public static void updateInvoicePositions(ItemCollection workitem) {
|
||||
|
||||
List<String> posList = new ArrayList<String>();
|
||||
List<ItemCollection> childs = InvoiceUtil.explodeChildList(workitem);
|
||||
for (ItemCollection posItem : childs) {
|
||||
String posName = "";
|
||||
// Ausgangsrechnung - item=datev.text
|
||||
// Eingangsrechnugn - item=name
|
||||
if (posItem.hasItem("datev.text")) {
|
||||
posName = posItem.getItemValueString("datev.text").trim();
|
||||
} else {
|
||||
posName = posItem.getItemValueString("name").trim();
|
||||
}
|
||||
if (!posName.isEmpty()) {
|
||||
posList.add(posName);
|
||||
}
|
||||
}
|
||||
// update invoice.positions
|
||||
workitem.setItemValue(ITEM_INVOICE_POSITIONS, posList);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -94,9 +94,13 @@ import com.alexanderlogistics.KreditorDebitorService;
|
|||
* - event
|
||||
*
|
||||
* <datev-cargosoft-import name=
|
||||
* "model">rechnungseingang-dwc-1.0</datev-cargosoft-import>
|
||||
* <datev-cargosoft-import name="task">1000</datev-cargosoft-import>
|
||||
* <datev-cargosoft-import name="event">100</datev-cargosoft-import>
|
||||
* "model-invoice">rechnungsausgang-dwc-1.0</datev-cargosoft-import>
|
||||
* <datev-cargosoft-import name="task-invoice">1000</datev-cargosoft-import>
|
||||
* <datev-cargosoft-import name="event-invoice">100</datev-cargosoft-import>
|
||||
* <datev-cargosoft-import name=
|
||||
* "model-tax">rechnungsausgang-dwc-1.0</datev-cargosoft-import>
|
||||
* <datev-cargosoft-import name="task-tax">1000</datev-cargosoft-import>
|
||||
* <datev-cargosoft-import name="event-tax">100</datev-cargosoft-import>
|
||||
*
|
||||
* @version 1.0
|
||||
* @author rsoika
|
||||
|
|
@ -122,11 +126,12 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
|
|||
@Inject
|
||||
TeamService teamService;
|
||||
|
||||
private String INITIAL_MODEL_VERSION;
|
||||
|
||||
private int INITIAL_TASK_ID;
|
||||
|
||||
private int INITIAL_EVENT_ID;
|
||||
private String INITIAL_MODEL_VERSION_INVOICE;
|
||||
private int INITIAL_TASK_ID_INVOICE;
|
||||
private int INITIAL_EVENT_ID_INVOICE;
|
||||
private String INITIAL_MODEL_VERSION_TAX;
|
||||
private int INITIAL_TASK_ID_TAX;
|
||||
private int INITIAL_EVENT_ID_TAX;
|
||||
|
||||
/**
|
||||
* This method finds or create the Datev Export and adds a reference
|
||||
|
|
@ -140,25 +145,44 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
|
|||
|
||||
logger.info("...parse datev file import...");
|
||||
// Set default values
|
||||
INITIAL_MODEL_VERSION = "rechnungsausgang-de-1.0";
|
||||
INITIAL_TASK_ID = 5001;
|
||||
INITIAL_EVENT_ID = 980;
|
||||
INITIAL_MODEL_VERSION_INVOICE = "rechnungsausgang-de-1.0";
|
||||
INITIAL_TASK_ID_INVOICE = 5001;
|
||||
INITIAL_EVENT_ID_INVOICE = 980;
|
||||
|
||||
INITIAL_MODEL_VERSION_TAX = "zollanmeldung-de-1.0";
|
||||
INITIAL_TASK_ID_TAX = 1000;
|
||||
INITIAL_EVENT_ID_TAX = 980;
|
||||
|
||||
// Try to read the optional cargosoft import options...
|
||||
ItemCollection evalItemCollection = workflowService.evalWorkflowResult(event, "datev-cargosoft-import",
|
||||
workitem, false);
|
||||
if (evalItemCollection != null) {
|
||||
INITIAL_MODEL_VERSION = evalItemCollection.getItemValueString("model");
|
||||
if (INITIAL_MODEL_VERSION.isEmpty()) {
|
||||
INITIAL_MODEL_VERSION = "rechnungsausgang-de-1.0"; // set default
|
||||
// Ausgangsrechnung
|
||||
INITIAL_MODEL_VERSION_INVOICE = evalItemCollection.getItemValueString("model-invoice");
|
||||
if (INITIAL_MODEL_VERSION_INVOICE.isEmpty()) {
|
||||
INITIAL_MODEL_VERSION_INVOICE = "rechnungsausgang-de-1.0"; // set default
|
||||
}
|
||||
INITIAL_TASK_ID = evalItemCollection.getItemValueInteger("task");
|
||||
if (INITIAL_TASK_ID == 0) {
|
||||
INITIAL_TASK_ID = 5001; // set default
|
||||
INITIAL_TASK_ID_INVOICE = evalItemCollection.getItemValueInteger("task-invoice");
|
||||
if (INITIAL_TASK_ID_INVOICE == 0) {
|
||||
INITIAL_TASK_ID_INVOICE = 5001; // set default
|
||||
}
|
||||
INITIAL_EVENT_ID = evalItemCollection.getItemValueInteger("event");
|
||||
if (INITIAL_EVENT_ID == 0) {
|
||||
INITIAL_EVENT_ID = 980; // set default
|
||||
INITIAL_EVENT_ID_INVOICE = evalItemCollection.getItemValueInteger("event-invoice");
|
||||
if (INITIAL_EVENT_ID_INVOICE == 0) {
|
||||
INITIAL_EVENT_ID_INVOICE = 980; // set default
|
||||
}
|
||||
|
||||
// Zollanmeldung
|
||||
INITIAL_MODEL_VERSION_TAX = evalItemCollection.getItemValueString("model-tax");
|
||||
if (INITIAL_MODEL_VERSION_TAX.isEmpty()) {
|
||||
INITIAL_MODEL_VERSION_TAX = "zollanmeldung-de-1.0"; // set default
|
||||
}
|
||||
INITIAL_TASK_ID_TAX = evalItemCollection.getItemValueInteger("task-tax");
|
||||
if (INITIAL_TASK_ID_TAX == 0) {
|
||||
INITIAL_TASK_ID_TAX = 1000; // set default
|
||||
}
|
||||
INITIAL_EVENT_ID_TAX = evalItemCollection.getItemValueInteger("event-tax");
|
||||
if (INITIAL_EVENT_ID_TAX == 0) {
|
||||
INITIAL_EVENT_ID_TAX = 980; // set default
|
||||
}
|
||||
}
|
||||
try {
|
||||
|
|
@ -286,7 +310,8 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
|
|||
double basisumsatz = parseBetrag(DatevImportAdapter.csvVal(dataList[4]));
|
||||
|
||||
// Skip Eingangsrechnungen
|
||||
if (!gegenKonto.startsWith("1")) {
|
||||
// Wenn es aber eine ATC Belegnummer ist dann ist es doch interessant
|
||||
if (!gegenKonto.startsWith("1") && !belegNummer.startsWith("ATC")) {
|
||||
eingangsrechnungen++;
|
||||
// skip
|
||||
continue;
|
||||
|
|
@ -337,7 +362,7 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
|
|||
logger.info("...close workitem....");
|
||||
|
||||
// nein - also invoice schließen
|
||||
closeInvoiceWorkitem(invoiceWorkitem, splitBuchungen, spacePosMappings);
|
||||
closeDatevWorkitem(invoiceWorkitem, splitBuchungen, spacePosMappings);
|
||||
invoiceWorkitem = null;
|
||||
// neue Splitbuchungstabelle anlegen
|
||||
splitBuchungen = new ArrayList<ItemCollection>();
|
||||
|
|
@ -355,7 +380,7 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
|
|||
}
|
||||
|
||||
} // wile end
|
||||
closeInvoiceWorkitem(invoiceWorkitem, splitBuchungen, spacePosMappings);
|
||||
closeDatevWorkitem(invoiceWorkitem, splitBuchungen, spacePosMappings);
|
||||
|
||||
} catch (IOException | ParseException e) {
|
||||
throw new PluginException(DatevCargosoftImportAdapter.class.getName(),
|
||||
|
|
@ -426,7 +451,11 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
|
|||
throws AdapterException {
|
||||
|
||||
// test if invoice was already imported before
|
||||
String sQuery = "((type:workitem OR type:workitemarchive) AND $modelversion:rechnungsausgang* AND invoice.number:\""
|
||||
// zollanmeldung
|
||||
// String sQuery = "((type:workitem OR type:workitemarchive) AND
|
||||
// $modelversion:rechnungsausgang* AND invoice.number:\""
|
||||
// + belegNummer + "\")";
|
||||
String sQuery = "((type:workitem OR type:workitemarchive) AND ($modelversion:rechnungsausgang* OR $modelversion:zollanmeldung*) AND invoice.number:\""
|
||||
+ belegNummer + "\")";
|
||||
try {
|
||||
// find the textblock...
|
||||
|
|
@ -481,10 +510,10 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
|
|||
* @throws ProcessingErrorException
|
||||
* @throws AccessDeniedException
|
||||
*/
|
||||
private void closeInvoiceWorkitem(ItemCollection invoiceWorkitem, List<ItemCollection> splitBuchungen,
|
||||
private void closeDatevWorkitem(ItemCollection datevWorkitem, List<ItemCollection> splitBuchungen,
|
||||
Map<String, List<String>> spacePosMappings)
|
||||
throws AccessDeniedException, ProcessingErrorException, PluginException, ModelException {
|
||||
if (invoiceWorkitem == null) {
|
||||
if (datevWorkitem == null) {
|
||||
return; // no op
|
||||
}
|
||||
|
||||
|
|
@ -499,30 +528,30 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
|
|||
}
|
||||
|
||||
total = InvoiceUtil.round(total);
|
||||
invoiceWorkitem.setItemValue("invoice.total", total);
|
||||
invoiceWorkitem.setItemValue("invoice.saldo", total);
|
||||
datevWorkitem.setItemValue("invoice.total", total);
|
||||
datevWorkitem.setItemValue("invoice.saldo", total);
|
||||
// implode die Splitbuchungen
|
||||
implodeChildList(invoiceWorkitem, splitBuchungen);
|
||||
implodeChildList(datevWorkitem, splitBuchungen);
|
||||
|
||||
// set dbtr.name
|
||||
ItemCollection dbtrItemCol = kreditorDebitorService
|
||||
.findDebitor(invoiceWorkitem.getItemValueString("dbtr.number"));
|
||||
.findDebitor(datevWorkitem.getItemValueString("dbtr.number"));
|
||||
if (dbtrItemCol != null) {
|
||||
invoiceWorkitem.setItemValue("dbtr.name", dbtrItemCol.getItemValueString("_VENDOR_Name"));
|
||||
datevWorkitem.setItemValue("dbtr.name", dbtrItemCol.getItemValueString("_VENDOR_Name"));
|
||||
// Anhand der Creditoren Stammdaten errrechnen wir die Sprache für diese
|
||||
// Rechnung
|
||||
String country = dbtrItemCol.getItemValueString("_VENDOR_COUNTRY");
|
||||
invoiceWorkitem.setItemValue("dbtr.country", country);
|
||||
datevWorkitem.setItemValue("dbtr.country", country);
|
||||
if (country.equalsIgnoreCase("de") || country.equalsIgnoreCase("ch") || country.equalsIgnoreCase("at")) {
|
||||
invoiceWorkitem.setItemValue("invoice.language", "DE");
|
||||
datevWorkitem.setItemValue("invoice.language", "DE");
|
||||
} else {
|
||||
invoiceWorkitem.setItemValue("invoice.language", "EN");
|
||||
datevWorkitem.setItemValue("invoice.language", "EN");
|
||||
}
|
||||
}
|
||||
|
||||
// Jezt noch das Space mapping
|
||||
// dazu kucken wir in alle spaces den config wert 'pos.mapping'
|
||||
String text = invoiceWorkitem.getItemValueString("invoice.text");
|
||||
String text = datevWorkitem.getItemValueString("invoice.text");
|
||||
if (!text.isEmpty()) {
|
||||
boolean found = false;
|
||||
for (Map.Entry<String, List<String>> entry : spacePosMappings.entrySet()) {
|
||||
|
|
@ -532,7 +561,7 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
|
|||
Matcher m = p.matcher(text);
|
||||
if (m.find()) {
|
||||
// we have a match
|
||||
invoiceWorkitem.setItemValue("space.ref", entry.getKey());
|
||||
datevWorkitem.setItemValue("space.ref", entry.getKey());
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
|
|
@ -543,8 +572,18 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
|
|||
}
|
||||
}
|
||||
// Processe die Invoice
|
||||
invoiceWorkitem.model(INITIAL_MODEL_VERSION).task(INITIAL_TASK_ID).event(INITIAL_EVENT_ID);
|
||||
workflowService.processWorkItem(invoiceWorkitem);
|
||||
// In Abhängkeit von der Belegart 'Ausgangsrechnung' | 'Zollanmeldung' wird ein
|
||||
// neues Workitem erzeugt.
|
||||
String belegNummer = datevWorkitem.getItemValueString("invoice.number");
|
||||
if (belegNummer.startsWith("ATC")) {
|
||||
// Zollanmeldung
|
||||
datevWorkitem.model(INITIAL_MODEL_VERSION_TAX).task(INITIAL_TASK_ID_TAX).event(INITIAL_EVENT_ID_TAX);
|
||||
} else {
|
||||
// Normale Ausgangsrechnung
|
||||
datevWorkitem.model(INITIAL_MODEL_VERSION_INVOICE).task(INITIAL_TASK_ID_INVOICE)
|
||||
.event(INITIAL_EVENT_ID_INVOICE);
|
||||
}
|
||||
workflowService.processWorkItem(datevWorkitem);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@
|
|||
# Imixs Lucene Plugin
|
||||
##############################
|
||||
lucence.indexDir=${imixs-office.IndexDir}
|
||||
index.fields=txtsearchstring,txtSubject,txtname,txtEmail,txtUserName,namCreator,txtworkflowgroup,txtworkflowstatus,txtWorkflowAbstract,txtWorkflowSummary,txtworkflowhistory,txtspacename,txtprocessname,_subject,_description,_name,_projectnumber,_projectname,_ordernumber,_contractnumber,datDueDate,txtcommentlog,htmldescription,htmldocumentation,dms,dms_names,invoice.number.stripped,_childitems,$file.names,_VENDOR_NAME,dbtr.number,cdtr.number
|
||||
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,$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
|
||||
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
|
||||
office.search.noanalyze=invoice.number,invoice.number.stripped,invoice.positions
|
||||
|
||||
##############################
|
||||
# Marty Setup
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<CstmrCdtTrfInitn>
|
||||
<GrpHdr>
|
||||
<MsgId>bf073e72asdf512c4d60af7740872036</MsgId>
|
||||
<CreDtTm>2024-04-03T15:23:47</CreDtTm>
|
||||
<CreDtTm>2024-04-12T09:10:53</CreDtTm>
|
||||
<NbOfTxs>3</NbOfTxs>
|
||||
<CtrlSum>655.90</CtrlSum>
|
||||
<InitgPty>
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
<Cd>SEPA</Cd>
|
||||
</SvcLvl>
|
||||
</PmtTpInf>
|
||||
<ReqdExctnDt>2024-04-03</ReqdExctnDt>
|
||||
<ReqdExctnDt>2024-04-12</ReqdExctnDt>
|
||||
<Dbtr>
|
||||
<Nm>Targo Bank</Nm>
|
||||
</Dbtr>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<CstmrCdtTrfInitn>
|
||||
<GrpHdr>
|
||||
<MsgId>bf073e72asdf512c4d60af7740872036</MsgId>
|
||||
<CreDtTm>2024-04-03T15:23:47</CreDtTm>
|
||||
<CreDtTm>2024-04-12T09:10:53</CreDtTm>
|
||||
<NbOfTxs>3</NbOfTxs>
|
||||
<CtrlSum>655.90</CtrlSum>
|
||||
<InitgPty>
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
<Cd>SEPA</Cd>
|
||||
</SvcLvl>
|
||||
</PmtTpInf>
|
||||
<ReqdExctnDt>2024-04-03</ReqdExctnDt>
|
||||
<ReqdExctnDt>2024-04-12</ReqdExctnDt>
|
||||
<Dbtr>
|
||||
<Nm>Targo Bank</Nm>
|
||||
</Dbtr>
|
||||
|
|
|
|||
|
|
@ -507,9 +507,13 @@ if (workitem['$file.count'][0]!=1) {
|
|||
<imixs:value><![CDATA[Import Buchungstapel]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtactivityresult" type="xs:string">
|
||||
<imixs:value><![CDATA[<datev-cargosoft-import name="model">rechnungsausgang-dwc-1.0</datev-cargosoft-import>
|
||||
<datev-cargosoft-import name="task">5001</datev-cargosoft-import>
|
||||
<datev-cargosoft-import name="event">980</datev-cargosoft-import>]]></imixs:value>
|
||||
<imixs:value><![CDATA[<datev-cargosoft-import name="model-invoice">rechnungsausgang-dwc-1.0</datev-cargosoft-import>
|
||||
<datev-cargosoft-import name="task-invoice">5001</datev-cargosoft-import>
|
||||
<datev-cargosoft-import name="event-invoice">980</datev-cargosoft-import>
|
||||
|
||||
<datev-cargosoft-import name="model-tax">zollanmeldung-dwc-1.0</datev-cargosoft-import>
|
||||
<datev-cargosoft-import name="task-tax">1000</datev-cargosoft-import>
|
||||
<datev-cargosoft-import name="event-tax">980</datev-cargosoft-import>]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtmailsubject" type="xs:string">
|
||||
<imixs:value/>
|
||||
|
|
@ -805,7 +809,6 @@ if (workitem['$file.count'][0]!=1) {
|
|||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_18" id="BPMNEdge_SequenceFlow_18" sourceElement="BPMNShape_ExclusiveGateway_2" targetElement="BPMNShape_IntermediateCatchEvent_3">
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_40"/>
|
||||
<di:waypoint x="710.0" y="343.0"/>
|
||||
<di:waypoint x="745.0" y="343.0"/>
|
||||
<di:waypoint x="780.0" y="343.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_19" id="BPMNEdge_SequenceFlow_19" sourceElement="BPMNShape_ExclusiveGateway_2" targetElement="BPMNShape_IntermediateCatchEvent_7">
|
||||
|
|
@ -817,7 +820,6 @@ if (workitem['$file.count'][0]!=1) {
|
|||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_20" id="BPMNEdge_SequenceFlow_20" sourceElement="BPMNShape_IntermediateCatchEvent_3" targetElement="BPMNShape_ExclusiveGateway_3">
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_43"/>
|
||||
<di:waypoint x="816.0" y="343.0"/>
|
||||
<di:waypoint x="858.0" y="343.0"/>
|
||||
<di:waypoint x="900.0" y="343.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_21" id="BPMNEdge_SequenceFlow_21" sourceElement="BPMNShape_IntermediateCatchEvent_7" targetElement="BPMNShape_ExclusiveGateway_3">
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<!-- origin at X=0.0 Y=0.0 --><bpmn2:definitions xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:imixs="http://www.imixs.org/bpmn2" xmlns:open-bpmn="http://open-bpmn.org/XMLSchema" xmlns:tl="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exporter="org.eclipse.bpmn2.modeler.core" exporterVersion="1.5.4.RC1-v20220528-0836-B1" id="Definitions_1" name="Definitions 1" targetNamespace="http://www.imixs.org/bpmn2">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="txtworkflowmodelversion" type="xs:string">
|
||||
<imixs:value><![CDATA[zollliste-de-1.0]]></imixs:value>
|
||||
<imixs:value><![CDATA[zollanmeldung-de-1.0]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtfieldmapping" type="xs:string">
|
||||
<imixs:value><![CDATA[Prozess-Verantwortliche|process.manager]]></imixs:value>
|
||||
|
|
@ -72,15 +72,15 @@ th { font-weight: bold;}
|
|||
</html>]]></bpmn2:documentation>
|
||||
</bpmn2:message>
|
||||
<bpmn2:collaboration id="Collaboration_1" name="Zahlungseingang">
|
||||
<bpmn2:participant id="Participant_1" name="Zoll-Liste" processRef="Process_1">
|
||||
<bpmn2:participant id="Participant_1" name="Zollanmeldung" processRef="Process_1">
|
||||
<bpmn2:documentation id="documentation_9Tp5PA"/>
|
||||
</bpmn2:participant>
|
||||
<bpmn2:participant id="Participant_2" name="SEPA-Export Pool" processRef="eingangsrechnung-de"/>
|
||||
</bpmn2:collaboration>
|
||||
<bpmn2:process id="eingangsrechnung-de" isExecutable="false" name="Zoll Liste">
|
||||
<bpmn2:process id="eingangsrechnung-de" isExecutable="false" name="Zollanmeldung">
|
||||
<bpmn2:documentation id="documentation_GmzFcw"/>
|
||||
</bpmn2:process>
|
||||
<bpmn2:process definitionalCollaborationRef="Collaboration_1" id="Process_1" isExecutable="false" name="Zoll-Liste">
|
||||
<bpmn2:process definitionalCollaborationRef="Collaboration_1" id="Process_1" isExecutable="false" name="Zollanmeldung">
|
||||
<bpmn2:laneSet id="LaneSet_1" name="Lane Set 1">
|
||||
<bpmn2:lane id="Lane_1" name="Fachbereich">
|
||||
<bpmn2:flowNodeRef>StartEvent_1</bpmn2:flowNodeRef>
|
||||
|
|
@ -94,17 +94,18 @@ th { font-weight: bold;}
|
|||
<bpmn2:documentation id="documentation_CzcdHw"/>
|
||||
<bpmn2:flowNodeRef>DataObject_2</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>event_XJbC5A</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>event_6fY5IQ</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>textAnnotation_HwSKqQ</bpmn2:flowNodeRef>
|
||||
<bpmn2:flowNodeRef>event_9fS4uw</bpmn2:flowNodeRef>
|
||||
</bpmn2:lane>
|
||||
</bpmn2:laneSet>
|
||||
<bpmn2:startEvent id="StartEvent_1" name="Start">
|
||||
<bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
|
||||
<bpmn2:documentation id="documentation_VE46fA"/>
|
||||
<bpmn2:outgoing>sequenceFlow_M5IK7w</bpmn2:outgoing>
|
||||
</bpmn2:startEvent>
|
||||
<bpmn2:task id="Task_2" imixs:processid="1100" name="Erledigt">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="txtworkflowsummary" type="xs:string">
|
||||
<imixs:value><![CDATA[<itemvalue>space.name</itemvalue> - <itemvalue format="dd. MMMM yyyy" locale="DE">date</itemvalue>]]></imixs:value>
|
||||
<imixs:value><![CDATA[<itemvalue>invoice.number</itemvalue> <itemvalue>dbtr.number</itemvalue> <itemvalue>dbtr.name</itemvalue> (<itemvalue>invoice.currency</itemvalue> <itemvalue format="#,###,##0.00" locale="de_DE">invoice.total</itemvalue>) ]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keyupdateacl" type="xs:boolean">
|
||||
<imixs:value>true</imixs:value>
|
||||
|
|
@ -134,7 +135,6 @@ th { font-weight: bold;}
|
|||
<bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
|
||||
<bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
|
||||
<bpmn2:incoming>sequenceFlow_l0egag</bpmn2:incoming>
|
||||
<bpmn2:outgoing>sequenceFlow_GVz3vg</bpmn2:outgoing>
|
||||
</bpmn2:task>
|
||||
<bpmn2:endEvent id="EndEvent_3" name="End">
|
||||
<bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
|
||||
|
|
@ -143,7 +143,7 @@ th { font-weight: bold;}
|
|||
<bpmn2:task id="Task_1" imixs:processid="1000" name="Offen">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="txtworkflowsummary" type="xs:string">
|
||||
<imixs:value><![CDATA[<itemvalue>space.name</itemvalue> - <itemvalue format="dd. MMMM yyyy" locale="DE">date</itemvalue>]]></imixs:value>
|
||||
<imixs:value><![CDATA[<itemvalue>invoice.number</itemvalue> <itemvalue>dbtr.number</itemvalue> <itemvalue>dbtr.name</itemvalue> (<itemvalue>invoice.currency</itemvalue> <itemvalue format="#,###,##0.00" locale="de_DE">invoice.total</itemvalue>) ]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txteditorid" type="xs:string">
|
||||
<imixs:value><![CDATA[alexander/form_basic]]></imixs:value>
|
||||
|
|
@ -174,18 +174,15 @@ th { font-weight: bold;}
|
|||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:documentation id="Documentation_3"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
|
||||
<bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
|
||||
<bpmn2:incoming>sequenceFlow_4Vru0A</bpmn2:incoming>
|
||||
<bpmn2:outgoing>sequenceFlow_EzmiPA</bpmn2:outgoing>
|
||||
<bpmn2:incoming>sequenceFlow_E8t80w</bpmn2:incoming>
|
||||
<bpmn2:incoming>sequenceFlow_rbVgQA</bpmn2:incoming>
|
||||
<bpmn2:outgoing>sequenceFlow_aXX5dg</bpmn2:outgoing>
|
||||
<bpmn2:incoming>sequenceFlow_M5IK7w</bpmn2:incoming>
|
||||
</bpmn2:task>
|
||||
<bpmn2:sequenceFlow id="SequenceFlow_4" sourceRef="StartEvent_1" targetRef="Task_1">
|
||||
<bpmn2:documentation id="documentation_9fyX0g"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
<bpmn2:task id="Task_4" imixs:processid="1900" name="Abgeschlossen">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="txtworkflowsummary" type="xs:string">
|
||||
<imixs:value><![CDATA[<itemvalue>sequencenumber</itemvalue> <itemvalue>space.name</itemvalue> - <itemvalue format="dd.MM.yyyy">$created</itemvalue>]]></imixs:value>
|
||||
<imixs:value><![CDATA[<itemvalue>invoice.number</itemvalue> <itemvalue>dbtr.number</itemvalue> <itemvalue>dbtr.name</itemvalue> (<itemvalue>invoice.currency</itemvalue> <itemvalue format="#,###,##0.00" locale="de_DE">invoice.total</itemvalue>) ]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keyupdateacl" type="xs:boolean">
|
||||
<imixs:value>true</imixs:value>
|
||||
|
|
@ -194,7 +191,7 @@ th { font-weight: bold;}
|
|||
<imixs:item name="keyaddwritefields" type="xs:string"/>
|
||||
<imixs:item name="keyaddreadfields" type="xs:string"/>
|
||||
<imixs:item name="txtimageurl" type="xs:string">
|
||||
<imixs:value><![CDATA[typcn-chart-bar||||typcn-tick,imixs-success]]></imixs:value>
|
||||
<imixs:value><![CDATA[typcn-briefcase||||typcn-tick,imixs-success]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txteditorid" type="xs:string">
|
||||
<imixs:value><![CDATA[form_basic_read]]></imixs:value>
|
||||
|
|
@ -202,9 +199,6 @@ th { font-weight: bold;}
|
|||
<imixs:item name="txttype" type="xs:string">
|
||||
<imixs:value><![CDATA[workitemarchive]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtworkflowabstract" type="CDATA">
|
||||
<imixs:value/>
|
||||
</imixs:item>
|
||||
<imixs:item name="namaddreadaccess" type="xs:string">
|
||||
<imixs:value><![CDATA[{process:?:member}]]></imixs:value>
|
||||
</imixs:item>
|
||||
|
|
@ -212,6 +206,7 @@ th { font-weight: bold;}
|
|||
<bpmn2:documentation id="Documentation_16"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
|
||||
<bpmn2:incoming>SequenceFlow_18</bpmn2:incoming>
|
||||
<bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
|
||||
<bpmn2:incoming>sequenceFlow_MTbeHA</bpmn2:incoming>
|
||||
</bpmn2:task>
|
||||
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_8" imixs:activityid="50" name="Abschließen">
|
||||
<bpmn2:extensionElements>
|
||||
|
|
@ -247,7 +242,7 @@ th { font-weight: bold;}
|
|||
<bpmn2:sequenceFlow id="SequenceFlow_1" sourceRef="IntermediateCatchEvent_2" targetRef="Task_2">
|
||||
<bpmn2:documentation id="documentation_ZiY0pQ"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" imixs:activityid="100" name="[update]">
|
||||
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_3" imixs:activityid="980" name="[create]">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="txtmailsubject" type="xs:string">
|
||||
<imixs:value/>
|
||||
|
|
@ -257,107 +252,120 @@ th { font-weight: bold;}
|
|||
<imixs:value/>
|
||||
</imixs:item>
|
||||
<imixs:item name="keypublicresult" type="xs:string">
|
||||
<imixs:value><![CDATA[1]]></imixs:value>
|
||||
<imixs:value><![CDATA[0]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="rtfresultlog" type="xs:string">
|
||||
<imixs:value><![CDATA[Es wurden neue Positionen hinzugefügt]]></imixs:value>
|
||||
<imixs:value><![CDATA[Beleg importiert]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtactivityresult" type="xs:string">
|
||||
<imixs:value><![CDATA[<item name="process">Mahnwesen</item>]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:messageEventDefinition id="MessageEventDefinition_1"/>
|
||||
<bpmn2:documentation id="documentation_pNB3fg"/>
|
||||
<bpmn2:outgoing>sequenceFlow_4Vru0A</bpmn2:outgoing>
|
||||
<bpmn2:incoming>sequenceFlow_aXX5dg</bpmn2:incoming>
|
||||
<bpmn2:outgoing>sequenceFlow_MTbeHA</bpmn2:outgoing>
|
||||
</bpmn2:intermediateCatchEvent>
|
||||
<bpmn2:dataObject id="DataObject_2" name="Form">
|
||||
<bpmn2:documentation id="Documentation_5"><![CDATA[<?xml version="1.0"?>
|
||||
<imixs-form>
|
||||
<imixs-form-section columns="2">
|
||||
<item name="" type="custom" path="alexander/spaceref" label="Fachbereich:" />
|
||||
|
||||
<item name="date" type="date" label="Fälligkeit:" />
|
||||
<item name="zoll" type="currency" label="Zoll:" />
|
||||
<item name="eust" type="currency" label="EUST:" />
|
||||
<imixs-form-section columns="3" label="Rechnungsdaten">
|
||||
<item name="invoice.text" type="text" label="Text:" readonly="true"/>
|
||||
<item name="dbtr.name" type="text" label="Debitor:" readonly="true"/>
|
||||
<item name="dbtr.number" type="text" required="true" label="Debitor-Nummer:" readonly="true"/>
|
||||
</imixs-form-section>
|
||||
|
||||
<imixs-form-section label="Offene Posten" path="alexander/section_zollliste_details" readonly="false" />
|
||||
<imixs-form-section columns="3" label="">
|
||||
<item name="invoice.number" type="text" label="Rechnungsnummer:" readonly="true" />
|
||||
<item name="invoice.date" type="date" label="Rechnungsdatum:" readonly="true" />
|
||||
<item name="invoice.duedate" type="date" label="Fälligkeit:" readonly="true"/>
|
||||
</imixs-form-section>
|
||||
|
||||
<imixs-form-section>
|
||||
<item name="" type="custom" path="alexander/spaceref" label="Bereich:" />
|
||||
</imixs-form-section>
|
||||
|
||||
<imixs-form-section label="Positionen" path="alexander/section_datevbuchung" />
|
||||
</imixs-form>]]></bpmn2:documentation>
|
||||
<bpmn2:dataState id="DataState_2"/>
|
||||
</bpmn2:dataObject>
|
||||
<bpmn2:association id="Association_3" sourceRef="DataObject_2" targetRef="Task_1">
|
||||
<bpmn2:documentation id="documentation_gEJUyg"/>
|
||||
</bpmn2:association>
|
||||
<bpmn2:intermediateCatchEvent id="event_XJbC5A" imixs:activityid="10" name="Erledigt">
|
||||
<bpmn2:intermediateCatchEvent id="event_XJbC5A" imixs:activityid="20" name="Erledigt">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="rtfresultlog" type="xs:string">
|
||||
<imixs:value><![CDATA[Die offenen Zollrechnungen wurden erstellt.]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keypublicresult" type="xs:string">
|
||||
<imixs:value><![CDATA[1]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:documentation id="documentation_vQEymA"/>
|
||||
<bpmn2:incoming>sequenceFlow_EzmiPA</bpmn2:incoming>
|
||||
<bpmn2:outgoing>sequenceFlow_l0egag</bpmn2:outgoing>
|
||||
</bpmn2:intermediateCatchEvent>
|
||||
<bpmn2:sequenceFlow id="sequenceFlow_4Vru0A" sourceRef="IntermediateCatchEvent_3" targetRef="Task_1">
|
||||
<bpmn2:documentation id="documentation_tH3rjg"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
<bpmn2:sequenceFlow id="sequenceFlow_EzmiPA" sourceRef="Task_1" targetRef="event_XJbC5A">
|
||||
<bpmn2:documentation id="documentation_HhV7dA"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
<bpmn2:sequenceFlow id="sequenceFlow_l0egag" sourceRef="event_XJbC5A" targetRef="Task_2">
|
||||
<bpmn2:documentation id="documentation_Cv5oCQ"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
<bpmn2:intermediateCatchEvent id="event_6fY5IQ" imixs:activityid="100" name="[update]">
|
||||
<bpmn2:textAnnotation id="textAnnotation_HwSKqQ" textFormat="">
|
||||
<bpmn2:text id="text_wYoZbw"><![CDATA[Zollanmeldung / Steuerbescheid vom Zollamt
|
||||
Wird täglich über die DATEV OP-Liste importiert]]></bpmn2:text>
|
||||
<bpmn2:documentation id="documentation_QPl7DA"/>
|
||||
</bpmn2:textAnnotation>
|
||||
<bpmn2:intermediateCatchEvent id="event_9fS4uw" imixs:activityid="10" name="Speichern">
|
||||
<bpmn2:extensionElements>
|
||||
<imixs:item name="txtmailsubject" type="xs:string">
|
||||
<imixs:value/>
|
||||
</imixs:item>
|
||||
<imixs:item name="keymailreceiverfields" type="xs:string"/>
|
||||
<imixs:item name="rtfmailbody" type="CDATA">
|
||||
<imixs:value/>
|
||||
</imixs:item>
|
||||
<imixs:item name="keypublicresult" type="xs:string">
|
||||
<imixs:value><![CDATA[1]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="rtfresultlog" type="xs:string">
|
||||
<imixs:value><![CDATA[Es wurden neue Positionen hinzugefügt]]></imixs:value>
|
||||
<imixs:item name="rtfresultlog" type="CDATA">
|
||||
<imixs:value><![CDATA[Aktualisiert]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:messageEventDefinition id="messageEventDefinition_8JwBlw"/>
|
||||
<bpmn2:documentation id="documentation_E3uPXQ"/>
|
||||
<bpmn2:incoming>sequenceFlow_GVz3vg</bpmn2:incoming>
|
||||
<bpmn2:outgoing>sequenceFlow_E8t80w</bpmn2:outgoing>
|
||||
<bpmn2:documentation id="documentation_BnRlgQ"/>
|
||||
<bpmn2:outgoing>sequenceFlow_rbVgQA</bpmn2:outgoing>
|
||||
</bpmn2:intermediateCatchEvent>
|
||||
<bpmn2:sequenceFlow id="sequenceFlow_GVz3vg" sourceRef="Task_2" targetRef="event_6fY5IQ">
|
||||
<bpmn2:documentation id="documentation_15n2yQ"/>
|
||||
<bpmn2:sequenceFlow id="sequenceFlow_rbVgQA" sourceRef="event_9fS4uw" targetRef="Task_1">
|
||||
<bpmn2:documentation id="documentation_AcFalQ"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
<bpmn2:sequenceFlow id="sequenceFlow_E8t80w" sourceRef="event_6fY5IQ" targetRef="Task_1">
|
||||
<bpmn2:documentation id="documentation_y0LxEQ"/>
|
||||
<bpmn2:sequenceFlow id="sequenceFlow_aXX5dg" sourceRef="Task_1" targetRef="IntermediateCatchEvent_3">
|
||||
<bpmn2:documentation id="documentation_OFz0ng"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
<bpmn2:sequenceFlow id="sequenceFlow_MTbeHA" sourceRef="IntermediateCatchEvent_3" targetRef="Task_4">
|
||||
<bpmn2:documentation id="documentation_AWXRsQ"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
<bpmn2:sequenceFlow id="sequenceFlow_M5IK7w" sourceRef="StartEvent_1" targetRef="Task_1">
|
||||
<bpmn2:documentation id="documentation_nuyBIg"/>
|
||||
</bpmn2:sequenceFlow>
|
||||
<bpmn2:association id="association_2r0omw" sourceRef="DataObject_2" targetRef="Task_4">
|
||||
<bpmn2:documentation id="documentation_6aRYjQ"/>
|
||||
</bpmn2:association>
|
||||
</bpmn2:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1" name="Default Process Diagram">
|
||||
<bpmndi:BPMNPlane bpmnElement="Collaboration_1" id="BPMNPlane_1">
|
||||
<bpmndi:BPMNShape bpmnElement="Participant_1" id="BPMNShape_Participant_1" isHorizontal="true">
|
||||
<dc:Bounds height="500.0" width="1200.0" x="100.0" y="150.0"/>
|
||||
<dc:Bounds height="520.0" width="1370.0" x="100.0" y="150.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="Lane_1" id="BPMNShape_Lane_1" isHorizontal="true">
|
||||
<dc:Bounds height="500.0" width="1170.0" x="130.0" y="150.0"/>
|
||||
<dc:Bounds height="520.0" width="1340.0" x="130.0" y="150.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="StartEvent_1" id="BPMNShape_1">
|
||||
<dc:Bounds height="36.0" width="36.0" x="177.0" y="297.0"/>
|
||||
<dc:Bounds height="36.0" width="36.0" x="227.0" y="297.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_1" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="20.0" width="100.0" x="147.5" y="337.0"/>
|
||||
<dc:Bounds height="20.0" width="100.0" x="197.5" y="337.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="Task_1" id="BPMNShape_Task_1">
|
||||
<dc:Bounds height="50.0" width="110.0" x="290.0" y="290.0"/>
|
||||
<dc:Bounds height="50.0" width="110.0" x="410.0" y="290.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="EndEvent_3" id="BPMNShape_EndEvent_2">
|
||||
<dc:Bounds height="36.0" width="36.0" x="1097.0" y="297.0"/>
|
||||
<dc:Bounds height="36.0" width="36.0" x="1297.0" y="297.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_85" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="20.0" width="100.0" x="1068.0" y="337.0"/>
|
||||
<dc:Bounds height="20.0" width="100.0" x="1268.0" y="337.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="Task_2" id="BPMNShape_Task_2">
|
||||
<dc:Bounds height="50.0" width="110.0" x="600.0" y="290.0"/>
|
||||
<dc:Bounds height="50.0" width="110.0" x="800.0" y="290.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="Message_2" id="BPMNShape_Message_1">
|
||||
<dc:Bounds height="20.0" width="30.0" x="119.0" y="59.0"/>
|
||||
|
|
@ -372,99 +380,106 @@ th { font-weight: bold;}
|
|||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="Task_4" id="BPMNShape_Task_4">
|
||||
<dc:Bounds height="50.0" width="110.0" x="920.0" y="290.0"/>
|
||||
<dc:Bounds height="50.0" width="110.0" x="1120.0" y="290.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_8" id="BPMNShape_IntermediateCatchEvent_8">
|
||||
<dc:Bounds height="36.0" width="36.0" x="787.0" y="297.0"/>
|
||||
<dc:Bounds height="36.0" width="36.0" x="987.0" y="297.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_31" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="20.0" width="100.0" x="754.0" y="337.0"/>
|
||||
<dc:Bounds height="20.0" width="100.0" x="954.0" y="337.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_2" id="BPMNShape_IntermediateCatchEvent_2">
|
||||
<dc:Bounds height="36.0" width="36.0" x="637.0" y="377.0"/>
|
||||
<dc:Bounds height="36.0" width="36.0" x="837.0" y="377.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_6" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="20.0" width="100.0" x="605.0" y="416.0"/>
|
||||
<dc:Bounds height="20.0" width="100.0" x="805.0" y="416.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_3" id="BPMNShape_IntermediateCatchEvent_3">
|
||||
<dc:Bounds height="36.0" width="36.0" x="247.0" y="397.0"/>
|
||||
<dc:Bounds height="36.0" width="36.0" x="447.0" y="217.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_8" labelStyle="BPMNLabelStyle_1">
|
||||
<dc:Bounds height="20.0" width="100.0" x="221.5" y="440.0"/>
|
||||
<dc:Bounds height="20.0" width="100.0" x="421.5" y="260.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="DataObject_2" id="BPMNShape_DataObject_2">
|
||||
<dc:Bounds height="50.0" width="35.0" x="230.0" y="230.0"/>
|
||||
<dc:Bounds height="50.0" width="35.0" x="740.0" y="500.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_12">
|
||||
<dc:Bounds height="20.0" width="100.0" x="198.0" y="280.0"/>
|
||||
<dc:Bounds height="20.0" width="100.0" x="708.0" y="550.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_4" id="BPMNEdge_SequenceFlow_4" sourceElement="BPMNShape_1" targetElement="BPMNShape_Task_1">
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_11"/>
|
||||
<di:waypoint x="213.0" y="315.0"/>
|
||||
<di:waypoint x="290.0" y="315.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_17" id="BPMNEdge_SequenceFlow_17" sourceElement="BPMNShape_Task_2" targetElement="BPMNShape_IntermediateCatchEvent_8">
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_36"/>
|
||||
<di:waypoint x="710.0" y="315.0"/>
|
||||
<di:waypoint x="787.0" y="315.0"/>
|
||||
<di:waypoint x="910.0" y="315.0"/>
|
||||
<di:waypoint x="987.0" y="315.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_18" id="BPMNEdge_SequenceFlow_18" sourceElement="BPMNShape_IntermediateCatchEvent_8" targetElement="BPMNShape_Task_4">
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_38"/>
|
||||
<di:waypoint x="823.0" y="315.0"/>
|
||||
<di:waypoint x="920.0" y="315.0"/>
|
||||
<di:waypoint x="1023.0" y="315.0"/>
|
||||
<di:waypoint x="1120.0" y="315.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_19" id="BPMNEdge_SequenceFlow_19" sourceElement="BPMNShape_Task_4" targetElement="BPMNShape_EndEvent_2">
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_39"/>
|
||||
<di:waypoint x="1030.0" y="315.0"/>
|
||||
<di:waypoint x="1097.0" y="315.0"/>
|
||||
<di:waypoint x="1230.0" y="315.0"/>
|
||||
<di:waypoint x="1297.0" y="315.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_1" id="BPMNEdge_SequenceFlow_1" sourceElement="BPMNShape_IntermediateCatchEvent_2" targetElement="BPMNShape_Task_2">
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_7"/>
|
||||
<di:waypoint x="655.0" y="377.0"/>
|
||||
<di:waypoint x="655.0" y="340.0"/>
|
||||
<di:waypoint x="855.0" y="377.0"/>
|
||||
<di:waypoint x="855.0" y="340.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="Association_3" id="BPMNEdge_Association_3" sourceElement="BPMNShape_DataObject_2" targetElement="BPMNShape_Task_1">
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_14"/>
|
||||
<di:waypoint x="265.0" y="255.0"/>
|
||||
<di:waypoint x="277.5" y="255.0"/>
|
||||
<di:waypoint x="277.5" y="315.0"/>
|
||||
<di:waypoint x="290.0" y="315.0"/>
|
||||
<di:waypoint x="740.0" y="525.0"/>
|
||||
<di:waypoint x="630.0" y="525.0"/>
|
||||
<di:waypoint x="630.0" y="315.0"/>
|
||||
<di:waypoint x="520.0" y="315.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape bpmnElement="event_XJbC5A" id="BPMNShape_3fLqIw">
|
||||
<dc:Bounds height="36.0" width="36.0" x="487.0" y="297.0"/>
|
||||
<dc:Bounds height="36.0" width="36.0" x="687.0" y="297.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_fzXPOA">
|
||||
<dc:Bounds height="20.0" width="100.0" x="455.0" y="336.0"/>
|
||||
<dc:Bounds height="20.0" width="100.0" x="655.0" y="336.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_4Vru0A" id="BPMNEdge_20EpXg" sourceElement="BPMNShape_IntermediateCatchEvent_3" targetElement="BPMNShape_Task_1">
|
||||
<di:waypoint x="271.0" y="398.02943725152284"/>
|
||||
<di:waypoint x="271.0" y="376.0"/>
|
||||
<di:waypoint x="315.0" y="376.0"/>
|
||||
<di:waypoint x="315.0" y="340.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_EzmiPA" id="BPMNEdge_2O039Q" sourceElement="BPMNShape_Task_1" targetElement="BPMNShape_3fLqIw">
|
||||
<di:waypoint x="400.0" y="315.0"/>
|
||||
<di:waypoint x="487.0" y="315.0"/>
|
||||
<di:waypoint x="520.0" y="315.0"/>
|
||||
<di:waypoint x="687.0" y="315.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_l0egag" id="BPMNEdge_WIvxbQ" sourceElement="BPMNShape_3fLqIw" targetElement="BPMNShape_Task_2">
|
||||
<di:waypoint x="523.0" y="315.0"/>
|
||||
<di:waypoint x="600.0" y="315.0"/>
|
||||
<di:waypoint x="723.0" y="315.0"/>
|
||||
<di:waypoint x="800.0" y="315.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape bpmnElement="event_6fY5IQ" id="BPMNShape_bW9fRA">
|
||||
<dc:Bounds height="36.0" width="36.0" x="487.0" y="217.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_xcOZTQ">
|
||||
<dc:Bounds height="20.0" width="100.0" x="461.5" y="260.0"/>
|
||||
<bpmndi:BPMNShape bpmnElement="textAnnotation_HwSKqQ" id="BPMNShape_6f4UmA">
|
||||
<dc:Bounds height="80.0" width="193.0" x="180.0" y="490.0"/>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="event_9fS4uw" id="BPMNShape_JSwhvQ">
|
||||
<dc:Bounds height="36.0" width="36.0" x="447.0" y="377.0"/>
|
||||
<bpmndi:BPMNLabel id="BPMNLabel_jZmJsw">
|
||||
<dc:Bounds height="20.0" width="100.0" x="415.0" y="416.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_GVz3vg" id="BPMNEdge_pPQ5Ig" sourceElement="BPMNShape_Task_2" targetElement="BPMNShape_bW9fRA">
|
||||
<di:waypoint x="655.0" y="290.0"/>
|
||||
<di:waypoint x="655.0" y="235.0"/>
|
||||
<di:waypoint x="523.0" y="235.0"/>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_rbVgQA" id="BPMNEdge_6PdUYA" sourceElement="BPMNShape_JSwhvQ" targetElement="BPMNShape_Task_1">
|
||||
<di:waypoint x="465.0" y="377.0"/>
|
||||
<di:waypoint x="465.0" y="357.0"/>
|
||||
<di:waypoint x="465.0" y="340.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_E8t80w" id="BPMNEdge_p3x7Iw" sourceElement="BPMNShape_bW9fRA" targetElement="BPMNShape_Task_1">
|
||||
<di:waypoint x="487.0" y="235.0"/>
|
||||
<di:waypoint x="340.0" y="235.0"/>
|
||||
<di:waypoint x="340.0" y="290.0"/>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_aXX5dg" id="BPMNEdge_Wkee0Q" sourceElement="BPMNShape_Task_1" targetElement="BPMNShape_IntermediateCatchEvent_3">
|
||||
<di:waypoint x="465.0" y="290.0"/>
|
||||
<di:waypoint x="465.0" y="271.5"/>
|
||||
<di:waypoint x="470.0" y="271.5"/>
|
||||
<di:waypoint x="470.0" y="252.29161646579058"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_MTbeHA" id="BPMNEdge_RhmZbw" sourceElement="BPMNShape_IntermediateCatchEvent_3" targetElement="BPMNShape_Task_4">
|
||||
<di:waypoint x="482.54992877478423" y="231.0"/>
|
||||
<di:waypoint x="1175.0" y="231.0"/>
|
||||
<di:waypoint x="1175.0" y="290.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_M5IK7w" id="BPMNEdge_gTIgKQ" sourceElement="BPMNShape_1" targetElement="BPMNShape_Task_1">
|
||||
<di:waypoint x="263.0" y="315.0"/>
|
||||
<di:waypoint x="410.0" y="315.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="association_2r0omw" id="BPMNEdge_pgk0IA" sourceElement="BPMNShape_DataObject_2" targetElement="BPMNShape_Task_4">
|
||||
<di:waypoint x="775.0" y="525.0"/>
|
||||
<di:waypoint x="1162.0" y="525.0"/>
|
||||
<di:waypoint x="1162.0" y="340.0"/>
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
<bpmndi:BPMNLabelStyle id="BPMNLabelStyle_1">
|
||||
Loading…
Reference in a new issue