Zum Hauptinhalt springen

DOWNLOADJSON & QUANTITYCHECK

DOWNLOADJSON

Klasse: OciDownloadJsonController
Zweck: Gibt den gesamten Produktkatalog als paginiertes JSON zurück. Das Format entspricht dem SAP-Ariba-Katalogsformat (NEWITEM-Struktur). Eingesetzt, um den lokalen Produktkatalog eines Procurement-Systems zu befüllen, ohne dass ein interaktiver Punchout-Prozess stattfindet.

Ablauf

  1. Parameter einlesen (alle optional mit Standardwerten)
  2. Produktanzahl laden: OciProductService::getProductsTotalCount($dataFeedContext)
  3. Aktuelle Seite berechnen und auf totalPages clampen
  4. Produktseite laden: OciProductService::getProductsPage($pageSize, $currentPage, $dataFeedContext)
  5. Jedes Produkt in NEWITEM-Struktur umwandeln
  6. Session löschen
  7. JSON-Response zurückgeben

Parameter

ParameterStandardBeschreibung
pagesize50Anzahl der Produkte pro Seite
requestedpage1Angefragte Seite (1-basiert, wird auf totalPages geclampt)
transactionidAuto-UUIDTransaktions-ID; wird automatisch generiert, wenn nicht angegeben
cti"X"Catalog Type Indicator (SAP-Konvention)

Response-Struktur

{
"CTI": "X",
"CURRENTPAGE": 1,
"TOTALITEMS": 150,
"TOTALPAGES": 3,
"TRANSACTIONID": "a1b2c3d4...",
"Items": [
{
"NEWITEM": {
"ATTACHMENTS": [
{
"descriptions": [{ "description": "item image", "languageCode": "" }],
"fileName": "https://example.com/media/product.jpg",
"mimeType": "image/jpeg",
"type": "01"
}
],
"ATTRIBUTES": [],
"CATALOG_NAME": "Kategoriename",
"CURRENCY": "EUR",
"DESCRIPTION": [{ "description": "Produktname", "languageCode": "" }],
"EXT_PRODUCT_ID": "SW-1234",
"ITEM_TYPE": "product",
"LEADTIME": "",
"MINORDER_QTY": 1,
"PRICE": "9.99",
"PRICE_QUANTITY": 1,
"PRICE_SCALES": [{ "low": 1, "price": "9.99", "scaleType": "01" }],
"TAX": "19.00",
"UNIT": "PCE",
"VENDOR": "Herstellername",
"VENDOR_NAME": "SalesChannel Name"
}
}
]
}

Preislogik

  • Wenn Staffelpreise vorhanden (calculatedPrices): erster Staffelpreis wird verwendet
  • Sonst: calculatedPrice.unitPrice
  • Format: 2 Dezimalstellen, Punkt als Trennzeichen, kein Tausender-Trennzeichen

Fehlerbehandlung

Wirft der Controller eine Exception, gibt er statt eines Items-Arrays eine JSON-Fehlerantwort zurück:

{
"success": false,
"errorMessage": "..."
}
hinweis

DOWNLOADJSON läuft ohne aktive ConnectorSession nach dem Call – die Session wird am Ende gelöscht. DataFields werden für DOWNLOADJSON nicht aufgelöst; die Felder werden direkt aus der SalesChannelProductEntity befüllt.


QUANTITYCHECK

Klasse: OciQuantityCheckController
Zweck: Gibt den verfügbaren Lagerbestand für ein einzelnes Produkt zurück. Eingesetzt, wenn das Procurement-System vor einer Bestellung die Verfügbarkeit prüfen möchte.

Ablauf

  1. productid-Parameter prüfen (Pflichtfeld)
  2. Produkt per productNumber laden ($dataFeedContext)
  3. Session löschen
  4. JSON-Response mit Verfügbarkeit zurückgeben

Parameter

ParameterPflichtBeschreibung
productid✅ JaProduktnummer

Response (JSON)

{
"AVAILABLE_QUANTITY": 42,
"LEADTIME": ""
}
FeldQuelleBeschreibung
AVAILABLE_QUANTITYSalesChannelProductEntity::getAvailableStock()Verfügbarer Lagerbestand
LEADTIMEImmer leerer String (nicht implementiert)

Fehlerverhalten

FehlerException
productid fehlt\RuntimeException: Parameter PRODUCTID is required and has not been provided.
Produkt nicht gefunden\RuntimeException: Product with product number "..." was not found.