minor dunning layout fixes

This commit is contained in:
Ralph Soika 2025-04-28 19:14:48 +02:00
parent 9511d7fd95
commit 1ea9564e55
15 changed files with 2241 additions and 240 deletions

View file

@ -36,6 +36,10 @@ Betroffen sind:
- zahlungseingang-\* - zahlungseingang-\*
- Analyse-debitor-\* - Analyse-debitor-\*
Mahnlauf
- dieser müsste so modelliert werden wie `rechnungsausgang-dwc-1.0.3` zu sehen ist!!!!!!
## 1.3.3 ## 1.3.3
- Imixs-Archive 3.1.1. Compactor Service - Imixs-Archive 3.1.1. Compactor Service

View file

@ -208,7 +208,6 @@ public class BusinessPartnerController implements Serializable {
if (workitem.getModelVersion().startsWith("businesspartner-")) { if (workitem.getModelVersion().startsWith("businesspartner-")) {
// reset orderItems if workItem has changed // reset orderItems if workItem has changed
if (WorkflowEvent.WORKITEM_CHANGED == eventType || WorkflowEvent.WORKITEM_CREATED == eventType) { if (WorkflowEvent.WORKITEM_CHANGED == eventType || WorkflowEvent.WORKITEM_CREATED == eventType) {
// reset state // reset state
ibanList = BusinessPartnerService.explodeBanks(workitem); ibanList = BusinessPartnerService.explodeBanks(workitem);
loadStats(workitem); loadStats(workitem);
@ -276,15 +275,9 @@ public class BusinessPartnerController implements Serializable {
// Ausgangsrechnungen // Ausgangsrechnungen
String dbtrNumber = workitem.getItemValueString("dbtr.number"); String dbtrNumber = workitem.getItemValueString("dbtr.number");
if (!dbtrNumber.isEmpty()) { if (!dbtrNumber.isEmpty()) {
if (dbtrNumber.startsWith("D")) { invoicesOut = businessPartnerService.findOutgoingInvoices(dbtrNumber);
dbtrNumber = dbtrNumber.substring(1);
}
String query = "(type:workitem) AND ($modelversion:rechnungsausgang-*) "
+ " AND (dbtr.number:" + dbtrNumber + ")";
invoicesOut = documentService.findStubs(query, 999, 0, "invoice.number", false);
// Mahnungen // Mahnungen
query = "(type:workitem) AND ($modelversion:mahnlauf-*) " String query = "(type:workitem) AND ($modelversion:mahnlauf-*) "
+ " AND (dbtr.number:" + dbtrNumber + ")"; + " AND (dbtr.number:" + dbtrNumber + ")";
dunnings = documentService.findStubs(query, 999, 0, "invoice.number", false); dunnings = documentService.findStubs(query, 999, 0, "invoice.number", false);
} }

View file

@ -45,6 +45,7 @@ import org.imixs.workflow.exceptions.AccessDeniedException;
import org.imixs.workflow.exceptions.ModelException; import org.imixs.workflow.exceptions.ModelException;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.ProcessingErrorException; import org.imixs.workflow.exceptions.ProcessingErrorException;
import org.imixs.workflow.exceptions.QueryException;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import jakarta.annotation.security.DeclareRoles; import jakarta.annotation.security.DeclareRoles;
@ -192,6 +193,35 @@ public class BusinessPartnerService {
} }
} }
/**
* Returns the stubs of all outgoing invoices
*
* @param _dbtrNumber
* @return
*/
public List<ItemCollection> findOutgoingInvoices(String _dbtrNumber) {
// Aus der dbtrNummer muss das führendde D entfernt werden
String query = "(type:workitem) AND ($modelversion:rechnungsausgang-*)";
// Aus der dbtrNummer muss das führendde D entfernt werden
// wir speichern dieses zwar im Zahlungseingangs Workflow, aber eine
// Ausganksrechnung kennt das nicht
// Das ganze ist ein übles Relikt aus Cargosoft und kann nicht vermieden werden
String _dbtrNumberOld = _dbtrNumber;
if (_dbtrNumberOld.startsWith("D")) {
_dbtrNumberOld = _dbtrNumber.substring(1);
}
query = query + " AND (dbtr.number:" + _dbtrNumber + " OR dbtr.number:" + _dbtrNumberOld + ")";
try {
return documentService.find(query, 999, 0, "invoice.number", false);
} catch (QueryException e) {
logger.severe("Failed to compute outgoing invoices: " + e.getMessage());
}
return new ArrayList<>();
}
/** /**
* Diese Methode sucht einen Business Partner anhand seiner BPID * Diese Methode sucht einen Business Partner anhand seiner BPID
* *

View file

@ -12,7 +12,6 @@ import org.imixs.workflow.WorkflowKernel;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.engine.WorkflowService; import org.imixs.workflow.engine.WorkflowService;
import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.faces.data.WorkflowController; import org.imixs.workflow.faces.data.WorkflowController;
import org.imixs.workflow.faces.data.WorkflowEvent; import org.imixs.workflow.faces.data.WorkflowEvent;
@ -125,43 +124,28 @@ public class OPListController implements Serializable {
lastCurrencyFilter = currencyFilter; lastCurrencyFilter = currencyFilter;
invoiceList = new ArrayList<ItemCollection>(); invoiceList = new ArrayList<ItemCollection>();
logger.fine("....loading open Invoices for " + _dbtrNumber); logger.fine("....loading open Invoices for " + _dbtrNumber);
List<ItemCollection> invoiceListTemp = businessPartnerService.findOutgoingInvoices(_dbtrNumber);
// Aus der dbtrNummer muss das führendde D entfernt werden // Jetzt nur noch die Rechnungen nehmen die zum ausgewählten Währungsfilter
// wir speichern dieses zwar im Zahlungseingangs Workflow, aber eine // passen
// Ausganksrechnung kennt das nicht invoiceList = new ArrayList<ItemCollection>();
// Das ganze ist ein übles Relikt aus Cargosoft und kann nicht vermieden werden for (ItemCollection _invoice : invoiceListTemp) {
if (_dbtrNumber.startsWith("D")) {
_dbtrNumber = _dbtrNumber.substring(1);
}
try { // Test if we have 'invoice.base.amount' and 'invoice.rate'
String query = "(type:workitem) AND ($modelversion:rechnungsausgang-*) AND (dbtr.number:" + _dbtrNumber if (!_invoice.hasItem("invoice.base.amount")) {
+ ")"; _invoice.setItemValue("invoice.base.amount", 0.0);
List<ItemCollection> invoiceListTemp = documentService.find(query, 999, 0, "invoice.number", false); }
if (!_invoice.hasItem("invoice.rate")) {
_invoice.setItemValue("invoice.rate", 0.0);
}
// Jetzt nur noch die Rechnungen nehmen die zum ausgewählten Währungsfilter if (currencyFilter == null || currencyFilter.isEmpty() || currencyFilter.equals("-")) {
// passen invoiceList.add(_invoice);
invoiceList = new ArrayList<ItemCollection>(); } else {
for (ItemCollection _invoice : invoiceListTemp) { if (currencyFilter.equals(_invoice.getItemValueString("invoice.currency"))) {
// Test if we have 'invoice.base.amount' and 'invoice.rate'
if (!_invoice.hasItem("invoice.base.amount")) {
_invoice.setItemValue("invoice.base.amount", 0.0);
}
if (!_invoice.hasItem("invoice.rate")) {
_invoice.setItemValue("invoice.rate", 0.0);
}
if (currencyFilter == null || currencyFilter.isEmpty() || currencyFilter.equals("-")) {
invoiceList.add(_invoice); invoiceList.add(_invoice);
} else {
if (currencyFilter.equals(_invoice.getItemValueString("invoice.currency"))) {
invoiceList.add(_invoice);
}
} }
} }
} catch (QueryException e) {
logger.severe("Failed to get op liste:" + e.getMessage());
} }
/* /*

View file

@ -1,14 +1,11 @@
<ui:composition xmlns="http://www.w3.org/1999/xhtml" <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"> xmlns:h="http://xmlns.jcp.org/jsf/html">
<!-- Zeit alle verknüften Zahlungen an --> <!-- Zeit alle verknüften Zahlungen an -->
<h:panelGroup layout="block" styleClass="imixs-form-section" <h:panelGroup layout="block" styleClass="imixs-form-section" id="dunnings">
id="dunnings">
<table class="imixsdatatable "> <table class="imixsdatatable ">
@ -19,22 +16,31 @@
<th style="">#{message.modified}</th> <th style="">#{message.modified}</th>
</tr> </tr>
<ui:param name="dunnings" <ui:param name="dunnings" value="#{businessPartnerController.getDunnings()}"></ui:param>
value="#{businessPartnerController.getDunnings()}"></ui:param>
<ui:repeat var="dunning" value="#{dunnings}"> <ui:repeat var="dunning" value="#{dunnings}">
<tr> <tr>
<td><h:link outcome="/pages/workitems/workitem"> <td>
#{dunning.item['$workflowsummary']} <h:link outcome="/pages/workitems/workitem">
<f:param name="id" value="#{dunning.item['$uniqueid']}" /> #{dunning.item['$workflowsummary']}
</h:link></td> <f:param name="id" value="#{dunning.item['$uniqueid']}" />
<td>#{dunning.item['$workflowstatus']}</td> </h:link>
</td>
<td style="text-align: center;">#{invoice.item['$workflowstatus']}</td>
<td><h:outputText value="#{dunning.item['$lastEventDate']}"> <td style="text-align: center;">
<f:convertDateTime pattern="#{message.datePatternShort}" <h:outputText value="#{invoice.item['$created']}">
<f:convertDateTime pattern="#{message.dateTimePatternShort}"
timeZone="#{message.timeZone}" /> timeZone="#{message.timeZone}" />
</h:outputText> #{message.by} #{userController.getUserName(dunning.item['$editor'])}</td> </h:outputText> #{message.by} #{userController.getUserName(invoice.item['$editor'])}
</td>
<td style="text-align: center;">
<h:outputText value="#{invoice.item['$lastEventDate']}">
<f:convertDateTime pattern="#{message.dateTimePatternShort}"
timeZone="#{message.timeZone}" />
</h:outputText> #{message.by} #{userController.getUserName(invoice.item['$editor'])}
</td>
</tr> </tr>
</ui:repeat> </ui:repeat>

View file

@ -1,14 +1,11 @@
<ui:composition xmlns="http://www.w3.org/1999/xhtml" <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"> xmlns:h="http://xmlns.jcp.org/jsf/html">
<!-- Zeit alle verknüften Zahlungen an --> <!-- Zeit alle verknüften Zahlungen an -->
<h:panelGroup layout="block" styleClass="imixs-form-section" <h:panelGroup layout="block" styleClass="imixs-form-section" id="invoices">
id="invoices">
<table class="imixsdatatable "> <table class="imixsdatatable ">
@ -19,22 +16,31 @@
<th style="">#{message.modified}</th> <th style="">#{message.modified}</th>
</tr> </tr>
<ui:param name="invoices" <ui:param name="invoices" value="#{businessPartnerController.getInvoicesIn()}"></ui:param>
value="#{businessPartnerController.getInvoicesIn()}"></ui:param>
<ui:repeat var="invoice" value="#{invoices}"> <ui:repeat var="invoice" value="#{invoices}">
<tr> <tr>
<td><h:link outcome="/pages/workitems/workitem"> <td>
#{invoice.item['$workflowsummary']} <h:link outcome="/pages/workitems/workitem">
<f:param name="id" value="#{invoice.item['$uniqueid']}" /> #{invoice.item['$workflowsummary']}
</h:link></td> <f:param name="id" value="#{invoice.item['$uniqueid']}" />
<td>#{invoice.item['$workflowstatus']}</td> </h:link>
</td>
<td style="text-align: center;">#{invoice.item['$workflowstatus']}</td>
<td><h:outputText value="#{invoice.item['$lastEventDate']}"> <td style="text-align: center;">
<f:convertDateTime pattern="#{message.datePatternShort}" <h:outputText value="#{invoice.item['$created']}">
<f:convertDateTime pattern="#{message.dateTimePatternShort}"
timeZone="#{message.timeZone}" /> timeZone="#{message.timeZone}" />
</h:outputText> #{message.by} #{userController.getUserName(invoice.item['$editor'])}</td> </h:outputText> #{message.by} #{userController.getUserName(invoice.item['$editor'])}
</td>
<td style="text-align: center;">
<h:outputText value="#{invoice.item['$lastEventDate']}">
<f:convertDateTime pattern="#{message.dateTimePatternShort}"
timeZone="#{message.timeZone}" />
</h:outputText> #{message.by} #{userController.getUserName(invoice.item['$editor'])}
</td>
</tr> </tr>
</ui:repeat> </ui:repeat>

View file

@ -1,14 +1,11 @@
<ui:composition xmlns="http://www.w3.org/1999/xhtml" <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"> xmlns:h="http://xmlns.jcp.org/jsf/html">
<!-- Zeit alle verknüften Zahlungen an --> <!-- Zeit alle verknüften Zahlungen an -->
<h:panelGroup layout="block" styleClass="imixs-form-section" <h:panelGroup layout="block" styleClass="imixs-form-section" id="invoices">
id="invoices">
<table class="imixsdatatable "> <table class="imixsdatatable ">
@ -16,27 +13,36 @@
<tr> <tr>
<th style="width: 600px;">Rechnung</th> <th style="width: 600px;">Rechnung</th>
<th style="width: 200px;">Status</th> <th style="width: 200px;">Status</th>
<th style="">#{message.created}</th>
<th style="">#{message.modified}</th> <th style="">#{message.modified}</th>
</tr> </tr>
<ui:param name="invoices" <ui:param name="invoices" value="#{businessPartnerController.getInvoicesOut()}"></ui:param>
value="#{businessPartnerController.getInvoicesOut()}"></ui:param>
<ui:repeat var="invoice" value="#{invoices}"> <ui:repeat var="invoice" value="#{invoices}">
<tr> <tr>
<td><h:link outcome="/pages/workitems/workitem" styleClass="tooltip-link"> <td>
#{invoice.item['$workflowsummary']} <h:link outcome="/pages/workitems/workitem" styleClass="tooltip-link">
<f:param name="id" value="#{invoice.item['$uniqueid']}" /> #{invoice.item['$workflowsummary']}
<span class="tooltip-text"> <f:param name="id" value="#{invoice.item['$uniqueid']}" />
<h:outputText value="#{invoice.item['$workflowabstract']}" escape="false" /> <span class="tooltip-text">
</span> <h:outputText value="#{invoice.item['$workflowabstract']}" escape="false" />
</h:link> </span>
</h:link>
</td> </td>
<td>#{invoice.item['$workflowstatus']}</td> <td style="text-align: center;">#{invoice.item['$workflowstatus']}</td>
<td><h:outputText value="#{invoice.item['$lastEventDate']}"> <td style="text-align: center;">
<f:convertDateTime pattern="#{message.datePatternShort}" <h:outputText value="#{invoice.item['$created']}">
<f:convertDateTime pattern="#{message.dateTimePatternShort}"
timeZone="#{message.timeZone}" /> timeZone="#{message.timeZone}" />
</h:outputText> #{message.by} #{userController.getUserName(invoice.item['$editor'])}</td> </h:outputText> #{message.by} #{userController.getUserName(invoice.item['$editor'])}
</td>
<td style="text-align: center;">
<h:outputText value="#{invoice.item['$lastEventDate']}">
<f:convertDateTime pattern="#{message.dateTimePatternShort}"
timeZone="#{message.timeZone}" />
</h:outputText> #{message.by} #{userController.getUserName(invoice.item['$editor'])}
</td>
</tr> </tr>
</ui:repeat> </ui:repeat>
@ -45,7 +51,7 @@
</h:panelGroup> </h:panelGroup>
</ui:composition> </ui:composition>

View file

@ -1,18 +1,14 @@
<ui:composition xmlns="http://www.w3.org/1999/xhtml" <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"> xmlns:h="http://xmlns.jcp.org/jsf/html">
<!-- Zeit alle verknüften Zahlungen an --> <!-- Zeit alle verknüften Zahlungen an -->
<h:panelGroup layout="block" styleClass="imixs-form-section" <h:panelGroup layout="block" styleClass="imixs-form-section" id="paymentlist">
id="paymentlist">
<table class="imixsdatatable "> <table class="imixsdatatable ">
<tr> <tr>
<th style="">Mahnung</th> <th style="">Mahnung</th>
<th style="width: 100px;">Status</th> <th style="width: 100px;">Status</th>
@ -20,31 +16,29 @@
</tr> </tr>
<ui:param name="dunnings" <ui:param name="dunnings"
value="#{workitemLinkController.getExternalReferences('$workflowgroup:Mahnlauf')}"></ui:param> value="#{workitemLinkController.getExternalReferences('$modelversion:(^mahnlauf.*)')}">
</ui:param>
<ui:repeat var="dunning_stub" value="#{dunnings}"> <ui:repeat var="dunning_stub" value="#{dunnings}">
<ui:param name="dunning" <ui:param name="dunning" value="#{opListController.loadInvoice(dunning_stub.getUniqueID())}"></ui:param>
value="#{opListController.loadInvoice(dunning_stub.getUniqueID())}"></ui:param>
<tr> <tr>
<td><h:link outcome="/pages/workitems/workitem"> <td>
#{dunning.item['$workflowsummary']} <h:link outcome="/pages/workitems/workitem">
<f:param name="id" value="#{dunning.item['$uniqueid']}" /> #{dunning.item['$workflowsummary']}
</h:link></td> <f:param name="id" value="#{dunning.item['$uniqueid']}" />
</h:link>
</td>
<td>#{dunning.item['$workflowstatus']}</td> <td>#{dunning.item['$workflowstatus']}</td>
<td><h:outputText value="#{dunning.item['$lastEventDate']}"> <td>
<f:convertDateTime pattern="#{message.datePatternShort}" <h:outputText value="#{dunning.item['$lastEventDate']}">
timeZone="#{message.timeZone}" /> <f:convertDateTime pattern="#{message.datePatternShort}" timeZone="#{message.timeZone}" />
</h:outputText> #{message.by} #{userController.getUserName(dunning.item['$editor'])}</td> </h:outputText> #{message.by} #{userController.getUserName(dunning.item['$editor'])}
</td>
</tr> </tr>
</ui:repeat> </ui:repeat>
</table> </table>
</h:panelGroup> </h:panelGroup>
</ui:composition> </ui:composition>

View file

@ -42,6 +42,7 @@
<th style="width: 150px;">#{custom['oplist.payment']}</th> <th style="width: 150px;">#{custom['oplist.payment']}</th>
<th style=""></th> <th style=""></th>
</tr> </tr>
<ui:param name="invoices" value="#{opListController.getInvoices(workitem.item['dbtr.number'])}"></ui:param> <ui:param name="invoices" value="#{opListController.getInvoices(workitem.item['dbtr.number'])}"></ui:param>
<ui:repeat value="#{invoices}" var="invoice"> <ui:repeat value="#{invoices}" var="invoice">
<tr> <tr>

View file

@ -31,6 +31,8 @@
<th style="width: 100px;">#{custom['form.open_saldo']}</th> <th style="width: 100px;">#{custom['form.open_saldo']}</th>
<th style="">#{custom['form.dunning']}</th> <th style="">#{custom['form.dunning']}</th>
</tr> </tr>
<ui:param name="invoices" value="#{opListController.getInvoices(workitem.item['dbtr.number'])}"></ui:param> <ui:param name="invoices" value="#{opListController.getInvoices(workitem.item['dbtr.number'])}"></ui:param>
<ui:repeat value="#{invoices}" var="invoice"> <ui:repeat value="#{invoices}" var="invoice">
<tr> <tr>

View file

@ -18,13 +18,12 @@
</tr> </tr>
<ui:param name="payments" <ui:param name="payments"
value="#{workitemLinkController.getExternalReferences('$modelversion:zahlungseingang-.*')}"></ui:param> value="#{workitemLinkController.getExternalReferences('$modelversion:(^zahlungseingang.*)')}">
</ui:param>
<ui:repeat var="payment_stub" value="#{payments}"> <ui:repeat var="payment_stub" value="#{payments}">
<ui:param name="payment" value="#{opListController.loadInvoice(payment_stub.getUniqueID())}"></ui:param> <ui:param name="payment" value="#{opListController.loadInvoice(payment_stub.getUniqueID())}"></ui:param>
<ui:param name="paymentDetails" value="#{opListController.loadPaymentDetails(payment)}"></ui:param> <ui:param name="paymentDetails" value="#{opListController.loadPaymentDetails(payment)}"></ui:param>
<tr> <tr>
<td> <td>
<h:link outcome="/pages/workitems/workitem"> <h:link outcome="/pages/workitems/workitem">

View file

@ -73,6 +73,7 @@
<bpmn2:flowNodeRef>textAnnotation_fFO8tQ</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>textAnnotation_fFO8tQ</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_kT136g</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>event_kT136g</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_jkHxJA</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>event_jkHxJA</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>event_zzWQSA</bpmn2:flowNodeRef>
</bpmn2:lane> </bpmn2:lane>
</bpmn2:laneSet> </bpmn2:laneSet>
<bpmn2:task id="task_ToMZaQ" imixs:processid="1000" name="Neuanlage"> <bpmn2:task id="task_ToMZaQ" imixs:processid="1000" name="Neuanlage">
@ -153,6 +154,7 @@
<bpmn2:incoming>sequenceFlow_b4BcVA</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_b4BcVA</bpmn2:incoming>
<bpmn2:outgoing>sequenceFlow_03b60w</bpmn2:outgoing> <bpmn2:outgoing>sequenceFlow_03b60w</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_u8PLGw</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_u8PLGw</bpmn2:incoming>
<bpmn2:incoming>sequenceFlow_ZTiO7w</bpmn2:incoming>
</bpmn2:task> </bpmn2:task>
<bpmn2:task id="task_B8Pi7A" imixs:processid="1800" name="Locked"> <bpmn2:task id="task_B8Pi7A" imixs:processid="1800" name="Locked">
<bpmn2:extensionElements> <bpmn2:extensionElements>
@ -241,12 +243,12 @@
<imixs-form-section columns="4" label=""> <imixs-form-section columns="4" label="">
<item name="analytic.invoices.count.all" type="custom" path="alexander/analyze_plain" label="Invoices total:" /> <item name="analytic.invoices.count.all" type="custom" path="alexander/analyze_plain" label="Invoices total:" />
<item name="analytic.invoices.count.open" type="custom" path="alexander/analyze_plain" label="Invoices open:" /> <item name="analytic.invoices.count.open" type="custom" path="alexander/analyze_plain" label="Invoices open:" />
<item name="analytic.invoices.count.due" type="custom" path="alexander/analyze_plain" label="Fällige Rechnungen:" /> <item name="analytic.invoices.count.due" type="custom" path="alexander/analyze_plain" label="Invoices over due:" />
<item name="analytic.invoices.count.dunning" type="custom" path="alexander/analyze_plain" label="Invoices dunning:" /> <item name="analytic.invoices.count.dunning" type="custom" path="alexander/analyze_plain" label="Invoices dunning:" />
</imixs-form-section> </imixs-form-section>
<imixs-form-section label="Incoming Invoices" path="alexander/section_bp_invoices_out" readonly="true" /> <imixs-form-section label="Invoices" path="alexander/section_bp_invoices_out" readonly="true" />
<imixs-form-section columns="2" label="Zahlungsmoral"> <imixs-form-section columns="2" label="Payment practice">
<item name="analytic.payment.avg.due" type="custom" path="alexander/analyze_plain" label="Average term of credit:" /> <item name="analytic.payment.avg.due" type="custom" path="alexander/analyze_plain" label="Average term of credit:" />
<item name="analytic.payment.avg.days" type="custom" path="alexander/analyze_plain" label="Average payment duration:" /> <item name="analytic.payment.avg.days" type="custom" path="alexander/analyze_plain" label="Average payment duration:" />
</imixs-form-section> </imixs-form-section>
@ -693,6 +695,30 @@
<bpmn2:sequenceFlow id="sequenceFlow_u8PLGw" sourceRef="event_jkHxJA" targetRef="task_Q80A1Q"> <bpmn2:sequenceFlow id="sequenceFlow_u8PLGw" sourceRef="event_jkHxJA" targetRef="task_Q80A1Q">
<bpmn2:documentation id="documentation_17ibaQ"/> <bpmn2:documentation id="documentation_17ibaQ"/>
</bpmn2:sequenceFlow> </bpmn2:sequenceFlow>
<bpmn2:intermediateCatchEvent id="event_zzWQSA" imixs:activityid="20" name="Create SOA">
<bpmn2:extensionElements>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Created new SOA]]></imixs:value>
</imixs:item>
<imixs:item name="keypublicresult" type="xs:string">
<imixs:value><![CDATA[1]]></imixs:value>
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<split name="subprocess_create">
<modelversion>mahnlauf-en-1.0</modelversion>
<task>1000</task>
<event>10</event>
<items>partner.id,partner.name,dbtr.number,partner.name|dbtr.name</items>
<action>/pages/workitems/workitem.jsf?id=<itemvalue>$uniqueid</itemvalue></action>
</split>]]></imixs:value>
</imixs:item>
</bpmn2:extensionElements>
<bpmn2:documentation id="documentation_Pkda2Q"/>
<bpmn2:outgoing>sequenceFlow_ZTiO7w</bpmn2:outgoing>
</bpmn2:intermediateCatchEvent>
<bpmn2:sequenceFlow id="sequenceFlow_ZTiO7w" sourceRef="event_zzWQSA" targetRef="task_Q80A1Q">
<bpmn2:documentation id="documentation_S2i1Tg"/>
</bpmn2:sequenceFlow>
</bpmn2:process> </bpmn2:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1" name="OpenBPMN Diagram"> <bpmndi:BPMNDiagram id="BPMNDiagram_1" name="OpenBPMN Diagram">
<bpmndi:BPMNPlane bpmnElement="collaboration_1" id="BPMNPlane_1"> <bpmndi:BPMNPlane bpmnElement="collaboration_1" id="BPMNPlane_1">
@ -754,14 +780,14 @@
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="event_vwH0cA" id="BPMNShape_OXGg8Q"> <bpmndi:BPMNShape bpmnElement="event_vwH0cA" id="BPMNShape_OXGg8Q">
<dc:Bounds height="36.0" width="36.0" x="697.0" y="357.0"/> <dc:Bounds height="36.0" width="36.0" x="657.0" y="357.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_KaHfJQ"> <bpmndi:BPMNLabel id="BPMNLabel_KaHfJQ">
<dc:Bounds height="20.0" width="100.0" x="665.0" y="396.0"/> <dc:Bounds height="20.0" width="100.0" x="625.0" y="396.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_avahXg" id="BPMNEdge_odMtvQ" sourceElement="BPMNShape_OXGg8Q" targetElement="BPMNShape_7JA0nw"> <bpmndi:BPMNEdge bpmnElement="sequenceFlow_avahXg" id="BPMNEdge_odMtvQ" sourceElement="BPMNShape_OXGg8Q" targetElement="BPMNShape_7JA0nw">
<di:waypoint x="720.0" y="392.0"/> <di:waypoint x="679.0" y="393.0"/>
<di:waypoint x="720.0" y="417.0"/> <di:waypoint x="679.0" y="417.0"/>
<di:waypoint x="667.0" y="417.0"/> <di:waypoint x="667.0" y="417.0"/>
<di:waypoint x="667.0" y="440.0"/> <di:waypoint x="667.0" y="440.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
@ -1032,6 +1058,18 @@
<di:waypoint x="635.0" y="303.0"/> <di:waypoint x="635.0" y="303.0"/>
<di:waypoint x="635.0" y="440.0"/> <di:waypoint x="635.0" y="440.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNShape bpmnElement="event_zzWQSA" id="BPMNShape_IuuTKA">
<dc:Bounds height="36.0" width="36.0" x="737.0" y="357.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_GYTS1Q">
<dc:Bounds height="20.0" width="100.0" x="705.0" y="396.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="sequenceFlow_ZTiO7w" id="BPMNEdge_6KWEQA" sourceElement="BPMNShape_IuuTKA" targetElement="BPMNShape_7JA0nw">
<di:waypoint x="737.0" y="375.0"/>
<di:waypoint x="714.0" y="375.0"/>
<di:waypoint x="714.0" y="465.0"/>
<di:waypoint x="690.0" y="465.0"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane> </bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram> </bpmndi:BPMNDiagram>
</bpmn2:definitions> </bpmn2:definitions>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -136,7 +136,6 @@ th { font-weight: bold;}
<bpmn2:flowNodeRef>Task_1</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>Task_1</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_9</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateCatchEvent_9</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>ExclusiveGateway_3</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>ExclusiveGateway_3</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateCatchEvent_8</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateThrowEvent_10</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateThrowEvent_10</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>IntermediateThrowEvent_9</bpmn2:flowNodeRef> <bpmn2:flowNodeRef>IntermediateThrowEvent_9</bpmn2:flowNodeRef>
<bpmn2:documentation id="documentation_N3gEbw"/> <bpmn2:documentation id="documentation_N3gEbw"/>
@ -469,7 +468,6 @@ Bei Fragen wenden Sie sich bitte an info@imixs.com
</bpmn2:extensionElements> </bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_9"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation> <bpmn2:documentation id="Documentation_9"><![CDATA[<textblock><itemvalue>$workflowgroup</itemvalue> - <itemvalue>$workflowstatus</itemvalue></textblock>]]></bpmn2:documentation>
<bpmn2:incoming>SequenceFlow_27</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming>
<bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing>
<bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_34</bpmn2:outgoing>
<bpmn2:incoming>sequenceFlow_zhcE7Q</bpmn2:incoming> <bpmn2:incoming>sequenceFlow_zhcE7Q</bpmn2:incoming>
@ -562,100 +560,6 @@ Bei Fragen wenden Sie sich bitte an info@imixs.com
<bpmn2:sequenceFlow id="SequenceFlow_27" sourceRef="IntermediateCatchEvent_5000-20" targetRef="Task_1"> <bpmn2:sequenceFlow id="SequenceFlow_27" sourceRef="IntermediateCatchEvent_5000-20" targetRef="Task_1">
<bpmn2:documentation id="documentation_yXkweQ"/> <bpmn2:documentation id="documentation_yXkweQ"/>
</bpmn2:sequenceFlow> </bpmn2:sequenceFlow>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_8" imixs:activityid="25" name="Create SOA">
<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/>
</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/>
</imixs:item>
<imixs:item name="keymailreceiverfields" type="xs:string"/>
<imixs:item name="keyversion" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddwritefields" type="xs:string">
<imixs:value><![CDATA[process.manager]]></imixs:value>
<imixs:value><![CDATA[process.team]]></imixs:value>
<imixs:value><![CDATA[space.manager]]></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:item name="numnextid" type="xs:int">
<imixs:value><![CDATA[5005]]></imixs:value>
</imixs:item>
<imixs:item name="txtnextprocesstree" type="xs:string">
<imixs:value/>
</imixs:item>
<imixs:item name="txtactivityresult" type="xs:string">
<imixs:value><![CDATA[<mahnlauf name="modelversion">mahnlauf-de-1.0</mahnlauf>
<mahnlauf name="task">1000</mahnlauf>
<mahnlauf name="event">100</mahnlauf>
<item name="action">/pages/workitems/workitem.jsf?id=<itemvalue>dunning.ref</itemvalue></item>
]]></imixs:value>
</imixs:item>
<imixs:item name="txtname" type="xs:string">
<imixs:value><![CDATA[Freigabe einholen]]></imixs:value>
</imixs:item>
<imixs:item name="keyownershipmode" type="xs:string">
<imixs:value><![CDATA[0]]></imixs:value>
</imixs:item>
<imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Dunning run started]]></imixs:value>
</imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value>
</imixs:item>
<imixs:item name="txtbusinessrule" type="xs:string">
<imixs:value><![CDATA[var result={};
var refField="dbtr.mail";
result.isValid=true;
if ( ( workitem.get(refField) == null || ''==workitem.get(refField)[0]) ) {
result.isValid=false;
result.errorMessage='No email address has been recorded for this vendor yet. Please update it in the Creditor/Debitor Management.';
}]]></imixs:value>
</imixs:item>
<imixs:item name="namaddreadaccess" type="xs:string">
<imixs:value><![CDATA[{process:?:member}]]></imixs:value>
<imixs:value><![CDATA[{space:?:member}]]></imixs:value>
</imixs:item>
<imixs:item name="keyaddreadfields" type="xs:string"/>
</bpmn2:extensionElements>
<bpmn2:documentation id="Documentation_15"/>
<bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
<bpmn2:dataOutput id="DataOutput_1" name="Signal_2_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_2" signalRef="Signal_4"/>
</bpmn2:intermediateCatchEvent>
<bpmn2:exclusiveGateway gatewayDirection="Diverging" id="ExclusiveGateway_3"> <bpmn2:exclusiveGateway gatewayDirection="Diverging" id="ExclusiveGateway_3">
<bpmn2:incoming>SequenceFlow_18</bpmn2:incoming> <bpmn2:incoming>SequenceFlow_18</bpmn2:incoming>
<bpmn2:outgoing>SequenceFlow_25</bpmn2:outgoing> <bpmn2:outgoing>SequenceFlow_25</bpmn2:outgoing>
@ -894,9 +798,6 @@ result.isValid=true;
<bpmn2:sequenceFlow id="SequenceFlow_34" sourceRef="Task_1" targetRef="IntermediateCatchEvent_1"> <bpmn2:sequenceFlow id="SequenceFlow_34" sourceRef="Task_1" targetRef="IntermediateCatchEvent_1">
<bpmn2:documentation id="documentation_ewTXIA"/> <bpmn2:documentation id="documentation_ewTXIA"/>
</bpmn2:sequenceFlow> </bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="SequenceFlow_4" sourceRef="IntermediateCatchEvent_8" targetRef="Task_1">
<bpmn2:documentation id="documentation_Y35pjg"/>
</bpmn2:sequenceFlow>
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_9" imixs:activityid="300" name="[Dunning run]"> <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_9" imixs:activityid="300" name="[Dunning run]">
<bpmn2:extensionElements> <bpmn2:extensionElements>
<imixs:item name="keyarchive" type="xs:string"> <imixs:item name="keyarchive" type="xs:string">
@ -1624,12 +1525,6 @@ result.isValid=true;
<dc:Bounds height="20.0" width="100.0" x="1578.0" y="233.0"/> <dc:Bounds height="20.0" width="100.0" x="1578.0" y="233.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="IntermediateCatchEvent_8" id="BPMNShape_IntermediateCatchEvent_1">
<dc:Bounds height="36.0" width="36.0" x="767.0" y="817.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_9" labelStyle="BPMNLabelStyle_1">
<dc:Bounds height="20.0" width="100.0" x="739.0" y="855.0"/>
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="ExclusiveGateway_3" id="BPMNShape_ExclusiveGateway_3" isMarkerVisible="true"> <bpmndi:BPMNShape bpmnElement="ExclusiveGateway_3" id="BPMNShape_ExclusiveGateway_3" isMarkerVisible="true">
<dc:Bounds height="50.0" width="50.0" x="880.0" y="730.0"/> <dc:Bounds height="50.0" width="50.0" x="880.0" y="730.0"/>
<bpmndi:BPMNLabel id="BPMNLabel_43" labelStyle="BPMNLabelStyle_1"> <bpmndi:BPMNLabel id="BPMNLabel_43" labelStyle="BPMNLabelStyle_1">
@ -1853,13 +1748,6 @@ result.isValid=true;
<di:waypoint x="690.0" y="755.0"/> <di:waypoint x="690.0" y="755.0"/>
<di:waypoint x="623.0" y="755.0"/> <di:waypoint x="623.0" y="755.0"/>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_4" id="BPMNEdge_SequenceFlow_5" sourceElement="BPMNShape_IntermediateCatchEvent_1" targetElement="BPMNShape_Task_3">
<bpmndi:BPMNLabel id="BPMNLabel_19"/>
<di:waypoint x="790.0" y="818.0"/>
<di:waypoint x="790.0" y="800.0"/>
<di:waypoint x="755.0" y="800.0"/>
<di:waypoint x="755.0" y="780.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="SequenceFlow_60" id="BPMNEdge_SequenceFlow_61" sourceElement="BPMNShape_IntermediateCatchEvent_27" targetElement="BPMNShape_Task_8"> <bpmndi:BPMNEdge bpmnElement="SequenceFlow_60" id="BPMNEdge_SequenceFlow_61" sourceElement="BPMNShape_IntermediateCatchEvent_27" targetElement="BPMNShape_Task_8">
<bpmndi:BPMNLabel id="BPMNLabel_141"/> <bpmndi:BPMNLabel id="BPMNLabel_141"/>
<di:waypoint x="1503.0" y="555.0"/> <di:waypoint x="1503.0" y="555.0"/>