-- =========================================================
-- 002 — İLK ŞEMAYA EKLENEN EKSİK PARÇALAR
-- =========================================================

-- ---------- KAMPANYA / İNDİRİM YÖNETİMİ ----------
CREATE TABLE kampanyalar (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    sube_id         INT UNSIGNED NOT NULL,
    ad              VARCHAR(150) NOT NULL,
    tip             ENUM('yuzde_indirim','tutar_indirim','n_al_m_ode') NOT NULL,
    deger           DECIMAL(10,2) NOT NULL,          -- %10 ise 10, 20TL ise 20
    n_adet          TINYINT UNSIGNED NULL,           -- '3 al 2 öde' için N
    m_adet          TINYINT UNSIGNED NULL,           -- '3 al 2 öde' için M
    baslangic_tarihi DATETIME NOT NULL,
    bitis_tarihi     DATETIME NOT NULL,
    aktif           TINYINT(1) DEFAULT 1,
    FOREIGN KEY (sube_id) REFERENCES subeler(id)
) ENGINE=InnoDB;

CREATE TABLE kampanya_urunleri (
    kampanya_id     INT UNSIGNED NOT NULL,
    urun_id         INT UNSIGNED NULL,       -- null ise kategori_id ile eşleşir
    kategori_id     INT UNSIGNED NULL,
    PRIMARY KEY (kampanya_id, urun_id, kategori_id),
    FOREIGN KEY (kampanya_id) REFERENCES kampanyalar(id) ON DELETE CASCADE,
    FOREIGN KEY (urun_id) REFERENCES urunler(id),
    FOREIGN KEY (kategori_id) REFERENCES kategoriler(id)
) ENGINE=InnoDB;

-- ---------- FİYAT GEÇMİŞİ ----------
CREATE TABLE fiyat_gecmisi (
    id              BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    urun_id         INT UNSIGNED NOT NULL,
    kullanici_id    INT UNSIGNED NOT NULL,
    eski_alis       DECIMAL(10,2),
    yeni_alis       DECIMAL(10,2),
    eski_satis      DECIMAL(10,2),
    yeni_satis      DECIMAL(10,2),
    olusturulma_tarihi DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (urun_id) REFERENCES urunler(id),
    FOREIGN KEY (kullanici_id) REFERENCES kullanicilar(id)
) ENGINE=InnoDB;

-- ---------- SATIN ALMA (TEDARİKÇİDEN MAL GİRİŞİ) ----------
CREATE TABLE satin_almalar (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    sube_id         INT UNSIGNED NOT NULL,
    tedarikci_id    INT UNSIGNED NOT NULL,
    kullanici_id    INT UNSIGNED NOT NULL,
    belge_no        VARCHAR(50),
    toplam_tutar    DECIMAL(12,2) NOT NULL DEFAULT 0,
    odeme_durumu    ENUM('odenmedi','kismi_odendi','odendi') DEFAULT 'odenmedi',
    odenen_tutar    DECIMAL(12,2) DEFAULT 0,
    olusturulma_tarihi DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (sube_id) REFERENCES subeler(id),
    FOREIGN KEY (tedarikci_id) REFERENCES tedarikciler(id),
    FOREIGN KEY (kullanici_id) REFERENCES kullanicilar(id)
) ENGINE=InnoDB;

CREATE TABLE satin_alma_kalemleri (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    satin_alma_id   INT UNSIGNED NOT NULL,
    urun_id         INT UNSIGNED NOT NULL,
    miktar          DECIMAL(12,3) NOT NULL,
    birim_alis_fiyati DECIMAL(10,2) NOT NULL,
    satir_toplami   DECIMAL(12,2) NOT NULL,
    FOREIGN KEY (satin_alma_id) REFERENCES satin_almalar(id) ON DELETE CASCADE,
    FOREIGN KEY (urun_id) REFERENCES urunler(id)
) ENGINE=InnoDB;

-- ---------- BARKOD ETİKET BASKI AYARLARI ----------
CREATE TABLE barkod_etiket_ayarlari (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    sube_id         INT UNSIGNED NOT NULL,
    etiket_genislik_mm TINYINT DEFAULT 40,
    etiket_yukseklik_mm TINYINT DEFAULT 25,
    satirda_etiket_sayisi TINYINT DEFAULT 2,
    urun_adi_goster TINYINT(1) DEFAULT 1,
    fiyat_goster    TINYINT(1) DEFAULT 1,
    barkod_tipi     ENUM('EAN13','CODE128') DEFAULT 'EAN13',
    FOREIGN KEY (sube_id) REFERENCES subeler(id)
) ENGINE=InnoDB;

-- ---------- KASA SAYIM DETAYI (banknot/madeni kırılımı) ----------
CREATE TABLE kasa_sayim_detaylari (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    kasa_oturum_id  INT UNSIGNED NOT NULL,
    kupur_degeri    DECIMAL(8,2) NOT NULL,   -- 1,5,10,20,50,100,200
    adet            INT UNSIGNED NOT NULL DEFAULT 0,
    toplam          DECIMAL(12,2) GENERATED ALWAYS AS (kupur_degeri * adet) STORED,
    FOREIGN KEY (kasa_oturum_id) REFERENCES kasa_oturumlari(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- ---------- TAKSİT DESTEĞİ ----------
ALTER TABLE satis_odemeleri
    ADD COLUMN taksit_sayisi TINYINT UNSIGNED DEFAULT 1 AFTER tutar;

-- ---------- OTURUM / LOGIN DENETİMİ ----------
CREATE TABLE giris_kayitlari (
    id              BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    kullanici_id    INT UNSIGNED NOT NULL,
    ip_adres        VARCHAR(45),
    basarili_mi     TINYINT(1) DEFAULT 1,
    giris_zamani    DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (kullanici_id) REFERENCES kullanicilar(id)
) ENGINE=InnoDB;

-- ---------- YEDEKLEME GEÇMİŞİ ----------
CREATE TABLE yedekleme_kayitlari (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    sube_id         INT UNSIGNED NOT NULL,
    dosya_yolu      VARCHAR(255) NOT NULL,
    dosya_boyutu_kb INT UNSIGNED,
    tip             ENUM('otomatik','manuel') DEFAULT 'manuel',
    olusturulma_tarihi DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (sube_id) REFERENCES subeler(id)
) ENGINE=InnoDB;
