Kısa cevap: kiralama takip programı bir stok programı değil, bir takvim programıdır. Bir aracın ya da ekipmanın deponuzda "var" olması hiçbir şey ifade etmez; asıl soru o birimin “istenen tarih aralığında” boş olup olmadığıdır. Bu yüzden kiralama yazılımını değerlendirirken ilk bakılacak üç şey şudur: müsaitlik sorgusu tarih aralığı çakışmasıyla mı çalışıyor, teslim ve iade anında durum tespiti (fotoğraf, kilometre, yakıt, imza) kayda geçiyor mu, ve bakım günleri takvimi otomatik kapatıyor mu. Bu üçü yoksa program bir kayıt defteridir, kiralama sistemi değildir.
Kiralama stok değil takvim satar
Stok takibinde soru basittir: kaç adet var. Stok takip programı yazısında anlattığımız ambar mantığında bir ürün ya raftadır ya değildir. Kiralamada aynı birim aynı ay içinde on kez satılır ve her satış bir tarih aralığıdır. "Üç forkliftim var" cümlesi bir müsaitlik cevabı değildir; cevabı ancak mevcut rezervasyonların tarihleriyle çakışma kontrolü verir.
Bu farkın iki pratik sonucu vardır. Birincisi, her birim tekil olarak takip edilir: üç aynı model araç "3 adet" değil, üç ayrı kayıttır — çünkü her birinin kilometresi, hasar geçmişi, muayene tarihi ve bakım eşiği farklıdır. İkincisi, iki kiralama arasına hazırlık payı konur. Temizlik, yakıt ikmali ve kontrol için gereken süre takvime yazılmazsa sistem 10:00 iadesinin üzerine 10:00 teslimi satar ve müşteri kapıda bekler. Payın süresi işletmeye göre değişir ama sıfır olamaz.
type Kiralama = {
id: string;
birimId: string;
baslangic: Date;
bitis: Date;
durum: 'rezerve' | 'teslim_edildi' | 'iade_edildi' | 'iptal';
};
// Hazırlık payı: iade ile bir sonraki teslim arasında
// temizlik, yakıt ikmali ve kontrol için bırakılan süre (dakika).
const HAZIRLIK_PAYI_DK = 90;
function cakisiyorMu(a: Kiralama, baslangic: Date, bitis: Date): boolean {
const pay = HAZIRLIK_PAYI_DK * 60 * 1000;
const aBas = a.baslangic.getTime() - pay;
const aBit = a.bitis.getTime() + pay;
return aBas < bitis.getTime() && baslangic.getTime() < aBit;
}
function musaitMi(
birimId: string,
baslangic: Date,
bitis: Date,
kiralamalar: Kiralama[],
bakimlar: { birimId: string; baslangic: Date; bitis: Date }[],
): boolean {
if (bitis <= baslangic) return false;
const aktif = kiralamalar.filter(
(k) => k.birimId === birimId && k.durum !== 'iptal' && k.durum !== 'iade_edildi',
);
if (aktif.some((k) => cakisiyorMu(k, baslangic, bitis))) return false;
// Bakım ve servis günleri de takvimi kapatır: "boşta" görünen
// ama servisteki araç satılırsa müşteri kapıdan boş döner.
return !bakimlar.some(
(b) =>
b.birimId === birimId &&
b.baslangic.getTime() < bitis.getTime() &&
baslangic.getTime() < b.bitis.getTime(),
);
}Fonksiyonun iki detayı önemlidir. Bakım ve servis günleri de takvimi kapatır — oto servis takip programı yazısında anlattığımız periyodik bakım eşiği (tarih ya da kilometreden hangisi önce dolarsa) devreye girdiğinde araç kiralanabilir listeden düşmelidir, aksi halde satılan gün serviste geçer. İptal edilmiş ve iade edilmiş kayıtlar ise çakışma kontrolüne girmez; bu ayrım yapılmazsa geçmiş kiralamalar takvimi sonsuza kadar dolu gösterir.
Aynı birimi iki kez satmanın maliyeti bir günlük ciro değildir: müşteri kapıdan boş döner, o müşteri bir daha aramaz ve çoğu işletme bunu raporda hiç göremez, çünkü iptal edilen kiralama "yapılmamış iş" olarak kayıtta bile kalmaz.
En kritik modül teslim ve iade durum tespitidir
Kiralama işinde para kaybı sözleşmede değil, dönüşte tartışılan hasarda oluşur. "Bu çizik zaten vardı" cümlesinin tek cevabı kayıttır ve o kayıt teslim anında alınmalıdır. Sistem, teslim ekranını tamamlamadan aracın çıkışına izin vermemelidir. Her teslim ve iade için kayda geçecek asgari set:
- Fotoğraflar — aynı açılardan, zaman damgalı; çıkış ve dönüş karşılaştırılabilir olsun diye açılar sabit tanımlanır.
- Sayaç değeri — araçta kilometre, iş makinesinde çalışma saati; ek kilometre ücretinin dayanağı budur.
- Yakıt ya da şarj seviyesi, temizlik durumu ve eksik ekipman listesi (bebek koltuğu, aparat, kablo).
- Teslim alan kişinin kimlik ve ehliyet bilgisi ile imzası — sistem içinden, zaman damgalı.
- Depozito tutarı ve blokenin hangi yöntemle alındığı; iade koşulu aynı ekranda yazılı olsun.
Depozito, durum tespitine bağlanmadığı sürece tartışmaya açıktır. Kesinti yapılacaksa dayanağı çıkış ve dönüş fotoğrafları ile sayaç farkıdır; bunlar sistemde yoksa kesinti müşteri nezdinde keyfî görünür. Online ödeme ve blokaj tarafını kurarken ödeme entegrasyonu yazısına bakın; depozito iadesinin ne kadar sürede yapılacağı sözleşmede yazılı olmalıdır.
Fiyat kuralı sonradan eklenemez
Kiralama fiyatı tek bir günlük rakam değildir. Günlük, haftalık ve aylık kademeler farklı birim fiyat üretir; uzun süreli kiralamada kademe otomatik uygulanmazsa satış elemanı her teklifte elle hesap yapar ve hatalar faturaya yansır. Bunun üstüne sezon farkı, kurumsal müşteriye özel liste, ek kilometre ücreti, ek gün ücreti, tek yön teslim farkı ve ek ekipman kalemleri gelir. Fiyatın hangi kuraldan çıktığı kayıtta görünmüyorsa iskonto tartışmaları çözülemez.
- Kademe kuralı: süre uzadıkça birim fiyatın düştüğü eşikler tanımlı ve tarihli olmalı.
- Müşteriye özel fiyat: kurumsal anlaşmalı müşterinin listesi, genel listeden önce gelir.
- Ek ücretler: geç iade, ek kilometre, yakıt eksiği, temizlik, tek yön — her birinin birim fiyatı sözleşmede.
- Uygulanan kuralın kaynağı: teklif kaydı hangi kuralın uygulandığını da tutmalı, yalnızca sonucu değil.
Asıl metrik ciro değil kiralanabilir gün oranıdır
Kiralama işinde ciro yanıltıcıdır çünkü maliyetin büyük kısmı araç ya da ekipmanın kendisinde sabitlenmiştir. Doğru ölçü her birimin dönem içinde kaç gün kiralandığıdır — ve bu oran düştüğünde sebebi çoğu zaman talep değil, takvimi kapatan ölü günlerdir: geç iade yüzünden kaçırılan sonraki kiralama, serviste geçen süre, temizlik bekleyen araç, hasar onarımı. Sistem bu günleri sebep koduyla kaydetmiyorsa "işler durgun" denir ve asıl sorun görünmez.
Aynı şekilde geç iade bir ceza kalemi değil, bir zincir kırılmasıdır: geciken araç bir sonraki müşteriyi de geciktirir. Nakliye ve lojistik yazısında anlattığımız zincirleme gecikme mantığı burada da geçerlidir; bu yüzden geç iade uyarısı iade saatinden sonra değil, iade saatine yaklaşırken üretilmelidir.
Hazır paket mi özel yazılım mı?
Çoğu küçük filo için hazır kiralama paketi yeterlidir. Özel yazılım kararı üç testten en az ikisi "evet" olduğunda anlamlıdır:
- Birden çok şube ya da depo var ve aynı birim şubeler arasında dolaşıyor (tek yön teslim, şubeler arası transfer, ortak müsaitlik havuzu).
- Fiyat ya da sözleşme kuralınız standart dışı: sigorta şirketine ya da sözleşmeli kuruma kesilen fatura, operatörlü kiralama, proje bazlı uzun dönem, günlük değil saatlik kullanım.
- Başka bir sistemle konuşması gerekiyor: muhasebe, filo takip cihazı, e-fatura, web sitesinden online rezervasyon. Entegrasyon tarafı için API entegrasyonu yazısına bakın.
Dördüncü soru hazır paketlerde en çok atlanandır: verinizi dışa aktarabiliyor musunuz? Birim listesi, kiralama geçmişi, müşteri kayıtları ve durum tespiti fotoğrafları dışa alınamıyorsa program değiştirmenin maliyeti lisans ücretinden büyük olur. Maliyet kalemlerinin nasıl hesaplandığını özel yazılım maliyeti yazısında adam-gün üzerinden anlattık; kiralamada mobil taraf (sahada teslim-iade ekranı) projenin en az yarısıdır, çünkü teslim ekranı kullanılmıyorsa hiçbir kayıt oluşmaz.
Sonuç
Kiralama takip programını seçerken ekran sayısına değil üç şeye bakın: müsaitlik tarih aralığı çakışmasıyla mı hesaplanıyor, teslim-iade durum tespiti zorunlu bir adım mı, bakım ve ölü günler takvime yazılıyor mu. Bu üçü varsa gerisi rapor ayrıntısıdır; yoksa hiçbir rapor tutmaz. Filonuza ya da ekipman parkınıza özel bir çözüm değerlendiriyorsanız özel yazılım hizmetimize göz atın ya da mevcut sürecinizi anlatıp teklif alın — ihtiyacı birlikte çıkaralım.