Cargo-Planner Docs

統合

倉庫に保管されているものを管理するためのデジタルツールや、顧客のロードリストを処理する方法をすでにお持ちの場合、Cargo-Plannerは少しの統合でそれを基に構築できます。

カーゴライブラリの同期

現在のツールと統合を始める最も簡単な方法は、Cargo Library を通じて行うことです。すべてのCargo-PlannerライセンスにはCargo Libraryが含まれており、これは基本的に最小限のWMSまたはリソース計画システムです。

これを設定することで、スムーズなインポートや自動補完を通じて、ウェブアプリで新しいロードリストを簡単に作成できます。

この方法は基本的にCRONジョブや日次同期として実行でき、Cargo-Plannerがロードリスト作成のすべてのUI側面を処理します。

ロードリストを自動補完するGIF

しかし、Cargo Libraryを手動で設定するのはかなりの作業です。そこで、現在使用しているツールと少しのコードで同期を保ちましょう。

// トークンの作成方法については、Getting Startedページを参照してください
const API_TOKEN = 'Token b123...';
const cargoes: CargoPlannerItem[] = [];

// 次のようなアイテム/カーゴのソースがあると仮定します。
// すべてがミリメートルとグラムで定義されています。
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
];

// sourceItemsはcargo-plannerでの表現とは少し異なるため、
// データの適応が必要です
for (let i = 0; i < sourceItems.length; i++) {
  let s = sourceItems[i];
  // IDとタイトルの両方を名前として保存したい
  const title = `${s.id} - ${s.title}`;

  let cargo: CargoPlannerItem = {
    name: title,
    length_dim: 'MM',
    // Cargo-Plannerはグラムを受け付けないため、キログラムに変換します
    weight_dim: 'KG',
    data: {
      label: title,
      l: s.length,
      w: s.width,
      h: s.height,
      wt: s.weight / 1000, // 重量の変換
      unit_qty: s.inner_quantity,
    },
  };
  cargoes.push(cargo);
}

// すべてのアイテムを作成する前に、
// cargo-libraryに存在するすべてのものを削除したい
// これにより重複がなくなります。
// cargo/truncateエンドポイントを使用しましょう
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 }),
});

// 最後に、カーゴのリストを一括作成します
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),
});

// Cargo-Plannerが受け入れる簡略化された型定義
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;
}

これで、Excelのインポート/エクスポートを再度行う必要がなくなり、次の出荷の計画がはるかに速くなります。

ロードリストを直接作成する

他のツールから直接ロードリストを作成したい場合、APIコールの点では前の例とあまり変わりません。今回はCargo Libraryを完全にスキップして、新しいロードリストに直接移行します。

この方法の欠点は、APIを呼び出す前に何を出荷するか、各アイテムをいくつ出荷するかを選択する必要があることです。これには少しのUIが必要になる可能性があります。

// 前の例からsourceItemsとAPI_TOKENの定数を再利用しています

let cargoes: ItemData[] = [];

// sourceItemからCargo-Plannerの表現への変換
for (let i = 0; i < source.length; i++) {
  let s = source[i];
  // IDとタイトルの両方を名前として保存したい
  const title = `${s.id} - ${s.title}`;

  let cargo: ItemData = {
    label: title,
    l: s.length,
    w: s.width,
    h: s.height,
    // グラムからキログラムへの重量変換
    wt: s.weight / 1000,
    unit_qty: s.inner_quantity,
    // 各アイテムを10個送信したい
    qty: 10,
  };
  cargoes.push(cargo);
}

// 最後にロードリストを作成します
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',
  }),
});

新しいロードリストはウェブアプリで表示されますが、レスポンスには新しいロードリストへのリンクが含まれます。

さらに一歩進めて、作成と計算エンドポイントを使用することも可能ですが、これには使用する設定や機器などの追加の入力データが必要です。