// suppliers-data.jsx — Tedarikçi veri modeli (Faz 4 / Parça 4.1)
// Tedarikçiler self-servis kayıt olur (4.2), kategoriye göre gruplanır, teklif daveti alır (4.3).
// Bu dosya: hizmet kategorileri, durum/tip etiketleri, demo tedarikçiler + yardımcılar.
// Paylaşılan state + ekleme/güncelleme metodları app.jsx'te (window.__suppliers, 'supplierschange').

// Tedarikçinin hizmet verdiği alanlar (çoklu seçim). Hem kayıt formunda hem teklif (RFQ)
// kategori seçiminde kullanılır. Departman talebi → kategori → o kategorideki tedarikçiler.
const SUPPLIER_CATEGORIES = [
  { id: 'bilisim',     label: 'Bilişim Ürünleri' },
  { id: 'donanim',     label: 'Donanım & Aksesuar' },
  { id: 'yazilim',     label: 'Yazılım & Lisans' },
  { id: 'hizmet',      label: 'Teknik Servis & Bakım' },
  { id: 'danismanlik', label: 'Danışmanlık' },
  { id: 'kirtasiye',   label: 'Kırtasiye' },
  { id: 'zuccaciye',   label: 'Züccaciye' },
  { id: 'mobilya',     label: 'Ofis Mobilyası' },
];

// Tedarikçi yaşam döngüsü durumları
const SUPPLIER_STATUS_META = {
  invited: { label: 'Davet edildi',  fg: '#B45309', bg: 'rgba(245,158,11,0.14)' },
  pending: { label: 'Kayıt bekliyor', fg: '#B45309', bg: 'rgba(245,158,11,0.14)' },
  active:  { label: 'Aktif',          fg: '#0E9F6E', bg: 'rgba(16,185,129,0.14)' },
  passive: { label: 'Pasif',          fg: '#64748B', bg: 'rgba(100,116,139,0.16)' },
  banned:  { label: 'Banlı',          fg: '#DC2626', bg: 'rgba(239,68,68,0.14)' },
};

const SUPPLIER_TYPE_LABEL = { ltd: 'Limited Şti.', as: 'Anonim Şti.', sahis: 'Şahıs İşletmesi', kamu: 'Kamu' };
const SUPPLY_TYPE_LABEL = { uretici: 'Üretici', distributor: 'Distribütör', bayi: 'Bayi', hizmet: 'Hizmet Sağlayıcı' };

// Belgelerin görünen adları (tedarikçi kartı / kayıt formu)
const SUPPLIER_DOC_LABELS = {
  taxPlate: 'Vergi levhası',
  signatureCirc: 'İmza sirküleri',
  tradeGazette: 'Ticaret sicil gazetesi',
  iso: 'ISO / kalite sertifikası',
  bankConfirm: 'Banka hesap teyidi',
  nda: 'Gizlilik sözleşmesi (NDA)',
};

// Demo tedarikçiler — çeşitli kategori ve durumlarda (4.1 görünümünü doldurmak için)
const DEMO_SUPPLIERS = [
  {
    id: 's-abc', company: 'ABC Bilişim Teknolojileri A.Ş.', shortName: 'ABC Bilişim', type: 'as',
    taxOffice: 'Beşiktaş', taxNo: '1234567890', mersisNo: '0123456789000015', tradeRegNo: '987654',
    website: 'abcbilisim.com.tr',
    address: 'Levent Mah. Büyükdere Cad. No:12 Kat:5', city: 'İstanbul', country: 'Türkiye',
    phone: '0212 555 12 34', gsm: '0532 111 22 33', email: 'satis@abcbilisim.com.tr',
    contactName: 'Burak Şahin', contactTitle: 'Kurumsal Satış Müdürü', contactPhone: '0532 111 22 33', contactEmail: 'burak.sahin@abcbilisim.com.tr',
    categories: ['bilisim', 'donanim'], paymentTermDays: 45, currency: 'TRY',
    iban: 'TR12 0001 0012 3456 7890 1234 56', bankName: 'İş Bankası', supplyType: 'distributor',
    docs: { taxPlate: true, signatureCirc: true, tradeGazette: true, iso: true, bankConfirm: true, nda: true },
    status: 'active', invitedBy: 'Kerem Aksu', registeredAt: '14 Mar 2026',
    rating: 4.5, quoteCount: 18, wonCount: 7, totalVolume: 1240000, banReason: null, internalNote: 'Hızlı teslimat, fiyatları rekabetçi.',
  },
  {
    id: 's-netorder', company: 'NetOrder Yazılım Ltd. Şti.', shortName: 'NetOrder', type: 'ltd',
    taxOffice: 'Çankaya', taxNo: '2345678901', mersisNo: '', tradeRegNo: '654321',
    website: 'netorder.com.tr',
    address: 'Kızılırmak Mah. 1450. Sok. No:8', city: 'Ankara', country: 'Türkiye',
    phone: '0312 444 56 78', gsm: '0533 222 33 44', email: 'info@netorder.com.tr',
    contactName: 'Elif Yıldırım', contactTitle: 'Hesap Yöneticisi', contactPhone: '0533 222 33 44', contactEmail: 'elif@netorder.com.tr',
    categories: ['yazilim', 'danismanlik'], paymentTermDays: 30, currency: 'TRY',
    iban: 'TR98 0006 4000 0011 2233 4455 66', bankName: 'Garanti BBVA', supplyType: 'bayi',
    docs: { taxPlate: true, signatureCirc: true, tradeGazette: false, iso: false, bankConfirm: true, nda: true },
    status: 'active', invitedBy: 'Kerem Aksu', registeredAt: '02 Nis 2026',
    rating: 4.1, quoteCount: 9, wonCount: 3, totalVolume: 520000, banReason: null, internalNote: '',
  },
  {
    id: 's-ofisplus', company: 'OfisPlus Kırtasiye ve Büro Malzemeleri Ltd. Şti.', shortName: 'OfisPlus', type: 'ltd',
    taxOffice: 'Bornova', taxNo: '3456789012', mersisNo: '', tradeRegNo: '112233',
    website: 'ofisplus.com',
    address: 'Erzene Mah. Üniversite Cad. No:34', city: 'İzmir', country: 'Türkiye',
    phone: '0232 333 44 55', gsm: '0535 444 55 66', email: 'siparis@ofisplus.com',
    contactName: 'Murat Acar', contactTitle: 'Satış Sorumlusu', contactPhone: '0535 444 55 66', contactEmail: 'murat@ofisplus.com',
    categories: ['kirtasiye', 'zuccaciye', 'mobilya'], paymentTermDays: 60, currency: 'TRY',
    iban: 'TR55 0001 5001 5800 7290 1234 88', bankName: 'Vakıfbank', supplyType: 'bayi',
    docs: { taxPlate: true, signatureCirc: false, tradeGazette: true, iso: false, bankConfirm: false, nda: true },
    status: 'active', invitedBy: 'Kerem Aksu', registeredAt: '21 Nis 2026',
    rating: 3.8, quoteCount: 14, wonCount: 6, totalVolume: 185000, banReason: null, internalNote: 'Kırtasiyede en geniş ürün yelpazesi.',
  },
  {
    id: 's-teknikus', company: 'Teknikus Servis ve Bakım Hizmetleri', shortName: 'Teknikus', type: 'sahis',
    taxOffice: 'Nilüfer', taxNo: '4567890123', mersisNo: '', tradeRegNo: '',
    website: '',
    address: 'Ataevler Mah. 5. Cad. No:2/A', city: 'Bursa', country: 'Türkiye',
    phone: '0224 222 11 00', gsm: '0536 555 66 77', email: 'destek@teknikus.com',
    contactName: 'Serkan Öz', contactTitle: 'Kurucu', contactPhone: '0536 555 66 77', contactEmail: 'serkan@teknikus.com',
    categories: ['hizmet', 'donanim'], paymentTermDays: 30, currency: 'TRY',
    iban: 'TR33 0006 7010 0000 0011 2233 44', bankName: 'Yapı Kredi', supplyType: 'hizmet',
    docs: { taxPlate: true, signatureCirc: false, tradeGazette: false, iso: false, bankConfirm: true, nda: false },
    status: 'passive', invitedBy: 'Kerem Aksu', registeredAt: '08 Şub 2026',
    rating: 3.2, quoteCount: 5, wonCount: 1, totalVolume: 42000, banReason: null, internalNote: 'Yoğun dönemde dönüş yavaşlıyor.',
  },
  {
    id: 's-prodanis', company: 'ProDanış Yönetim Danışmanlığı A.Ş.', shortName: 'ProDanış', type: 'as',
    taxOffice: 'Şişli', taxNo: '5678901234', mersisNo: '0567890123000012', tradeRegNo: '445566',
    website: 'prodanis.com.tr',
    address: 'Esentepe Mah. Talatpaşa Cad. No:5 Kat:9', city: 'İstanbul', country: 'Türkiye',
    phone: '0212 777 88 99', gsm: '0537 666 77 88', email: 'iletisim@prodanis.com.tr',
    contactName: 'Deniz Kaya', contactTitle: 'Kıdemli Danışman', contactPhone: '0537 666 77 88', contactEmail: 'deniz.kaya@prodanis.com.tr',
    categories: ['danismanlik'], paymentTermDays: 30, currency: 'TRY',
    iban: 'TR77 0001 2009 4520 0058 0000 11', bankName: 'Akbank', supplyType: 'hizmet',
    docs: { taxPlate: true, signatureCirc: true, tradeGazette: true, iso: true, bankConfirm: true, nda: true },
    status: 'active', invitedBy: 'Kerem Aksu', registeredAt: '30 Mar 2026',
    rating: 4.7, quoteCount: 4, wonCount: 2, totalVolume: 310000, banReason: null, internalNote: '',
  },
  {
    id: 's-hizlitedarik', company: 'Hızlı Tedarik Bilgisayar Ltd. Şti.', shortName: 'Hızlı Tedarik', type: 'ltd',
    taxOffice: 'Keçiören', taxNo: '6789012345', mersisNo: '', tradeRegNo: '778899',
    website: 'hizlitedarik.com',
    address: 'Etlik Mah. Sanayi Cad. No:120', city: 'Ankara', country: 'Türkiye',
    phone: '0312 666 00 11', gsm: '0538 777 88 99', email: 'satis@hizlitedarik.com',
    contactName: 'Okan Demir', contactTitle: 'Satış Temsilcisi', contactPhone: '0538 777 88 99', contactEmail: 'okan@hizlitedarik.com',
    categories: ['bilisim', 'donanim', 'yazilim'], paymentTermDays: 15, currency: 'TRY',
    iban: 'TR21 0001 1009 8765 4321 0000 22', bankName: 'QNB', supplyType: 'distributor',
    docs: { taxPlate: false, signatureCirc: false, tradeGazette: false, iso: false, bankConfirm: false, nda: false },
    status: 'banned', invitedBy: 'Kerem Aksu', registeredAt: '11 Oca 2026',
    rating: 1.9, quoteCount: 7, wonCount: 2, totalVolume: 96000,
    banReason: 'İki siparişte teslim tarihini tutmadı, faturada fiyat farkı çıktı. Yönetici onayıyla askıya alındı.',
    internalNote: '',
  },
];

// ── Yardımcılar ──
function supplierCategoryLabel(id) {
  const f = SUPPLIER_CATEGORIES.find((x) => x.id === id);
  return f ? f.label : id;
}
function supplierStatusMeta(status) {
  return SUPPLIER_STATUS_META[status] || SUPPLIER_STATUS_META.pending;
}
function supplierInitials(s) {
  const base = (s.shortName || s.company || '?').trim();
  return base.split(/\s+/).slice(0, 2).map((w) => w[0]).join('').toUpperCase() || '?';
}

Object.assign(window, {
  SUPPLIER_CATEGORIES, SUPPLIER_STATUS_META, SUPPLIER_TYPE_LABEL, SUPPLY_TYPE_LABEL,
  SUPPLIER_DOC_LABELS, DEMO_SUPPLIERS,
  supplierCategoryLabel, supplierStatusMeta, supplierInitials,
});
