Kasa Kayıtları

1.6k görüntülenme Markdown

Kurulumun gelir ve gider defterini tutan altı uç.

Genel Bakış

Kasa defteri kurulumun gelir ve giderlerini tutar. İçinde iki tür kayıt bir arada durur: faturaların ödendiğinde kendiliğinden açtığı kayıtlar ve operatörün elle girdiği kayıtlar.

Ayrımı sistem işareti yapar. Faturadan gelen bir kayıt salt bir yansımadır; değiştirilemez ve silinemez, çünkü kaynağı faturanın kendisidir. Elle girilen kayıtlar ise düzenlenebilir.

Özet ucu bu ayın gelirini, giderini ve aradaki farkı verir. Farklı para birimlerindeki tutarlar yerel para birimine çevrilerek toplanır.

Referans

Kayıtları Listeleme

get/api/v1/admin/invoices/cash
Invoices/GetCashEntries admin

Gelir ve gider kayıtlarını süzerek döndürür.

Sorgu 10
pageintKaçıncı sayfa.
limitintSayfa başına kayıt. Aralık dışı bir değer öntanımlıya döner.
searchstringAçıklama, personel ve fatura numarasında arar.
typestringGelir ya da giderle sınırlar.
currency_idintPara birimine göre süzer.
staff_idintPersonele göre süzer.
amountstringTutara göre süzer.
amount_opstringTutar karşılaştırmasının yönü.
descriptionstringAçıklamada arar.
daterangestringİki tarih arasını süzer.
Dönen alanlar data[] — 13 + meta — 4
idintKaydın numarası.
invoice_idintBağlı olduğu fatura. Sıfır, kaydın elle girildiğini söyler.
typestringGelir mi gider mi: income, expense.
amountfloatTutar.
currency_idintTutarın para birimi.
staff_idintKaydı giren personel.
payment_methodstring | nullParanın hangi yolla alındığı ya da ödendiği.
descriptionstringKaydın açıklaması.
created_atstring | nullKaydın tarihi.
is_systemboolFaturadan gelen bir kayıt mı. Doğruysa kayıt değiştirilemez.
invoice_numberstring | nullBağlı faturanın numarası.
staff_namestring | nullPersonelin adı.
clientobject | nullBağlı faturanın müşterisi. Yalnız listede gelir.
totalintSüzgece uyan toplam kayıt. Meta altında döner.
pageintBulunulan sayfa.
limitintSayfa boyutu.
next_pageintSonraki sayfa. Sıfır, son sayfadasınız demektir.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/invoices/cash?type=expense' \
  -H "Authorization: Bearer $API_KEY"
const url = new URL('https://panel.ornek.com/api/v1/admin/invoices/cash');
url.searchParams.set('type', 'expense');

const res  = await fetch(url, {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/invoices/cash?' . http_build_query(['type' => 'expense']));
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Liste FATURADAN gelen kayitlari da tasir; elle girilenler icin sistem isaretini suzun.
$manual = array_filter(
    Api::Invoices()->GetCashEntries()['data'],
    fn ($e) => ! $e['is_system'],
);

Kayıt Ekleme

post/api/v1/admin/invoices/cash
Invoices/CreateCashEntry admin

Deftere elle bir gelir ya da gider kaydı düşer.

Gövde 7
typestringreqGelir mi gider mi: income, expense.
currency_idintreqTutarın para birimi.
amountfloatreqTutar. Sıfırdan büyük olmalı.
descriptionstringKaydın açıklaması.
payment_methodstringParanın hangi yolla hareket ettiği. Etkin olmayan bir yöntem boşa çıkar.
staff_idintKaydı giren personel. Verilmezse anahtarın sahibi yazılır.
created_atstringKaydın tarihi. Verilmezse şu an alınır.
Dönen alanlar 201 — data — 13
dataobjectAçılan kayıt. Listedeki öğeyle aynı şekildedir.
Hatalar 5
invalid_type422Tür gelir ya da gider değil.
currency_required422Para birimi verilmedi.
invalid_amount422Tutar sıfır ya da altında.
create_failed422Kayıt açılamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/invoices/cash' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"type":"expense","currency_id":840,"amount":49.9,"description":"Sunucu gideri"}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/invoices/cash', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    type: 'expense',
    currency_id: 840,
    amount: 49.9,
    description: 'Server cost',
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/invoices/cash');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'type'        => 'expense',
        'currency_id' => 840,
        'amount'      => 49.9,
        'description' => 'Server cost',
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Elle acilan kayit FATURAYA BAGLANMAZ; fatura kaydi ancak odeme akisiyla dogar.
Api::Invoices()->CreateCashEntry([
    'type'        => 'expense',
    'currency_id' => 840,
    'amount'      => 49.9,
]);

Kasa Özetini Okuma

get/api/v1/admin/invoices/cash/summary
Invoices/GetCashSummary admin

Bu ayın gelir, gider ve bakiye toplamını döndürür.

Dönen alanlar data — 4
currency_idintToplamların para birimi.
incomefloatBu ayın gelir toplamı.
expensefloatBu ayın gider toplamı.
balancefloatGelirden giderin düşülmüş hâli.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/invoices/cash/summary' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/invoices/cash/summary', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/invoices/cash/summary');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Ozet DAIMA bu aydir; baska bir donem icin listeyi tarih araligiyla cekip kendiniz toplayin.
$sum = Api::Invoices()->GetCashSummary()['data'];

Kayıt Detayı

get/api/v1/admin/invoices/cash/{cash_id}
Invoices/GetCashEntry admin

Tek bir kasa kaydını döndürür.

Dönen alanlar data — 13
idintKaydın numarası.
invoice_idintBağlı olduğu fatura. Sıfır, kaydın elle girildiğini söyler.
typestringGelir mi gider mi: income, expense.
amountfloatTutar.
currency_idintTutarın para birimi.
staff_idintKaydı giren personel.
payment_methodstring | nullParanın hangi yolla alındığı ya da ödendiği.
descriptionstringKaydın açıklaması.
created_atstring | nullKaydın tarihi.
is_systemboolFaturadan gelen bir kayıt mı. Doğruysa kayıt değiştirilemez.
invoice_numberstring | nullBağlı faturanın numarası.
staff_namestring | nullPersonelin adı.
clientobject | nullBağlı faturanın müşterisi. Yalnız listede gelir.
Hatalar 2
not_found404Kasa kaydı bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/invoices/cash/51' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch(`https://panel.ornek.com/api/v1/admin/invoices/cash/${cashId}`, {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/invoices/cash/' . $cashId);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Musteri bilgisi burada GELMEZ; o alan yalniz liste birlestirmesinde doludur.
$entry = Api::Invoices()->GetCashEntry(['cash_id' => $cashId])['data'];

Kaydı Güncelleme

patch/api/v1/admin/invoices/cash/{cash_id}
Invoices/UpdateCashEntry admin fatura kaydı düzenlenemez

Elle girilmiş bir kasa kaydını değiştirir.

Gövde 7
typestringGelir mi gider mi.
currency_idintTutarın para birimi.
amountfloatTutar.
descriptionstringKaydın açıklaması.
payment_methodstringParanın hangi yolla hareket ettiği.
staff_idintKaydı giren personel.
created_atstringKaydın tarihi.
Dönen alanlar data — 13
dataobjectGüncel kayıt. Listedeki öğeyle aynı şekildedir.
Hatalar 6
not_found404Kasa kaydı bulunamadı.
system_record422Faturaya bağlı kayda dokunulamaz.
invalid_type422Tür gelir ya da gider değil.
currency_required422Para birimi verilmedi.
invalid_amount422Tutar sıfır ya da altında.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/invoices/cash/51' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"amount":59.9,"description":"Sunucu gideri (guncellendi)"}'
const res = await fetch(`https://panel.ornek.com/api/v1/admin/invoices/cash/${cashId}`, {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ amount: 59.9, description: 'Server cost (updated)' }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/invoices/cash/' . $cashId);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PATCH',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['amount' => 59.9]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Sistem isaretli kayit 422 verir; toplu duzeltmede once bu alani suzun.
$entry = Api::Invoices()->GetCashEntry(['cash_id' => $cashId])['data'];
if (! $entry['is_system'])
    Api::Invoices()->UpdateCashEntry(['cash_id' => $cashId, 'amount' => 59.9]);

Kaydı Silme

delete/api/v1/admin/invoices/cash/{cash_id}
Invoices/DeleteCashEntry admin

Elle girilmiş bir kasa kaydını kaldırır.

Dönen alanlar data — 2
deletedboolSilme çalıştı mı.
idintSilinen kaydın numarası.
Hatalar 4
not_found404Kasa kaydı bulunamadı.
system_record422Faturaya bağlı kayda dokunulamaz.
delete_failed422Kayıt silinemedi.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/invoices/cash/52' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch(`https://panel.ornek.com/api/v1/admin/invoices/cash/${cashId}`, {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/invoices/cash/' . $cashId);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'DELETE',
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
// Faturadan gelen kaydi kaldirmanin yolu FATURA tarafindadir; buradan silinemez.
Api::Invoices()->DeleteCashEntry(['cash_id' => $cashId]);

Tuzaklar

Faturadan gelen kayıt değiştirilemez

Bir faturaya bağlı kasa kaydı değiştirilemez: düzenleme ve silme çağrıları reddedilir. Bu kasıtlıdır, çünkü o kayıt faturanın yansımasıdır ve faturayla çelişemez. Tutarı düzeltmek istiyorsanız faturaya dönün; kasa kaydı onunla birlikte düzelir.

Liste iki türü karıştırır

Listeleme ucu elle girilenlerle faturadan gelenleri bir arada döndürür ve ayıran bir süzgeç yoktur. Bir raporda yalnız elle girilen giderleri toplamak istiyorsanız sistem işaretine göre kendiniz ayıklayın; yoksa fatura gelirleri de hesaba karışır.

Özet her zaman bu aydır

Özet ucu dönem almaz; daima içinde bulunulan ayı verir. Geçen ayın ya da bir çeyreğin toplamını istiyorsanız listeyi tarih aralığıyla çekip kendiniz toplamanız gerekir. Toplarken para birimi dönüşümünü de kendiniz yapmalısınız; özetteki gibi çevrilmiş gelmezler.

Detayda müşteri bilgisi yoktur

Bağlı faturanın müşterisi yalnız listede gelir; tek kayıt okurken o alan boş kalır. Bu, listenin bir birleştirme yapmasından, detayın yapmamasından kaynaklanır. Müşteriyi tek kayıt için de istiyorsanız fatura numarasından faturayı okuyun.

Elle kayıt faturaya bağlanmaz

Ekleme ucu her zaman bağımsız bir kayıt açar; bir fatura numarası vererek kaydı ona bağlayamazsınız. Faturaya bağlı kayıtlar ancak ödeme akışının kendisinden doğar. Bu yüzden elle bir gelir girip aynı faturayı da ödenmiş yapmak, defterde aynı parayı iki kez gösterir.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.