Verträge / ArticleState
Artikel State
ArticleState · com.nexoware.connect.events
- Aggregat
- Article · Patch ArticlePatch
- Topic
- article.state je Mandant mit Präfix, z. B.
<mandant>.article.state - Key
- ArticleUuid
- Nachrichtenart
- State — der aktuelle Zustand, ein Writer
- Schreiber
- Zusammenführungsdienst (merge)
- Leser
- c-entron Webservice (centron) , NEXOWARE.ERP (nexoware-erp) , Shop (shop)
- Fassung
- Version 1 (neueste)
- Schema-ID
- 97
Vertragsentwurf: vollstaendiger veroeffentlichter Zustand fuer Artikel. Feldumfang aus dem archivierten ArticleChanged; kein fachlicher Vergleich beider Produkte. Einziger State-Writer ist merge; Produkte veroeffentlichen typisierte Patches. Grenzen, Migration und offene Fachregeln: docs/contracts/article.md.
Fassungen
Felder
-
ArticleUuid Key uuidStabile, global eindeutige Identitaet des Artikels (Matching-Schluessel; zugleich Message-Key).
-
ArticleCode stringFachlicher Artikelcode (Business-Key, quellseitig unique + non-null; Uebergangs-Matching-Fallback).
-
ManufacturerCode optional stringDefault:
nullHerstellernummer/-code des Artikels; DB nullable. -
EANCode optional stringDefault:
nullEAN/GTIN des Artikels; DB nullable. -
ShortDescription optional stringDefault:
nullKurzbegriff des Artikels; DB nullable. -
Description optional stringDefault:
nullArtikelbeschreibung (Langtext); DB nullable. -
Default:
nullReferenz auf das Warengruppen-Stammdatum ueber dessen UUID; quellseitig nullable. -
Default:
nullReferenz auf das Mehrwertsteuersatz-Stammdatum ueber dessen UUID; Altdaten koennen ohne Satz sein. -
Default:
nullReferenz auf das Artikeleinheiten-Stammdatum ueber dessen UUID; quellseitig nullable. -
Default:
nullRollenreferenz: der Hersteller ist ein Geschaeftspartner (Account mit Manufacturer-Facette, QS-1) und reist ueber dessen UUID (vormals ManufacturerI3D). Erst damit kann ein Consumer den Herstellernamen aus dem AccountState beziehen, statt ihn aufgeloest mitzuschicken. Null ohne Hersteller-Bezug. -
Price1 decimal(18,4)Verkaufspreis 1 (netto); quellseitig non-null float, beim Publish kaufmaennisch auf 4 Nachkommastellen gerundet.
-
Price2 decimal(18,4)Verkaufspreis 2 (netto).
-
Price3 decimal(18,4)Verkaufspreis 3 (netto).
-
Price4 decimal(18,4)Verkaufspreis 4 (netto).
-
EVP decimal(18,4)Empfohlener Verkaufspreis (EVK).
-
ListPrice decimal(18,4)Listenpreis.
-
PurchasePrice decimal(18,4)Einkaufspreis (EK, Hauptlager). Wird auch ausserhalb der Stammpflege fortgeschrieben (EK-Fortschreibung beim Wareneingang) - jede Fortschreibung erzeugt ein eigenes ArticleState.
-
State intLWW-Statusfeld: 1 = aktiv, 0 = deaktiviert (Quellflag EOL/End-of-Life; Soft-Delete, kein Tombstone).
-
Blocked booleanArtikel gesperrt (Gesperrt-Flag der Quelle); unabhaengig vom LWW-Status.
-
Deliverable booleanArtikel lieferbar (Lieferbar-Flag der Quelle).
-
NotDiscountable booleanArtikel nicht rabattierbar.
-
VisibleOnWeb booleanArtikel im Web-Portal sichtbar.
-
Vpe intVerpackungseinheit (Menge je Gebinde); non-null Quell-Property.
-
Precision intNachkommastellen der artikel-individuellen Preis-/Mengenrundung in der Quelle (Kontext zu den decimal(18,4)-Preisfeldern).
-
MinimumOrderQuantity optional doubleDefault:
nullMindestbestellmenge; DB nullable. -
DeliveryTime intLieferzeit in Tagen; non-null Quell-Property.
-
Length doubleLaenge (Abmessung); non-null Quell-Property.
-
Width doubleBreite (Abmessung).
-
Height doubleHoehe (Abmessung).
-
Volume doubleVolumen.
-
NetWeight doubleNettogewicht.
-
GrossWeight doubleBruttogewicht.
-
GoodsNumber optional stringDefault:
nullWarennummer (FiBu/Zoll); DB nullable. -
CustomsNumber optional stringDefault:
nullZolltarifnummer; DB nullable. -
IntrastatNumber optional stringDefault:
nullIntrastat-Nummer; DB nullable. -
Revision longAnzahl der zustandsaendernden Patches seit Anlage; vom Zusammenfuehrungsdienst gesetzt.
-
LastEventId ↗ extern: LastEventId uuidEventId des zuletzt angewandten Patches; vom Zusammenfuehrungsdienst gesetzt.
-
Default:
nullUUID des aendernden Mitarbeiters (Employee); null, wenn unbekannt. -
ChangedAt timestampZeitpunkt der Aenderung als UTC-Instant.
Referenziert von
Kein Vertrag verweist auf diesen.
Rohfassung
Schema dieser Fassung (Avro)
{
"type": "record",
"name": "ArticleState",
"namespace": "com.nexoware.connect.events",
"doc": "Vertragsentwurf: vollstaendiger veroeffentlichter Zustand fuer Artikel. Feldumfang aus dem archivierten ArticleChanged; kein fachlicher Vergleich beider Produkte. Einziger State-Writer ist merge; Produkte veroeffentlichen typisierte Patches. Grenzen, Migration und offene Fachregeln: docs/contracts/article.md.",
"fields": [
{
"name": "ArticleUuid",
"type": {
"type": "string",
"logicalType": "uuid"
},
"doc": "Stabile, global eindeutige Identitaet des Artikels (Matching-Schluessel; zugleich Message-Key)."
},
{
"name": "ArticleCode",
"type": "string",
"doc": "Fachlicher Artikelcode (Business-Key, quellseitig unique + non-null; Uebergangs-Matching-Fallback)."
},
{
"name": "ManufacturerCode",
"type": [
"null",
"string"
],
"doc": "Herstellernummer/-code des Artikels; DB nullable.",
"default": null
},
{
"name": "EANCode",
"type": [
"null",
"string"
],
"doc": "EAN/GTIN des Artikels; DB nullable.",
"default": null
},
{
"name": "ShortDescription",
"type": [
"null",
"string"
],
"doc": "Kurzbegriff des Artikels; DB nullable.",
"default": null
},
{
"name": "Description",
"type": [
"null",
"string"
],
"doc": "Artikelbeschreibung (Langtext); DB nullable.",
"default": null
},
{
"name": "MaterialGroupUuid",
"type": [
"null",
{
"type": "string",
"logicalType": "uuid"
}
],
"doc": "Referenz auf das Warengruppen-Stammdatum ueber dessen UUID; quellseitig nullable.",
"default": null
},
{
"name": "VatUuid",
"type": [
"null",
{
"type": "string",
"logicalType": "uuid"
}
],
"doc": "Referenz auf das Mehrwertsteuersatz-Stammdatum ueber dessen UUID; Altdaten koennen ohne Satz sein.",
"default": null
},
{
"name": "ArticleUnitUuid",
"type": [
"null",
{
"type": "string",
"logicalType": "uuid"
}
],
"doc": "Referenz auf das Artikeleinheiten-Stammdatum ueber dessen UUID; quellseitig nullable.",
"default": null
},
{
"name": "ManufacturerUuid",
"type": [
"null",
{
"type": "string",
"logicalType": "uuid"
}
],
"doc": "Rollenreferenz: der Hersteller ist ein Geschaeftspartner (Account mit Manufacturer-Facette, QS-1) und reist ueber dessen UUID (vormals ManufacturerI3D). Erst damit kann ein Consumer den Herstellernamen aus dem AccountState beziehen, statt ihn aufgeloest mitzuschicken. Null ohne Hersteller-Bezug.",
"default": null,
"references": "Account"
},
{
"name": "Price1",
"type": {
"type": "bytes",
"logicalType": "decimal",
"precision": 18,
"scale": 4
},
"doc": "Verkaufspreis 1 (netto); quellseitig non-null float, beim Publish kaufmaennisch auf 4 Nachkommastellen gerundet."
},
{
"name": "Price2",
"type": {
"type": "bytes",
"logicalType": "decimal",
"precision": 18,
"scale": 4
},
"doc": "Verkaufspreis 2 (netto)."
},
{
"name": "Price3",
"type": {
"type": "bytes",
"logicalType": "decimal",
"precision": 18,
"scale": 4
},
"doc": "Verkaufspreis 3 (netto)."
},
{
"name": "Price4",
"type": {
"type": "bytes",
"logicalType": "decimal",
"precision": 18,
"scale": 4
},
"doc": "Verkaufspreis 4 (netto)."
},
{
"name": "EVP",
"type": {
"type": "bytes",
"logicalType": "decimal",
"precision": 18,
"scale": 4
},
"doc": "Empfohlener Verkaufspreis (EVK)."
},
{
"name": "ListPrice",
"type": {
"type": "bytes",
"logicalType": "decimal",
"precision": 18,
"scale": 4
},
"doc": "Listenpreis."
},
{
"name": "PurchasePrice",
"type": {
"type": "bytes",
"logicalType": "decimal",
"precision": 18,
"scale": 4
},
"doc": "Einkaufspreis (EK, Hauptlager). Wird auch ausserhalb der Stammpflege fortgeschrieben (EK-Fortschreibung beim Wareneingang) - jede Fortschreibung erzeugt ein eigenes ArticleState."
},
{
"name": "State",
"type": "int",
"doc": "LWW-Statusfeld: 1 = aktiv, 0 = deaktiviert (Quellflag EOL/End-of-Life; Soft-Delete, kein Tombstone)."
},
{
"name": "Blocked",
"type": "boolean",
"doc": "Artikel gesperrt (Gesperrt-Flag der Quelle); unabhaengig vom LWW-Status."
},
{
"name": "Deliverable",
"type": "boolean",
"doc": "Artikel lieferbar (Lieferbar-Flag der Quelle)."
},
{
"name": "NotDiscountable",
"type": "boolean",
"doc": "Artikel nicht rabattierbar."
},
{
"name": "VisibleOnWeb",
"type": "boolean",
"doc": "Artikel im Web-Portal sichtbar."
},
{
"name": "Vpe",
"type": "int",
"doc": "Verpackungseinheit (Menge je Gebinde); non-null Quell-Property."
},
{
"name": "Precision",
"type": "int",
"doc": "Nachkommastellen der artikel-individuellen Preis-/Mengenrundung in der Quelle (Kontext zu den decimal(18,4)-Preisfeldern)."
},
{
"name": "MinimumOrderQuantity",
"type": [
"null",
"double"
],
"doc": "Mindestbestellmenge; DB nullable.",
"default": null
},
{
"name": "DeliveryTime",
"type": "int",
"doc": "Lieferzeit in Tagen; non-null Quell-Property."
},
{
"name": "Length",
"type": "double",
"doc": "Laenge (Abmessung); non-null Quell-Property."
},
{
"name": "Width",
"type": "double",
"doc": "Breite (Abmessung)."
},
{
"name": "Height",
"type": "double",
"doc": "Hoehe (Abmessung)."
},
{
"name": "Volume",
"type": "double",
"doc": "Volumen."
},
{
"name": "NetWeight",
"type": "double",
"doc": "Nettogewicht."
},
{
"name": "GrossWeight",
"type": "double",
"doc": "Bruttogewicht."
},
{
"name": "GoodsNumber",
"type": [
"null",
"string"
],
"doc": "Warennummer (FiBu/Zoll); DB nullable.",
"default": null
},
{
"name": "CustomsNumber",
"type": [
"null",
"string"
],
"doc": "Zolltarifnummer; DB nullable.",
"default": null
},
{
"name": "IntrastatNumber",
"type": [
"null",
"string"
],
"doc": "Intrastat-Nummer; DB nullable.",
"default": null
},
{
"name": "Revision",
"type": "long",
"doc": "Anzahl der zustandsaendernden Patches seit Anlage; vom Zusammenfuehrungsdienst gesetzt."
},
{
"name": "LastEventId",
"type": {
"type": "string",
"logicalType": "uuid"
},
"doc": "EventId des zuletzt angewandten Patches; vom Zusammenfuehrungsdienst gesetzt."
},
{
"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": "Article",
"label": "Artikel",
"topic": "article.state",
"key": "ArticleUuid",
"cleanupPolicy": "compact",
"partitions": 1,
"writers": [
"merge"
],
"readers": [
"centron",
"nexoware-erp",
"shop"
]
}