Rutıx
İçindekiler

Fatura, tahsilat ve cari

Sipariş faturaya, fatura tahsilata bağlıdır ve tahsilat, bir sonraki siparişin kontrol edileceği bakiyeyi hareket ettirir. Halka kapalı olmadığında risk limiti dekoratif bir alandan ibaret kalır.

Bu döngü kapanmadan önce ürün şunu yapıyordu: siparişi fiyatlıyor, kampanyayı uyguluyor ve çalışan sistemde hiçbir şeyin yazmadığı bir bakiyeye karşı risk kontrolü yapıyordu. Bir dükkâna bütün yıl satılabiliyor, borcu kıpırdamıyor ve bunu durdurması gereken limit hiç devreye girmiyordu.

Fatura #

Fatura siparişten kesilir, sevkiyattan değil. Aynı sipariş ve aynı fatura türü için ikinci kez istendiğinde mevcut fatura döner; yeni bir fatura üretilmez.

  • İptal edilmiş bir sipariş faturalanamaz. Taslakta ya da risk askısında duran bir sipariş de faturalanamaz — önce onaylanması gerekir.
  • Vade, verilmediyse müşterinin ödeme vadesi gün sayısıyla hesaplanır.
  • Tutarlar siparişten olduğu gibi kopyalanır. Açık tutar, net tutarla başlar.
  • Numara INV-2026-000042 biçiminde üretilir.
  • Fatura satırları ayrıca saklanmaz; kesildiği siparişin satırlarından okunur. Faturanın kendi satır kopyasını tutmak, iki kaydın zamanla ayrışması demektir.

Faturanın durumu ayrı bir alan değil, açık tutarından türetilir: açık, ödenmiş ya da vadesi geçmiş. Vadesi geçen gün sayısı fatura bazında hesaplanır.

Tahsilat #

Beş ödeme aracı var:

AraçAlındığında durumuNotlar
NakitTahsil edildiAlındığı an kapanır.
ÇekBeklemedeVade tarihi zorunludur — vadesiz bir çek reddedilir, çünkü bankaya ne zaman verileceği belli olmayan kâğıt takip edilemez.
KartTahsil edildi
HavaleTahsil edildi
Ödeme linkiTahsil edildi

Bir tahsilat, cihazın ürettiği kimlik üzerinden tekrarsızdır: tünelden çıkan bir telefon aynı parayı iki kez tahsil edemez.

Mahsup: en eski vadeden başlar #

Ödeme önce açıkça belirtilen faturalara, her birinin borcu kadarıyla sınırlı olarak yazılır. Kalan tutar en eski vadeli faturadan başlayarak yürür — bu, dağıtıcının muhasebecisinin elle yaptığı ve dükkâncının beklediği sıradır. Para en eski borcu öldürür, çünkü ilişkiyi ekşiten borç odur.

Hepsinden artan bir tutar kalırsa hiçbir borca zorlanmaz; avans olarak bekler ve tahsilat kaydında ayrıca gösterilir.

Çek: bu döngünün doğru yapılması gereken parçası #

  1. 1

    Çek alınır

    Fatura kâğıt üzerinde kapanır: mahsup hemen işlenir ve faturanın açık tutarı düşer. Ama para gelmemiştir.
  2. 2

    Risk limiti serbest kalmaz

    Tahsil edilmemiş çekin tutarı, ayrı bir kalem olarak riskin içinde sayılmaya devam eder. Kullanılabilir limit = limit − (bakiye + bekleyen çekler).
  3. 3

    Çek tahsil edilir

    Durum “tahsil edildi” olur. Faturalara dokunulmaz — onlar zaten kapanmıştı. Değişen tek şey, tutarın bekleyen çeklerden düşmesi ve limitin geri açılmasıdır.
  4. 4

    Ya da karşılıksız çıkar

    Çekin kapattığı faturalar, tam olarak koyduğu tutar kadar yeniden açılır. Bakiye o kadar yükselir, bekleyen çekler o kadar düşer: toplam risk değişmez, borç yalnızca “söz verilmiş”ten “borçlu”ya döner.

Risk limiti ve askıya alınan siparişler #

Limit aşımı hata değildir, askıdır. Sipariş reddedilseydi temsilci beş dakikada kurduğu sepeti kaybeder ve ziyaret orada biterdi. Bunun yerine sipariş risk askısına alınır, sebebi ve o anki kullanılabilir limit kayda geçer, ziyaret devam eder ve bir yetkili serbest bırakır.

  • Askıdaki sipariş hâlâ düzenlenebilir. Onaylanmaya çalışılırsa askı sebebiyle reddedilir.
  • Serbest bırakma ayrı bir yetki ister ve isteğe bağlı bir not taşır. Siparişi onaylamaz — onay hâlâ ayrı bir adımdır.
  • Limit uygulaması kiracı ayarıdır. Limiti sıfır olan ya da risk profili hiç bulunmayan bir müşteride kontrol yapılmaz.

Kararın sebebi de kayda geçer: hesap bloke, limit aşımı, ya da vadesi geçmiş borçla birlikte limit aşımı.

Askıdaki sipariş, doğrudan yetkiyle serbest bırakılmak yerine onay zincirine de gönderilebilir. Zincirin son adımı onaylandığında askı gerçekten kalkar; yani onay bir kayıt tutma jesti değil, işi yapan adımdır. Risk askısı, onaya gidebilen konulardan yalnızca biri — diğerleri yeni müşteri açılışı, sipariş indirimi, fiyat geçersiz kılma ve promosyon yayına almadır.

Rutix B2B — Portal dükkâna kalan kullanılabilir limitini gösteriyor. Limitin çok üstünde bir sepet kurulduğunda, sipariş reddedilmiyor: sepet hâlâ değiştirilebilirken siparişin kredi onayına takılacağı söyleniyor. Çalışan üründen kaydedildi; 8 saniye, sessiz.

Ekstre #

GET /customers/{id}/statement bir tarih aralığı için hesap özetini döner. Varsayılan aralık son üç aydır.

  • Devir: aralıktan önceki faturalar eksi aralıktan önceki tahsilatlar, karşılıksız çıkanlar geri eklenmiş hâliyle.
  • Fatura satırları borç, tahsilat satırları alacak yazar; her satırda yürüyen bakiye görünür.
  • Aynı gün içinde faturalar tahsilatlardan önce sıralanır.
  • Karşılıksız çıkan bir çek iki satır yazar: alındığı gün alacak, karşılıksız çıktığı gün borç. Ekstre, olayın kendisini gizlemez.
  • Başlıkta limit, kullanılabilir limit, bekleyen çek tutarı, vadesi geçmiş tutar ve en eski ödenmemiş faturanın yaşı yer alır.

B2B portalındaki müşteri ekstresi aynı uca bağlıdır. Bir bakiye tartışmasının çözülmesinin tek yolu, iki tarafın aynı belgeye bakabilmesidir; iki ayrı yeniden inşa bunu sağlamaz.

Çevrimdışı tahsilat #

Temsilci tezgâhta, sinyalsiz, cihaza inen açık faturalara karşı tahsilat yapar ve makbuz sunucununkiyle aynı en-eski-önce yürüyüşüyle yerelde hesaplanır. İşlem senkronize olduğunda, ödemenin gerçekte hangi faturaları kapattığına sunucu canlı bakiyeye göre karar verir ve mahsup dağılımını cihaza geri gönderir — cihazın sabahki anlık görüntüsü bu kararı veremez.