# BusinessPartner

Wir haben einen Workflow für die Verwaltung von BusinessPartner.
Ein BusinessPartner wird über die bestehende Cargosoft Schnittstelle aus den Debitoren/Kreditoren automatisch importiert und synchronisiert.

In Imixs ist es dann aber möglich zusätzliche Attribute zu einem Businesspartner zu speichern. Beispielsweise:

- Zahlungsziel
- Bankverbindungen
- Emailadressen für Mahnwesen

Die Businessparnter werden für jedes System separat importiert und verwaltet.

Folgende zentrale Stati werden über das BusinessPartner Modell festgelegt:

- TASK_ACTIVE = 1100
- TASK_VERIFICATION = 1300
- TASK_INACTIVE = 1700
- TASK_LOCKED = 1800

Die Invoice Plugins aktualisierne automatisch die BusinessPartner Attribute `partner.id` und `partner.name`. Zusätzlich unterbinden die Plugins eine Verarbeitung falls das Business Objekt im Satus LOCKED oder VERIFICATION ist!

## BusinessPartner Suche

Es gibt einen Controller und ein widget um nach Business Partnern zu suchen.

<img src="images/businesspartner-widget.png" />

Z.b. kann das als Custom Part in eine Form eingebunden werden:

```xml
<item name="bpid" type="custom" path="alexander/businesspartner_search"  required="true" label="Businesspartner:" />
```

Der name ist heirbei irrelevant, da immer die Items `partner.id` und `partner.name` ausgefüllt werden.
Zusätzlich kann man mit den Options angeben ob die Maske komplett neu gerendert werden soll. Das ist z.b. bei dem Modell `analyse-debitor.bpmn` der Fall

```xml
<item name="dbtr.number" type="custom" path="alexander/businesspartner_search" required="true"  label="Debtor:" options="rerender" />
```

Man kann auch noch über die options eine regular Expression mitgeben wodurch die Filterliste eingeschränkt werden kann:

```xml
<item name="dbtr.number" type="custom" path="alexander/businesspartner_search" required="true"  label="Debtor:" options="rerender;regexPattern=(ABC)" />
```

Alternativ kann im Backend über die EJB BusinessPartnerService nach bpid gesucht werden:

```java
    List<ItemCollection> resultList = businessPartnerService.search(phrase);
    // oder
    ItemCollection bp=  businessPartnerService.getBusinessPartnerByID("BP0001");
```

## Invoice Plugins

Die Invoice Plugins aktualisieren automatisch partner.id und partner.name falls diese Items noch nicht exiistieren

# Daten Migration

Der `BusinessPartnerImportService` hängt sich über ein CDI Observer Pattern an den standard CSVImport Service
der die Cargosoft Stammdaten aktualisiert. Der BusinessPartnerImportService
prüft ob der Workflow schon existiert oder ggf. aktualisiert werden muss.

Der Service migriert auch die alten zusätzlichen IBAN/BIC felder wenn der Business partner erstmals neu angelegt wird. Falls bei der ersten Migration erkannt wird, dass die IBAN Nummern nicht eindeutig sind wir der BusinessParter mit dem Event 300 angelegt.

-

\_vendor_zip_code

\_vendor_fax

    (type:cargosoftkreditor) AND ($modified:[20010101 TO 20250215])

## Anmerkungen zu seltsamen Daten

BP4641 existier jetzt 3 mal mit der Debitoren nummer D14641

Feldmühle

- D14169
  K74169

K76233 HSH Papier GmbH & Co. KG

D16233 Manfred Ziegler Transport GmbH

Problemkind: https://alexander-logistics-dwc.office-workflow.de/pages/workitems/workitem.xhtml?id=9dd64b0a-cfe1-4174-aea4-0e8af45b823f

# Business Parter Serach Widget

wir müssten eigentlich nach Auswahl des Partner

    execute="#{customFormComponents.clientId}" render="#{customFormComponents.clientId}"

machnen, aber das hat einen blöden effekt
