update inkasso workflow

This commit is contained in:
Ralph Soika 2023-03-06 14:19:39 +01:00
parent 8aca7ef7e3
commit 5918074f86
5 changed files with 424 additions and 672 deletions

View file

@ -43,6 +43,7 @@ public class OPListController implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public static final int TASK_ERSTELLUNG = 1000; public static final int TASK_ERSTELLUNG = 1000;
private static Logger logger = Logger.getLogger(OPListController.class.getName()); private static Logger logger = Logger.getLogger(OPListController.class.getName());
private String lastDbtrNumber = null; private String lastDbtrNumber = null;
@ -64,7 +65,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 Methoe liefert die Rechnungen zur gegebenen dbtrNumber. Die Methode nutzt * Die Methode 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
@ -78,6 +79,8 @@ public class OPListController implements Serializable {
* in der Maske 'selection_opliste_Mahnluaf' angewählt. D.h auch, dass man ggf. * in der Maske 'selection_opliste_Mahnluaf' angewählt. D.h auch, dass man ggf.
* Rechnungen manuell delselktieren muss, wenn man diese nicht im Mahnlauf haben * Rechnungen manuell delselktieren muss, wenn man diese nicht im Mahnlauf haben
* will. * will.
* <p>
* Beim Mahnlauf werden Inkasso Rechnungen ausgenommen.
* *
* *
* @param _dbtrNumber * @param _dbtrNumber
@ -148,8 +151,12 @@ public class OPListController implements Serializable {
* *
* Eine Ausnahme ist hier nur wenn jemand auf Speichern oder mahnen drückt * Eine Ausnahme ist hier nur wenn jemand auf Speichern oder mahnen drückt
* (Event = 10|20). Dann ändern wir die Liste nicht! * (Event = 10|20). Dann ändern wir die Liste nicht!
*
* Hinweis: in der Liste befinden sich keine Inkasso Rechnungen, da man diese
* nicht anwählen kann.
*/ */
if (workflowController.getWorkitem().getModelVersion().startsWith("mahnlauf")) { if (workflowController.getWorkitem().getModelVersion().startsWith("mahnlauf")) {
// wir selektieren hier immer alle fälligen Rechnungen vor falls wir aus // wir selektieren hier immer alle fälligen Rechnungen vor falls wir aus
// einer Rechnung mit dem Event 100 (Mahnlauf erstellen) kommen, oder // einer Rechnung mit dem Event 100 (Mahnlauf erstellen) kommen, oder
// wenn der Mahnlauf von außen gerate eben neu erzeugt wurde // wenn der Mahnlauf von außen gerate eben neu erzeugt wurde

View file

@ -52,6 +52,8 @@ import org.imixs.workflow.exceptions.QueryException;
* The OPListExportScheduler erzeugt für jeden Berich ein neues Workitem mit * The OPListExportScheduler erzeugt für jeden Berich ein neues Workitem mit
* einer Excel Datei mit allen offenen Rechnungen. * einer Excel Datei mit allen offenen Rechnungen.
* <p> * <p>
* bei den OP Listen für die Abteilungen dürfen nur Rechnungen aktiviert werden, wo die 2. Mahnung bereits versandt wurde bzw. wo die Fälligkeit der Rechnungen 21 Tage übersteigt.
* <p>
* The class implements the interface * The class implements the interface
* _org.imixs.workflow.engine.scheduler.Scheduler_ and can be used in * _org.imixs.workflow.engine.scheduler.Scheduler_ and can be used in
* combination with the Imxis-Workflow Scheduler Service. * combination with the Imxis-Workflow Scheduler Service.

View file

@ -52,7 +52,7 @@ import org.imixs.workflow.exceptions.QueryException;
/** /**
* The CargosoftExportScheduler exportiert eine csv Datei auf eine FTP Laufwerk * The CargosoftExportScheduler exportiert eine csv Datei auf eine FTP Laufwerk
* mit allen noch offenen Rechnungen. Diese Datei wird von Cargosoft ann * mit allen noch offenen Rechnungen. Diese Datei wird von Cargosoft dann
* verwendet um den Kreditramen für einen kunden zu ermitteln. Es werden * verwendet um den Kreditramen für einen kunden zu ermitteln. Es werden
* praktisch von Cargosoft nur die offenen Salen aus unserer CSV Datei pro * praktisch von Cargosoft nur die offenen Salen aus unserer CSV Datei pro
* Kreditor ermittelt. (Wir könnten sozusagen auch direkt das ergeniss liefern, * Kreditor ermittelt. (Wir könnten sozusagen auch direkt das ergeniss liefern,

View file

@ -50,18 +50,21 @@ public class InkassoAppendAdapter implements SignalAdapter {
public ItemCollection execute(ItemCollection document, ItemCollection event) public ItemCollection execute(ItemCollection document, ItemCollection event)
throws AdapterException, PluginException { throws AdapterException, PluginException {
appendInvoice(document); ItemCollection inkassoWorkitem=appendInvoice(document);
document.setItemValue("debtcollection.ref", inkassoWorkitem.getUniqueID());
return document; return document;
} }
/** /**
* Diese method hängt eine referenz der aktuellen Rechnung an den Inkasso * Diese method hängt eine referenz der aktuellen Rechnung an den Inkasso Workflow an. Gibt es noch keinen, wird einer erzeugt.
* Die method liefert das Inkasso Workitem zurück.
* *
* @param document * @param document
* @throws PluginException * @throws PluginException
*/ */
private void appendInvoice(ItemCollection document) throws PluginException { private ItemCollection appendInvoice(ItemCollection document) throws PluginException {
String dbtrNumber = document.getItemValueString(ITEM_DBTR_NUMBER); String dbtrNumber = document.getItemValueString(ITEM_DBTR_NUMBER);
String currency = document.getItemValueString("invoice.currency"); String currency = document.getItemValueString("invoice.currency");
@ -88,7 +91,7 @@ public class InkassoAppendAdapter implements SignalAdapter {
} }
// Invoice mit Inkasso verknüpften (falls noch nicht verknüpft) // Invoice mit Inkasso verknüpften (falls noch nicht verknüpft)
inkasso.appendItemValueUnique("$workitemref", document.getUniqueID()); inkasso.appendItemValueUnique("$workitemref", document.getUniqueID());
workflowService.processWorkItem(inkasso); return workflowService.processWorkItem(inkasso);
} catch (QueryException | AccessDeniedException | ProcessingErrorException | ModelException e1) { } catch (QueryException | AccessDeniedException | ProcessingErrorException | ModelException e1) {
throw new PluginException(PluginException.class.getName(), ERROR_MISSING_DATA, throw new PluginException(PluginException.class.getName(), ERROR_MISSING_DATA,

File diff suppressed because it is too large Load diff