Cargo-Planner Docs
Entegrasyon
Eğer zaten depolarınızda sakladıklarınızı yönetmek veya müşteri yük listelerini nasıl ele aldığınızı dijital araçlarla yönetiyorsanız, Cargo-Planner biraz entegrasyon ile bunun üzerine inşa edebilir.
Kargo Kütüphanesi Senkronizasyonu
Mevcut araçlarınızla bir entegrasyon başlatmanın en basit yolu Kargo Kütüphanesi aracılığıyladır. Tüm Cargo-Planner lisansları, esasen minimal bir WMS veya kaynak planlama sistemi olan Kargo Kütüphanesi’ni içerir.
Kurulumu, web uygulamamızda yeni yük listeleri oluşturmayı, sorunsuz ithalatlar veya otomatik tamamlama yoluyla kolaylaştırır.
Bu yöntem esasen bir CRON işi veya günlük senkronizasyon olarak çalıştırılabilir ve Cargo-Planner yük listesi oluşturmanın tüm UI yönlerini halleder.

Ancak Kargo Kütüphanesi’ni manuel olarak kurmak oldukça zahmetli olabilir. Bu yüzden, biraz kod ile şu anda kullandığınız araçla senkronize tutalım.
// Token oluşturmayı öğrenmek için Başlarken sayfasına bakın
const API_TOKEN = 'Token b123...';
const cargoes: CargoPlannerItem[] = [];
// Eşyaların/kargoların böyle göründüğü bir kaynağımız varmış gibi yapalım,
// burada her şey milimetre ve gram cinsinden tanımlanmıştır.
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,
},
// ... vb.
];
// sourceItems'ımız cargo-planner'da temsil edildiğinden biraz farklı
// bu yüzden verilerin biraz uyarlanması gerekiyor
for (let i = 0; i < sourceItems.length; i++) {
let s = sourceItems[i];
// hem ID'mizi hem de başlığımızı isim olarak saklamak istiyoruz
const title = `${s.id} - ${s.title}`;
let cargo: CargoPlannerItem = {
name: title,
length_dim: 'MM',
// Cargo-Planner gram kabul etmez, bu yüzden kilogram'a çeviriyoruz
weight_dim: 'KG',
data: {
label: title,
l: s.length,
w: s.width,
h: s.height,
wt: s.weight / 1000, // ağırlık dönüşümü
unit_qty: s.inner_quantity,
},
};
cargoes.push(cargo);
}
// Tüm öğeleri oluşturmadan önce
// kargo kütüphanesinde var olan her şeyi kaldırmak istiyoruz,
// böylece herhangi bir kopya olmayacak.
// Bunun için cargo/truncate endpoint'ini kullanalım
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 }),
});
// Ve son olarak kargo listesini toplu olarak oluşturuyoruz
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'ın kabul ettiği basitleştirilmiş tip tanımları
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;
}
Artık Excel ithalat/ihracat işlemlerinden tekrar geçmemiz gerekmeyecek ve bir sonraki sevkiyatı planlamak çok daha hızlı olacak.
Yük listelerini doğrudan oluşturma
Yük listelerini diğer araçlarınızdan doğrudan oluşturmak istiyorsanız, bu API çağrıları açısından önceki örnekten çok farklı değildir. Bu sefer Kargo Kütüphanesi’ni tamamen atlayacağız ve doğrudan yeni bir yük listesi oluşturacağız.
Bu yöntemin dezavantajı, API’yi çağırmadan önce neyi göndereceğinizi ve her birinden kaç tane göndereceğinizi seçmeniz gerektiğidir. Bu muhtemelen biraz UI gerektirecektir.
// önceki örnekten constants sourceItems ve API_TOKEN'ı yeniden kullanıyoruz
let cargoes: ItemData[] = [];
// sourceItem'dan Cargo-Planner temsilciliğine dönüşüm
for (let i = 0; i < source.length; i++) {
let s = source[i];
// hem ID'mizi hem de başlığımızı isim olarak saklamak istiyoruz
const title = `${s.id} - ${s.title}`;
let cargo: ItemData = {
label: title,
l: s.length,
w: s.width,
h: s.height,
// ağırlık dönüşümü gramdan kilograma
wt: s.weight / 1000,
unit_qty: s.inner_quantity,
// her öğeden 10 tane göndermek istiyoruz
qty: 10,
};
cargoes.push(cargo);
}
// Ve son olarak bir yük listesi oluşturuyoruz
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',
}),
});
Yeni yük listesi web uygulamasında görünecek, ancak yanıt doğrudan yeni yük listesine bağlanan bir URL içerecektir.
Bu işlemi bir adım daha ileri götürmek de mümkündür, ancak bu, hangi ayarların ve ekipmanın kullanılacağını gibi daha fazla girdi verisi gerektirecektir.