Verträge / EmployeePatch
Mitarbeiter Patch
EmployeePatch · com.nexoware.connect.events
- Aggregat
- Employee · State EmployeeState
- Topic
- employee.patch je Mandant mit Präfix, z. B.
<mandant>.employee.patch - Key
- EmployeeUuid
- Nachrichtenart
- Patch — ausdrückliche Teiländerungen, zusammengeführt vom Zusammenführungsdienst
- Schreiber
- c-entron Webservice (centron) , NEXOWARE.ERP (nexoware-erp)
- Retention
- 30 Tage
- Fassung
- Version 1 (neueste)
- Schema-ID
- 51
Patch-Pfad
- Pflicht bei Anlage
- IsActive
Vertragsentwurf: typisierte Teilaenderung fuer Mitarbeiter. Nur ChangedFields werden angewandt; null leert nur nullable State-Einheiten. Listen und Unterobjekte sind atomare Ersetzungen mit vollstaendigem Inhalt. Fachliche Freigabe und Regeln gekoppelter Werte sind offen; siehe docs/contracts/employee.md.
Fassungen
Felder
-
EventId ↗ extern: EventId uuidBeim ersten Enqueue in die Outbox erzeugt; bei Wiederholung identisch.
-
EmployeeUuid Key uuidStabile, global eindeutige Identitaet des Mitarbeiters (Matching-Schluessel; zugleich Message-Key). Bereits vor diesem Topic ausgerollt (c-entron ScriptMethod12001), weil jedes Event aller Topics sie als ChangedByUuid referenziert.
-
Mode enum(CHANGE|INITIAL_LOAD)
-
ChangedFields Liste string[]Explizite Maske der geaenderten Top-Level-Einheiten; keine Wildcards, Identitaets- oder Auditfelder. Listen und Records werden als Ganzes ersetzt.
-
Data EmployeePatchData
5 Felder von
EmployeePatchData-
FirstName optional stringDefault:
nullVorname (Quelle Vorname); DB nullable. Anzeigedatum zur Aufloesung von ChangedByUuid. -
LastName optional stringDefault:
nullNachname (Quelle Name); DB nullable. Anzeigedatum zur Aufloesung von ChangedByUuid. -
ShortSign optional stringDefault:
nullKuerzel (Quelle KurzZeich, z. B. MM) - das in der Quelle gebraeuchliche Anzeige-Kurzzeichen; DB nullable. -
Email optional stringDefault:
nullGeschaeftliche E-Mail (Quelle Email); DB nullable. Zuordnungsdatum: natuerlicher Schluessel fuer das Konsumenten-Mapping 'angemeldeter Benutzer -> Employee-Uuid' (Rueckkanal/Outbound-Pfad). -
IsActive optional booleanDefault:
nullLWW-Statusfeld: Aktiv-Kennzeichen zum Publish-Zeitpunkt, vom Producer berechnet wie die abgeleitete Quell-Spalte Personal.IsActive (Status = 1 UND Austritt leer, Altdaten-Sentinel vor 1900 oder in der Zukunft). Mitarbeiter werden nie hart geloescht - Deaktivierung/Austritt reist als IsActive = false im naechsten Voll-Snapshot (kein Event allein durch Zeitablauf des Austrittsdatums). Kein Tombstone - der bleibt der DSGVO-Erasure vorbehalten.
-
-
Default:
nullUUID des aendernden Mitarbeiters (Employee); null, wenn unbekannt. -
ChangedAt timestampZeitpunkt der Aenderung als UTC-Instant.
Referenziert von
- Kundensonderpreis
AccountSpecialPriceState.ChangedByUuid - Geschäftspartner-Art
AccountTypePatch.ChangedByUuid - Geschäftspartner-Art
AccountTypeState.ChangedByUuid - Artikel
ArticlePatch.ChangedByUuid - Artikel
ArticleState.ChangedByUuid - Lagerbestand
ArticleStockPatch.ChangedByUuid - Lagerbestand
ArticleStockState.ChangedByUuid - Artikeleinheit
ArticleUnitPatch.ChangedByUuid - Artikeleinheit
ArticleUnitState.ChangedByUuid - Belegkondition
AssetConditionPatch.ChangedByUuid - Belegkondition
AssetConditionState.ChangedByUuid - Filiale
BranchPatch.ChangedByUuid - Filiale
BranchState.ChangedByUuid - Vertrag
ContractPatch.ChangedByUuid - Vertrag
ContractState.ChangedByUuid - Vertragsart
ContractKindPatch.ChangedByUuid - Vertragsart
ContractKindState.ChangedByUuid - Kostenstelle
CostCenterPatch.ChangedByUuid - Kostenstelle
CostCenterState.ChangedByUuid - Kostenträger
CostObjectPatch.ChangedByUuid - Kostenträger
CostObjectState.ChangedByUuid - Mitarbeiter
EmployeePatch.ChangedByUuid - Mitarbeiter
EmployeeState.ChangedByUuid - ES-Kundengruppe
EsGroupState.ChangedByUuid - Shop-Bestellung
EsOrderState.ChangedByUuid - ES-Rolle
EsRoleState.ChangedByUuid - Warengruppe
MaterialGroupPatch.ChangedByUuid - Warengruppe
MaterialGroupState.ChangedByUuid - Abholschein
PickupListPatch.ChangedByUuid - Abholschein
PickupListState.ChangedByUuid - Retoure
RmaPatch.ChangedByUuid - Retoure
RmaState.ChangedByUuid - Anrede
SalutationPatch.ChangedByUuid - Anrede
SalutationState.ChangedByUuid - Lieferanten-Gutschrift
SupplierCreditVoucherPatch.ChangedByUuid - Lieferanten-Gutschrift
SupplierCreditVoucherState.ChangedByUuid - Lieferantenlieferschein
SupplierDeliveryListPatch.ChangedByUuid - Lieferantenlieferschein
SupplierDeliveryListState.ChangedByUuid - Lieferanten-Rechnung
SupplierInvoicePatch.ChangedByUuid - Lieferanten-Rechnung
SupplierInvoiceState.ChangedByUuid - Anfrage
SupplierOfferPatch.ChangedByUuid - Anfrage
SupplierOfferState.ChangedByUuid - Bestellung
SupplierOrderPatch.ChangedByUuid - Bestellung
SupplierOrderState.ChangedByUuid - Ticket
TicketPatch.ChangedByUuid - Ticket
TicketState.ChangedByUuid - Ticket-Zeiterfassung
TicketTimerPatch.Data.EmployeeUuid - Ticket-Zeiterfassung
TicketTimerPatch.ChangedByUuid - Ticket-Zeiterfassung
TicketTimerState.EmployeeUuid - Ticket-Zeiterfassung
TicketTimerState.ChangedByUuid - Mehrwertsteuersatz
ValueAddedTaxPatch.ChangedByUuid - Mehrwertsteuersatz
ValueAddedTaxState.ChangedByUuid - Web-Konto
WebAccountState.ChangedByUuid
Rohfassung
Schema dieser Fassung (Avro)
{
"type": "record",
"name": "EmployeePatch",
"namespace": "com.nexoware.connect.events",
"doc": "Vertragsentwurf: typisierte Teilaenderung fuer Mitarbeiter. Nur ChangedFields werden angewandt; null leert nur nullable State-Einheiten. Listen und Unterobjekte sind atomare Ersetzungen mit vollstaendigem Inhalt. Fachliche Freigabe und Regeln gekoppelter Werte sind offen; siehe docs/contracts/employee.md.",
"fields": [
{
"name": "EventId",
"type": {
"type": "string",
"logicalType": "uuid"
},
"doc": "Beim ersten Enqueue in die Outbox erzeugt; bei Wiederholung identisch."
},
{
"name": "EmployeeUuid",
"type": {
"type": "string",
"logicalType": "uuid"
},
"doc": "Stabile, global eindeutige Identitaet des Mitarbeiters (Matching-Schluessel; zugleich Message-Key). Bereits vor diesem Topic ausgerollt (c-entron ScriptMethod12001), weil jedes Event aller Topics sie als ChangedByUuid referenziert."
},
{
"name": "Mode",
"type": {
"type": "enum",
"name": "PatchMode",
"doc": "CHANGE: lokal autorisierte Aenderung, LWW je Einheit nach Kafka-Reihenfolge. INITIAL_LOAD: Erstbefuellung beim Anschluss eines Produkts - setzt eine Einheit nur, wenn sie noch nie geschrieben wurde; ueberschreibt nie einen vorhandenen oder ausdruecklich geleerten Wert. Bewusst ohne Enum-Default: ein unbekannter kuenftiger Modus darf nicht still als CHANGE gelesen werden.",
"symbols": [
"CHANGE",
"INITIAL_LOAD"
]
}
},
{
"name": "ChangedFields",
"type": {
"type": "array",
"items": "string"
},
"doc": "Explizite Maske der geaenderten Top-Level-Einheiten; keine Wildcards, Identitaets- oder Auditfelder. Listen und Records werden als Ganzes ersetzt."
},
{
"name": "Data",
"type": {
"type": "record",
"name": "EmployeePatchData",
"doc": "Werte der maskierten Einheiten. null ausserhalb der Maske wird ignoriert; innerhalb der Maske entscheidet die Nullability im State.",
"fields": [
{
"name": "FirstName",
"type": [
"null",
"string"
],
"doc": "Vorname (Quelle Vorname); DB nullable. Anzeigedatum zur Aufloesung von ChangedByUuid.",
"default": null
},
{
"name": "LastName",
"type": [
"null",
"string"
],
"doc": "Nachname (Quelle Name); DB nullable. Anzeigedatum zur Aufloesung von ChangedByUuid.",
"default": null
},
{
"name": "ShortSign",
"type": [
"null",
"string"
],
"doc": "Kuerzel (Quelle KurzZeich, z. B. MM) - das in der Quelle gebraeuchliche Anzeige-Kurzzeichen; DB nullable.",
"default": null
},
{
"name": "Email",
"type": [
"null",
"string"
],
"doc": "Geschaeftliche E-Mail (Quelle Email); DB nullable. Zuordnungsdatum: natuerlicher Schluessel fuer das Konsumenten-Mapping 'angemeldeter Benutzer -> Employee-Uuid' (Rueckkanal/Outbound-Pfad).",
"default": null
},
{
"name": "IsActive",
"type": [
"null",
"boolean"
],
"doc": "LWW-Statusfeld: Aktiv-Kennzeichen zum Publish-Zeitpunkt, vom Producer berechnet wie die abgeleitete Quell-Spalte Personal.IsActive (Status = 1 UND Austritt leer, Altdaten-Sentinel vor 1900 oder in der Zukunft). Mitarbeiter werden nie hart geloescht - Deaktivierung/Austritt reist als IsActive = false im naechsten Voll-Snapshot (kein Event allein durch Zeitablauf des Austrittsdatums). Kein Tombstone - der bleibt der DSGVO-Erasure vorbehalten.",
"default": null
}
]
}
},
{
"name": "ChangedByUuid",
"type": [
"null",
{
"type": "string",
"logicalType": "uuid"
}
],
"doc": "UUID des aendernden Mitarbeiters (Employee); null, wenn unbekannt.",
"default": null,
"references": "Employee"
},
{
"name": "ChangedAt",
"type": {
"type": "long",
"logicalType": "timestamp-millis"
},
"doc": "Zeitpunkt der Aenderung als UTC-Instant."
}
],
"aggregate": "Employee",
"label": "Mitarbeiter",
"topic": "employee.patch",
"key": "EmployeeUuid",
"cleanupPolicy": "delete",
"retentionMs": 2592000000,
"partitions": 1,
"writers": [
"centron",
"nexoware-erp"
],
"requiredOnCreate": [
"IsActive"
]
}