Cargo-Planner Docs
Entegrasyon
Depoladığınız ürünleri yönetmek veya müşteri yük listelerini nasıl ele aldığınızla ilgili dijital araçlarınız varsa, Cargo-Planner biraz entegrasyonla 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.
Bu sistemin kurulmuş olması, 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, bir 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 kodla, ş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[] = [];
// Elimizde böyle görünen bir ürün/kargo kaynağı olduğunu varsayalı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ği şekilden biraz farklı
// bu yüzden verilerin biraz uyarlanması gerekiyor
for (let i = 0; i < sourceItems.length; i++) {
let s = sourceItems[i];
// hem ID hem de başlığımızın isim olarak saklanmasını 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 ürünleri 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ş tür 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çmek zorunda kalmayacağız ve bir sonraki sevkiyatı planlamak çok daha hızlı olacak.
Yük listelerini doğrudan oluşturma
Diğer araçlarınızdan doğrudan yük listeleri 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 atlayıp 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-Planners temsil şekline dönüşüm
for (let i = 0; i < source.length; i++) {
let s = source[i];
// hem ID hem de başlığımızın isim olarak saklanmasını istiyoruz
const title = `${s.id} - ${s.title}`;
let cargo: ItemData = {
label: title,
l: s.length,
w: s.width,
h: s.height,
// gramdan kilograma ağırlık dönüşümü
wt: s.weight / 1000,
unit_qty: s.inner_quantity,
// her üründen 10 adet 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: 'Sevkiyat 123',
data: cargoes,
etd: '2022-12-01',
length_dim: 'MM',
weight_dim: 'KG',
}),
});
Yeni yük listesi web uygulamasında görülebilir olacak, 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, kullanılacak ayarlar ve ekipman gibi bazı ek veri girişi gerektirecektir.