update workflow ausgangsrechnung

This commit is contained in:
Ralph Soika 2022-09-15 16:23:38 +02:00
parent 11be0b97b1
commit 5f26b76464
12 changed files with 73678 additions and 334 deletions

View file

@ -45,7 +45,6 @@ public class CargosoftController implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private static Logger logger = Logger.getLogger(CargosoftController.class.getName()); private static Logger logger = Logger.getLogger(CargosoftController.class.getName());
@Inject @Inject
protected DocumentService documentService; protected DocumentService documentService;
@ -53,7 +52,6 @@ public class CargosoftController implements Serializable {
private ItemCollection kreditor = null; // used for zahlungsziel (kreidtor.xhtml) private ItemCollection kreditor = null; // used for zahlungsziel (kreidtor.xhtml)
/** /**
* This method searches a text phrase within the list of cargosoft kreditor * This method searches a text phrase within the list of cargosoft kreditor
* objects (type=cargosoftkreditor). * objects (type=cargosoftkreditor).
@ -96,8 +94,8 @@ public class CargosoftController implements Serializable {
// die cargosoft Kreditornummer beginnt seltsamerweise mit einem K // die cargosoft Kreditornummer beginnt seltsamerweise mit einem K
// und die Debitoren mit einem D..... // und die Debitoren mit einem D.....
String query = "(type:" + KreditorDebitorService.TYPE_CARGOSOFTKREDITOR + ") AND ( (name:K" + phrase + "*) OR (name:D" + phrase String query = "(type:" + KreditorDebitorService.TYPE_CARGOSOFTKREDITOR + ") AND ( (name:K" + phrase
+ "*) OR (" + phrase.toLowerCase() + "*) )"; + "*) OR (name:D" + phrase + "*) OR (" + phrase.toLowerCase() + "*) )";
try { try {
List<ItemCollection> result = documentService.find(query, 20, 0, "$modified", true); List<ItemCollection> result = documentService.find(query, 20, 0, "$modified", true);
@ -121,7 +119,7 @@ public class CargosoftController implements Serializable {
searchResult.add(new KreditorSearchEntry(cdtrNo, display, buildJsonData(cdtr, searchResult.add(new KreditorSearchEntry(cdtrNo, display, buildJsonData(cdtr,
cdtr.getItemValueString("cdtr.iban"), cdtr.getItemValueString("cdtr.bic")))); cdtr.getItemValueString("cdtr.iban"), cdtr.getItemValueString("cdtr.bic"))));
// haben wir noch weitere IBAN/BIC kombis? // haben wir noch weitere IBAN/BIC kombis?
for (int j = 1; j <=4 ; j++) { for (int j = 1; j <= 4; j++) {
if (!cdtr.getItemValueString("cdtr.iban" + j).isEmpty()) { if (!cdtr.getItemValueString("cdtr.iban" + j).isEmpty()) {
// Dublette mit alternativer IBAN erzeugen // Dublette mit alternativer IBAN erzeugen
display = cdtrNo + " - " + cdtr.getItemValueString("_VENDOR_Name"); display = cdtrNo + " - " + cdtr.getItemValueString("_VENDOR_Name");
@ -147,68 +145,69 @@ public class CargosoftController implements Serializable {
} }
/** /**
* This method searches a text phrase within the list of cargosoft Debitor * This method searches a text phrase within the list of cargosoft Debitor
* objects (type=cargosoftkreditor). * objects (type=cargosoftkreditor).
* <p> * <p>
* JSF Integration: * JSF Integration:
* *
* {@code * {@code
* *
* <h:commandScript name="imixsOfficeWorkflow.mlSearch" action= * <h:commandScript name="imixsOfficeWorkflow.mlSearch" action=
* "#{cargosoftController.search()}" rendered="#{cargosoftController!=null}" * "#{cargosoftController.search()}" rendered="#{cargosoftController!=null}"
* render= "cargosoft-results" /> } * render= "cargosoft-results" /> }
* *
* <p> * <p>
* JavaScript Example: * JavaScript Example:
* *
* <pre> * <pre>
* {@code * {@code
* imixsOfficeWorkflow.cargosoftSearch({ item: '_invoicenumber' }) * imixsOfficeWorkflow.cargosoftSearch({ item: '_invoicenumber' })
* } * }
* </pre> * </pre>
* *
* @param searchmode - if 'multi', display multiple IBANs in seperate lines * @param searchmode - if 'multi', display multiple IBANs in seperate lines
*/ */
public void searchDebitor() { public void searchDebitor() {
searchResult = new ArrayList<KreditorSearchEntry>(); searchResult = new ArrayList<KreditorSearchEntry>();
// get the param from faces context.... // get the param from faces context....
FacesContext fc = FacesContext.getCurrentInstance(); FacesContext fc = FacesContext.getCurrentInstance();
String phrase = fc.getExternalContext().getRequestParameterMap().get("phrase"); String phrase = fc.getExternalContext().getRequestParameterMap().get("phrase");
if (phrase == null) { if (phrase == null) {
return; return;
} }
logger.fine("search prase '" + phrase + "'"); logger.fine("search prase '" + phrase + "'");
// String input =workflowController.getWorkitem().getItemValueString(itemName); // String input =workflowController.getWorkitem().getItemValueString(itemName);
if (phrase == null || phrase.length() < 2) { if (phrase == null || phrase.length() < 2) {
return; return;
} }
// die cargosoft Kreditornummer beginnt seltsamerweise mit einem K // die cargosoft Kreditornummer beginnt seltsamerweise mit einem K
// und die Debitoren mit einem D..... // und die Debitoren mit einem D.....
String query = "(type:" + KreditorDebitorService.TYPE_CARGOSOFTKREDITOR + ") AND (name:D*) AND ((name:D" + phrase String query = "(type:" + KreditorDebitorService.TYPE_CARGOSOFTKREDITOR + ") AND (name:D*) AND ((name:D"
+ "*) OR (" + phrase.toLowerCase() + "*) )"; + phrase + "*) OR (" + phrase.toLowerCase() + "*) )";
try { try {
List<ItemCollection> result = documentService.find(query, 20, 0, "$modified", true); List<ItemCollection> result = documentService.find(query, 20, 0, "$modified", true);
logger.info("found " + result.size() + " debitors..."); logger.info("found " + result.size() + " debitors...");
if (result != null) { if (result != null) {
for (ItemCollection dbtr : result) { for (ItemCollection dbtr : result) {
// Aenderugn 22. Jun wir geben das K/D direkt witer // Aenderugn 22. Jun wir geben das K/D direkt witer
String dbtrNo = dbtr.getItemValueString("_VENDOR_NUM"); String dbtrNo = dbtr.getItemValueString("_VENDOR_NUM");
String display = dbtrNo + " - " + dbtr.getItemValueString("_VENDOR_Name"); String display = dbtrNo + " - " + dbtr.getItemValueString("_VENDOR_Name");
display=display.replace("\"",""); display = display.replace("\"", "");
display=display.replace("'",""); display = display.replace("'", "");
searchResult.add(new KreditorSearchEntry(dbtrNo, display, buildJsonData(dbtr))); searchResult.add(new KreditorSearchEntry(dbtrNo, display, buildJsonData(dbtr)));
} }
} }
} catch (QueryException e) { } catch (QueryException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
/**
/**
* Hilfsmethode die eine JSON Struktur mit einer IBAN/BIC kombinatuion erzeugt. * Hilfsmethode die eine JSON Struktur mit einer IBAN/BIC kombinatuion erzeugt.
* Diese JSON Struktur wird von der Rechnungserfassungs Maske benötigt * Diese JSON Struktur wird von der Rechnungserfassungs Maske benötigt
* *
@ -245,6 +244,7 @@ public class CargosoftController implements Serializable {
add("no", jsonVal(cdtr.getItemValueString("_VENDOR_NUM"))). // add("no", jsonVal(cdtr.getItemValueString("_VENDOR_NUM"))). //
add("name", jsonVal(cdtr.getItemValueString("_VENDOR_Name"))). // add("name", jsonVal(cdtr.getItemValueString("_VENDOR_Name"))). //
add("creditperiod", jsonVal(cdtr.getItemValueString("cdtr.creditperiod"))). // add("creditperiod", jsonVal(cdtr.getItemValueString("cdtr.creditperiod"))). //
add("mail", jsonVal(cdtr.getItemValueString("cdtr.mail"))). //
add("iban", jsonVal(cdtr.getItemValueString("cdtr.iban"))). // add("iban", jsonVal(cdtr.getItemValueString("cdtr.iban"))). //
add("bic", jsonVal(cdtr.getItemValueString("cdtr.bic"))). // add("bic", jsonVal(cdtr.getItemValueString("cdtr.bic"))). //
// add ibans für kreditoren verwaltung // add ibans für kreditoren verwaltung
@ -266,16 +266,17 @@ public class CargosoftController implements Serializable {
} }
return jsonString; return jsonString;
} }
/** /**
* Helper method to remove " and ' characters - causing problems * Helper method to remove " and ' characters - causing problems
*
* @param val * @param val
* @return * @return
*/ */
public static String jsonVal(String val) { public static String jsonVal(String val) {
val=val.replace("\"", ""); val = val.replace("\"", "");
val=val.replace("'", ""); val = val.replace("'", "");
return val; return val;
} }
/** /**
@ -308,8 +309,8 @@ public class CargosoftController implements Serializable {
} }
/** /**
* Diese Method überträgt die geänderten Daten in das Kreidtoren Objekt * Diese Method überträgt die geänderten Daten in das Kreidtoren/Debitoren
* (cdtr.creditperiod,cdtr.iban,cdtr.bic) * Objekt (cdtr.creditperiod,cdtr.iban,cdtr.bic)
*/ */
public void updateZahlungsziel() { public void updateZahlungsziel() {
@ -330,6 +331,7 @@ public class CargosoftController implements Serializable {
} catch (NumberFormatException nfe) { } catch (NumberFormatException nfe) {
// no op // no op
} }
cargoCreditor.setItemValue("cdtr.mail", kreditor.getItemValueString("cdtr.mail"));
cargoCreditor.setItemValue("cdtr.iban", kreditor.getItemValueString("cdtr.iban")); cargoCreditor.setItemValue("cdtr.iban", kreditor.getItemValueString("cdtr.iban"));
cargoCreditor.setItemValue("cdtr.bic", kreditor.getItemValueString("cdtr.bic")); cargoCreditor.setItemValue("cdtr.bic", kreditor.getItemValueString("cdtr.bic"));
cargoCreditor.setItemValue("cdtr.iban2", kreditor.getItemValueString("cdtr.iban2")); cargoCreditor.setItemValue("cdtr.iban2", kreditor.getItemValueString("cdtr.iban2"));

View file

@ -0,0 +1,37 @@
package com.alexanderlogistics;
import javax.inject.Inject;
import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.plugins.AbstractPlugin;
import org.imixs.workflow.exceptions.PluginException;
/**
* Das InvoiceOutgoingPlugin aktualisiert die Debitor E-Mail Adresse
*
*
* @author rsoika
* @version 1.0
*
*/
public class InvoiceOutgoingPlugin extends AbstractPlugin {
@Inject
KreditorDebitorService kreditorService;
/**
*
* @throws PluginException - if data is missing
*
**/
@Override
public ItemCollection run(ItemCollection workitem, ItemCollection event) throws PluginException {
String dbtrNumber = workitem.getItemValueString("dbtr.number");
ItemCollection debitor = kreditorService.findDebitor(dbtrNumber);
// update mail
workitem.setItemValue("dbtr.mail", debitor.getItemValueString("cdtr.mail"));
return workitem;
}
}

View file

@ -63,6 +63,11 @@ public class ZahlungseingangSaldoAdapter implements SignalAdapter {
List<ItemCollection> paymentDetails = zahlungseingangService.loadPaymentDetails(document); List<ItemCollection> paymentDetails = zahlungseingangService.loadPaymentDetails(document);
if (paymentDetails.size()==0) {
throw new PluginException(PluginException.class.getName(),ZahlungseingangService.ERROR_PAYMENT_BOOKING_FAILED,
"Bitte wählen Sie die zugeordneten Rechnungen aus.");
}
logger.info("......Updating " + paymentDetails.size() + " outgoing invoices...."); logger.info("......Updating " + paymentDetails.size() + " outgoing invoices....");
for (ItemCollection payment : paymentDetails) { for (ItemCollection payment : paymentDetails) {

View file

@ -8,7 +8,7 @@
<li><h:link outcome="/pages/admin/sepa_config">SEPA</h:link></li> <li><h:link outcome="/pages/admin/sepa_config">SEPA</h:link></li>
<li><h:link outcome="/pages/admin/cargosoft_export">Cargosoft Export</h:link></li> <li><h:link outcome="/pages/admin/cargosoft_export">Cargosoft Export</h:link></li>
<li><h:link outcome="/pages/admin/analyse_invoicing">Analyse Rechnungseingang</h:link></li> <li><h:link outcome="/pages/admin/analyse_invoicing">Analyse Rechnungseingang</h:link></li>
<li><h:link outcome="/pages/admin/kreditor">Kreditoren Zahlungsziele</h:link></li> <li><h:link outcome="/pages/admin/kreditor">Kreditoren/Debitoren</h:link></li>
</ul> </ul>
</f:subview> </f:subview>

View file

@ -25,7 +25,7 @@
<div class="imixs-form"> <div class="imixs-form">
<div class="imixs-header"> <div class="imixs-header">
<h1> <h1>
<h:outputText value="Kreditoren Zahlungsziele " /> <h:outputText value="Kreditoren / Debitoren " />
</h1> </h1>
</div> </div>
@ -39,7 +39,7 @@
<div class="imixs-form-section-2"> <div class="imixs-form-section-2">
<dl> <dl>
<dt>Kreditor:</dt> <dt>Kreditor/Debitor:</dt>
<dd> <dd>
<h:inputText <h:inputText
@ -50,8 +50,16 @@
</div> </div>
<h:panelGroup layout="block" styleClass="imixs-form-section" <h:panelGroup layout="block" styleClass="imixs-form-section-2"
id="contentIputID"> id="contentIputID">
<dl>
<dt>E-Mail:</dt>
<dd><h:inputText pt:data-item="cdtr.mail"
value="#{cargosoftController.kreditor.item['cdtr.mail']}" /></dd>
</dl>
<dl> <dl>
<dt>Zahlungsziel:</dt> <dt>Zahlungsziel:</dt>
<dd><h:inputText style="width:5em;" <dd><h:inputText style="width:5em;"
@ -59,7 +67,8 @@
pt:data-item="cdtr.creditperiod" pt:data-item="cdtr.creditperiod"
/> Tage</dd> /> Tage</dd>
</dl> </dl>
</h:panelGroup> </h:panelGroup>

View file

@ -60,9 +60,10 @@
var inputElementZahlungsziel=$("input[data-item='cdtr.creditperiod']"); var inputElementZahlungsziel=$("input[data-item='cdtr.creditperiod']");
var inputElementZahlungszielCdtr=$("input[id$='cdtr_creditperiod']"); var inputElementZahlungszielCdtr=$("input[id$='cdtr_creditperiod']");
var inputElementInvoiceDate=$("input[id$='date_invoice']"); var inputElementInvoiceDate=$("input[id$='date_invoice']");
var inputElementMail=$("input[data-item='cdtr.mail']");
var inputElementIban=$("input[data-item='cdtr.iban']"); var inputElementIban=$("input[data-item='cdtr.iban']");
var inputElementBic=$("input[data-item='cdtr.bic']"); var inputElementBic=$("input[data-item='cdtr.bic']");
if (inputElementZahlungszielCdtr && cdtrData.creditperiod!='') { if (inputElementZahlungszielCdtr) {
inputElementZahlungszielCdtr.val(cdtrData.creditperiod); inputElementZahlungszielCdtr.val(cdtrData.creditperiod);
} }
// nur wenn ein Rechnugnsdatum eingegeben wurde // nur wenn ein Rechnugnsdatum eingegeben wurde
@ -74,12 +75,15 @@
} }
// update iban/bic // update iban/bic
if (inputElementIban && cdtrData.iban!='') { if (inputElementIban) {
inputElementIban.val(cdtrData.iban); inputElementIban.val(cdtrData.iban);
} }
if (inputElementBic && cdtrData.bic!='') { if (inputElementBic) {
inputElementBic.val(cdtrData.bic); inputElementBic.val(cdtrData.bic);
} }
if (inputElementMail) {
inputElementMail.val(cdtrData.mail);
}
// update all possible data fields von kredorenverwaltung // update all possible data fields von kredorenverwaltung
if ($("input[data-item='cdtr.iban']")) { if ($("input[data-item='cdtr.iban']")) {

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff