Zum Hauptinhalt springen

Schnittstelle implementieren

Wie zuvor geschrieben, ist jede Schnittstelle einem AppFeature zugeordnet. In der Dokumentation zur jeweiligen Schnittstelle wird das Feature jeweils angegeben. Damit die Platform nun erkennen kann, dass deine App die OrderProvider Schnittstelle implementiert, musst du zunächst das AppFeature ergänzen.

 // src/index.ts
import {AppVersion, SdkVersion} from "@soda-sync/app-sdk";
import {MyIntegration} from "./my-integration";

export function factory() {
return new MyIntegration();
}

declare const __VERSION__: AppVersion;

SodaSync.registerApp({
sdkVersion: SdkVersion,
name: "Meine App",
packageId: "com.example.my_app",
description: "Meine tolle App",
version: __VERSION__,
author: {
name: "Max Muster",
email: "support@muster.tld",
},
- supportedFeatures: [],
+ supportedFeatures: ["orders-provide"],
factory,
});

Anschließend wechselst du in die Integration (src/my-integration.ts) und implementierst dort das OrderProvider Interface. Für den ersten Test reicht es, wenn du einen Test-Datensatz hart kodierst. Die Datenmodelle sind im SDK vollständig dokumentiert, weswegen in dieser Anleitung nicht im detail darauf eingegangen wird.

-import {Integration} from "@soda-sync/app-sdk";
+import {Integration, OrderProvider, QueryOrdersRequest, QueryOrdersResult} from "@soda-sync/app-sdk";

-export class MyIntegration implements Integration {
+export class MyIntegration implements Integration, OrderProvider {
public checkConfiguration(): Promise<void> {
return Promise.resolve();
}
+
+ public async queryOrders(request: QueryOrdersRequest): Promise<QueryOrdersResult> {
+ return {
+ pageSize: request.pageSize,
+ pageToken: request.pageToken,
+ nextPageToken: "123",
+ data: [
+ {
+ id: "fwg4adftwsgb",
+ orderNumber: "ORD#123",
+ orderDate: "2023-06-02 21:45:00",
+ status: "OPEN",
+ items: [
+ {
+ id: "s3ilguasd",
+ sku: "A12",
+ name: "Eine Bestellposition",
+ description: "Beschreibung der Position",
+ amount: 1,
+ singleNetPrice: {value: 10_00, divisor: 100},
+ singleGrossPrice: {value: 11_90, divisor: 100},
+ taxRate: 19,
+ },
+ ],
+ shipments: [],
+ transactions: [],
+ },
+ ],
+ };
+ }
+
}