Cargo-Planner Docs

การผสานรวม

หากคุณมีเครื่องมือดิจิทัลในการจัดการสิ่งที่เก็บไว้ในคลังสินค้าของคุณ หรือวิธีที่คุณจัดการกับรายการโหลดของลูกค้า Cargo-Planner สามารถสร้างขึ้นบนสิ่งนั้น ด้วยการผสานรวมเล็กน้อย

การซิงโครไนซ์ไลบรารี Cargo

วิธีที่ง่ายที่สุดในการเริ่มการผสานรวมกับเครื่องมือปัจจุบันของคุณคือผ่าน Cargo Library ใบอนุญาต Cargo-Planner ทั้งหมดรวมถึง Cargo Library ซึ่งเป็นระบบ WMS หรือการวางแผนทรัพยากรที่เรียบง่าย

การตั้งค่ามันทำให้ง่ายต่อการสร้างรายการโหลดใหม่ในแอปเว็บของเรา ผ่านการนำเข้าแบบราบรื่นหรือการเติมข้อมูลอัตโนมัติ

วิธีนี้สามารถทำงานได้เป็นงาน CRON หรือการซิงค์รายวัน และ Cargo-Planner จะดูแลทุกด้านของ UI ในการสร้างรายการโหลด

GIF ของการเติมข้อมูลอัตโนมัติของรายการโหลด

แต่การตั้งค่า Cargo Library ด้วยตนเองอาจเป็นงานที่ค่อนข้างยาก ดังนั้นให้เรารักษามันให้ซิงค์กับเครื่องมือที่คุณใช้อยู่ในปัจจุบัน ด้วยโค้ดเล็กน้อย

// ตรวจสอบหน้าการเริ่มต้นใช้งานเพื่อหาวิธีสร้างโทเค็นของคุณ
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-Planners
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',
  }),
});

รายการโหลดใหม่จะปรากฏในเว็บแอป แต่การตอบกลับจะมี URL ที่ลิงก์ตรงไปยังรายการโหลดใหม่

ยังสามารถทำขั้นตอนนี้ต่อไปอีกด้วยปลายทาง Create and calculate แต่จะต้องการข้อมูลเพิ่มเติม เช่น การตั้งค่าและอุปกรณ์ที่จะใช้