# Sunucudaki paneli güncelleme

Bu adımlar **veri kaybetmez**. Yine de 1. adımı atlama.

---

## 1. Yedek al (2 dakika)

cPanel → **phpMyAdmin** → sol taraftan `kaju_panel` veritabanını seç →
üstten **Dışa Aktar** → **Git**. Tek `.sql` dosyası iner, bilgisayarında dursun.

Fotoğraflar için: Dosya Yöneticisi → `public_html/panel/uploads` → **Sıkıştır** →
oluşan ZIP'i indir. (Bu adım sadece fotoğraf yüklediysen gerekli.)

---

## 2. Dosyaları yükle

Dosya Yöneticisi → `public_html/panel` → **Yükle** → yeni `kaju-panel.zip`

Ayıklarken **"Üzerine yaz"** de. Şunlar **korunur**, endişelenme:

| Dosya | Neden korunur |
|---|---|
| `inc/config.php` | Artık ZIP'te yok — veritabanı bilgilerin olduğu gibi kalır |
| `uploads/` | ZIP'te boş gelir, mevcut fotoğrafların yerinde kalır |
| `yedek/` | ZIP'te boş gelir, alınmış yedekler yerinde kalır |

> ZIP `inc/config.ornek.php` taşır, `config.php` taşımaz. Eskiden `config.php`
> ZIP'ten çıkıp sunucudaki bilgilerini eziyordu ve her güncellemede elle geri
> yazmak gerekiyordu; artık gerekmiyor.

---

## 3. Güncellemeyi çalıştır

Tarayıcıda aç:

```
https://kaju.oykuajans.com/panel/guncelle.php
```

Ekranda önce **mevcut veri sayıların** görünür (müşteri, köpek, konaklama,
tahsilat). Bunları not al.

**Güncellemeyi çalıştır** butonuna bas. Her adım için ne yapıldığını gösterir:

- **Uygulandı** — değişiklik yapıldı
- **Zaten vardı** — gerek yoktu, atlandı
- **Hata** — açıklaması yanında yazar

Bittiğinde sayfayı yenile ve **veri sayılarının aynı kaldığını doğrula.**
Değişmişse yedekten dön.

> Bu sayfayı birden fazla kez çalıştırmak zararsız — yapılmış adımlar atlanır.

---

## 4. Kontrol et

- `https://kaju.oykuajans.com/panel/tahsilat.php` → Faturalanacaklar
  bölümünde durum seçim kutusu görünüyor mu
- Telefondan bir konaklama aç → **Takvime ekle** → Takvim uygulaması açılıyor mu

---

## Bu güncellemede ne değişti

**Toplam tutar elle değiştirilebiliyor (indirim)**
Hem rezervasyon formunda hem teslim ekranında **Toplam (₺)** alanı var.
Boş bırakırsan otomatik hesaplanır; üzerine yazarsan girdiğin tutar geçerli olur.

Altındaki satır otomatik hesabı ve farkı canlı gösterir:
*"3 gece × 1.500 ₺ = 4.500 ₺ (otomatik) · 700 ₺ indirim"*

Elle girilen tutar **korunur**: tarih değiştirsen de, teslim etsen de sistem
üzerine yazmaz. Konaklama detayında "Elle girildi" rozeti ve otomatik tutarla
farkı görünür. Otomatiğe dönmek için alanı otomatik tutara eşitlemen yeterli.

> **Yan düzeltme:** Geceli bir konaklama aynı gün teslim edilirse artık
> gündüz bakımı ücreti uygulanıyor. Önceden 0 geceye düşüyor ama gecelik
> ücret uygulanmaya devam ediyordu.


**Sözleşme çıktısı — üç form, üç yaprak**
Konaklama detayında ve check-in ekranında **"Sözleşme yazdır"** butonu var.
Basılı formlarınızın üçü de sistemdeki bilgilerle dolu geliyor:

1. Pet Pansiyon Formu
2. Sosyal Yaşam ve Sorumluluk Onay Formu
3. Taahhütname

Her biri tek A4'e sığar (ölçüldü: en uzunu 201mm, alan 273mm). Üstteki
düğmelerden yalnızca birini de bastırabilirsin. Sistemde olmayan alanlar
(ör. iş telefonu) noktalı çizgi olarak boş bırakılır, elle doldurulur.

**Formlar için eklenen alanlar**
- Köpek kartı: mikroçip no, sorumlu veteriner + telefonu, kullandığı ilaçlar,
  geçirdiği ameliyatlar, yemek öğünleri (sabah/öğlen/akşam)
- Müşteri: sahibin bilgisi dahilinde **teslim alabilecek diğer kişi**
  (ad soyad, telefon, TCKN)

**Hukuki metinler düzenlenebilir**
Ayarlar → **Sözleşme formları** bölümünde üç formun metni de duruyor.
Basılı formlarınızdan aktarıldı; fotoğrafın gölgeli kısımları olduğu için
**kullanmadan önce okuyup doğrulayın.** Taahhütnamedeki temerrüt faizi,
geç alma oranı ve yetkili mahkeme de oradan giriliyor — boş bırakılırsa
çıktıda noktalı yer kalır.

> **Çıkış saati ücreti (yarım gün / tam gün) bu pakette YOK.** Formun 7.
> maddesindeki kural sisteme işlenmedi; istediğinde ayrıca ekleriz.


**Kısırlaştırma iki net seçenek oldu**
Köpek kartındaki tik kutusu kaldırıldı, yerine **Kısırlaştırılmış /
Kısırlaştırılmamış** seçimi geldi. Tik kutusunda işaretsiz bırakmak
"kısırlaştırılmamış" mı yoksa "girilmemiş" mi belli olmuyordu.

Bilgi ayrıca **köpek kartının üst satırında** görünüyor (ırk, yaş, kilo ile
birlikte) — daha önce kaydediliyordu ama hiçbir ekranda gösterilmiyordu.


**Bekleyen tahsilat giriş anında görünüyor**
Önceden borç yalnızca **teslim edildikten sonra** bekleyen tahsilat listesine
düşüyordu; köpek içerideyken hiçbir yerde görünmüyordu. Artık **giriş yapıldığı
anda** listeye giriyor.

- `rezerve` → listede yok (köpek daha gelmedi)
- `icerde` → listede, "devam ediyor" işaretiyle (erken teslimde tutar düşebilir)
- `tamamlandi` → listede, kesinleşmiş

Pano'daki "Bekleyen tahsilat" kutusu ve konaklama listesindeki "… bekliyor"
notu da aynı kurala uyuyor. Tahsilat listesine bir **Durum** sütunu eklendi.
İçerideyken de tahsilat kaydedilebiliyor (peşin/kapora).


**Pano şeridi 7 / 14 / 30 gün**
Şerit uzunluğu artık panonun üstünden tek tıkla değiştiriliyor. Seçim oturum
boyunca hatırlanıyor. Ayarlar'daki "Panoda başlangıç gün sayısı" ilk açılışta
hangisinin geleceğini belirliyor.

30 günde sütunlar otomatik daralıyor (38px → 30px) ve dar çubukların etiketi
dışarı yazılıyor, böylece şerit okunaklı kalıyor.


**Gündüz bakımı (aynı gün giriş-çıkış)**
Önceden çıkış tarihi girişten sonra olmak zorundaydı; gündüz bakımı
kaydedilemiyordu. Artık aynı gün seçilebiliyor — 0 gece olarak kaydediliyor ve
**ayrı bir günlük ücret** uygulanıyor.

Ayarlar → Fiyat ve KDV → **"Gündüz bakımı ücreti"** alanını doldur.
Güncelleme bu alanı gecelik ücretle aynı değere kuruyor; **gerçek fiyatını
oraya yazmayı unutma.**

Formda aynı gün seçince ücret alanının etiketi "Günlük ücret"e dönüyor ve değer
kendiliğinden gündüz ücretine geçiyor. Elle değiştirirsen ona dokunmuyor.
Ekranların hiçbirinde "0 gece" yazmıyor; yerine "Gündüz bakımı" görünüyor.


**Takvime ekleme (iPhone/Mac)**
`.ics` dosyası Apple cihazlara `inline` gönderiliyor. Önceden `attachment`
olarak gidiyordu; iOS bunu Dosyalar uygulamasına indiriyor ve Takvim hiç
açılmıyordu. Tek etkinlikte `METHOD` satırı da kaldırıldı — Apple Takvim onu
abonelik gibi yorumlayabiliyordu.

**Faturasız seçeneği**
Faturalanacaklar listesindeki durumlar yenilendi:

| Durum | Anlamı | Muhasebeci dökümünde |
|---|---|---|
| Fatura kesilmedi | Henüz işlem yok | **Var** |
| Muhasebeciye gitti | Döküm alındı | **Var** |
| Fatura kesildi | Tamamlandı | **Var** |
| **Faturasız** | Fatura kesilmeyecek | **Yok** |

"Faturasız" işaretlenen konaklama Excel ve PDF dökümüne girmez, tahsilat
toplamına dahil edilmez. Dökümün altında kaç kaydın bu sebeple hariç
tutulduğu yazar. Karar geri alınabilir — durumu değiştirince kayıt dökümе
geri döner.

Durum hem konaklama detayından hem de Tahsilat sayfasındaki listeden
tek tıkla değiştirilebiliyor.

---

## Veri kaybı neden olmuyor

Bu güncellemenin veritabanına tek dokunuşu, `faturalanacak` tablosundaki
durum listesine **bir seçenek eklemek**. Sütun silinmiyor, tablo düşürülmüyor,
mevcut satırlar değiştirilmiyor.

Yerelde önce/sonra ölçüldü:

```
Önce:  13 müşteri | 14 köpek | 18 konaklama | 2 tahsilat | 11 fatura kaydı
Sonra: 13 müşteri | 14 köpek | 18 konaklama | 2 tahsilat | 11 fatura kaydı
```

Mevcut fatura durumlarının hepsi korundu.

---

OX Digital Solutions

## Tasarım değişikliği görünmüyorsa

Artık görünmesi gerekir: CSS ve JS adreslerine dosyanın değişme zamanı
ekleniyor (`panel.css?v=1788201201`), dosya değişince adres de değişir ve
tarayıcı yenisini indirir.

Yine de eski görünüyorsa dosya sunucuya gerçekten yüklenmemiş demektir —
`assets/css/` klasörünün tarihine bakın.

(Eskiden `?v=1` sabitti; bu yüzden yüklenen yeni tasarımlar tarayıcıda
görünmüyordu. Sürüm 2026-08 ile düzeltildi.)

---

## Günlük otomatik yedek (bir kez kurulur)

Panel artık veritabanını kendisi yedekleyip e-postayla gönderebiliyor.
Kurulumu **bir defalık** iki adım:

### 1. Adresi gir ve dene

Panel → **Ayarlar** → **Yedekleme**

- **Yedeğin gideceği e-posta**: yedeğin düşmesini istediğin adres
- **Gönderen adresi**: kendi alan adındaki bir adres
  (örn. `panel@kaju.oykuajans.com`). Gmail/Hotmail adresi yazma —
  sunucu senin adına onlardan gönderemez, posta spam'e düşer.
- **Yedek ayarlarını kaydet** → **Şimdi yedekle ve postala**

Üstte yeşil "Çalışıyor" rozeti ve posta kutunda `.sql.gz` eki görünmeli.
Görünmüyorsa spam klasörüne bak.

### 2. Her gün kendi kendine çalışsın

cPanel → **Cron Jobs** → **Once Per Day (0 3 * * *)** seçip komut kutusuna
Ayarlar ekranındaki komutu yapıştır:

```
/usr/local/bin/php -q /home/KULLANICI/public_html/panel/yedek.php
```

(Tam yol Ayarlar > Yedekleme kartında hazır yazıyor, oradan kopyala.)
PHP yolunu kabul etmezse aynı kartta `wget`'li ikinci komut var, onu kullan.

### Bilmen gerekenler

| | |
|---|---|
| Ne yedeklenir | Veritabanının tamamı — müşteri, köpek, konaklama, tahsilat, fatura, ayarlar, mesaj geçmişi |
| Fotoğraflar | Varsayılan olarak **girmez**. Ayarlardaki tikle eklenebilir ama posta kutunu şişirir |
| Nerede durur | `panel/yedek/` — tarayıcıdan açılamaz, son 14 tanesi saklanır, eskiler kendiliğinden silinir |
| Geri yükleme | cPanel → phpMyAdmin → veritabanını seç → **İçe Aktar** → `.sql.gz` dosyasını seç |
| E-posta gitmezse | Yedek yine alınır ve sunucuda durur; Ayarlar'dan indirebilirsin |

Fotoğraflar e-postaya girmiyorsa onları ara sıra elle indir:
Dosya Yöneticisi → `panel/uploads` → **Sıkıştır** → indir.
