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

แต่การตั้งค่า 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 แต่จะต้องการข้อมูลเพิ่มเติม เช่น การตั้งค่าและอุปกรณ์ที่จะใช้