diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoicePlugin.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoicePlugin.java index 8138997..72e705c 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoicePlugin.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoicePlugin.java @@ -14,10 +14,11 @@ import org.imixs.workflow.ItemCollection; import org.imixs.workflow.engine.plugins.AbstractPlugin; import org.imixs.workflow.exceptions.PluginException; import org.imixs.workflow.exceptions.QueryException; +import org.imixs.workflow.faces.util.ResourceBundleHandler; /** - * Das InvoicePlugin prüft die Eingaben auf gültigkeit, so dass diese problemlos - * nach Cargosoft expoertier werden können. + * Das InvoicePlugin prüft die Eingaben auf Gültigkeit, so dass diese problemlos + * nach Cargosoft exportiert werden können. *
* Konkret geht es darum, das im Status 5200 in den ChildItems keine leeren
* Zeilen vorkommen dürfen.
@@ -58,6 +59,9 @@ public class InvoicePlugin extends AbstractPlugin {
@Inject
KreditorDebitorService kreditorService;
+ @Inject
+ ResourceBundleHandler resourceBundleHandler;
+
/**
* Test childworkitems for empty lines
*
@@ -84,8 +88,8 @@ public class InvoicePlugin extends AbstractPlugin {
if (isPublicEvent && workitem.getTaskID() >= TASK_ERFASSUNG && workitem.getEventID() < 900) {
if (workitem.getItemValueString("payment.type").trim().isEmpty()) {
// throw a plugin exception!
- throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA,
- "Eingabefehler - Bitte wählen Sie eine Zahlungsart aus!");
+ String message = resourceBundleHandler.findMessage("ERROR_MISSING_PAYMENT");
+ throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
}
// doppelte Rechnungsnummer prüfen
if (workitem.getTaskID() == TASK_ERFASSUNG) {
@@ -118,21 +122,23 @@ public class InvoicePlugin extends AbstractPlugin {
for (ItemCollection posItem : childs) {
if (posItem.getItemValueString("name").trim().isEmpty()) {
// throw a plugin exception - because name is missing!
- throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA,
- "Eingabefehler - Die Positionsnummer in Zeile " + posItem.getItemValueString("numpos")
- + " muss ausgefüllt sein!");
+ String message = resourceBundleHandler.findMessage("ERROR_MISSING_POSNO");
+ message = message.replace("{1}", posItem.getItemValueString("numpos"));
+ throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
}
// validate pos for regex pattern 'XX-YYY-####-###'
if (!posItem.getItemValueString("name").matches(REGEX_POSNUMER)) {
// throw a plugin exception - because name is missing!
- throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA,
- "Eingabefehler - Die Positionsnummer in Zeile " + posItem.getItemValueString("numpos")
- + " muss im Format 'XX-YYY-####-###' eingegeben werden!");
+ String message = resourceBundleHandler.findMessage("ERROR_FORMAT_POSNO");
+ message = message.replace("{1}", posItem.getItemValueString("numpos"));
+ throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
}
if (posItem.getItemValueString("category").trim().isEmpty()) {
// throw a plugin exception - because name is missing!
+ String message = resourceBundleHandler.findMessage("ERROR_MISSING_CATEGORY");
+ message = message.replace("{1}", posItem.getItemValueString("numpos"));
throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA,
"Eingabefehler - Die Leistungsart in Zeile " + posItem.getItemValueString("numpos")
+ " muss ausgefüllt sein!");
@@ -140,16 +146,16 @@ public class InvoicePlugin extends AbstractPlugin {
if (posItem.getItemValueString("tax").trim().isEmpty()) {
// throw a plugin exception - because name is missing!
- throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA,
- "Eingabefehler - Die Steuer in Zeile " + posItem.getItemValueString("numpos")
- + " muss ausgefüllt sein!");
+ String message = resourceBundleHandler.findMessage("ERROR_MISSING_TAX");
+ message = message.replace("{1}", posItem.getItemValueString("numpos"));
+ throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
}
if (posItem.getItemValueFloat("amount") == 0) {
// throw a plugin exception - because name is missing!
- throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA,
- "Eingabefehler - Der Nettobetrag in Zeile " + posItem.getItemValueString("numpos")
- + " darf nicht 0 sein!");
+ String message = resourceBundleHandler.findMessage("ERROR_MISSING_NET");
+ message = message.replace("{1}", posItem.getItemValueString("numpos"));
+ throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
}
// Buchunsperiode
@@ -178,8 +184,8 @@ public class InvoicePlugin extends AbstractPlugin {
}
if (buchungsperiodenValid == false) {
// fehlerhafte Buchungsperioden.
- throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA,
- "Eingabefehler - Bitte überprüfen Sie die Hauptbuchungsperiode mit den Buchungsperioden der einzelnen Positionen!");
+ String message = resourceBundleHandler.findMessage("ERROR_MAIN_BOOKING_PERIOD");
+ throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
}
}
@@ -249,8 +255,8 @@ public class InvoicePlugin extends AbstractPlugin {
if (!period.matches(regex)) {
// throw a plugin exception - because name is missing!
- throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA,
- "Eingabefehler - Bitte geben Sie eine gültige Buchungsperiode ein! Prüfen Sie auch die Spalte BP in der Positionstabelle.");
+ String message = resourceBundleHandler.findMessage("ERROR_BOOKING_PERIOD");
+ throw new PluginException(InvoicePlugin.class.getName(), ERROR_MISSING_DATA, message);
}
}
}
@@ -304,8 +310,8 @@ public class InvoicePlugin extends AbstractPlugin {
// set _invoicenumber_duplicate - dadurch wird die warnmeldung ausgegeben und
// der Vorgang nicht weitergeleitet
workitem.replaceItemValue("invoice.number.duplicate", invoiceNumber);
- throw new PluginException(InvoicePlugin.class.getName(), ERROR_DUPPLICATE_INVOICE_NUMBER,
- "ACHTUNG: Die Rechnungsnummer wurde bereits gebucht. Bitte prüfen Sie den Beleg. Sollte die Belegnummer korrekt sein, wiederholen Sie die Aktion.");
+ String message = resourceBundleHandler.findMessage("ERROR_INVOICENO");
+ throw new PluginException(InvoicePlugin.class.getName(), ERROR_DUPPLICATE_INVOICE_NUMBER, message);
}
} else {
// clear !
@@ -371,8 +377,8 @@ public class InvoicePlugin extends AbstractPlugin {
}
// OK - scheinbar ist diese IBAN/BIC nicht bekannt. Also fragen wir mal nach....
workitem.setItemValue("ibanbic.overtake", iban + bic);
- throw new PluginException(InvoicePlugin.class.getName(), ERROR_NEW_IBANBIC,
- "Die von Ihnen erfasste IBAN/BIC ist noch nicht bekannt. Sollte die Eingabe korrekt sein, wiederholen Sie die Aktion.");
+ String message = resourceBundleHandler.findMessage("ERROR_IBAN_UNKNOWN");
+ throw new PluginException(InvoicePlugin.class.getName(), ERROR_NEW_IBANBIC, message);
}
}
@@ -400,8 +406,10 @@ public class InvoicePlugin extends AbstractPlugin {
String query = "(type:cargosoftkreditor) AND (name:K" + crdtrNumber + " OR name:" + crdtrNumber + ")";
List Der Workflow 'Rechnungseingang' beschreibt beispielhaft einen Ablauf zur Prüfung von Eingangsrechnungen.
+
+ Eingangsrechnungen können über eine E-Mailschnittstelle oder das Filesystem automatisch eingelesen werden. Eine Eingangsrechnung wird in diesem Beispiel vom zugewiesenen Mitarbeiter sowie den Prozessverantworltichen (Controlling) bearbeitet.
-
-
#
- Positionsnummer
+ #{custom['pos.number']}
*
- Steuer
+ #{custom['pos.tax']}
*
- Leistungsart#{custom['pos.type']} *
BP
- Netto
- Brutto
+ #{custom['pos.net']}
+ #{custom['pos.gross']}
diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_positionen_read.xhtml b/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_positionen_read.xhtml
index a9223a4..5250ddb 100644
--- a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_positionen_read.xhtml
+++ b/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/sub_positionen_read.xhtml
@@ -13,13 +13,14 @@
#
- Positionsnummer
+ #{custom['pos.number']}
*
- Steuer
- Leistungsart
+ #{custom['pos.tax']}
+ *
+ #{custom['pos.type']} *
BP
- Netto
- Brutto
+ #{custom['pos.net']}
+ #{custom['pos.gross']}
+
+Der Workflow
+
+