dunnings = null;
+ @Inject
+ protected WorkflowController workflowController;
+
@Inject
DocumentService documentService;
@@ -299,6 +303,65 @@ public class BusinessPartnerController implements Serializable {
}
}
+ /**
+ * This JSF backing method is called by businesspartner_serach.xhtml after the
+ * user has selected a new businesspartner.
+ *
+ * The method lookups the given BusinessPartner and updates the metadata for
+ * dbtr/cdtr depending on the workflow type.
+ * A form will than rerender the opList section.
+ */
+ public void updateMetaData() {
+ FacesContext fc = FacesContext.getCurrentInstance();
+ String bpid = fc.getExternalContext().getRequestParameterMap().get("partnerID");
+ logger.fine(".........bpid = " + bpid);
+ ItemCollection businessPartner = businessPartnerService.getBusinessPartnerByID(bpid);
+ if (businessPartner != null) {
+
+ // Eingangsrechnung
+ if (InvoiceUtil.isCreditorInvoice(workflowController.getWorkitem())) {
+ workflowController.getWorkitem().setItemValue("cdtr.number",
+ businessPartner.getItemValueString("cdtr.number"));
+ workflowController.getWorkitem().setItemValue("cdtr.name",
+ businessPartner.getItemValueString("partner.name"));
+ workflowController.getWorkitem().setItemValue("cdtr.email",
+ businessPartner.getItemValue("cdtr.email"));
+ }
+
+ // Ausgangsrechnung
+ if (InvoiceUtil.isDebitorInvoice(workflowController.getWorkitem())) {
+ workflowController.getWorkitem().setItemValue("dbtr.number",
+ businessPartner.getItemValueString("dbtr.number"));
+ workflowController.getWorkitem().setItemValue("dbtr.name",
+ businessPartner.getItemValueString("partner.name"));
+ workflowController.getWorkitem().setItemValue("dbtr.email",
+ businessPartner.getItemValue("dbtr.email"));
+ }
+
+ // Zahlungseingang
+ if (workflowController.getWorkitem().getModelVersion().startsWith("zahlungseingang")) {
+ workflowController.getWorkitem().setItemValue("dbtr.number",
+ businessPartner.getItemValueString("dbtr.number"));
+ workflowController.getWorkitem().setItemValue("dbtr.name",
+ businessPartner.getItemValueString("partner.name"));
+ workflowController.getWorkitem().setItemValue("dbtr.email",
+ businessPartner.getItemValue("dbtr.email"));
+ }
+
+ // Analyse Debitor
+ if (workflowController.getWorkitem().getModelVersion().startsWith("analyse-debitor")) {
+ workflowController.getWorkitem().setItemValue("dbtr.number",
+ businessPartner.getItemValueString("dbtr.number"));
+ workflowController.getWorkitem().setItemValue("dbtr.name",
+ businessPartner.getItemValueString("partner.name"));
+ workflowController.getWorkitem().setItemValue("dbtr.email",
+ businessPartner.getItemValue("dbtr.email"));
+ }
+
+ }
+
+ }
+
/**
* Hilfsmethode die eine JSON Struktur mit allen relevanten Daten für einen
* BusinessPartner erzeugt.
diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerService.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerService.java
index f720cd9..f2c0e61 100644
--- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerService.java
+++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/BusinessPartnerService.java
@@ -313,4 +313,58 @@ public class BusinessPartnerService {
return result;
}
+ /**
+ * Diese Methode übertragt neue IBAN/BIC Pare in den Kreditor Banken Bereich
+ *
+ * @param cdtrNumber
+ * @param iban
+ * @param bic
+ * @throws PluginException
+ */
+ public void addNewIBANBIC(ItemCollection businessPartner, String iban, String bic) throws PluginException {
+ if (businessPartner != null) {
+
+ List bankenListe = explodeBanks(businessPartner);
+ ItemCollection newbank = new ItemCollection();
+ // {iban=[IBAN], name=[Test Bank], id=[test ], bic=[BIC]}
+ newbank.setItemValue("iban", iban);
+ newbank.setItemValue("bic", bic);
+ newbank.setItemValue("id", bankenListe.size() + 1);
+ newbank.setItemValue("name", "Banke-" + bankenListe.size() + 1);
+
+ bankenListe.add(newbank);
+ implodeBanks(businessPartner, bankenListe);
+
+ documentService.save(businessPartner);
+
+ }
+
+ }
+
+ /**
+ * Diese Methode gibt true zurück wenn die angegebene IBAN/BIC Kombination als
+ * bank bereits bekannt ist
+ *
+ * @param cdtrNumber
+ * @param iban
+ * @param bic
+ * @throws PluginException
+ */
+ public boolean isIBANBICKnown(ItemCollection businessPartner, String iban, String bic) throws PluginException {
+
+ if (businessPartner != null) {
+
+ List bankenListe = explodeBanks(businessPartner);
+ for (ItemCollection bank : bankenListe) {
+ if (iban.equals(bank.getItemValueString("iban"))
+ && bic.equals(bank.getItemValueString("bic"))) {
+ // known!
+ return true;
+ }
+ }
+ }
+ return false;
+
+ }
+
}
diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/DebitorStatistikController.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/DebitorStatistikController.java
index 049c467..1275762 100644
--- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/DebitorStatistikController.java
+++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/DebitorStatistikController.java
@@ -20,7 +20,6 @@ import java.util.stream.Collectors;
import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService;
-import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.faces.data.WorkflowController;
import org.imixs.workflow.office.views.SearchController;
@@ -58,7 +57,7 @@ public class DebitorStatistikController implements Serializable {
protected SearchController searchController;
@Inject
- protected KreditorDebitorService kreditorDebitorService;
+ protected BusinessPartnerService businessPartnerService;
/**
* Initialize default behavior initialize an opitonal id from the query string
@@ -73,14 +72,13 @@ public class DebitorStatistikController implements Serializable {
String id = paramMap.get("dbtr.number");
if (id != null && !id.isEmpty()) {
workflowController.getWorkitem().setItemValue("dbtr.number", id);
- try {
- ItemCollection dbtr = kreditorDebitorService.findDebitor(id);
- if (dbtr != null) {
- workflowController.getWorkitem().setItemValue("dbtr.name", dbtr.getItemValueString("_vendor_name"));
- }
- } catch (PluginException e) {
- // e.printStackTrace();
+
+ ItemCollection dbtr = businessPartnerService.getBusinessPartnerByID(InvoiceUtil.buildBPID(id));
+ // ItemCollection dbtr = kreditorDebitorService.findDebitor(id);
+ if (dbtr != null) {
+ workflowController.getWorkitem().setItemValue("dbtr.name", dbtr.getItemValueString("partner.name"));
}
+
}
}
diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceOutgoingPlugin.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceOutgoingPlugin.java
index 210aa97..4c2b576 100644
--- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceOutgoingPlugin.java
+++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/InvoiceOutgoingPlugin.java
@@ -17,9 +17,6 @@ import jakarta.inject.Inject;
*/
public class InvoiceOutgoingPlugin extends AbstractPlugin {
- @Inject
- KreditorDebitorService kreditorService;
-
@Inject
BusinessPartnerService businessPartnerService;
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 0c5fa94..2704e0e 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
@@ -13,7 +13,6 @@ import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.faces.util.ResourceBundleHandler;
-import jakarta.ejb.EJB;
import jakarta.inject.Inject;
/**
@@ -68,10 +67,6 @@ public class InvoicePlugin extends AbstractPlugin {
@ConfigProperty(name = "invoice.position.pattern", defaultValue = INVOICE_POSITIONS_PATTERN_DEFAULT)
String invoicePositionsPattern;
- // @Inject
- @EJB
- KreditorDebitorService kreditorService;
-
@Inject
BusinessPartnerService businessPartnerService;
@@ -359,38 +354,28 @@ public class InvoicePlugin extends AbstractPlugin {
return;
}
- // wenn bereits eine Überneahme angedroht wurde dann übernehemen!
- if (!overtakeIBAN.isEmpty()) {
- kreditorService.addNewIBANBIC(cdtrNumber, iban, bic);
- workitem.setItemValue("ibanbic.overtake", "");
- return;
- }
-
- // search the kreditor
- ItemCollection cdtr = kreditorService.findCreditorDebitor(cdtrNumber);
- if (cdtr != null) {
+ ItemCollection businessPartner = businessPartnerService
+ .getBusinessPartnerByID(InvoiceUtil.buildBPID(cdtrNumber));
+ if (businessPartner != null) {
// update country
- workitem.setItemValue("invoice.country", cdtr.getItemValueString("_vendor_country"));
+ workitem.setItemValue("invoice.country", businessPartner.getItemValueString("partner.country"));
+
+ // wenn bereits eine Übernahme angedroht wurde, dann übernehmen wir die neue
+ // IBAN/BIC!
+ if (!overtakeIBAN.isEmpty()) {
+ businessPartnerService.addNewIBANBIC(businessPartner, iban, bic);
+ workitem.setItemValue("ibanbic.overtake", "");
+ return;
+ }
+
// Prüfen ob wir die IBAN schon kennen
- if (iban.equals(cdtr.getItemValueString("cdtr.iban")) && bic.equals(cdtr.getItemValueString("cdtr.bic"))) {
- return;
+ if (!businessPartnerService.isIBANBICKnown(businessPartner, iban, bic)) {
+ // OK - scheinbar ist diese IBAN/BIC nicht bekannt. Also fragen wir mal nach....
+ workitem.setItemValue("ibanbic.overtake", iban + bic);
+ String message = resourceBundleHandler.findMessage("ERROR_IBAN_UNKNOWN");
+ throw new PluginException(InvoicePlugin.class.getName(), ERROR_NEW_IBANBIC, message);
}
- if (iban.equals(cdtr.getItemValueString("cdtr.iban2"))
- && bic.equals(cdtr.getItemValueString("cdtr.bic2"))) {
- return;
- }
- if (iban.equals(cdtr.getItemValueString("cdtr.iban3"))
- && bic.equals(cdtr.getItemValueString("cdtr.bic3"))) {
- return;
- }
- if (iban.equals(cdtr.getItemValueString("cdtr.iban4"))
- && bic.equals(cdtr.getItemValueString("cdtr.bic4"))) {
- return;
- }
- // OK - scheinbar ist diese IBAN/BIC nicht bekannt. Also fragen wir mal nach....
- workitem.setItemValue("ibanbic.overtake", iban + bic);
- String message = resourceBundleHandler.findMessage("ERROR_IBAN_UNKNOWN");
- throw new PluginException(InvoicePlugin.class.getName(), ERROR_NEW_IBANBIC, message);
+
}
}
diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListController.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListController.java
index e71d395..1ef70fd 100644
--- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListController.java
+++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/OPListController.java
@@ -18,7 +18,6 @@ import org.imixs.workflow.faces.data.WorkflowEvent;
import jakarta.enterprise.context.ConversationScoped;
import jakarta.enterprise.event.Observes;
-import jakarta.faces.context.FacesContext;
import jakarta.inject.Inject;
import jakarta.inject.Named;
@@ -69,6 +68,9 @@ public class OPListController implements Serializable {
@Inject
protected InvoiceService invoiceService;
+ @Inject
+ protected BusinessPartnerService businessPartnerService;
+
/**
* Diese Methode wird für Zahlungseingänge und Mahnläufe verwendet.
*
@@ -311,22 +313,6 @@ public class OPListController implements Serializable {
workitem.setItemValue("$workitemref", selectionList);
}
- /**
- * This JSF backing method is called by cargosft-debitor-serach.xhtml after the
- * user has selected a new debitor.
- *
- * The new dbtrNumber is slected form the curren ajax request param 'dbtrNumber'
- *
- * The method just updates the dbtr.number of the current workitem. The form
- * will than rerender the opList section.
- */
- public void updateDbtrNumber() {
- FacesContext fc = FacesContext.getCurrentInstance();
- String dbtrNumber = fc.getExternalContext().getRequestParameterMap().get("dbtrNumber");
- logger.fine(".........dbtrNumber = " + dbtrNumber);
- workflowController.getWorkitem().setItemValue("dbtr.number", dbtrNumber);
- }
-
/**
* Hilfsmethode delegates to ZahlungseingangServcie
*
diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SteuerbescheidPlugin.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SteuerbescheidPlugin.java
index 2ec75ab..dc0aa00 100644
--- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SteuerbescheidPlugin.java
+++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/SteuerbescheidPlugin.java
@@ -35,9 +35,6 @@ public class SteuerbescheidPlugin extends AbstractPlugin {
@Inject
protected DocumentService documentService;
- @Inject
- KreditorDebitorService kreditorService;
-
/**
* Prüft ob der Steuerbetrag abgerechnet ist.
*
diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufRefAddAdapter.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufRefAddAdapter.java
index a2cb6d7..e26bba8 100644
--- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufRefAddAdapter.java
+++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/mahnlauf/MahnlaufRefAddAdapter.java
@@ -16,7 +16,8 @@ import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.sepa.services.SepaWorkflowService;
-import com.alexanderlogistics.KreditorDebitorService;
+import com.alexanderlogistics.BusinessPartnerService;
+import com.alexanderlogistics.InvoiceUtil;
import jakarta.ejb.EJB;
import jakarta.inject.Inject;
@@ -40,15 +41,15 @@ public class MahnlaufRefAddAdapter implements SignalAdapter {
@EJB
ModelService modelService;
- @EJB
- KreditorDebitorService kreditorDebitorService;
-
@EJB
WorkflowService workflowService = null;
@Inject
SepaWorkflowService sepaWorkflowService;
+ @Inject
+ BusinessPartnerService businessPartnerService;
+
/**
* This method finds or create the Mahnlauf and adds a reference ($workitemref)
* to the current invoice.
@@ -156,9 +157,10 @@ public class MahnlaufRefAddAdapter implements SignalAdapter {
// lookup email....
String dbtrNumber = invoice.getItemValueString("dbtr.number");
- ItemCollection dbtrItemCol = kreditorDebitorService.findDebitor("D" + dbtrNumber);
- if (dbtrItemCol != null) {
- mahnlaufWorkitem.setItemValue(MahnlaufService.ITEM_DBTR_EMAIL, dbtrItemCol.getItemValue("cdtr.mail"));// dbtr.mail
+ ItemCollection businessPartner = businessPartnerService
+ .getBusinessPartnerByID(InvoiceUtil.buildBPID(dbtrNumber));
+ if (businessPartner != null) {
+ mahnlaufWorkitem.setItemValue(MahnlaufService.ITEM_DBTR_EMAIL, businessPartner.getItemValue("dbtr.mail"));// dbtr.mail
}
mahnlaufWorkitem.setItemValue(MahnlaufService.ITEM_DBTR_NUMBER,
diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/BusinessPartnerImportService.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/BusinessPartnerImportService.java
index b349244..8dbcced 100644
--- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/BusinessPartnerImportService.java
+++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/BusinessPartnerImportService.java
@@ -49,7 +49,6 @@ import org.imixs.workflow.exceptions.QueryException;
import com.alexanderlogistics.BusinessPartnerService;
import com.alexanderlogistics.InvoiceUtil;
-import com.alexanderlogistics.KreditorDebitorService;
import jakarta.annotation.security.DeclareRoles;
import jakarta.annotation.security.RolesAllowed;
@@ -89,6 +88,9 @@ import jakarta.enterprise.event.Observes;
public class BusinessPartnerImportService {
private static Logger logger = Logger.getLogger(BusinessPartnerImportService.class.getName());
+
+ public static final String TYPE_CARGOSOFTKREDITOR = "cargosoftkreditor";
+
public static final String OPTION_MANDANT_ID = "mandant.id";
public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss";
public static final String REGEX_IMPORTTEXTPATTERN = "^R[1-8] .*$";
@@ -228,7 +230,7 @@ public class BusinessPartnerImportService {
// Hier migrieren wir jetzt auch die alten IBAN/BIC Daten
try {
String cargoShortID = partnerID.substring(2);
- String query = "(type:" + KreditorDebitorService.TYPE_CARGOSOFTKREDITOR + ")";
+ String query = "(type:" + TYPE_CARGOSOFTKREDITOR + ")";
query = query + " AND ( name:K7" + cargoShortID + " OR name:D1" + cargoShortID + " )";
List oldList = documentService.find(query, 2, 0);
diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java
index dbaa430..47b8194 100644
--- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java
+++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLEAkteImportService.java
@@ -79,8 +79,8 @@ import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
+import com.alexanderlogistics.BusinessPartnerService;
import com.alexanderlogistics.InvoiceUtil;
-import com.alexanderlogistics.KreditorDebitorService;
import com.alexanderlogistics.mahnlauf.MahnlaufService;
import jakarta.ejb.EJB;
@@ -123,15 +123,15 @@ public class CargosoftXMLEAkteImportService {
@EJB
ModelService modelService;
- @EJB
- KreditorDebitorService kreditorDebitorService;
-
@EJB
DocumentImportService documentImportService;
@Inject
MahnlaufService mahnlaufService;
+ @Inject
+ BusinessPartnerService businessPartnerService;
+
/**
* This method reacts on a CDI ImportEvent and reads documents form a ftp
* server.
@@ -413,41 +413,32 @@ public class CargosoftXMLEAkteImportService {
return null;
}
- String cdtrNumber = workitem.getItemValueString("cdtr.number");
- if (cdtrNumber.startsWith("K") || cdtrNumber.startsWith("D")) {
- workitem.setItemValue("cdtr.number", cdtrNumber.substring(1));
- }
+ String bid = InvoiceUtil.buildBPID(workitem.getItemValueString("cdtr.number"));
+ ItemCollection businessPartner = businessPartnerService.getBusinessPartnerByID(bid);
+ // ersten BUchstaben hier wegnehmen (warum auch immer)
+ workitem.setItemValue("cdtr.number", businessPartner.getItemValueString("cdtr.number").substring(1));
// lookup debitor and set name
- if (cdtrNumber != null && !cdtrNumber.isEmpty())
- try {
- ItemCollection cdtr = kreditorDebitorService.findCreditor(cdtrNumber);
- if (cdtr != null) {
- workitem.setItemValue("cdtr.name", cdtr.getItemValueString("_vendor_name"));
- // Anhand der Creditoren Stammdaten errrechnen wir die Sprache für diese
- // Rechnung
- String country = cdtr.getItemValueString("_VENDOR_COUNTRY");
- workitem.setItemValue("invoice.country", country);
- if (country.equalsIgnoreCase("de") || country.equalsIgnoreCase("ch")
- || country.equalsIgnoreCase("at")) {
- workitem.setItemValue("invoice.language", "DE");
- } else {
- workitem.setItemValue("invoice.language", "EN");
- }
- }
- } catch (PluginException e) {
- // e.printStackTrace();
+ if (businessPartner != null) {
+ workitem.setItemValue("cdtr.name", businessPartner.getItemValueString("partner.name"));
+ // Anhand der Creditoren Stammdaten errechnen wir die Sprache für diese
+ // Rechnung
+ String country = businessPartner.getItemValueString("partner.country");
+ workitem.setItemValue("invoice.country", country);
+ if (country.equalsIgnoreCase("de") || country.equalsIgnoreCase("ch")
+ || country.equalsIgnoreCase("at")) {
+ workitem.setItemValue("invoice.language", "DE");
+ } else {
+ workitem.setItemValue("invoice.language", "EN");
}
+ // Row Positions lesen
+ readXMLRows(doc, workitem);
+ // Jetzt noch das Space mapping
+ workitem.setItemValue("invoice.text", workitem.getItemValueString("invoice.positions"));
+ mahnlaufService.mapInvoiceTextToSpace(workitem, spacePosMappings);
- // Row Positions lesen
- readXMLRows(doc, workitem);
-
- // Jetzt noch das Space mapping
- workitem.setItemValue("invoice.text", workitem.getItemValueString("invoice.positions"));
- mahnlaufService.mapInvoiceTextToSpace(workitem, spacePosMappings);
-
- // Finally we attache the pdf file and the XML content to the workitem.
- attacheFiles(doc, workitem);
-
+ // Finally we attache the pdf file and the XML content to the workitem.
+ attacheFiles(doc, workitem);
+ }
} catch (ParserConfigurationException | SAXException | IOException e) {
throw new PluginException(CargosoftXMLEAkteImportService.class.getName(),
"XML_ERROR", e.getMessage());
diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java
index 5d01dab..10ac3aa 100644
--- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java
+++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/xml/CargosoftXMLInvoiceImportService.java
@@ -80,7 +80,6 @@ import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import com.alexanderlogistics.InvoiceUtil;
-import com.alexanderlogistics.KreditorDebitorService;
import com.alexanderlogistics.mahnlauf.MahnlaufService;
import jakarta.ejb.EJB;
@@ -114,6 +113,9 @@ public class CargosoftXMLInvoiceImportService {
private static Logger logger = Logger.getLogger(CargosoftXMLInvoiceImportService.class.getName());
public static final String OPTION_MANDANT_ID = "mandant.id";
+
+ public static final String TYPE_CARGOSOFTKREDITOR = "cargosoftkreditor";
+
public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss";
public static final String REGEX_IMPORTTEXTPATTERN = "^R[1-8] .*$";
@@ -126,9 +128,6 @@ public class CargosoftXMLInvoiceImportService {
@EJB
ModelService modelService;
- @EJB
- KreditorDebitorService kreditorDebitorService;
-
@EJB
DocumentImportService documentImportService;
@@ -451,7 +450,7 @@ public class CargosoftXMLInvoiceImportService {
}
// lookup debitor and set name
try {
- ItemCollection dbtr = kreditorDebitorService.findDebitor(dbtrNumber);
+ ItemCollection dbtr = findDebitor(dbtrNumber);
if (dbtr != null) {
workitem.setItemValue("dbtr.name", dbtr.getItemValueString("_vendor_name"));
// Anhand der Creditoren Stammdaten errrechnen wir die Sprache für diese
@@ -824,4 +823,30 @@ public class CargosoftXMLInvoiceImportService {
}
return false;
}
+
+ /**
+ * Diese Method sucht einen Debitor.
+ *
+ * Diese Methode erwartet das führende D
+ *
+ * @throws PluginException
+ */
+ public ItemCollection findDebitor(String dbtrNumber) throws PluginException {
+
+ if ((!dbtrNumber.startsWith("D"))) {
+ dbtrNumber = "D" + dbtrNumber;
+ }
+ try {
+ String query = "(type:" + TYPE_CARGOSOFTKREDITOR + ") AND (name:" + dbtrNumber + ")";
+ List result = documentService.find(query, 1, 0, "$modified", true);
+ if (result.size() > 0) {
+ return result.get(0);
+
+ }
+ } catch (QueryException e) {
+ throw new PluginException(PluginException.class.getName(), "QUERY ERROR", e.getMessage(), e);
+ }
+
+ return null;
+ }
}
diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/cargsoft-debitor-search.xhtml b/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/cargsoft-debitor-search.xhtml
deleted file mode 100644
index bd03ede..0000000
--- a/office-alexander-logistics-app/src/main/webapp/pages/workitems/forms/alexander/cargsoft-debitor-search.xhtml
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/businesspartner_search.xhtml b/office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/businesspartner_search.xhtml
index af0632e..1fab748 100644
--- a/office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/businesspartner_search.xhtml
+++ b/office-alexander-logistics-app/src/main/webapp/pages/workitems/parts/alexander/businesspartner_search.xhtml
@@ -27,10 +27,13 @@
+
+