Sipariş Oluşturma
Yeni satış veya alış siparişi oluşturma.
Endpoint
POST /kolaybi/v1/orders
Parametreler
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
contact_id | integer | Evet | Müşteri/tedarikçi ID |
address_id | integer | Evet | Sipariş adresi ID |
order_date | datetime | Evet | Sipariş tarihi |
currency | Currency | Evet | Sipariş para birimi |
type | OrderType | Hayır | Varsayılan sale_order |
serial_no | string | Hayır | Özel sipariş numarası |
due_date | datetime | Hayır | Teslimat tarihi |
description | string | Hayır | Sipariş açıklaması |
tracking_currency | Currency | Hayır | Tahsilat kasası para birimi |
tags | array | Hayır | Sipariş etiket ID listesi (tags[0], tags[1]) |
subtotal_discount_amount | number | Hayır | Genel iskonto tutarı (TRY) |
exchange_rate | string | Hayır | Şirket para biriminin sipariş para birimine oranı |
items | array | Hayır | Sipariş kalemleri |
Sipariş Kalemleri
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
product_id | integer | Evet | Ürün ID |
quantity | string | Evet | Miktar (örn: "1.00") |
unit_price | string | Evet | Birim fiyat (örn: "100.00") |
vat_rate | VATRate | Evet | KDV oranı |
description | string | Hayır | Kalem açıklaması |
discount_amount | number | Hayır | İndirim tutarı |
Örnekler
- cURL
- JavaScript
- PHP
- Python
- C#
# Temel sipariş oluşturma
curl -X POST "https://ofis-sandbox-api.kolaybi.com/kolaybi/v1/orders" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Channel: YOUR_CHANNEL" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "contact_id=1&address_id=1&order_date=2024-01-15¤cy=try"
# Detaylı sipariş oluşturma
curl -X POST "https://ofis-sandbox-api.kolaybi.com/kolaybi/v1/orders" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Channel: YOUR_CHANNEL" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "contact_id=1&address_id=1&order_date=2024-01-15¤cy=usd&tracking_currency=try&type=sale_order&serial_no=SIP0001&due_date=2024-02-15&description=Test siparişi&tags[0]=7&subtotal_discount_amount=100&exchange_rate=30.25&items[0][product_id]=1&items[0][quantity]=2&items[0][unit_price]=100.00&items[0][vat_rate]=20&items[1][product_id]=2&items[1][quantity]=1&items[1][unit_price]=50.00&items[1][vat_rate]=18"
async function createOrder(data) {
const formData = new URLSearchParams();
// Ana parametreler
formData.append("contact_id", data.contact_id);
formData.append("address_id", data.address_id);
formData.append("order_date", data.order_date);
formData.append("currency", data.currency);
// Opsiyonel parametreler
if (data.type) formData.append("type", data.type);
if (data.serial_no) formData.append("serial_no", data.serial_no);
if (data.due_date) formData.append("due_date", data.due_date);
if (data.description) formData.append("description", data.description);
if (data.tracking_currency)
formData.append("tracking_currency", data.tracking_currency);
if (data.subtotal_discount_amount)
formData.append(
"subtotal_discount_amount",
data.subtotal_discount_amount
);
if (data.exchange_rate)
formData.append("exchange_rate", data.exchange_rate);
if (Array.isArray(data.tags)) {
data.tags.forEach((tagId, index) =>
formData.append(`tags[${index}]`, tagId)
);
}
// Sipariş kalemleri
if (data.items) {
data.items.forEach((item, index) => {
formData.append(`items[${index}][product_id]`, item.product_id);
formData.append(`items[${index}][quantity]`, item.quantity);
formData.append(`items[${index}][unit_price]`, item.unit_price);
formData.append(`items[${index}][vat_rate]`, item.vat_rate);
if (item.description)
formData.append(`items[${index}][description]`, item.description);
if (item.discount_amount)
formData.append(
`items[${index}][discount_amount]`,
item.discount_amount
);
});
}
const response = await fetch(
"https://ofis-sandbox-api.kolaybi.com/kolaybi/v1/orders",
{
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
Channel: channel,
"Content-Type": "application/x-www-form-urlencoded",
},
body: formData,
}
);
return await response.json();
}
// Kullanım
const order = await createOrder({
contact_id: 1,
address_id: 1,
order_date: "2024-01-15",
currency: "usd",
tracking_currency: "try",
type: "sale_order",
tags: [7],
subtotal_discount_amount: "100.00",
exchange_rate: "30.25",
items: [
{
product_id: 1,
quantity: "2",
unit_price: "100.00",
vat_rate: "20",
},
],
});
function createOrder($data) {
$url = 'https://ofis-sandbox-api.kolaybi.com/kolaybi/v1/orders';
$postData = [
'contact_id' => $data['contact_id'],
'address_id' => $data['address_id'],
'order_date' => $data['order_date'],
'currency' => $data['currency']
];
// Opsiyonel parametreler
if (isset($data['type'])) $postData['type'] = $data['type'];
if (isset($data['serial_no'])) $postData['serial_no'] = $data['serial_no'];
if (isset($data['due_date'])) $postData['due_date'] = $data['due_date'];
if (isset($data['description'])) $postData['description'] = $data['description'];
if (isset($data['tracking_currency'])) $postData['tracking_currency'] = $data['tracking_currency'];
if (isset($data['subtotal_discount_amount'])) $postData['subtotal_discount_amount'] = $data['subtotal_discount_amount'];
if (isset($data['exchange_rate'])) $postData['exchange_rate'] = $data['exchange_rate'];
if (isset($data['tags'])) {
foreach ($data['tags'] as $index => $tagId) {
$postData["tags[{$index}]"] = $tagId;
}
}
// Sipariş kalemleri
if (isset($data['items'])) {
foreach ($data['items'] as $index => $item) {
$postData["items[{$index}][product_id]"] = $item['product_id'];
$postData["items[{$index}][quantity]"] = $item['quantity'];
$postData["items[{$index}][unit_price]"] = $item['unit_price'];
$postData["items[{$index}][vat_rate]"] = $item['vat_rate'];
if (isset($item['description'])) $postData["items[{$index}][description]"] = $item['description'];
if (isset($item['discount_amount'])) $postData["items[{$index}][discount_amount]"] = $item['discount_amount'];
}
}
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($postData),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $accessToken,
'Channel: ' . $channel,
'Content-Type: application/x-www-form-urlencoded'
],
CURLOPT_RETURNTRANSFER => true
]);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
import requests
def create_order(data):
url = "https://ofis-sandbox-api.kolaybi.com/kolaybi/v1/orders"
headers = {
"Authorization": f"Bearer {access_token}",
"Channel": channel,
"Content-Type": "application/x-www-form-urlencoded"
}
post_data = {
"contact_id": data["contact_id"],
"address_id": data["address_id"],
"order_date": data["order_date"],
"currency": data["currency"]
}
# Opsiyonel parametreler
if "type" in data:
post_data["type"] = data["type"]
if "serial_no" in data:
post_data["serial_no"] = data["serial_no"]
if "due_date" in data:
post_data["due_date"] = data["due_date"]
if "description" in data:
post_data["description"] = data["description"]
if "tracking_currency" in data:
post_data["tracking_currency"] = data["tracking_currency"]
if "subtotal_discount_amount" in data:
post_data["subtotal_discount_amount"] = data["subtotal_discount_amount"]
if "exchange_rate" in data:
post_data["exchange_rate"] = data["exchange_rate"]
if "tags" in data:
for idx, tag_id in enumerate(data["tags"]):
post_data[f"tags[{idx}]"] = tag_id
# Sipariş kalemleri
if "items" in data:
for index, item in enumerate(data["items"]):
post_data[f"items[{index}][product_id]"] = item["product_id"]
post_data[f"items[{index}][quantity]"] = item["quantity"]
post_data[f"items[{index}][unit_price]"] = item["unit_price"]
post_data[f"items[{index}][vat_rate]"] = item["vat_rate"]
if "description" in item:
post_data[f"items[{index}][description]"] = item["description"]
if "discount_amount" in item:
post_data[f"items[{index}][discount_amount]"] = item["discount_amount"]
response = requests.post(url, headers=headers, data=post_data)
return response.json()
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Newtonsoft.Json;
async Task<dynamic> CreateOrderAsync(Dictionary<string, string> data)
{
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post,
"https://ofis-sandbox-api.kolaybi.com/kolaybi/v1/orders")
{
Content = new FormUrlEncodedContent(data)
};
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
request.Headers.Add("Channel", channel);
var response = await client.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<dynamic>(content);
}
// Kullanım
var order = await CreateOrderAsync(new Dictionary<string, string>
{
{ "contact_id", "1" },
{ "address_id", "1" },
{ "order_date", "2024-01-15" },
{ "currency", "usd" },
{ "tracking_currency", "try" },
{ "type", "sale_order" },
{ "subtotal_discount_amount", "100" },
{ "tags[0]", "7" },
{ "items[0][product_id]", "1" },
{ "items[0][quantity]", "2" },
{ "items[0][unit_price]", "100.00" },
{ "items[0][vat_rate]", "20" }
});
Yanıt
- Başarılı Yanıt
{
"data": {
"document_id": 145,
"order_number": "SIP-2024-001",
"associate_id": 1,
"currency": "usd",
"description": "Test siparişi",
"grand_total": 450,
"grand_currency": "usd",
"exchange_grand_total": 13575,
"exchange_grand_currency": "try",
"gross_total": 400,
"total_vat": 50,
"subtotal": 380,
"lines": [
{
"product_id": 1,
"product_name": "Test Ürün",
"unit": "adet",
"quantity": 2,
"unit_price": 100,
"description": "Açıklama",
"grand_total": 240,
"total": 200,
"vat_amount": 40,
"vat_value": 20,
"vat_type": "percentage",
"subtotal": 200,
"discount_amount": 0,
"discount_value": 0,
"discount_type": "percentage",
"amount": 200
}
],
"invoice_document_ids": [],
"proforma_document_ids": []
}
}
Yanıt Alanları
| Alan | Tip | Açıklama |
|---|---|---|
document_id | integer | Oluşturulan sipariş ID |
order_number | string | Sipariş numarası |
associate_id | integer | Carinin ID değeri |
currency | string | Sipariş para birimi |
description | string | Sipariş açıklaması |
grand_total | number | KDV dahil toplam |
grand_currency | string | Sipariş para birimi |
exchange_grand_total | number | Şirket para birimindeki karşılık |
exchange_grand_currency | string | Şirket para birimi |
gross_total | number | Brüt toplam |
total_vat | number | Toplam KDV |
subtotal | number | KDV hariç toplam |
lines | array | Sipariş kalemleri (ProductLines) |
invoice_document_ids | array | Siparişten türeyen faturaların ID listesi |
proforma_document_ids | array | Siparişten türeyen proformalar |