update workflow ausgangsrechnung
This commit is contained in:
parent
11be0b97b1
commit
5f26b76464
12 changed files with 73678 additions and 334 deletions
|
|
@ -45,7 +45,6 @@ public class CargosoftController implements Serializable {
|
|||
private static final long serialVersionUID = 1L;
|
||||
private static Logger logger = Logger.getLogger(CargosoftController.class.getName());
|
||||
|
||||
|
||||
@Inject
|
||||
protected DocumentService documentService;
|
||||
|
||||
|
|
@ -53,7 +52,6 @@ public class CargosoftController implements Serializable {
|
|||
|
||||
private ItemCollection kreditor = null; // used for zahlungsziel (kreidtor.xhtml)
|
||||
|
||||
|
||||
/**
|
||||
* This method searches a text phrase within the list of cargosoft kreditor
|
||||
* objects (type=cargosoftkreditor).
|
||||
|
|
@ -96,8 +94,8 @@ public class CargosoftController implements Serializable {
|
|||
|
||||
// die cargosoft Kreditornummer beginnt seltsamerweise mit einem K
|
||||
// und die Debitoren mit einem D.....
|
||||
String query = "(type:" + KreditorDebitorService.TYPE_CARGOSOFTKREDITOR + ") AND ( (name:K" + phrase + "*) OR (name:D" + phrase
|
||||
+ "*) OR (" + phrase.toLowerCase() + "*) )";
|
||||
String query = "(type:" + KreditorDebitorService.TYPE_CARGOSOFTKREDITOR + ") AND ( (name:K" + phrase
|
||||
+ "*) OR (name:D" + phrase + "*) OR (" + phrase.toLowerCase() + "*) )";
|
||||
|
||||
try {
|
||||
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,
|
||||
cdtr.getItemValueString("cdtr.iban"), cdtr.getItemValueString("cdtr.bic"))));
|
||||
// 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()) {
|
||||
// Dublette mit alternativer IBAN erzeugen
|
||||
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
|
||||
* objects (type=cargosoftkreditor).
|
||||
* <p>
|
||||
* JSF Integration:
|
||||
*
|
||||
* {@code
|
||||
*
|
||||
* <h:commandScript name="imixsOfficeWorkflow.mlSearch" action=
|
||||
* "#{cargosoftController.search()}" rendered="#{cargosoftController!=null}"
|
||||
* render= "cargosoft-results" /> }
|
||||
*
|
||||
* <p>
|
||||
* JavaScript Example:
|
||||
*
|
||||
* <pre>
|
||||
* {@code
|
||||
* imixsOfficeWorkflow.cargosoftSearch({ item: '_invoicenumber' })
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* @param searchmode - if 'multi', display multiple IBANs in seperate lines
|
||||
*/
|
||||
public void searchDebitor() {
|
||||
|
||||
searchResult = new ArrayList<KreditorSearchEntry>();
|
||||
// get the param from faces context....
|
||||
FacesContext fc = FacesContext.getCurrentInstance();
|
||||
String phrase = fc.getExternalContext().getRequestParameterMap().get("phrase");
|
||||
if (phrase == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
logger.fine("search prase '" + phrase + "'");
|
||||
|
||||
// String input =workflowController.getWorkitem().getItemValueString(itemName);
|
||||
if (phrase == null || phrase.length() < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
// die cargosoft Kreditornummer beginnt seltsamerweise mit einem K
|
||||
// und die Debitoren mit einem D.....
|
||||
String query = "(type:" + KreditorDebitorService.TYPE_CARGOSOFTKREDITOR + ") AND (name:D*) AND ((name:D" + phrase
|
||||
+ "*) OR (" + phrase.toLowerCase() + "*) )";
|
||||
|
||||
try {
|
||||
List<ItemCollection> result = documentService.find(query, 20, 0, "$modified", true);
|
||||
logger.info("found " + result.size() + " debitors...");
|
||||
if (result != null) {
|
||||
for (ItemCollection dbtr : result) {
|
||||
// Aenderugn 22. Jun wir geben das K/D direkt witer
|
||||
String dbtrNo = dbtr.getItemValueString("_VENDOR_NUM");
|
||||
String display = dbtrNo + " - " + dbtr.getItemValueString("_VENDOR_Name");
|
||||
display=display.replace("\"","");
|
||||
display=display.replace("'","");
|
||||
searchResult.add(new KreditorSearchEntry(dbtrNo, display, buildJsonData(dbtr)));
|
||||
}
|
||||
}
|
||||
} catch (QueryException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* This method searches a text phrase within the list of cargosoft Debitor
|
||||
* objects (type=cargosoftkreditor).
|
||||
* <p>
|
||||
* JSF Integration:
|
||||
*
|
||||
* {@code
|
||||
*
|
||||
* <h:commandScript name="imixsOfficeWorkflow.mlSearch" action=
|
||||
* "#{cargosoftController.search()}" rendered="#{cargosoftController!=null}"
|
||||
* render= "cargosoft-results" /> }
|
||||
*
|
||||
* <p>
|
||||
* JavaScript Example:
|
||||
*
|
||||
* <pre>
|
||||
* {@code
|
||||
* imixsOfficeWorkflow.cargosoftSearch({ item: '_invoicenumber' })
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* @param searchmode - if 'multi', display multiple IBANs in seperate lines
|
||||
*/
|
||||
public void searchDebitor() {
|
||||
|
||||
searchResult = new ArrayList<KreditorSearchEntry>();
|
||||
// get the param from faces context....
|
||||
FacesContext fc = FacesContext.getCurrentInstance();
|
||||
String phrase = fc.getExternalContext().getRequestParameterMap().get("phrase");
|
||||
if (phrase == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
logger.fine("search prase '" + phrase + "'");
|
||||
|
||||
// String input =workflowController.getWorkitem().getItemValueString(itemName);
|
||||
if (phrase == null || phrase.length() < 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
// die cargosoft Kreditornummer beginnt seltsamerweise mit einem K
|
||||
// und die Debitoren mit einem D.....
|
||||
String query = "(type:" + KreditorDebitorService.TYPE_CARGOSOFTKREDITOR + ") AND (name:D*) AND ((name:D"
|
||||
+ phrase + "*) OR (" + phrase.toLowerCase() + "*) )";
|
||||
|
||||
try {
|
||||
List<ItemCollection> result = documentService.find(query, 20, 0, "$modified", true);
|
||||
logger.info("found " + result.size() + " debitors...");
|
||||
if (result != null) {
|
||||
for (ItemCollection dbtr : result) {
|
||||
// Aenderugn 22. Jun wir geben das K/D direkt witer
|
||||
String dbtrNo = dbtr.getItemValueString("_VENDOR_NUM");
|
||||
String display = dbtrNo + " - " + dbtr.getItemValueString("_VENDOR_Name");
|
||||
display = display.replace("\"", "");
|
||||
display = display.replace("'", "");
|
||||
searchResult.add(new KreditorSearchEntry(dbtrNo, display, buildJsonData(dbtr)));
|
||||
}
|
||||
}
|
||||
} catch (QueryException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Hilfsmethode die eine JSON Struktur mit einer IBAN/BIC kombinatuion erzeugt.
|
||||
* 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("name", jsonVal(cdtr.getItemValueString("_VENDOR_Name"))). //
|
||||
add("creditperiod", jsonVal(cdtr.getItemValueString("cdtr.creditperiod"))). //
|
||||
add("mail", jsonVal(cdtr.getItemValueString("cdtr.mail"))). //
|
||||
add("iban", jsonVal(cdtr.getItemValueString("cdtr.iban"))). //
|
||||
add("bic", jsonVal(cdtr.getItemValueString("cdtr.bic"))). //
|
||||
// add ibans für kreditoren verwaltung
|
||||
|
|
@ -266,16 +266,17 @@ public class CargosoftController implements Serializable {
|
|||
}
|
||||
return jsonString;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Helper method to remove " and ' characters - causing problems
|
||||
*
|
||||
* @param val
|
||||
* @return
|
||||
*/
|
||||
public static String jsonVal(String val) {
|
||||
val=val.replace("\"", "");
|
||||
val=val.replace("'", "");
|
||||
return val;
|
||||
val = val.replace("\"", "");
|
||||
val = val.replace("'", "");
|
||||
return val;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -308,8 +309,8 @@ public class CargosoftController implements Serializable {
|
|||
}
|
||||
|
||||
/**
|
||||
* Diese Method überträgt die geänderten Daten in das Kreidtoren Objekt
|
||||
* (cdtr.creditperiod,cdtr.iban,cdtr.bic)
|
||||
* Diese Method überträgt die geänderten Daten in das Kreidtoren/Debitoren
|
||||
* Objekt (cdtr.creditperiod,cdtr.iban,cdtr.bic)
|
||||
*/
|
||||
public void updateZahlungsziel() {
|
||||
|
||||
|
|
@ -330,6 +331,7 @@ public class CargosoftController implements Serializable {
|
|||
} catch (NumberFormatException nfe) {
|
||||
// no op
|
||||
}
|
||||
cargoCreditor.setItemValue("cdtr.mail", kreditor.getItemValueString("cdtr.mail"));
|
||||
cargoCreditor.setItemValue("cdtr.iban", kreditor.getItemValueString("cdtr.iban"));
|
||||
cargoCreditor.setItemValue("cdtr.bic", kreditor.getItemValueString("cdtr.bic"));
|
||||
cargoCreditor.setItemValue("cdtr.iban2", kreditor.getItemValueString("cdtr.iban2"));
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -63,6 +63,11 @@ public class ZahlungseingangSaldoAdapter implements SignalAdapter {
|
|||
|
||||
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....");
|
||||
for (ItemCollection payment : paymentDetails) {
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<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/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>
|
||||
</f:subview>
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
<div class="imixs-form">
|
||||
<div class="imixs-header">
|
||||
<h1>
|
||||
<h:outputText value="Kreditoren Zahlungsziele " />
|
||||
<h:outputText value="Kreditoren / Debitoren " />
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
|
|
@ -39,7 +39,7 @@
|
|||
<div class="imixs-form-section-2">
|
||||
|
||||
<dl>
|
||||
<dt>Kreditor:</dt>
|
||||
<dt>Kreditor/Debitor:</dt>
|
||||
|
||||
<dd>
|
||||
<h:inputText
|
||||
|
|
@ -50,8 +50,16 @@
|
|||
|
||||
</div>
|
||||
|
||||
<h:panelGroup layout="block" styleClass="imixs-form-section"
|
||||
<h:panelGroup layout="block" styleClass="imixs-form-section-2"
|
||||
id="contentIputID">
|
||||
|
||||
<dl>
|
||||
<dt>E-Mail:</dt>
|
||||
<dd><h:inputText pt:data-item="cdtr.mail"
|
||||
value="#{cargosoftController.kreditor.item['cdtr.mail']}" /></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
<dl>
|
||||
<dt>Zahlungsziel:</dt>
|
||||
<dd><h:inputText style="width:5em;"
|
||||
|
|
@ -59,7 +67,8 @@
|
|||
pt:data-item="cdtr.creditperiod"
|
||||
/> Tage</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
</h:panelGroup>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -60,9 +60,10 @@
|
|||
var inputElementZahlungsziel=$("input[data-item='cdtr.creditperiod']");
|
||||
var inputElementZahlungszielCdtr=$("input[id$='cdtr_creditperiod']");
|
||||
var inputElementInvoiceDate=$("input[id$='date_invoice']");
|
||||
var inputElementMail=$("input[data-item='cdtr.mail']");
|
||||
var inputElementIban=$("input[data-item='cdtr.iban']");
|
||||
var inputElementBic=$("input[data-item='cdtr.bic']");
|
||||
if (inputElementZahlungszielCdtr && cdtrData.creditperiod!='') {
|
||||
if (inputElementZahlungszielCdtr) {
|
||||
inputElementZahlungszielCdtr.val(cdtrData.creditperiod);
|
||||
}
|
||||
// nur wenn ein Rechnugnsdatum eingegeben wurde
|
||||
|
|
@ -74,12 +75,15 @@
|
|||
|
||||
}
|
||||
// update iban/bic
|
||||
if (inputElementIban && cdtrData.iban!='') {
|
||||
if (inputElementIban) {
|
||||
inputElementIban.val(cdtrData.iban);
|
||||
}
|
||||
if (inputElementBic && cdtrData.bic!='') {
|
||||
if (inputElementBic) {
|
||||
inputElementBic.val(cdtrData.bic);
|
||||
}
|
||||
if (inputElementMail) {
|
||||
inputElementMail.val(cdtrData.mail);
|
||||
}
|
||||
|
||||
// update all possible data fields von kredorenverwaltung
|
||||
if ($("input[data-item='cdtr.iban']")) {
|
||||
|
|
|
|||
14615
templates/mail/2. Reminder - Englisch.rtf
Normal file
14615
templates/mail/2. Reminder - Englisch.rtf
Normal file
File diff suppressed because it is too large
Load diff
14628
templates/mail/Last Reminder - Englisch.rtf
Normal file
14628
templates/mail/Last Reminder - Englisch.rtf
Normal file
File diff suppressed because it is too large
Load diff
14645
templates/mail/Letzte Mahnung- Deutsch.rtf
Normal file
14645
templates/mail/Letzte Mahnung- Deutsch.rtf
Normal file
File diff suppressed because it is too large
Load diff
14628
templates/mail/Mahnung 1 - Deutsch.rtf
Normal file
14628
templates/mail/Mahnung 1 - Deutsch.rtf
Normal file
File diff suppressed because it is too large
Load diff
14640
templates/mail/Mahnung 2- Deutsch.rtf
Normal file
14640
templates/mail/Mahnung 2- Deutsch.rtf
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue