diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 106420e..c3e0a3b 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -5,6 +5,11 @@
- Finalizierung Business Partner Interface
- Zoho Schnittstelle
+**Migration**
+
+- Encoding für CSV Impoort aus cargosoft muss auf `encoding=UTF-8` stehen!
+- Neues Businesspartner BPMN Modell einspielen
+
### 1.3.3
- Imixs-Archive 3.1.1. Compactor Sevrvice
diff --git a/doc/BUSINESSPARTNER.md b/doc/BUSINESSPARTNER.md
index b6c7613..dff4b38 100644
--- a/doc/BUSINESSPARTNER.md
+++ b/doc/BUSINESSPARTNER.md
@@ -9,12 +9,7 @@ In Imixs ist es dann aber möglich zusätzliche Attribute zu einem Businesspartn
- Bankverbindungen
- Emailadressen für Mahnwesen
-Die Businessparnter werden zentral nur in dem Hauptsystem in Bremen importiert und verwaltet. Damit ein AGL System auf die BusinessPartner zugreifen kann wird eine Rest API Schnittstelle verwendet. Diese kann über Environmentvariablen aktiviert werden:
-
- # Rest Service BusinessPartner API
- WORKFLOW_SERVICE_ENDPOINT: "http://app:8080/api"
- WORKFLOW_SERVICE_USER: "admin"
- WORKFLOW_SERVICE_PASSWORD: "xxxxxxxx"
+Die Businessparnter werden für jedes System separat importiert und verwaltet.
## BusinessPartner Suche
@@ -28,7 +23,7 @@ Z.b. kann das als Custom Part in eine Form eingebunden werden:
* Der Service migriert auch die alten zusätzlichen IBAN/BIC felder wenn der * Business partner erstmals neu angelegt wird. - * - * The service set also the flag NOSNAPSHOT=true for the crgosoftcreditor - * document type. + *
+ * Falls bei der ersten Migration erkannt wird, dass die IBAN Nummern nicht + * eindeutig sind wir der BusinessParter mit dem Event 300 angelegt. + *
+ * Im Cargosoft Entity wird zusätzlich das flag NOSNAPSHOT=true gesetzt. Dies
+ * ist nur eine Performance Optimierung.
*
* @author rsoika
*
@@ -110,90 +113,90 @@ public class BusinessPartnerImportService {
if (event == null || event.getDocument() == null) {
return;
}
- // check if source is already completed
- if (event.getEventType() == DocumentEvent.ON_DOCUMENT_SAVE) {
- // check type!
- if ("cargosoftkreditor".equals(event.getDocument().getType())) {
- // set NOSNAPSHOT=true
- event.getDocument().setItemValue(SnapshotService.NOSNAPSHOT, true);
+ // check source
+ if (event.getEventType() == DocumentEvent.ON_DOCUMENT_SAVE
+ && "cargosoftkreditor".equals(event.getDocument().getType())) {
- // run only if we have the model 'businesspartner-*';
- if (modelService.findVersionsByRegEx("(businesspartner*)").size() == 0) {
- // no business partner workflow found
- return;
+ // set NOSNAPSHOT=true fro cargosoft item (migration)
+ event.getDocument().setItemValue(SnapshotService.NOSNAPSHOT, true);
+
+ // run only if we have the model 'businesspartner-*';
+ if (modelService.findVersionsByRegEx("(businesspartner*)").size() == 0) {
+ // no business partner workflow found
+ return;
+ }
+
+ logger.fine("Verify business partner object....");
+ ItemCollection importDoc = event.getDocument();
+
+ String name = event.getDocument().getItemValueString("name");
+ boolean isCreditor = name.toUpperCase().startsWith("K");
+ String partnerID = InvoiceUtil.buildBPID(name);
+
+ // Prüfen ob es diesen partner schon gibt?
+ ItemCollection businesspartner = lookupBusinessPartner(partnerID);
+ if (businesspartner == null) {
+ businesspartner = createBusinessPartner(partnerID);
+ }
+ ItemCollection oldBussinessPartnerItemColl = (ItemCollection) businesspartner.clone();
+
+ // Update Fields...
+ businesspartner.setItemValue("name", partnerID);
+ businesspartner.setItemValue("partner.id", partnerID);
+ if (isCreditor) {
+ businesspartner.setItemValue("cdtr.number", name);
+ if (businesspartner.isItemEmpty("cdtr.mail")) {
+ businesspartner.setItemValue("cdtr.mail", importDoc.getItemValueString("_vendor_email"));
}
-
- logger.fine("Verify business partner object....");
- ItemCollection importDoc = event.getDocument();
-
- String name = event.getDocument().getItemValueString("name");
- boolean isCreditor = name.toUpperCase().startsWith("K");
- String partnerID = InvoiceUtil.buildBPID(name);
-
- // Prüfen ob es diesen partner schon gibt?
- ItemCollection businesspartner = lookupBusinessPartner(partnerID);
- if (businesspartner == null) {
- businesspartner = createBusinessPartner(partnerID);
- }
- ItemCollection oldBussinessPartnerItemColl = (ItemCollection) businesspartner.clone();
-
- // Update Fields...
- businesspartner.setItemValue("name", partnerID);
- businesspartner.setItemValue("partner.id", partnerID);
- if (isCreditor) {
- businesspartner.setItemValue("cdtr.number", name);
- if (businesspartner.isItemEmpty("cdtr.mail")) {
- businesspartner.setItemValue("cdtr.mail", importDoc.getItemValueString("_vendor_email"));
- }
- } else {
- businesspartner.setItemValue("dbtr.number", name);
- if (businesspartner.isItemEmpty("dbtr.mail")) {
- businesspartner.setItemValue("dbtr.mail", importDoc.getItemValueString("_vendor_email"));
- }
- }
- businesspartner.setItemValue("partner.country", importDoc.getItemValueString("_vendor_country"));
- businesspartner.setItemValue("partner.name", importDoc.getItemValueString("_vendor_name"));
- businesspartner.setItemValue("partner.phone", importDoc.getItemValueString("_vendor_phone"));
- businesspartner.setItemValue("partner.address", importDoc.getItemValueString("_vendor_str"));
- businesspartner.setItemValue("partner.zip", importDoc.getItemValueString("_vendor_zip_code"));
- businesspartner.setItemValue("partner.city", importDoc.getItemValueString("_vendor_city"));
-
- // hat sich das Objekt verändert?
- if (!businesspartner.equals(oldBussinessPartnerItemColl)) {
-
- // Prüfe IBAN auf plausibilität
- List