Cargo-Planner Docs

การผสานรวม

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

การซิงโครไนซ์คลังสินค้า

วิธีที่ง่ายที่สุดในการเริ่มต้นการผสานรวมกับเครื่องมือปัจจุบันของคุณคือผ่าน 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 ก่อน
// เพื่อที่เราจะไม่มีรายการซ้ำ
// ใช้ endpoint 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',
  }),
});

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

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