improvements mahnlauf

This commit is contained in:
Ralph Soika 2023-02-01 11:55:38 +01:00
parent 5bc6225765
commit 146ad9a17b
5 changed files with 37 additions and 48 deletions

View file

@ -64,7 +64,7 @@ public class OPListController implements Serializable {
/** /**
* Diese Methode wird für Zahlungseingänge und Mahnläufe verwendet. * Diese Methode wird für Zahlungseingänge und Mahnläufe verwendet.
* <p> * <p>
* Die Metho liefert die Rechnungen zur gegebenen dbtrNumber. Die Methode nutzt * Die Methoe liefert die Rechnungen zur gegebenen dbtrNumber. Die Methode nutzt
* einen lokalen cache um die Zugriffe zu beschleunigen. * einen lokalen cache um die Zugriffe zu beschleunigen.
* <p> * <p>
* Befindet sich ein Zahlungseingang in Erstellung (Task=1000) werden alle * Befindet sich ein Zahlungseingang in Erstellung (Task=1000) werden alle
@ -75,8 +75,9 @@ public class OPListController implements Serializable {
* <p> * <p>
* Bei verwendung im Mahnlauf werden zusätzlich auch alle diese Rechnungen * Bei verwendung im Mahnlauf werden zusätzlich auch alle diese Rechnungen
* vorselektiert (Anforderung von Mary Mwangi). D.h. es werden alle Checkboxen * vorselektiert (Anforderung von Mary Mwangi). D.h. es werden alle Checkboxen
* in der Maske 'selection_opliste_Mahnluaf' angewählt. D.h auch man muss ggf. * in der Maske 'selection_opliste_Mahnluaf' angewählt. D.h auch, dass man ggf.
* Rechnungen manuell delselktieren wenn man diese nicht im Mahnlauf haben will. * Rechnungen manuell delselktieren muss, wenn man diese nicht im Mahnlauf haben
* will.
* *
* *
* @param _dbtrNumber * @param _dbtrNumber
@ -121,7 +122,11 @@ public class OPListController implements Serializable {
logger.severe("Failed to get op liste:" + e.getMessage()); logger.severe("Failed to get op liste:" + e.getMessage());
} }
// Zahlugnseingang? /*
* Zahlugnseingang?
*
* Wir berechnen den saldo.
*/
if (workflowController.getWorkitem().getModelVersion().startsWith("zahlungseingang")) { if (workflowController.getWorkitem().getModelVersion().startsWith("zahlungseingang")) {
// berechnung des Basisumsatzes bei Fremdwährungen // berechnung des Basisumsatzes bei Fremdwährungen
for (ItemCollection invoice : invoiceList) { for (ItemCollection invoice : invoiceList) {
@ -131,18 +136,24 @@ public class OPListController implements Serializable {
maxSaldo = maxSaldo / rate; maxSaldo = maxSaldo / rate;
invoice.setItemValue("invoice.saldo.byrate", maxSaldo); invoice.setItemValue("invoice.saldo.byrate", maxSaldo);
} }
} }
} }
// Mahnlauf ? /*
* Mahnlauf ?
*
* Bei einem Mahnlauf selektieren wir alle Rechnungne immer vor. Das ist eine
* Anforderung von AGL Der Benutzer kann dann einzelne Rechnungen wieder
* abwählen.
*
* Eine Ausnahme ist hier nur wenn jemand auf Speichern oder mahnen drückt
* (Event = 10|20). Dann ändern wir die Liste nicht!
*/
if (workflowController.getWorkitem().getModelVersion().startsWith("mahnlauf")) { if (workflowController.getWorkitem().getModelVersion().startsWith("mahnlauf")) {
// wir selektieren hier alle fälligen Rechnungen vor, falls der Mahnlauf gerade // wir selektieren hier immer alle fälligen Rechnungen vor falls wir aus
// erstellt wird. // dem Event 100 (Mahnlauf erstellen) kommen.
if (workflowController.getWorkitem().getItemValueInteger("$version") == 0 // Falls aber
|| (workflowController.getWorkitem().getItemValueInteger("$version") == 1 if (workflowController.getWorkitem().getItemValueInteger("$lastevent") == 100) {
&& workflowController.getWorkitem().getItemValueInteger("$lastevent") == 100)) {
List<String> intialSelection = new ArrayList<String>(); List<String> intialSelection = new ArrayList<String>();
for (ItemCollection invoice : invoiceList) { for (ItemCollection invoice : invoiceList) {
// ist die Rechnung fällig? // ist die Rechnung fällig?
@ -187,28 +198,6 @@ public class OPListController implements Serializable {
return invoiceList; return invoiceList;
} }
// /**
// * Liefert die Payments die mit diesem workitem verbunden sind...
// * @return
// */
// public List<ItemCollection> getPayments() {
// List<ItemCollection> result=new ArrayList();
//
//
// result=workitemLinkController.getExternalReferences("($WorkflowGroup:Zahlungseingang");
//// if (workflowController.getWorkitem()!=null) {
//// List<ItemCollection> liste = workflowService.getWorkListByRef(workflowController.getWorkitem().getUniqueID());
////
//// for (ItemCollection refWorkitem: liste) {
//// if (refWorkitem.getItemValueString(WorkflowKernel.WORKFLOWGROUP).startsWith("Zahlungseingang")) {
//// result.add(refWorkitem);
//// }
//// }
//// }
////
// return result;
// }
/** /**
* On Before Process we store the selected invoices in $worktiemRef * On Before Process we store the selected invoices in $worktiemRef
* *
@ -327,10 +316,10 @@ public class OPListController implements Serializable {
public double calculatePaymentDifference() { public double calculatePaymentDifference() {
double paymentAmount = workflowController.getWorkitem().getItemValueDouble("payment.amount"); double paymentAmount = workflowController.getWorkitem().getItemValueDouble("payment.amount");
double paymentDifference = workflowController.getWorkitem().getItemValueDouble("payment.difference"); double paymentDifference = workflowController.getWorkitem().getItemValueDouble("payment.difference");
double paymentTotal = workflowController.getWorkitem().getItemValueDouble("payment.total"); double paymentTotal = workflowController.getWorkitem().getItemValueDouble("payment.total");
// paymentAmount - calculateInvoiceSaldo(); // paymentAmount - calculateInvoiceSaldo();
double result = (paymentAmount+paymentDifference) - paymentTotal; double result = (paymentAmount + paymentDifference) - paymentTotal;
logger.fine("...new PaymentDifference=" + result); logger.fine("...new PaymentDifference=" + result);
// rond with 2 digits // rond with 2 digits
@ -352,13 +341,11 @@ public class OPListController implements Serializable {
result = result + pay / rate; result = result + pay / rate;
} else { } else {
result = result + pay; result = result + pay;
} }
} }
} }
// rond with 2 digits // rond with 2 digits
return Math.round(result * 100.0) / 100.0; return Math.round(result * 100.0) / 100.0;
} }
/** /**

View file

@ -10,15 +10,13 @@
<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="">Mahnungen</th> <th style="">Mahnung</th>
<th style="width: 100px;">Status</th>
<th style="">#{message.modified}</th>
</tr> </tr>
<ui:param name="dunnings" <ui:param name="dunnings"
@ -32,8 +30,12 @@
#{dunning.item['$workflowsummary']} #{dunning.item['$workflowsummary']}
<f:param name="id" value="#{dunning.item['$uniqueid']}" /> <f:param name="id" value="#{dunning.item['$uniqueid']}" />
</h:link></td> </h:link></td>
<td>#{dunning.item['$workflowstatus']}</td>
<td><h:outputText value="#{dunning.item['$lastEventDate']}">
<f:convertDateTime pattern="#{message.datePatternShort}"
timeZone="#{message.timeZone}" />
</h:outputText> #{message.by} #{userController.getUserName(dunning.item['$editor'])}</td>
</tr> </tr>
</ui:repeat> </ui:repeat>

View file

@ -1,4 +1,4 @@
package com.alexanderlogistics; package com.alexanderlogistics.migration;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.BufferedWriter; import java.io.BufferedWriter;

View file

@ -1,4 +1,4 @@
package com.alexanderlogistics; package com.alexanderlogistics.migration;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.BufferedWriter; import java.io.BufferedWriter;

View file

@ -589,7 +589,7 @@ Debitor: <itemvalue>dbtr.name</itemvalue> (<itemvalue>dbtr.number</itemvalue>)
<imixs:value><![CDATA[0]]></imixs:value> <imixs:value><![CDATA[0]]></imixs:value>
</imixs:item> </imixs:item>
<imixs:item name="rtfresultlog" type="xs:string"> <imixs:item name="rtfresultlog" type="xs:string">
<imixs:value><![CDATA[Rechnung hinzugefügt]]></imixs:value> <imixs:value><![CDATA[]]></imixs:value>
</imixs:item> </imixs:item>
<imixs:item name="keyupdateacl" type="xs:boolean"> <imixs:item name="keyupdateacl" type="xs:boolean">
<imixs:value>false</imixs:value> <imixs:value>false</imixs:value>