Files
ornekler/konsol/fatura/README.md
T
semih e0e4a0d6c7 KabaLang örnekleri: konsol, masaüstü ve web için dokuz proje
Konsol: fraktal (paralel şeritli 24-bit Mandelbrot/Julia + yakınlaşma),
sudoku (geri izlemeli, canlı animasyon), fatura (JSON → terminal tablosu,
PDF ve Excel).
Masaüstü: hesap makinesi (işlem önceliği, canlı bağlama), odak (Pomodoro),
parola atölyesi (entropi ölçer, SHA-256).
Web: pano (Kanban REST API + SQLite), kisalt (302 yönlendirme, SVG
istatistik), anket (adres başına tek oy, sunucuda çizilen grafik).

Hepsi `kabalang calistir` ile derlenip çalışır; web uygulamaları yalnız
127.0.0.1'i dinler, SQL parametre bağlamalı, HTML çıktısı kaçırılır.
2026-10-03 08:37:47 +03:00

40 lines
1.6 KiB
Markdown

# Fatura — JSON siparişten terminal tablosu, PDF ve Excel
![Fatura](../../medya/fatura.png)
`siparis.json`'u okur; her kalem için indirim ve KDV hesaplar, KDV'yi
oranlara göre döker ve sonucu üç biçimde verir:
1. Terminalde kutu çizgili, renkli bir fatura tablosu
2. `fatura.pdf` — Türkçe karakterleri ve `₺` işaretini taşıyan, sayfa
numaralı PDF
3. `fatura.xlsx` — tablolar ayrı çalışma sayfalarında
```bash
kabalang calistir fatura.kbl # siparis.json → ./fatura.pdf + ./fatura.xlsx
kabalang calistir fatura.kbl -- baska.json --cikti ~/Belgeler
```
## KabaLang'ın gösterdikleri
| Özellik | Nerede |
|---|---|
| `yapi` + metotlar | `Kalem.brut()`, `matrah()`, `kdv_tutari()` — hesap verinin yanında |
| `sonuc<T, Hata>` | `siparis_oku` dosya yokken ya da JSON bozukken **değerle** hata döner; yok sayılamaz |
| `dene / yakala` | JSON dizisini sonuna kadar gezmek |
| `json` | İç içe erişim: `v["satici"]["ad"]`, `v["kalemler"][i]["adet"]` |
| `kaba.belge` | Aynı belge nesnesinden `pdf_yaz` ve `xlsx_yaz` |
| f-string biçimi | `{ad:<32}`, `{tutar:>15}`, `{k % 100:02d}` — hizalı tablo ve kuruş |
## Para nasıl tutuluyor
Her ara sonuç **kuruşa yuvarlanır** (`kurus()`); `0.1 + 0.2` gibi ikili kesir
artıkları faturaya taşınmaz. `para()` sayıyı Türkçe biçime çevirir:
`1249.9 → 1.249,90 ₺`.
Örnek siparişin toplamları elle de hesaplanıp karşılaştırıldı:
ara toplam 65.439,80 ₺ · indirim 1.879,99 ₺ · KDV 11.748,96 ₺ ·
**genel toplam 75.308,77 ₺**.
> Satıcı ve alıcı bilgileri örnek amaçlı, hayalidir.