Cargo-Planner Docs

Integration

Wenn Sie bereits digitale Werkzeuge haben, um zu verwalten, was in Ihrem Lager gespeichert ist, oder wie Sie Kundenladelisten handhaben, kann Cargo-Planner darauf aufbauen mit ein wenig Integration.

Cargo Library Synchronisierung

Der einfachste Weg, eine Integration mit Ihren aktuellen Werkzeugen zu starten, ist über die Cargo Library. Alle Cargo-Planner-Lizenzen beinhalten die Cargo Library, die im Wesentlichen ein minimales WMS oder Ressourcenplanungssystem ist.

Die Einrichtung erleichtert es, neue Ladelisten in unserer Web-App zu erstellen, durch reibungslose Importe oder Autovervollständigung.

Diese Methode kann im Wesentlichen als CRON-Job oder tägliche Synchronisation ausgeführt werden, und Cargo-Planner kümmert sich um alle UI-Aspekte der Erstellung einer Ladeliste.

GIF der Autovervollständigung einer Ladeliste

Aber die manuelle Einrichtung der Cargo Library kann eine ziemliche Aufgabe sein. Lassen Sie uns also mit dem Tool, das Sie derzeit verwenden, synchronisieren, mit ein wenig Code.

// Überprüfen Sie die Seite Erste Schritte, um herauszufinden, wie Sie Ihr Token erstellen
const API_TOKEN = 'Token b123...';
const cargoes: CargoPlannerItem[] = [];

// Nehmen wir an, wir haben eine Quelle von Artikeln/Frachten, die so aussieht,
// wobei alles in Millimetern und Gramm definiert ist.
const sourceItems = [
  {
    id: 511732,
    title: 'Basket Catcher',
    description: '...',
    length: 900,
    width: 900,
    height: 500,
    weight: 20000,
    inner_quantity: 1,
  },
  {
    id: 512789,
    title: 'Putters (10pcs)',
    description: '...',
    length: 210,
    width: 210,
    height: 150,
    weight: 1700,
    inner_quantity: 10,
  },
  // ... etc
];

// Unsere sourceItems unterscheiden sich ein wenig
// von der Darstellung in cargo-planner
// daher müssen wir einige Anpassungen der Daten vornehmen
for (let i = 0; i < sourceItems.length; i++) {
  let s = sourceItems[i];
  // wir möchten sowohl unsere ID als auch den Titel als Namen speichern
  const title = `${s.id} - ${s.title}`;

  let cargo: CargoPlannerItem = {
    name: title,
    length_dim: 'MM',
    // Cargo-Planner akzeptiert keine Gramm, daher konvertieren wir in Kilogramm
    weight_dim: 'KG',
    data: {
      label: title,
      l: s.length,
      w: s.width,
      h: s.height,
      wt: s.weight / 1000, // die Gewichtskonvertierung
      unit_qty: s.inner_quantity,
    },
  };
  cargoes.push(cargo);
}

// Bevor wir alle Artikel erstellen, möchten wir zuerst
// alles entfernen, was in der cargo-library existiert,
// damit wir keine Duplikate haben.
// Verwenden wir dafür den cargo/truncate-Endpunkt
fetch('https://api.cargo-planner.com/api/2/cargo/truncate/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: API_TOKEN,
  },
  body: JSON.stringify({ confirm: true }),
});

// Und schließlich erstellen wir die Liste der Frachten in großen Mengen
fetch('https://api.cargo-planner.com/api/2/cargo/bulk_create/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: API_TOKEN,
  },
  body: JSON.stringify(cargoes),
});

// vereinfachte Typdefinitionen dessen, was Cargo-Planner akzeptiert
interface CargoPlannerItem {
  name: string;
  data: ItemData;
  length_dim: 'M' | 'DM' | 'CM' | 'MM' | 'FT' | 'IN';
  weight_dim: 'KG' | 'MT' | 'LB';
}
interface ItemData {
  label: string;
  l: number;
  w: number;
  h: number;
  wt: number;
  not_stackable?: boolean | null;
  not_rotatable?: boolean | null;
  tiltable?: boolean | null;
  bottom_only?: boolean | null;
  color?: string | null;
  qty?: number | null;
  unit_qty?: number | null;
}

Jetzt müssen wir nicht mehr durch Excel-Importe/Exporte gehen, und die Planung der nächsten Lieferung wird viel schneller.

Ladelisten direkt erstellen

Wenn Sie Ladelisten direkt aus Ihren anderen Werkzeugen erstellen möchten, unterscheidet sich das nicht viel vom vorherigen Beispiel in Bezug auf API-Aufrufe. Dieses Mal überspringen wir die Cargo Library vollständig und gehen direkt zu einer neuen Ladeliste.

Der Nachteil dieser Methode ist, dass Sie auswählen müssen, was versendet werden soll, und wie viele von jedem, bevor Sie die API aufrufen. Dies erfordert höchstwahrscheinlich ein wenig UI.

// wir verwenden die Konstanten sourceItems und API_TOKEN
// aus dem vorherigen Beispiel wieder

let cargoes: ItemData[] = [];

// Die Umwandlung von sourceItem in die Darstellung von Cargo-Planner
for (let i = 0; i < source.length; i++) {
  let s = source[i];
  // wir möchten sowohl unsere ID als auch den Titel als Namen speichern
  const title = `${s.id} - ${s.title}`;

  let cargo: ItemData = {
    label: title,
    l: s.length,
    w: s.width,
    h: s.height,
    // die Gewichtskonvertierung von Gramm in Kilogramm
    wt: s.weight / 1000,
    unit_qty: s.inner_quantity,
    // wir möchten 10 von jedem Artikel senden
    qty: 10,
  };
  cargoes.push(cargo);
}

// Und schließlich erstellen wir eine Ladeliste
fetch('https://api.cargo-planner.com/api/2/loadlist/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: API_TOKEN,
  },
  body: JSON.stringify({
    name: 'Shipment 123',
    data: cargoes,
    etd: '2022-12-01',
    length_dim: 'MM',
    weight_dim: 'KG',
  }),
});

Die neue Ladeliste wird in der Web-App sichtbar sein, aber die Antwort wird eine URL enthalten, die direkt zur neuen Ladeliste führt.

Es ist auch möglich, dies noch einen Schritt weiter zu gehen mit dem Erstellen und Berechnen Endpunkt, aber dies erfordert einige weitere Eingabedaten, wie z.B. welche Einstellungen und Ausrüstung verwendet werden sollen.