{"id":823,"date":"2026-07-21T15:01:26","date_gmt":"2026-07-21T12:01:26","guid":{"rendered":"https:\/\/krakenbodrum.com\/?page_id=823"},"modified":"2026-08-16T01:00:18","modified_gmt":"2026-08-15T22:00:18","slug":"krakenb2b","status":"publish","type":"page","link":"https:\/\/krakenbodrum.com\/tr\/krakenb2b\/","title":{"rendered":"Kraken B2B"},"content":{"rendered":"<div class=\"et_pb_section_0 et_pb_section et_section_regular et_flex_section preset--module--divi-section--default\">\n<div class=\"et_pb_row_0 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_0 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_0 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/xlsx\/0.18.5\/xlsx.full.min.js\"><\/script>\r\n<style>\r\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:wght@600;700&family=Inter:wght@400;500;600;700&display=swap');\r\n  #kraken-b2b-app { font-family: 'Inter', sans-serif; color: #2b2b28; }\r\n  #kraken-b2b-app input, #kraken-b2b-app select { box-sizing: border-box !important; font-family: 'Inter', sans-serif; }\r\n  #kraken-b2b-app h2, #kraken-b2b-app h3, #kraken-b2b-app h4 { font-family: 'Playfair Display', serif !important; font-weight: 700 !important; border-color: #0792ad !important; letter-spacing: 0.3px; }\r\n  #kraken-b2b-app button { font-family: 'Inter', sans-serif; }\r\n  .tab-buttons { display: flex; border-bottom: 2px solid #0792ad; margin-bottom: 20px; flex-wrap: wrap; }\r\n  .tab-btn { padding: 12px 20px; cursor: pointer; border: none; background: #f1ede0; margin-right: 5px; margin-bottom: 5px; border-radius: 8px 8px 0 0; font-weight: 600; color: #5a564a; transition: 0.25s; }\r\n  .tab-btn:hover { background: #e3ddc9; color: #2b2b28; }\r\n  .tab-btn.active { background: #0792ad; color: white; }\r\n  .tab-content { display: none; }\r\n  .urun-tablo-kapsayici { max-height: 450px; overflow-y: auto; overflow-x: auto; max-width: 100%; border: 1px solid #e3ddc9; border-radius: 10px; background: #fff; margin-bottom: 20px; }\r\n  .kraken-scroll-sarmalayici { overflow-x: auto; max-width: 100%; }\r\n  .urun-tablo-kapsayici thead th { position: sticky; top: 0; background: #f3f0e6; z-index: 5; border-bottom: 2px solid #0792ad; box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.06); }\r\n  .stok-kritik td { background-color: #ffe6e6 !important; }\r\n  .komisyon-detay-satir { display: none; }\r\n  .komisyon-detay-satir.acik { display: table-row; }\r\n  .komisyon-grup-satir { cursor: pointer; }\r\n  .komisyon-grup-satir:hover { background: #f8f6ef; }\r\n  .kraken-spinner { border: 5px solid rgba(7, 146, 173, 0.2); border-top: 5px solid #0792ad; border-radius: 50%; width: 60px; height: 60px; animation: spin 1s linear infinite; margin-bottom: 15px; }\r\n  @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\r\n  #kraken-b2b-app button:not(:disabled):hover { filter: brightness(1.08); transition: filter 0.2s; }\r\n  #kraken-b2b-app input:focus, #kraken-b2b-app select:focus, #kraken-b2b-app textarea:focus { outline: none !important; border-color: #0792ad !important; box-shadow: 0 0 0 3px rgba(7, 146, 173, 0.15) !important; }\r\n  .mobile-only { display: none !important; }\r\n  @media print {\r\n    body * { visibility: hidden; }\r\n    #siparisYazdirmaAlani, #siparisYazdirmaAlani * { visibility: visible; }\r\n    #siparisYazdirmaAlani { position: absolute; top: 0; left: 0; width: 100%; }\r\n    #cariYazdirmaAlani, #cariYazdirmaAlani * { visibility: visible; }\r\n    #cariYazdirmaAlani { position: absolute; top: 0; left: 0; width: 100%; }\r\n    #komisyonYazdirmaAlani, #komisyonYazdirmaAlani * { visibility: visible; }\r\n    #komisyonYazdirmaAlani { position: absolute; top: 0; left: 0; width: 100%; }\r\n    .komisyon-detay-satir { display: table-row !important; }\r\n    .no-print { display: none !important; }\r\n    \/* \ud83d\udda8\ufe0f Sipari\u015f penceresi \"position:fixed\" oldu\u011fu i\u00e7in, d\u00fczeltmezsek yazd\u0131rma\r\n       her sayfada tekrar eder (fixed elemanlar CSS'te her sayfada bas\u0131l\u0131r).\r\n       Yazd\u0131r\u0131rken bu kutuyu normal ak\u0131\u015fa (static) \u00e7eviriyoruz. *\/\r\n    #siparisGoruntuleKutusu, #siparisGoruntuleKutusu > div {\r\n      position: static !important; height: auto !important; overflow: visible !important;\r\n      background: none !important; padding: 0 !important; max-width: 100% !important;\r\n      box-shadow: none !important; margin: 0 !important;\r\n    }\r\n  }\r\n  #siparisYazdirmaAlani table { width: 100%; border-collapse: collapse; margin-top: 8px; font-size: 14px; text-align: left; }\r\n  #siparisYazdirmaAlani th, #siparisYazdirmaAlani td { padding: 4px 6px; border-bottom: 1px solid #eee; word-break: break-word; }\r\n  #siparisYazdirmaAlani thead th { background: #f1ede0; border-bottom: 2px solid #0792ad; }\r\n  #siparisYazdirmaAlani p { margin: 2px 0 !important; line-height: 1.3 !important; }\r\n  .siparis-detay-tablo-sarmalayici { overflow-x: auto; max-width: 100%; -webkit-overflow-scrolling: touch; }\r\n  @media (max-width: 600px) {\r\n    #siparisGoruntuleKutusu { padding: 10px 6px !important; }\r\n    #siparisGoruntuleKutusu > div { padding: 15px !important; }\r\n    #siparisYazdirmaAlani table { font-size: 11px !important; }\r\n    #siparisYazdirmaAlani th, #siparisYazdirmaAlani td { padding: 3px 4px !important; }\r\n  }\r\n  @media (max-width: 768px) {\r\n    #kraken-b2b-app { width: 99% !important; margin: 0 auto !important; padding: 10px !important; }\r\n    .desktop-only { display: none !important; }\r\n    .mobile-only { display: table-cell !important; }\r\n    #kraken-b2b-app table { font-size: 12px !important; }\r\n    .tab-btn { padding: 10px; font-size: 12px; flex: 1; text-align: center; }\r\n    .admin-user-grid { grid-template-columns: 1fr !important; }\r\n    .admin-user-grid button { grid-column: 1 !important; }\r\n    .kraken-filtre-bari { flex-direction: column !important; gap: 10px !important; }\r\n    .kraken-filtre-bari > div { flex: none !important; width: 100% !important; }\r\n    .gecmis-desktop-tablosu { display: none !important; }\r\n    .gecmis-mobil-kartlar { display: block !important; }\r\n  }\r\n  .gecmis-mobil-kartlar { display: none; }\r\n  .gecmis-mobil-kart { background:#fff; border:1px solid #e3ddc9; border-radius:10px; padding:12px; margin-bottom:10px; cursor:pointer; }\r\n  .gecmis-mobil-kart:active { background:#f8f6ef; }\r\n  .gecmis-mobil-kart-ust { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:4px; }\r\n  .gecmis-mobil-kart-alt { font-size:12px; color:#8a8578; line-height:1.5; }\r\n<\/style>\r\n\r\n<div id=\"loadingOverlay\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(255, 255, 255, 0.7); backdrop-filter:blur(4px); z-index:999999; flex-direction:column; justify-content:center; align-items:center;\">\r\n  <div class=\"kraken-spinner\"><\/div>\r\n  <div id=\"loadingMessage\" style=\"font-weight:bold; color:#0792ad; font-size:18px; text-align:center; padding: 0 20px; font-family:'Inter',sans-serif;\">\u0130\u015flem yap\u0131l\u0131yor, l\u00fctfen bekleyin...<\/div>\r\n<\/div>\r\n\r\n<div id=\"duyuruKutusu\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(28,28,26,0.6); z-index:2147483647; justify-content:center; align-items:center; padding:20px;\">\r\n  <div style=\"background:#fff; border-radius:16px; max-width:440px; width:100%; padding:26px 24px; box-shadow:0 10px 40px rgba(0,0,0,0.25); font-family:'Inter',sans-serif; position:relative;\">\r\n    <div style=\"text-align:center; margin-bottom:16px;\">\r\n      <div style=\"font-size:34px;\">\ud83d\udce2<\/div>\r\n      <div style=\"font-family:'Playfair Display',serif; font-weight:700; font-size:19px; color:#2b2b28; margin-top:6px;\">Sistem Duyurusu<\/div>\r\n      <div id=\"duyuruTarih\" style=\"font-size:12px; color:#8a8578; margin-top:2px;\"><\/div>\r\n    <\/div>\r\n    <div id=\"duyuruMetni\" style=\"font-size:15px; color:#2b2b28; line-height:1.6; margin-bottom:22px; white-space:pre-wrap;\"><\/div>\r\n    <button type=\"button\" onclick=\"duyuruKapat()\" style=\"width:100%; background:#0792ad; color:#fff; border:none; padding:13px; border-radius:10px; font-weight:700; font-size:15px; cursor:pointer;\">Anlad\u0131m<\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div id=\"iosPwaRehberiKutusu\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(28,28,26,0.6); z-index:2147483647; justify-content:center; align-items:flex-end; padding:0;\">\r\n  <div style=\"background:#fff; border-radius:20px 20px 0 0; max-width:440px; width:100%; padding:26px 24px 30px; box-shadow:0 -10px 40px rgba(0,0,0,0.25); font-family:'Inter',sans-serif; position:relative;\">\r\n    <button type=\"button\" onclick=\"iosPwaRehberiKapat()\" title=\"Kapat\" style=\"position:absolute; top:14px; right:16px; background:none; border:none; color:#8a8578; font-size:20px; line-height:1; cursor:pointer; padding:4px;\">\u2715<\/button>\r\n    <div style=\"text-align:center; margin-bottom:22px;\">\r\n      <div style=\"font-family:'Playfair Display',serif; font-weight:700; font-size:19px; color:#2b2b28;\">\ud83d\udcf2 Sadece 10 saniye s\u00fcrer!<\/div>\r\n      <div style=\"font-size:13px; color:#8a8578; margin-top:4px;\">2 dokunu\u015f, bir daha hi\u00e7 yapmana gerek kalmaz<\/div>\r\n    <\/div>\r\n    <div style=\"display:flex; align-items:center; justify-content:center; gap:10px; margin-bottom:24px;\">\r\n      <div style=\"text-align:center;\">\r\n        <div style=\"width:64px; height:64px; background:#f8f6ef; border-radius:16px; display:flex; align-items:center; justify-content:center; margin:0 auto 8px;\">\r\n          <svg viewBox=\"0 0 24 24\" width=\"30\" height=\"30\" fill=\"none\" stroke=\"#0792ad\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 3v12\"\/><path d=\"M8 7l4-4 4 4\"\/><rect x=\"4\" y=\"12\" width=\"16\" height=\"9\" rx=\"2\"\/><\/svg>\r\n        <\/div>\r\n        <div style=\"font-size:13px; color:#2b2b28; font-weight:600;\">1. Payla\u015f'a<br>dokun<\/div>\r\n      <\/div>\r\n      <div style=\"font-size:22px; color:#ccc; margin-top:-20px;\">\u2192<\/div>\r\n      <div style=\"text-align:center;\">\r\n        <div style=\"width:64px; height:64px; background:#f8f6ef; border-radius:16px; display:flex; align-items:center; justify-content:center; margin:0 auto 8px;\">\r\n          <svg viewBox=\"0 0 24 24\" width=\"30\" height=\"30\" fill=\"none\" stroke=\"#0792ad\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"4\"\/><path d=\"M12 8v8M8 12h8\"\/><\/svg>\r\n        <\/div>\r\n        <div style=\"font-size:13px; color:#2b2b28; font-weight:600;\">2. Ana Ekrana<br>Ekle<\/div>\r\n      <\/div>\r\n      <div style=\"font-size:22px; color:#ccc; margin-top:-20px;\">\u2192<\/div>\r\n      <div style=\"text-align:center;\">\r\n        <div style=\"width:64px; height:64px; background:#e6f6f9; border-radius:16px; display:flex; align-items:center; justify-content:center; margin:0 auto 8px; font-size:26px; font-weight:bold; color:#0792ad;\">\u2713<\/div>\r\n        <div style=\"font-size:13px; color:#2b2b28; font-weight:600;\">3. Haz\u0131r!<\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <button type=\"button\" onclick=\"iosPwaRehberiKapat()\" style=\"width:100%; background:#0792ad; color:#fff; border:none; padding:14px; border-radius:10px; font-weight:700; font-size:15px; cursor:pointer;\">Tamam, Deniyorum<\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div id=\"androidPwaRehberiKutusu\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(28,28,26,0.6); z-index:2147483647; justify-content:center; align-items:flex-end; padding:0;\">\r\n  <div style=\"background:#fff; width:100%; max-width:520px; border-radius:16px 16px 0 0; padding:22px 20px 26px; position:relative; box-shadow:0 -6px 30px rgba(0,0,0,0.25);\">\r\n    <button type=\"button\" onclick=\"androidPwaRehberiKapat()\" title=\"Kapat\" style=\"position:absolute; top:14px; right:16px; background:none; border:none; color:#8a8578; font-size:20px; line-height:1; cursor:pointer; padding:4px;\">\u2715<\/button>\r\n    <div style=\"font-size:17px; font-weight:700; color:#1c1c1a; margin-bottom:4px;\">Ana ekrana ekleme<\/div>\r\n    <div style=\"font-size:13px; color:#8a8578; margin-bottom:18px;\">Birka\u00e7 saniye s\u00fcrer, tek seferlik bir i\u015flem.<\/div>\r\n\r\n    <div style=\"display:flex; gap:12px; align-items:flex-start; margin-bottom:14px;\">\r\n      <div style=\"background:#0792ad; color:#fff; width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:13px; flex-shrink:0;\">1<\/div>\r\n      <div style=\"font-size:14px; color:#3d3a33; line-height:1.5;\">Taray\u0131c\u0131n\u0131n <b>sa\u011f \u00fcst k\u00f6\u015fesindeki<\/b> \u00fc\u00e7 nokta men\u00fcs\u00fcne <b>\u22ee<\/b> dokunun.<\/div>\r\n    <\/div>\r\n    <div style=\"display:flex; gap:12px; align-items:flex-start; margin-bottom:14px;\">\r\n      <div style=\"background:#0792ad; color:#fff; width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:13px; flex-shrink:0;\">2<\/div>\r\n      <div style=\"font-size:14px; color:#3d3a33; line-height:1.5;\">A\u00e7\u0131lan listeden <b>\"Ana ekrana ekle\"<\/b> ya da <b>\"Uygulamay\u0131 y\u00fckle\"<\/b> se\u00e7ene\u011fine dokunun.<\/div>\r\n    <\/div>\r\n    <div style=\"display:flex; gap:12px; align-items:flex-start; margin-bottom:20px;\">\r\n      <div style=\"background:#0792ad; color:#fff; width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:13px; flex-shrink:0;\">3<\/div>\r\n      <div style=\"font-size:14px; color:#3d3a33; line-height:1.5;\"><b>\"Ekle\"<\/b> diyerek onaylay\u0131n. Kraken B2B simgesi ana ekran\u0131n\u0131zda belirecek.<\/div>\r\n    <\/div>\r\n\r\n    <button type=\"button\" onclick=\"androidPwaRehberiKapat()\" style=\"width:100%; background:#0792ad; color:#fff; border:none; padding:14px; border-radius:10px; font-weight:700; font-size:15px; cursor:pointer;\">Tamam, Deniyorum<\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div id=\"siparisGoruntuleKutusu\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(28,28,26,0.55); z-index:2147483647; justify-content:center; overflow-y:auto; padding:30px 15px;\">\r\n  <div style=\"background:#fff; border-radius:10px; max-width:700px; width:100%; padding:30px; margin-top:10px; margin-bottom:30px; height:fit-content; box-shadow:0 10px 40px rgba(0,0,0,0.2);\">\r\n    <div class=\"no-print\" style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:15px; border-bottom:1px solid #e3ddc9; padding-bottom:15px;\">\r\n      <h3 style=\"margin:0; font-family:'Playfair Display',serif;\">Sipari\u015f Detay\u0131<\/h3>\r\n      <div>\r\n        <button type=\"button\" onclick=\"siparisYazdir()\" style=\"background:#0792ad; color:#fff; border:none; padding:9px 14px; border-radius:6px; cursor:pointer; font-weight:600; margin-right:8px;\">\ud83d\udda8\ufe0f Yazd\u0131r \/ PDF \u0130ndir<\/button>\r\n        <button type=\"button\" onclick=\"document.getElementById('siparisGoruntuleKutusu').style.display='none'; document.body.style.overflow='';\" style=\"background:#6c757d; color:#fff; border:none; padding:9px 14px; border-radius:6px; cursor:pointer;\">Kapat<\/button>\r\n      <\/div>\r\n    <\/div>\r\n    <div id=\"siparisYazdirmaAlani\"><\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div id=\"kraken-b2b-app\" style=\"background:#f8f6ef; padding:20px; border-radius:8px; font-family:'Inter',sans-serif; position:relative;\">\r\n  \r\n  <div id=\"pwaBannerTop\" class=\"mobile-only-block\" style=\"display:none; background:#f1ede0; color:#5a564a; border:1px solid #e3ddc9; border-radius:6px; padding:9px 12px; margin-bottom:14px; position:relative; font-size:13px; line-height:1.4; cursor:pointer;\" onclick=\"pwaEkle()\">\r\n    <span id=\"pwaBannerMetin\">Daha h\u0131zl\u0131 eri\u015fim i\u00e7in ana ekran\u0131n\u0131za ekleyebilirsiniz. <\/span>\r\n    <span style=\"color:#0792ad; font-weight:600; white-space:nowrap;\">Nas\u0131l? &rsaquo;<\/span>\r\n  <\/div>\r\n\r\n  <form id=\"girisFormu\" style=\"max-width:420px; margin:40px auto; padding:40px 35px; background:#fff; border:1px solid #e3ddc9; border-radius:12px; box-shadow:0 10px 30px rgba(7,146,173,0.08);\">\r\n    <div style=\"text-align:center; margin-bottom:10px;\">\r\n      <div style=\"font-size:13px; letter-spacing:3px; color:#8a8578; text-transform:uppercase; font-weight:600;\">Sipari\u015f Portal\u0131 Giri\u015fi<\/div>\r\n    <\/div>\r\n    <div style=\"height:2px; width:60px; background:#0792ad; margin:14px auto 25px;\"><\/div>\r\n    <label style=\"font-size:13px; color:#5a564a; font-weight:600;\">Kullan\u0131c\u0131 Ad\u0131<\/label>\r\n    <input type=\"text\" id=\"kullaniciAdiInput\" style=\"width:100%; padding:11px; margin-top:6px; margin-bottom:16px; border:1px solid #ddd7c4; border-radius:6px; font-size:15px;\" required>\r\n    <label style=\"font-size:13px; color:#5a564a; font-weight:600;\">\u015eifre<\/label>\r\n    <input type=\"password\" id=\"sifreInput\" style=\"width:100%; padding:11px; margin-top:6px; margin-bottom:22px; border:1px solid #ddd7c4; border-radius:6px; font-size:15px;\" required>\r\n    <button type=\"submit\" id=\"girisButonu\" style=\"background:#0792ad; color:#fff; padding:14px; width:100%; border:none; border-radius:6px; font-weight:600; font-size:15px; letter-spacing:0.5px; cursor:pointer;\">Sisteme Giri\u015f Yap<\/button>\r\n    <div id=\"girisHata\" style=\"color:#c0392b; margin-top:15px; display:none; text-align:center; font-weight:600; font-size:14px;\"><\/div>\r\n  <\/form>\r\n\r\n  <div id=\"kullaniciPaneli\" style=\"display:none; justify-content:space-between; align-items:center; background:#fff; padding:16px 20px; border-radius:8px; margin-bottom:20px; border:1px solid #e3ddc9; border-left:4px solid #0792ad;\">\r\n    <div id=\"hosgeldinizAlani\" style=\"font-family:'Inter',sans-serif;\">Ho\u015f Geldiniz, <b id=\"gosterimIsim\" style=\"color:#0792ad;\"><\/b><\/div>\r\n    <div><button type=\"button\" id=\"cikisButonu\" style=\"background:#dc3545; color:white; border:none; padding:8px 15px; border-radius:6px; cursor:pointer; font-weight:600;\">\u00c7\u0131k\u0131\u015f Yap<\/button><\/div>\r\n  <\/div>\r\n\r\n  <div id=\"kullaniciAnaEkran\" style=\"display:none;\">\r\n    <div class=\"tab-buttons\" id=\"musteriTabButonlari\">\r\n      <button class=\"tab-btn active\" onclick=\"musteriTabAc('musteriYeniSiparisTab', this)\">Yeni Sipari\u015f<\/button>\r\n      <button class=\"tab-btn\" onclick=\"musteriTabAc('musteriTaslaklarTab', this)\">Taslaklar\u0131m<\/button>\r\n      <button class=\"tab-btn\" id=\"musteriRevizyonSekmeBtn\" onclick=\"musteriTabAc('musteriRevizyonTab', this)\">Revizyon<span id=\"revizyonSayacRozet\" style=\"display:none; background:#d9534f; color:#fff; border-radius:10px; padding:1px 7px; font-size:11px; font-weight:700; margin-left:6px;\"><\/span><\/button>\r\n      <button class=\"tab-btn\" onclick=\"musteriTabAc('musteriBekleyenTab', this); gecmisSiparislerimYukle();\">Sipari\u015f Takibi<\/button>\r\n      <button class=\"tab-btn\" onclick=\"musteriTabAc('musteriGecmisTab', this); gecmisSiparislerimYukle();\">Ge\u00e7mi\u015f Sipari\u015flerim<\/button>\r\n      <button class=\"tab-btn\" onclick=\"musteriTabAc('musteriSikAlinanTab', this); sikAlinanlarYukle();\">S\u0131k Ald\u0131klar\u0131m<\/button>\r\n      <button class=\"tab-btn\" onclick=\"musteriTabAc('musteriCariTab', this); musteriCariYukle();\">Cari Hesab\u0131m<\/button>\r\n    <\/div>\r\n\r\n    <div id=\"musteriYeniSiparisTab\" class=\"tab-content musteri-tab\" style=\"display:block;\">\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-bottom:20px;\">\r\n        <div id=\"acenteGonderimAlani\" style=\"display:none; margin-bottom:10px;\">\r\n          <label><b>Sipari\u015f kimin i\u00e7in?:<\/b><\/label><br>\r\n          <select id=\"secilenYat\" style=\"width:100%; padding:8px; margin-top:5px; border:1px solid #ccc; border-radius:4px;\">\r\n            <option value=\"\">Se\u00e7iminizi yap\u0131n<\/option>\r\n          <\/select>\r\n          <div style=\"margin-top:10px; border-top:1px dashed #ccc; padding-top:10px;\">\r\n            <input type=\"text\" id=\"yeniTekneAdi\" placeholder=\"Listede yoksa yeni tekne ekle...\" style=\"padding:6px; width:70%; box-sizing:border-box;\">\r\n            <button type=\"button\" id=\"yeniTekneEkleBtn\" style=\"background:#0792ad; color:white; border:none; padding:6px 12px; cursor:pointer;\">Tekne Ekle<\/button>\r\n          <\/div>\r\n        <\/div>\r\n        \r\n        <div id=\"siparisYeriAlani\" style=\"margin-top:15px; border-top:1px solid #ccc; padding-top:15px;\">\r\n          <label><b>Teslimat Nereye Yap\u0131lacak? (Zorunlu):<\/b><\/label><br>\r\n          <div style=\"margin-top:8px;\">\r\n            <input type=\"radio\" id=\"sYeriDepo\" name=\"siparisYeriRadyo\" value=\"Depo\"> <label for=\"sYeriDepo\" style=\"margin-right:20px; font-size:15px;\">Depo<\/label>\r\n            <input type=\"radio\" id=\"sYeriTekne\" name=\"siparisYeriRadyo\" value=\"Tekne\"> <label for=\"sYeriTekne\" style=\"font-size:15px;\">Tekne<\/label>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div id=\"formYazismaAlani\" style=\"display:none; margin-top:15px; padding:12px; background:#fdecea; border-left:4px solid #d9534f; border-radius:4px;\">\r\n          <b style=\"color:#a94442;\">\ud83d\udcac Sipari\u015f Yaz\u0131\u015fmas\u0131<\/b>\r\n          <div id=\"formYazismaAkisi\" style=\"margin-top:8px; font-size:13px; line-height:1.8; white-space:pre-line; color:#5a3a38;\"><\/div>\r\n        <\/div>\r\n\r\n        <div style=\"margin-top:15px; border-top:1px solid #ccc; padding-top:15px;\">\r\n          <label for=\"siparisNotu\"><b>\ud83d\udcdd Teslimat i\u00e7in not (opsiyonel):<\/b><\/label><br>\r\n          <span id=\"siparisNotuIpucu\" style=\"font-size:12px; color:#666;\">\u00d6rn: \"Yar\u0131n teslim ama bu ak\u015fama kadar laz\u0131m\" gibi \u00f6zel bir durum varsa buraya yazabilirsiniz \u2014 ayr\u0131ca WhatsApp'tan yazman\u0131za gerek kalmaz.<\/span>\r\n          <textarea id=\"siparisNotu\" placeholder=\"Varsa teslimat zaman\u0131 \/ \u00f6zel talimat notunuz...\" rows=\"2\" style=\"width:100%; padding:8px; margin-top:8px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box; font-family:inherit; resize:vertical;\"><\/textarea>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div style=\"margin-bottom:12px; position:relative;\">\r\n        <input type=\"text\" id=\"musteriUrunArama\" placeholder=\"\ud83d\udd0d \u00dcr\u00fcn ara... (\u00f6rn: badem, kekik, kaju)\" autocomplete=\"off\"\r\n               style=\"width:100%; padding:13px 40px 13px 14px; border:2px solid #0792ad; border-radius:8px; font-size:15px; box-sizing:border-box; font-family:inherit;\">\r\n        <button type=\"button\" id=\"musteriAramaTemizle\" onclick=\"musteriAramaSifirla()\" title=\"Aramay\u0131 temizle\"\r\n                style=\"display:none; position:absolute; right:10px; top:50%; transform:translateY(-50%); background:none; border:none; color:#8a8578; font-size:20px; line-height:1; cursor:pointer; padding:4px 8px;\">\u2715<\/button>\r\n      <\/div>\r\n\r\n      <div class=\"kraken-filtre-bari\" style=\"background:#0792ad; color:#fff; padding:15px; border-radius:8px; margin-bottom:20px; display:flex; gap:15px; box-shadow: 0 4px 6px rgba(0,0,0,0.1);\">\r\n        <div style=\"flex:1;\">\r\n          <label><b>Kategori:<\/b><\/label>\r\n          <select id=\"filtreKategori\" style=\"width:100%; padding:8px; margin-top:5px; border:1px solid #ccc; border-radius:4px; color:#333;\">\r\n            <option value=\"\">T\u00fcm Kategoriler<\/option>\r\n          <\/select>\r\n        <\/div>\r\n        <div style=\"flex:1;\">\r\n          <label><b>Alt Kategori:<\/b><\/label>\r\n          <select id=\"filtreAltKategori\" style=\"width:100%; padding:8px; margin-top:5px; border:1px solid #ccc; border-radius:4px; color:#333;\">\r\n            <option value=\"\">T\u00fcm Alt Kategoriler<\/option>\r\n          <\/select>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <h3 id=\"urunListesiBaslik\" style=\"color:#333; border-bottom:2px solid #000; padding-bottom:5px; margin-top:30px;\">\u00dcr\u00fcn Listesi<\/h3>\r\n      \r\n      <div class=\"urun-tablo-kapsayici\">\r\n        <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n          <thead>\r\n            <tr>\r\n              <th class=\"desktop-only\" style=\"padding:10px;\">Kategori<\/th>\r\n              <th class=\"desktop-only\" style=\"padding:10px;\">\u00dcr\u00fcn Ad\u0131<\/th>\r\n              <th class=\"desktop-only\" style=\"padding:10px;\">Birim<\/th>\r\n              <th class=\"mobile-only\" style=\"padding:10px;\">A\u00e7\u0131klama<\/th>\r\n              <th style=\"padding:10px;\">Birim Fiyat<\/th>\r\n              <th style=\"padding:10px;\">Kdv<\/th>\r\n              <th style=\"padding:10px; width:80px;\">Adet<\/th>\r\n              <th style=\"padding:10px; text-align:right;\">Kdv'li Tutar<\/th>\r\n            <\/tr>\r\n          <\/thead>\r\n          <tbody id=\"urunlerGovde\"><\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; text-align:right; margin-bottom:20px; font-size:16px;\">\r\n        <div>KDV'siz Tutar: <span id=\"toplam Kdvsiz\" style=\"font-weight:bold;\">0,00<\/span> TL<\/div>\r\n        <div>Toplam KDV: <span id=\"toplam Kdv\" style=\"font-weight:bold;\">0,00<\/span> TL<\/div>\r\n        <div id=\"siparisIndirimSatiri\" style=\"display:none; color:#0792ad;\">\u0130ndirim (<span id=\"siparisIndirimAdi\"><\/span>): -<span id=\"siparisIndirimTutari\">0,00<\/span> TL<\/div>\r\n        <div id=\"performansIndirimSatiri\" style=\"display:none; color:#28a745;\">\ud83c\udfc6 Performans \u0130ndirimi (<span id=\"performansIndirimAdi\"><\/span>): -<span id=\"performansIndirimTutari\">0,00<\/span> TL<\/div>\r\n        <div style=\"font-size:20px; margin-top:5px; color:#0792ad;\"><b>Genel Toplam: <span id=\"genelToplam\">0,00<\/span> TL<\/b><\/div>\r\n      <\/div>\r\n\r\n      <div style=\"display:flex; gap:15px;\">\r\n        <button type=\"button\" id=\"taslakKaydetBtn\" style=\"flex:1; background:#6c757d; color:white; padding:15px; border:none; border-radius:4px; font-weight:bold; cursor:pointer;\">Taslak Olarak Kaydet<\/button>\r\n        <button type=\"button\" id=\"siparisGonderBtn\" style=\"flex:1; background:#0792ad; color:white; padding:15px; border:none; border-radius:4px; font-weight:bold; cursor:pointer;\">Sipari\u015fi G\u00f6nder<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"musteriRevizyonTab\" class=\"tab-content musteri-tab\" style=\"display:none;\">\r\n      <div style=\"background:#fff; padding:20px; border:1px solid #ccc; border-radius:8px; margin-bottom:25px;\">\r\n        <h3 style=\"margin:0 0 6px 0; color:#a94442;\">\u21a9\ufe0f Revizyon Bekleyen Sipari\u015fler<\/h3>\r\n        <p style=\"font-size:13px; color:#5a564a; margin-bottom:15px;\">Bu sipari\u015fler d\u00fczenlemeniz i\u00e7in size geri g\u00f6nderildi. \u0130lgili sat\u0131ra t\u0131klay\u0131p sebebini g\u00f6rebilir, d\u00fczenleyip yeniden g\u00f6nderebilirsiniz.<\/p>\r\n        <div id=\"revizyonListesiAlani\" class=\"kraken-scroll-sarmalayici\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"musteriTaslaklarTab\" class=\"tab-content musteri-tab\" style=\"display:none;\">\r\n      <div style=\"background:#fff; padding:20px; border:1px solid #ccc; border-radius:8px; margin-bottom:25px;\">\r\n        <h3 style=\"margin:0 0 15px 0;\">Kay\u0131tl\u0131 Taslak Sipari\u015flerim<\/h3>\r\n        <div id=\"taslaklarListesiAlani\" class=\"kraken-scroll-sarmalayici\">Taslaklar y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n      <div id=\"taslakDetayKutusu\" style=\"display:none; background:#fff; padding:20px; border:2px solid #0792ad; border-radius:8px; margin-bottom:25px;\">\r\n        <h3 id=\"taslakBaslik\" style=\"margin-top:0; color:#0792ad;\">Taslak Sipari\u015f Detay\u0131<\/h3>\r\n        <div id=\"taslakOzetiIcerik\" style=\"background:#fff; padding:15px; border:1px solid #ddd; margin-bottom:15px; overflow-x:auto;\"><\/div>\r\n        <div style=\"display:flex; gap:10px;\">\r\n          <button type=\"button\" id=\"taslakUrunEkleBtn\" style=\"background:#0792ad; color:white; border:none; padding:10px 20px; border-radius:4px; font-weight:bold; cursor:pointer;\">\u00dcr\u00fcn Ekle \/ D\u00fczenle<\/button>\r\n          <button type=\"button\" id=\"taslakSilBtn\" style=\"background:#dc3545; color:white; border:none; padding:10px 20px; border-radius:4px; font-weight:bold; cursor:pointer;\">Listeyi Sil<\/button>\r\n          <button type=\"button\" id=\"taslakGonderBtn\" style=\"background:#0792ad; color:white; border:none; padding:10px 20px; border-radius:4px; font-weight:bold; cursor:pointer; margin-left:auto;\">Sipari\u015fi G\u00f6nder<\/button>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"musteriBekleyenTab\" class=\"tab-content musteri-tab\" style=\"display:none;\">\r\n      <div style=\"background:#fff; padding:20px; border:1px solid #ccc; border-radius:8px; margin-bottom:25px;\">\r\n        <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:8px;\">\r\n          <h3 style=\"margin:0;\">Sipari\u015f Takibi<\/h3>\r\n          <button type=\"button\" onclick=\"gecmisSiparislerimYukle()\" style=\"background:#f1ede0; color:#5a564a; border:none; padding:8px 14px; border-radius:4px; font-weight:600; cursor:pointer; font-size:13px;\">Yenile<\/button>\r\n        <\/div>\r\n        <p style=\"font-size:13px; color:#5a564a; margin-bottom:15px;\">Devam eden sipari\u015flerinizin hangi a\u015famada oldu\u011funu buradan takip edebilirsiniz. Teslim edilen sipari\u015fler <b>\"Ge\u00e7mi\u015f Sipari\u015flerim\"<\/b> sekmesine ge\u00e7er.<\/p>\r\n        <div id=\"bekleyenSiparislerimAlani\" class=\"kraken-scroll-sarmalayici\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"musteriGecmisTab\" class=\"tab-content musteri-tab\" style=\"display:none;\">\r\n      <div style=\"background:#fff; padding:20px; border:1px solid #ccc; border-radius:8px; margin-bottom:25px;\">\r\n        <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:15px;\">\r\n          <h3 style=\"margin:0;\">Ge\u00e7mi\u015f Sipari\u015flerim<\/h3>\r\n          <button type=\"button\" id=\"gecmisSiparislerYenileBtn\" style=\"background:#f1ede0; color:#5a564a; border:none; padding:8px 14px; border-radius:4px; font-weight:600; cursor:pointer; font-size:13px;\">Yenile<\/button>\r\n        <\/div>\r\n        <div class=\"kraken-filtre-bari\" style=\"background:#f8f6ef; padding:12px; border-radius:8px; margin-bottom:15px; display:flex; gap:12px; flex-wrap:wrap;\">\r\n          <div style=\"flex:1 1 150px;\">\r\n            <label style=\"font-size:13px;\"><b>Sipari\u015f No Ara:<\/b><\/label>\r\n            <input type=\"text\" id=\"gecmisFiltreSiparisNo\" placeholder=\"\u00f6rn. KRN-12345\" style=\"width:100%; padding:7px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n          <div style=\"flex:1 1 130px;\">\r\n            <label style=\"font-size:13px;\"><b>Ba\u015flang\u0131\u00e7 Tarihi:<\/b><\/label>\r\n            <input type=\"date\" id=\"gecmisFiltreBaslangic\" style=\"width:100%; padding:7px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n          <div style=\"flex:1 1 130px;\">\r\n            <label style=\"font-size:13px;\"><b>Biti\u015f Tarihi:<\/b><\/label>\r\n            <input type=\"date\" id=\"gecmisFiltreBitis\" style=\"width:100%; padding:7px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n        <\/div>\r\n        <div id=\"gecmisSiparislerimAlani\" class=\"kraken-scroll-sarmalayici\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"musteriSikAlinanTab\" class=\"tab-content musteri-tab\" style=\"display:none;\">\r\n      <div style=\"background:#fff; padding:20px; border:1px solid #ccc; border-radius:8px; margin-bottom:25px;\">\r\n        <div style=\"display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px; margin-bottom:5px;\">\r\n          <h3 style=\"margin:0;\">S\u0131k Ald\u0131klar\u0131m<\/h3>\r\n          <button type=\"button\" onclick=\"yeniSiparisSekmesineGec()\" style=\"background:#0792ad; color:#fff; border:none; padding:9px 16px; border-radius:6px; cursor:pointer; font-weight:600; font-size:13px;\">Sipari\u015f Ekran\u0131na D\u00f6n \u2192<\/button>\r\n        <\/div>\r\n        <p style=\"font-size:13px; color:#5a564a; margin-bottom:15px;\">En s\u0131k sipari\u015f etti\u011fin \u00fcr\u00fcnler burada listelenir. \u0130stedi\u011fin miktar\u0131 gir \u2014 se\u00e7imlerin otomatik olarak sepetine eklenir. Bitirince yukar\u0131daki <b>\"Sipari\u015f Ekran\u0131na D\u00f6n\"<\/b> butonuna bas: se\u00e7imlerin orada da haz\u0131r bekliyor olacak, diledi\u011fin kadar ba\u015fka \u00fcr\u00fcn daha ekleyip hepsini birlikte g\u00f6nderebilirsin.<\/p>\r\n        <div id=\"sikAlinanAlani\">Y\u00fckleniyor...<\/div>\r\n\r\n        <div style=\"background:#f8f6ef; padding:15px; border-radius:8px; margin-top:20px;\">\r\n          <h4 style=\"margin-top:0; font-size:15px;\">Ya da do\u011frudan buradan g\u00f6nder<\/h4>\r\n          <p style=\"font-size:12px; color:#8a8578; margin-bottom:12px;\">Sipari\u015fin sadece bu listedeki \u00fcr\u00fcnlerden olu\u015fuyorsa, \"Yeni Sipari\u015f\" sekmesine hi\u00e7 gitmeden buradan tamamlayabilirsin.<\/p>\r\n          <div id=\"sikAcenteYatAlani\" style=\"display:none; margin-bottom:10px;\">\r\n            <label style=\"font-size:13px;\"><b>Hangi tekne i\u00e7in?<\/b><\/label>\r\n            <select id=\"sikSecilenYat\" style=\"width:100%; padding:8px; margin-top:5px; border:1px solid #ccc; border-radius:4px;\"><\/select>\r\n          <\/div>\r\n          <div id=\"sikTeslimatYeriAlani\" style=\"margin-bottom:12px;\">\r\n            <label style=\"font-size:13px;\"><b>Teslimat Yeri:<\/b><\/label><br>\r\n            <button type=\"button\" id=\"sikYeriDepoBtn\" onclick=\"sikTeslimatYeriSec('Depo')\" style=\"padding:8px 18px; margin:6px 6px 0 0; border-radius:4px; border:1px solid #ccc; background:#fff; color:#333; cursor:pointer; font-weight:600;\">Depo<\/button>\r\n            <button type=\"button\" id=\"sikYeriTekneBtn\" onclick=\"sikTeslimatYeriSec('Tekne')\" style=\"padding:8px 18px; margin:6px 0 0 0; border-radius:4px; border:1px solid #ccc; background:#fff; color:#333; cursor:pointer; font-weight:600;\">Tekne<\/button>\r\n          <\/div>\r\n          <div style=\"margin-bottom:12px;\">\r\n            <label style=\"font-size:13px;\"><b>\ud83d\udcdd Teslimat i\u00e7in not (opsiyonel):<\/b><\/label>\r\n            <textarea id=\"sikSiparisNotu\" placeholder=\"Varsa teslimat zaman\u0131 \/ \u00f6zel talimat notunuz...\" rows=\"2\" style=\"width:100%; padding:8px; margin-top:6px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box; font-family:inherit; resize:vertical;\"><\/textarea>\r\n          <\/div>\r\n          <div style=\"display:flex; gap:10px;\">\r\n            <button type=\"button\" id=\"sikTaslakKaydetBtn\" style=\"flex:1; background:#6c757d; color:#fff; padding:13px; border:none; border-radius:4px; font-weight:bold; cursor:pointer;\">Taslak Olarak Kaydet<\/button>\r\n            <button type=\"button\" id=\"sikSiparisGonderBtn\" style=\"flex:1; background:#0792ad; color:#fff; padding:13px; border:none; border-radius:4px; font-weight:bold; cursor:pointer;\">Sipari\u015fi G\u00f6nder<\/button>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"musteriCariTab\" class=\"tab-content musteri-tab\" style=\"display:none;\">\r\n      <div style=\"background:#fff; padding:20px; border:1px solid #ccc; border-radius:8px; margin-bottom:25px;\">\r\n        <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:15px; flex-wrap:wrap; gap:10px;\">\r\n          <h3 style=\"margin:0;\">Cari Hesab\u0131m<\/h3>\r\n          <button type=\"button\" onclick=\"musteriCariYazdir()\" style=\"background:#0792ad; color:#fff; border:none; padding:9px 14px; border-radius:6px; cursor:pointer; font-weight:600;\">\ud83d\udda8\ufe0f Yazd\u0131r \/ PDF \u0130ndir<\/button>\r\n        <\/div>\r\n\r\n        <div class=\"kraken-filtre-bari\" style=\"background:#f8f6ef; padding:12px; border-radius:8px; margin-bottom:15px; display:flex; gap:12px; flex-wrap:wrap;\">\r\n          <div style=\"flex:1 1 180px;\">\r\n            <label style=\"font-size:13px;\"><b>Tekne:<\/b><\/label>\r\n            <select id=\"cariFiltreTekne\" style=\"width:100%; padding:7px; margin-top:4px; border:1px solid #ccc; border-radius:4px;\"><option value=\"\">T\u00fcm Teknelerim<\/option><\/select>\r\n          <\/div>\r\n          <div style=\"flex:1 1 180px;\">\r\n            <label style=\"font-size:13px;\"><b>S\u0131rala:<\/b><\/label>\r\n            <select id=\"cariSiralama\" style=\"width:100%; padding:7px; margin-top:4px; border:1px solid #ccc; border-radius:4px;\">\r\n              <option value=\"tarih\">Tarihe G\u00f6re (Yeni \u2192 Eski)<\/option>\r\n              <option value=\"tekne\">Tekneye G\u00f6re<\/option>\r\n            <\/select>\r\n          <\/div>\r\n          <div style=\"flex:1 1 140px;\">\r\n            <label style=\"font-size:13px;\"><b>Ba\u015flang\u0131\u00e7 Tarihi:<\/b><\/label>\r\n            <input type=\"date\" id=\"cariFiltreBaslangic\" style=\"width:100%; padding:7px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n          <div style=\"flex:1 1 140px;\">\r\n            <label style=\"font-size:13px;\"><b>Biti\u015f Tarihi:<\/b><\/label>\r\n            <input type=\"date\" id=\"cariFiltreBitis\" style=\"width:100%; padding:7px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div id=\"cariYazdirmaAlani\">\r\n          <div style=\"display:flex; gap:10px; flex-wrap:wrap; margin-bottom:15px;\">\r\n            <div style=\"flex:1 1 150px; background:#f8f6ef; padding:12px; border-radius:8px; text-align:center;\">\r\n              <div style=\"font-size:12px; color:#8a8578;\">Toplam Bor\u00e7<\/div>\r\n              <div id=\"cariToplamBorc\" style=\"font-size:18px; font-weight:bold; color:#2b2b28;\">0,00 TL<\/div>\r\n            <\/div>\r\n            <div style=\"flex:1 1 150px; background:#f8f6ef; padding:12px; border-radius:8px; text-align:center;\">\r\n              <div style=\"font-size:12px; color:#8a8578;\">Toplam \u00d6deme<\/div>\r\n              <div id=\"cariToplamTahsilat\" style=\"font-size:18px; font-weight:bold; color:#2b2b28;\">0,00 TL<\/div>\r\n            <\/div>\r\n            <div style=\"flex:1 1 150px; background:#fff3cd; padding:12px; border-radius:8px; text-align:center;\">\r\n              <div style=\"font-size:12px; color:#8a8578;\">Net Bakiye<\/div>\r\n              <div id=\"cariNetBakiye\" style=\"font-size:20px; font-weight:bold;\">0,00 TL<\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div id=\"cariHesabimAlani\">Y\u00fckleniyor...<\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div id=\"adminPaneli\" style=\"display:none;\">\r\n    <h2 style=\"border-bottom:2px solid #000; padding-bottom:10px;\">Y\u00f6netim Paneli<\/h2>\r\n    \r\n    <div class=\"tab-buttons\">\r\n      <button class=\"tab-btn active\" onclick=\"switchTab('admin', 'adminSiparisTab', this)\">Bekleyen Sipari\u015fler<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('admin', 'ortakTeslimatTab', this); teslimatListesiYukle();\">Teslim Edilecek Sipari\u015fler<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('admin', 'ortakMusteriBilgiTab', this); musteriBilgileriYukle();\">M\u00fc\u015fteri Bilgileri<\/button>\r\n      <button class=\"tab-btn\" id=\"adminIadeTalepBtn\" onclick=\"switchTab('admin', 'ortakIadeTalepTab', this); iadeTalepleriYukle();\">\u0130ade Talepleri<span id=\"adminIadeTalepRozet\" style=\"display:none; background:#d9534f; color:#fff; border-radius:10px; padding:1px 7px; font-size:11px; font-weight:700; margin-left:6px;\"><\/span><\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('admin', 'adminGecmisTab', this); adminGecmisSiparislerYukle();\">Ge\u00e7mi\u015f Sipari\u015fler<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('admin', 'adminAyarlarTab', this); kullanicilariListele('adm');\">Ayarlar ve Kullan\u0131c\u0131<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('admin', 'adminKampanyalarTab', this); kampanyalariListele();\">Kampanyalar<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('admin', 'adminCiroHedefleriTab', this); ciroHedefleriListele();\">Ciro Hedefleri<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('admin', 'saIstatistiklerTab', this); istatistikleriYukle();\">\u0130statistikler<\/button>\r\n    <\/div>\r\n    \r\n    <div id=\"adminSiparisTab\" class=\"tab-content admin-tab\" style=\"display:block;\">\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-bottom:20px;\">\r\n        <h4>Onay Bekleyen Sipari\u015fler<\/h4>\r\n        <div id=\"bekleyenSiparislerListesi\" class=\"kraken-scroll-sarmalayici\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n      \r\n      <div id=\"adminSiparisDetayKutusu\" style=\"display:none; background:#fff; padding:20px; border:2px solid #0792ad; border-radius:8px; margin-bottom:20px;\">\r\n        <h4 style=\"margin-top:0; color:#0792ad;\">Se\u00e7ilen Sipari\u015f Detay\u0131<\/h4>\r\n        <div id=\"adminSiparisDetayIcerik\" style=\"background:#fff; padding:15px; border:1px solid #ddd; margin-bottom:15px; overflow-x:auto;\"><\/div>\r\n        <div style=\"display:flex; gap:10px; flex-wrap:wrap;\">\r\n          <button type=\"button\" id=\"adminDetayOnaylaBtn\" style=\"background:#0792ad; color:white; border:none; padding:10px 20px; border-radius:4px; font-weight:bold; cursor:pointer; flex:1;\">Sipari\u015fi Onayla ve Bildirim G\u00f6nder<\/button>\r\n          <button type=\"button\" id=\"adminDetayRevizyonBtn\" style=\"background:#b8860b; color:white; border:none; padding:10px 20px; border-radius:4px; font-weight:bold; cursor:pointer;\">\u21a9\ufe0f M\u00fc\u015fteriye Geri G\u00f6nder<\/button>\r\n          <button type=\"button\" id=\"adminDetaySilBtn\" style=\"background:#dc3545; color:white; border:none; padding:10px 20px; border-radius:4px; font-weight:bold; cursor:pointer;\">Sipari\u015fi \u0130ptal Et \/ Sil<\/button>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n    \r\n    <div id=\"adminGecmisTab\" class=\"tab-content admin-tab\">\r\n      <div style=\"background:#fff; padding:20px; border:1px solid #ccc; border-radius:8px; margin-bottom:20px;\">\r\n        <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:15px;\">\r\n          <h4 style=\"margin:0;\">Ge\u00e7mi\u015f Sipari\u015fler (G\u00f6r\u00fcnt\u00fcleme)<\/h4>\r\n          <button type=\"button\" id=\"adminGecmisYenileBtn\" style=\"background:#f1ede0; color:#5a564a; border:none; padding:8px 14px; border-radius:4px; font-weight:600; cursor:pointer; font-size:13px;\">Yenile<\/button>\r\n        <\/div>\r\n        <div class=\"kraken-filtre-bari\" style=\"background:#f8f6ef; padding:12px; border-radius:8px; margin-bottom:15px; display:flex; gap:12px; flex-wrap:wrap;\">\r\n          <div style=\"flex:1 1 150px;\">\r\n            <label style=\"font-size:13px;\"><b>Sipari\u015f No Ara:<\/b><\/label>\r\n            <input type=\"text\" id=\"adminGecmisFiltreSiparisNo\" placeholder=\"\u00f6rn. KRN-12345\" style=\"width:100%; padding:7px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n          <div style=\"flex:1 1 130px;\">\r\n            <label style=\"font-size:13px;\"><b>Ba\u015flang\u0131\u00e7 Tarihi:<\/b><\/label>\r\n            <input type=\"date\" id=\"adminGecmisFiltreBaslangic\" style=\"width:100%; padding:7px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n          <div style=\"flex:1 1 130px;\">\r\n            <label style=\"font-size:13px;\"><b>Biti\u015f Tarihi:<\/b><\/label>\r\n            <input type=\"date\" id=\"adminGecmisFiltreBitis\" style=\"width:100%; padding:7px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n          <div style=\"flex:1 1 150px;\">\r\n            <label style=\"font-size:13px;\"><b>Teslimat Durumu:<\/b><\/label>\r\n            <select id=\"adminGecmisFiltreTeslimat\" style=\"width:100%; padding:7px; margin-top:4px; border:1px solid #ccc; border-radius:4px;\">\r\n              <option value=\"\">T\u00fcm\u00fc<\/option>\r\n              <option value=\"edildi\">\u2705 Teslim Edildi<\/option>\r\n              <option value=\"bekliyor\">\ud83d\udfe1 Teslim Bekliyor<\/option>\r\n            <\/select>\r\n          <\/div>\r\n        <\/div>\r\n        <div id=\"adminGecmisSiparislerAlani\" class=\"kraken-scroll-sarmalayici\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"adminAyarlarTab\" class=\"tab-content admin-tab\">\r\n      <div style=\"background:#fff; padding:20px; border:1px solid #ccc; border-radius:8px; margin-bottom:20px;\">\r\n        <h4>Sistem Ayarlar\u0131 (Bildirim Mailleri)<\/h4>\r\n        <label>Onaylanan sipari\u015flerin g\u00f6nderilece\u011fi adresler:<\/label>\r\n        <input type=\"text\" id=\"admMailListesi\" placeholder=\"ornek1@mail.com\" style=\"width:100%; padding:8px; margin-top:5px; margin-bottom:10px; border:1px solid #ccc; border-radius:4px;\">\r\n        <button type=\"button\" onclick=\"ayarlariKaydet('mail')\" style=\"background:#0792ad; color:white; border:none; padding:10px 20px; border-radius:4px; font-weight:bold; cursor:pointer;\">Mail Ayar\u0131n\u0131 Kaydet<\/button>\r\n      <\/div>\r\n      \r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px;\">\r\n        <h4>Yeni Kullan\u0131c\u0131 Ekle<\/h4>\r\n        <div class=\"admin-user-grid\" style=\"display:grid; grid-template-columns: 1fr 1fr; gap:10px;\">\r\n          <input type=\"text\" id=\"admKadi\" placeholder=\"Kullan\u0131c\u0131 Ad\u0131\" style=\"width:100%; padding:10px; border:1px solid #ccc; border-radius:4px;\">\r\n          <input type=\"text\" id=\"admSifre\" placeholder=\"\u015eifre\" style=\"width:100%; padding:10px; border:1px solid #ccc; border-radius:4px;\">\r\n          <select id=\"admKullaniciTipi\" style=\"width:100%; padding:10px; border:1px solid #ccc; border-radius:4px; grid-column:span 2;\">\r\n            <option value=\"Acente\">\ud83e\udd1d Acente (Deniz)<\/option>\r\n            <option value=\"Yat\">\u26f5 Yat (Deniz)<\/option>\r\n            <option value=\"Cafe\">\u2615 Cafe (Kara)<\/option>\r\n            <option value=\"Restoran\">\ud83c\udf7d\ufe0f Restoran (Kara)<\/option>\r\n            <option value=\"Otel\">\ud83c\udfe8 Otel (Kara)<\/option>\r\n          <\/select>\r\n          <input type=\"text\" id=\"admIsim\" placeholder=\"Firma \/ Tekne Ad\u0131\" style=\"width:100%; padding:10px; border:1px solid #ccc; border-radius:4px; grid-column:span 2;\">\r\n          <button type=\"button\" onclick=\"kullaniciEkle('adm')\" style=\"background:#0792ad; color:white; padding:10px; grid-column:span 2; border:none; border-radius:4px; font-weight:bold; cursor:pointer;\">Kullan\u0131c\u0131y\u0131 Kaydet<\/button>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-top:20px;\">\r\n        <h4>Kullan\u0131c\u0131lar (\u015eifre S\u0131f\u0131rlama)<\/h4>\r\n        <div id=\"admKullaniciListesiGovde\" class=\"kraken-scroll-sarmalayici\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"adminKampanyalarTab\" class=\"tab-content admin-tab\">\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px;\">\r\n        <h4 style=\"margin-top:0;\">Kampanyalar <span style=\"font-size:12px; font-weight:normal; color:#888;\">(g\u00f6r\u00fcnt\u00fcleme ama\u00e7l\u0131 \u2014 d\u00fczenleme S\u00fcper Admin'e \u00f6zeldir)<\/span><\/h4>\r\n        <div class=\"kraken-scroll-sarmalayici\" id=\"admKampanyaListesiAlani\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"adminCiroHedefleriTab\" class=\"tab-content admin-tab\">\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px;\">\r\n        <h4 style=\"margin-top:0;\">Ciro Hedefleri <span style=\"font-size:12px; font-weight:normal; color:#888;\">(g\u00f6r\u00fcnt\u00fcleme ama\u00e7l\u0131 \u2014 d\u00fczenleme S\u00fcper Admin'e \u00f6zeldir)<\/span><\/h4>\r\n        <div class=\"kraken-scroll-sarmalayici\" id=\"admCiroHedefListesiAlani\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <div id=\"ortakMusteriBilgiTab\" class=\"tab-content admin-tab\">\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px;\">\r\n        <div style=\"display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px; margin-bottom:8px;\">\r\n          <h4 style=\"margin:0;\">M\u00fc\u015fteri Bilgileri<\/h4>\r\n          <div style=\"display:flex; gap:8px; align-items:center; flex-wrap:wrap;\">\r\n            <input type=\"text\" id=\"musteriBilgiArama\" placeholder=\"\ud83d\udd0d M\u00fc\u015fteri ara...\" oninput=\"musteriBilgileriCiz()\" style=\"padding:8px 12px; border:1px solid #ccc; border-radius:4px; font-size:14px;\">\r\n            <button type=\"button\" onclick=\"musteriBilgileriYukle()\" style=\"background:#0792ad; color:white; border:none; padding:8px 15px; border-radius:4px; font-weight:bold; cursor:pointer;\">Yenile<\/button>\r\n          <\/div>\r\n        <\/div>\r\n        <p style=\"font-size:13px; color:#5a564a; margin-bottom:15px;\">M\u00fc\u015fterilerin fatura, ileti\u015fim ve lokasyon bilgileri. De\u011fi\u015fiklik i\u00e7in kart\u0131n sa\u011f \u00fcst\u00fcndeki <b>D\u00fczenle<\/b> butonuna bas\u0131n, i\u015finiz bitince <b>Kaydet<\/b> deyin.<\/p>\r\n        <div id=\"musteriBilgiListesiAlani\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"ortakIadeTalepTab\" class=\"tab-content admin-tab\">\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px;\">\r\n        <div style=\"display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px; margin-bottom:8px;\">\r\n          <h4 style=\"margin:0;\">\u0130ade Talepleri<\/h4>\r\n          <button type=\"button\" onclick=\"iadeTalepleriYukle()\" style=\"background:#b8860b; color:white; border:none; padding:8px 15px; border-radius:4px; font-weight:bold; cursor:pointer;\">Yenile<\/button>\r\n        <\/div>\r\n        <p style=\"font-size:13px; color:#5a564a; margin-bottom:15px;\">M\u00fc\u015fteriler taraf\u0131ndan olu\u015fturulan iade talepleri. <b>Onaylanana kadar<\/b> sipari\u015fte, stokta ve cari hesapta hi\u00e7bir de\u011fi\u015fiklik olmaz. Onay\/red yetkisi S\u00fcper Admin'e aittir.<\/p>\r\n        <div class=\"kraken-scroll-sarmalayici\" id=\"iadeTalepListesiAlani\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"ortakTeslimatTab\" class=\"tab-content admin-tab\">\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px;\">\r\n        <div style=\"display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px; margin-bottom:8px;\">\r\n          <h4 style=\"margin:0;\">Teslim Edilecek Sipari\u015fler<\/h4>\r\n          <button type=\"button\" onclick=\"teslimatListesiYukle()\" style=\"background:#0792ad; color:white; border:none; padding:8px 15px; border-radius:4px; font-weight:bold; cursor:pointer;\">Yenile<\/button>\r\n        <\/div>\r\n        <p style=\"font-size:13px; color:#5a564a; margin-bottom:15px;\">Onaylanm\u0131\u015f ancak hen\u00fcz teslim edilmemi\u015f sipari\u015fler. <b>\"Teslim Edildi\"<\/b> i\u015faretlendi\u011finde sipari\u015f bu listeden \u00e7\u0131kar ve Ge\u00e7mi\u015f Sipari\u015fler \/ Ciro ve \u0130adeler ekranlar\u0131nda teslim edilmi\u015f olarak g\u00f6r\u00fcn\u00fcr.<\/p>\r\n        <div class=\"kraken-scroll-sarmalayici\" id=\"teslimatListesiAlani\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div id=\"iadeIcerikKutusu\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.8); z-index:2147483647; justify-content:center; align-items:center;\">\r\n    <div style=\"background:#fff; width:92%; max-width:640px; max-height:85vh; overflow-y:auto; border-radius:8px; padding:20px; position:relative;\">\r\n      <h3 id=\"iadeIcerikBaslik\" style=\"margin-top:0; color:#b8860b; border-bottom:2px solid #b8860b; padding-bottom:10px;\">\u0130ade \u0130\u00e7eri\u011fi<\/h3>\r\n      <div id=\"iadeIcerikGovde\"><\/div>\r\n      <div style=\"text-align:right; margin-top:18px;\">\r\n        <button type=\"button\" onclick=\"document.getElementById('iadeIcerikKutusu').style.display='none';\" style=\"background:#6c757d; color:white; border:none; padding:10px 22px; border-radius:4px; font-weight:bold; cursor:pointer;\">Kapat<\/button>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div id=\"iadeKutusu\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.8); z-index:2147483647; justify-content:center; align-items:center;\">\r\n    <div style=\"background:#fff; width:92%; max-width:820px; max-height:90vh; overflow-y:auto; border-radius:8px; padding:20px; position:relative;\">\r\n      <h3 id=\"iadeBaslik\" style=\"margin-top:0; color:#b8860b; border-bottom:2px solid #b8860b; padding-bottom:10px;\">\u00dcr\u00fcn \u0130adesi<\/h3>\r\n      <div id=\"iadeGovde\" style=\"margin-bottom:15px;\">Y\u00fckleniyor...<\/div>\r\n      <div style=\"margin-bottom:15px;\">\r\n        <label id=\"iadeAciklamaEtiket\" style=\"font-size:13px; font-weight:bold;\">\u0130ade A\u00e7\u0131klamas\u0131 (opsiyonel)<\/label>\r\n        <input type=\"text\" id=\"iadeAciklama\" placeholder=\"\u00d6rn: \u00dcr\u00fcn hasarl\u0131 geldi \/ m\u00fc\u015fteri fazla sipari\u015f vermi\u015f\" style=\"width:100%; padding:8px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box; margin-top:5px;\">\r\n      <\/div>\r\n      <div style=\"display:flex; gap:10px; flex-wrap:wrap; justify-content:flex-end;\">\r\n        <button type=\"button\" id=\"iadeTumunuBtn\" onclick=\"iadeTumunuSec()\" style=\"background:#f1ede0; color:#5a564a; border:none; padding:10px 18px; border-radius:4px; font-weight:bold; cursor:pointer;\">T\u00fcm\u00fcn\u00fc \u0130ade Et<\/button>\r\n        <button type=\"button\" id=\"iadeKaydetBtn\" onclick=\"iadeKaydet(this)\" style=\"background:#b8860b; color:white; border:none; padding:10px 22px; border-radius:4px; font-weight:bold; cursor:pointer;\">\u0130adeyi Kaydet<\/button>\r\n        <button type=\"button\" onclick=\"document.getElementById('iadeKutusu').style.display='none';\" style=\"background:#6c757d; color:white; border:none; padding:10px 18px; border-radius:4px; font-weight:bold; cursor:pointer;\">Kapat<\/button>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div id=\"creatorPaneli\" style=\"display:none; max-width:1100px; margin:0 auto; padding:10px;\">\r\n    <h2 style=\"border-bottom:2px solid #000; padding-bottom:10px;\">Creator Paneli<\/h2>\r\n\r\n    <div id=\"creatorKullanicilarBolumu\">\r\n      <h3>Kullan\u0131c\u0131lar<\/h3>\r\n      <div style=\"background:#fff; border:1px solid #ccc; border-radius:8px; overflow-x:auto; margin-bottom:35px;\">\r\n        <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n          <thead>\r\n            <tr style=\"background:#f1ede0; border-bottom:2px solid #ccc;\">\r\n              <th style=\"padding:10px;\">Kullan\u0131c\u0131 Ad\u0131<\/th>\r\n              <th style=\"padding:10px;\">Ger\u00e7ek \u0130sim<\/th>\r\n              <th style=\"padding:10px;\">Rol<\/th>\r\n              <th style=\"padding:10px;\">Tip<\/th>\r\n              <th style=\"padding:10px;\">Durum<\/th>\r\n              <th style=\"padding:10px; text-align:center;\">\u0130\u015flem<\/th>\r\n            <\/tr>\r\n          <\/thead>\r\n          <tbody id=\"creatorKullaniciGovde\"><tr><td colspan=\"6\" style=\"text-align:center; padding:20px;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"creatorKomisyonBolumu\">\r\n    <h3>Komisyon Tablosu<\/h3>\r\n    <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-bottom:15px; display:flex; gap:15px; flex-wrap:wrap; align-items:flex-end;\">\r\n      <div style=\"flex:1 1 180px;\">\r\n        <label><b>Ay Filtresi:<\/b><\/label>\r\n        <select id=\"komisyonFiltreAy\" style=\"width:100%; padding:8px; margin-top:5px; border:1px solid #ccc; border-radius:4px;\"><option value=\"\">T\u00fcm Aylar<\/option><\/select>\r\n      <\/div>\r\n      <div style=\"flex:1 1 180px;\">\r\n        <label><b>M\u00fc\u015fteri Tipi:<\/b><\/label>\r\n        <select id=\"komisyonFiltreRol\" style=\"width:100%; padding:8px; margin-top:5px; border:1px solid #ccc; border-radius:4px;\"><option value=\"\">T\u00fcm Tipler<\/option><\/select>\r\n      <\/div>\r\n      <div class=\"no-print\">\r\n        <button type=\"button\" onclick=\"komisyonYazdir()\" style=\"background:#0792ad; color:#fff; border:none; padding:9px 14px; border-radius:6px; cursor:pointer; font-weight:600;\">\ud83d\udda8\ufe0f Yazd\u0131r \/ PDF \u0130ndir<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"no-print\" style=\"font-size:12px; color:#8a8578; margin-bottom:10px;\">\r\n      \ud83d\udca1 Bir sat\u0131ra t\u0131klayarak, o d\u00f6nemin tahsilat d\u00f6k\u00fcm\u00fcn\u00fc g\u00f6rebilirsiniz \u2014 hesaba ge\u00e7mi\u015f olanlar \u2705, hen\u00fcz gecikme s\u00fcresi dolmam\u0131\u015f olanlar \u23f3 ile ayr\u0131 g\u00f6sterilir. Hesaba ge\u00e7en hi\u00e7 yoksa bile, bekleyenler varsa sat\u0131r yine a\u00e7\u0131l\u0131r. Yazd\u0131rma\/PDF \u00e7\u0131kt\u0131s\u0131nda d\u00f6k\u00fcmler her zaman a\u00e7\u0131k gelir.\r\n    <\/div>\r\n\r\n    <div id=\"komisyonYazdirmaAlani\">\r\n      <div style=\"background:#fff; border:1px solid #ccc; border-radius:8px; overflow-x:auto; margin-bottom:20px;\">\r\n        <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n          <thead>\r\n            <tr style=\"background:#f1ede0; border-bottom:2px solid #ccc;\">\r\n              <th style=\"padding:10px;\">D\u00f6nem (Ay)<\/th>\r\n              <th style=\"padding:10px;\">Rol\/Tip<\/th>\r\n              <th style=\"padding:10px; text-align:right;\">Ger\u00e7ekle\u015fen Tahsilat<\/th>\r\n              <th style=\"padding:10px; text-align:right;\">Hesaba Ge\u00e7en Tahsilat<\/th>\r\n              <th style=\"padding:10px; text-align:center;\">Oran<\/th>\r\n              <th style=\"padding:10px; text-align:right;\">Hak Edilen Komisyon<\/th>\r\n            <\/tr>\r\n          <\/thead>\r\n          <tbody id=\"komisyonTabloGovde\"><\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; text-align:right; margin-bottom:40px;\">\r\n        <div style=\"font-size:20px; color:blue;\"><b>Filtrelenmi\u015f Toplam Komisyon: <span id=\"komisyonDipToplam\">0,00<\/span> TL<\/b><\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div id=\"superAdminPaneli\" style=\"display:none;\">\r\n    <h2 style=\"border-bottom:2px solid #000; padding-bottom:10px;\">Super Admin Paneli<\/h2>\r\n    \r\n    <div class=\"tab-buttons\">\r\n      <button class=\"tab-btn active\" onclick=\"switchTab('super', 'saRaporlarTab', this)\">Ciro ve \u0130adeler<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('super', 'adminSiparisTab', this); adminSiparisleriYukle();\">Bekleyen Sipari\u015fler<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('super', 'ortakTeslimatTab', this); teslimatListesiYukle();\">Teslim Edilecek Sipari\u015fler<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('super', 'ortakMusteriBilgiTab', this); musteriBilgileriYukle();\">M\u00fc\u015fteri Bilgileri<\/button>\r\n      <button class=\"tab-btn\" id=\"superIadeTalepBtn\" onclick=\"switchTab('super', 'ortakIadeTalepTab', this); iadeTalepleriYukle();\">\u0130ade Talepleri<span id=\"superIadeTalepRozet\" style=\"display:none; background:#d9534f; color:#fff; border-radius:10px; padding:1px 7px; font-size:11px; font-weight:700; margin-left:6px;\"><\/span><\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('super', 'saUrunYonetimiTab', this); saUrunTablosuGoster();\">\u00dcr\u00fcn ve Stok<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('super', 'saDuyurularTab', this); duyurulariListele(); duyuruMusteriListesiniYukle();\">Duyurular<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('super', 'saKampanyalarTab', this); kampanyalariListele(); kampanyaMusteriListesiniYukle();\">Kampanyalar<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('super', 'saCiroHedefleriTab', this); ciroHedefleriListele(); kampanyaMusteriListesiniYukle();\">Ciro Hedefleri<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('super', 'saAyarlarTab', this); kullanicilariListele('sa');\">Sistem Ayarlar\u0131<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('super', 'saGirisKayitlariTab', this); girisKayitlariYukle(); kullanimOzetiYukle();\">Giri\u015f Kay\u0131tlar\u0131<\/button>\r\n      <button class=\"tab-btn\" onclick=\"switchTab('super', 'saIstatistiklerTab', this); istatistikleriYukle();\">\u0130statistikler<\/button>\r\n    <\/div>\r\n\r\n    <div id=\"saRaporlarTab\" class=\"tab-content super-tab\" style=\"display:block;\">\r\n      <div class=\"kraken-filtre-bari\" style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-bottom:20px; display:flex; gap:15px; flex-wrap:wrap;\">\r\n        <div style=\"flex:1 1 150px;\">\r\n          <label><b>Ay Filtresi:<\/b><\/label>\r\n          <select id=\"raporFiltreAy\" style=\"width:100%; padding:8px; margin-top:5px; border:1px solid #ccc; border-radius:4px;\"><option value=\"\">T\u00fcm Aylar<\/option><\/select>\r\n        <\/div>\r\n        <div style=\"flex:1;\">\r\n          <label><b>M\u00fc\u015fteri Filtresi:<\/b><\/label>\r\n          <select id=\"raporFiltreMusteri\" style=\"width:100%; padding:8px; margin-top:5px; border:1px solid #ccc; border-radius:4px;\"><option value=\"\">T\u00fcm M\u00fc\u015fteriler<\/option><\/select>\r\n        <\/div>\r\n        <div style=\"flex:1;\">\r\n          <label><b>M\u00fc\u015fteri Tipi:<\/b><\/label>\r\n          <select id=\"raporFiltreRol\" style=\"width:100%; padding:8px; margin-top:5px; border:1px solid #ccc; border-radius:4px;\"><option value=\"\">T\u00fcm Tipler<\/option><\/select>\r\n        <\/div>\r\n        <div style=\"flex:1;\">\r\n          <label><b>Sipari\u015f No Ara:<\/b><\/label>\r\n          <input type=\"text\" id=\"raporFiltreSiparisNo\" placeholder=\"\u00f6rn. KRN-12345\" style=\"width:100%; padding:8px; margin-top:5px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n        <\/div>\r\n        <div style=\"flex:1;\">\r\n          <label><b>Ba\u015flang\u0131\u00e7 Tarihi:<\/b><\/label>\r\n          <input type=\"date\" id=\"raporFiltreBaslangic\" style=\"width:100%; padding:8px; margin-top:5px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n        <\/div>\r\n        <div style=\"flex:1;\">\r\n          <label><b>Biti\u015f Tarihi:<\/b><\/label>\r\n          <input type=\"date\" id=\"raporFiltreBitis\" style=\"width:100%; padding:8px; margin-top:5px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n        <\/div>\r\n      <\/div>\r\n      \r\n      <div class=\"gecmis-desktop-tablosu\" style=\"background:#fff; border:1px solid #ccc; border-radius:8px; overflow-x:auto; margin-bottom:20px;\">\r\n        <table style=\"width:100%; min-width:900px; border-collapse:collapse; text-align:left; font-size:14px; white-space:nowrap;\">\r\n          <thead>\r\n            <tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\">\r\n              <th style=\"padding:10px;\">Tarih<\/th>\r\n              <th style=\"padding:10px;\">M\u00fc\u015fteri<\/th>\r\n              <th style=\"padding:10px;\">Yat Ad\u0131<\/th>\r\n              <th style=\"padding:10px;\">M\u00fc\u015fteri Tipi<\/th>\r\n              <th style=\"padding:10px; text-align:right;\">Sipari\u015f Tutar\u0131<\/th>\r\n              <th style=\"padding:10px; text-align:right;\">KDV<\/th>\r\n              <th style=\"padding:10px; text-align:right;\">\u00dcr\u00fcn \u0130adesi<\/th><th style=\"padding:10px; text-align:right; background:#fff3cd;\">D\u00fczeltme<\/th>\r\n              <th style=\"padding:10px; text-align:right;\">Genel Toplam<\/th>\r\n              <th style=\"padding:10px;\">Onaylayan<\/th>\r\n              <th style=\"padding:10px; text-align:center;\">Teslimat<\/th><th style=\"padding:10px; text-align:center;\">Fatura No<\/th>\r\n              <th style=\"padding:10px; text-align:center;\">\u0130\u015flem<\/th>\r\n            <\/tr>\r\n          <\/thead>\r\n          <tbody id=\"raporTabloGovde\"><\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n      <div id=\"raporMobilKartlar\" class=\"gecmis-mobil-kartlar\"><\/div>\r\n      \r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; display:flex; justify-content:space-between; align-items:center;\">\r\n        <button type=\"button\" id=\"raporGuncelleBtn\" disabled style=\"background:#0792ad; color:white; padding:10px 20px; border:none; border-radius:4px; font-weight:bold; cursor:not-allowed; opacity:0.6;\">Listeyi G\u00fcncelle (\u0130adeleri Kaydet)<\/button>\r\n        <div style=\"text-align:right;\">\r\n          <div style=\"font-size:16px; color:#d39e00; margin-bottom:5px;\"><b>Toplam \u0130ade: <span id=\"raporIadeToplam\">0,00<\/span> TL<\/b><\/div>\r\n          <div style=\"font-size:20px; color:#0792ad;\"><b>Filtrelenmi\u015f Net Toplam: <span id=\"raporDipToplam\">0,00<\/span> TL<\/b><\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"saUrunYonetimiTab\" class=\"tab-content super-tab\">\r\n      <div style=\"background:#fff; padding:15px; border-radius:8px; margin-bottom:20px; border:1px solid #ccc;\">\r\n        <h4 style=\"margin-top:0;\">Yeni \u00dcr\u00fcn Ekle<\/h4>\r\n        <div style=\"display:grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); gap:10px;\">\r\n            <input type=\"text\" id=\"yUrunKat\" placeholder=\"Kategori\" style=\"padding:8px; border:1px solid #ccc; border-radius:4px;\">\r\n            <input type=\"text\" id=\"yUrunAltKat\" placeholder=\"Alt Kat\" style=\"padding:8px; border:1px solid #ccc; border-radius:4px;\">\r\n            <input type=\"text\" id=\"yUrunAdi\" placeholder=\"\u00dcr\u00fcn Ad\u0131\" style=\"padding:8px; border:1px solid #ccc; border-radius:4px;\">\r\n            <input type=\"text\" id=\"yUrunBrm\" placeholder=\"Birim\" style=\"padding:8px; border:1px solid #ccc; border-radius:4px;\">\r\n            <input type=\"text\" id=\"yUrunFyt\" placeholder=\"Fiyat\" style=\"padding:8px; border:1px solid #ccc; border-radius:4px;\">\r\n            <input type=\"number\" id=\"yUrunKdv\" placeholder=\"KDV%\" style=\"padding:8px; border:1px solid #ccc; border-radius:4px;\">\r\n            <select id=\"yUrunDurum\" style=\"padding:8px; border:1px solid #ccc; border-radius:4px;\">\r\n              <option value=\"Aktif\">Aktif<\/option>\r\n              <option value=\"Pasif\">Pasif<\/option>\r\n            <\/select>\r\n            <input type=\"number\" id=\"yUrunStok\" placeholder=\"Stok\" style=\"padding:8px; border:1px solid #ccc; border-radius:4px;\">\r\n            <select id=\"yUrunKonumRef\" style=\"padding:8px; border:1px solid #ccc; border-radius:4px; grid-column: span 2;\">\r\n              <option value=\"\">Listenin sonuna ekle (varsay\u0131lan)<\/option>\r\n            <\/select>\r\n            <select id=\"yUrunKonumYon\" style=\"padding:8px; border:1px solid #ccc; border-radius:4px;\">\r\n              <option value=\"altina\">Se\u00e7ilenin alt\u0131na ekle<\/option>\r\n              <option value=\"ustune\">Se\u00e7ilenin \u00fcst\u00fcne ekle<\/option>\r\n            <\/select>\r\n            <button type=\"button\" onclick=\"urunEkle()\" style=\"background:#0792ad; color:#fff; border:none; padding:10px; cursor:pointer; font-weight:bold; border-radius:4px;\">+ \u00dcr\u00fcn\u00fc Ekle<\/button>\r\n        <\/div>\r\n        <div style=\"margin-top:12px; padding-top:12px; border-top:1px solid #eee;\">\r\n          <label style=\"font-size:12px; font-weight:bold; color:#8a8578;\">G\u00d6R\u00dcN\u00dcRL\u00dcK \u2014 FAAL\u0130YET YER\u0130 (bo\u015f b\u0131rak\u0131rsan herkese g\u00f6r\u00fcn\u00fcr)<\/label>\r\n          <div style=\"display:flex; gap:16px; flex-wrap:wrap; margin-top:6px;\">\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"yUrun-gorunur-tip\" value=\"Deniz\"> \ud83c\udf0a Deniz (Acente\/Yat)<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"yUrun-gorunur-tip\" value=\"Kara\"> \ud83c\udfd9\ufe0f Kara (Cafe\/Restoran\/Otel)<\/label>\r\n          <\/div>\r\n        <\/div>\r\n        <div style=\"margin-top:12px; padding-top:12px; border-top:1px solid #eee;\">\r\n          <label style=\"font-size:12px; font-weight:bold; color:#8a8578;\">KARA F\u0130YAT KURALI<\/label>\r\n          <p style=\"font-size:12px; color:#999; margin:3px 0 8px;\">Girdi\u011fin fiyat Deniz m\u00fc\u015fteri fiyat\u0131d\u0131r. Kara m\u00fc\u015fterileri i\u00e7in: \"x0,9\" gibi bir \u00e7arpan (sonu\u00e7 her zaman yukar\u0131 yuvarlan\u0131r) ya da direkt bir sabit fiyat (\"115\" gibi) girebilirsin.<\/p>\r\n          <input type=\"text\" id=\"yUrunKaraKural\" placeholder=\"x0.9\" value=\"x0.9\" style=\"width:200px; padding:8px; border:1px solid #ccc; border-radius:4px;\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:15px; border-radius:8px; margin-bottom:20px; border:2px solid #0792ad;\">\r\n        <h4 style=\"margin-top:0; color:#0792ad;\">\ud83d\udcca Toplu \u00dcr\u00fcn G\u00fcncelleme (Excel)<\/h4>\r\n        <p style=\"font-size:13px; color:#5a564a; margin-bottom:15px;\">\u00d6nce g\u00fcncel listeyi indir, Excel'de istedi\u011fin de\u011fi\u015fiklikleri yap (fiyat, kategori, yeni\/silinen \u00fcr\u00fcnler \u2014 kolon d\u00fczenini bozma), sonra geri y\u00fckle. <b>Y\u00fckledi\u011fin dosya, sistemdeki \u00fcr\u00fcn listesinin TAMAMININ YER\u0130NE ge\u00e7er<\/b> \u2014 dosyada olmayan \u00fcr\u00fcnler silinir, yeni sat\u0131rlar eklenir, e\u015fle\u015fenler g\u00fcncellenir. Y\u00fcklemeden \u00f6nce sana tam olarak ka\u00e7 \u00fcr\u00fcn\u00fcn g\u00fcncellenece\u011fini\/eklenece\u011fini\/silinece\u011fini g\u00f6steren bir onay penceresi \u00e7\u0131kacak.<\/p>\r\n        <div style=\"display:flex; gap:10px; flex-wrap:wrap; align-items:center;\">\r\n          <button type=\"button\" onclick=\"urunExcelSablonuIndir()\" style=\"background:#f1ede0; color:#5a564a; border:none; padding:10px 16px; border-radius:4px; font-weight:600; cursor:pointer;\">\u2b07\ufe0f G\u00fcncel Listeyi Excel Olarak \u0130ndir<\/button>\r\n          <label style=\"background:#0792ad; color:#fff; padding:10px 16px; border-radius:4px; font-weight:600; cursor:pointer; margin:0;\">\r\n            \ud83d\udce4 Excel Y\u00fckle ve G\u00fcncelle\r\n            <input type=\"file\" id=\"urunExcelYukleInput\" accept=\".xlsx,.xls\" style=\"display:none;\" onchange=\"urunExcelYukle(this)\">\r\n          <\/label>\r\n        <\/div>\r\n        <div id=\"urunExcelSonucAlani\" style=\"margin-top:12px; font-size:14px;\"><\/div>\r\n      <\/div>\r\n\r\n      <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:10px;\">\r\n          <h3 style=\"margin:0;\">T\u00fcm \u00dcr\u00fcnler ve Stok Durumu<\/h3>\r\n          <input type=\"text\" id=\"saUrunArama\" placeholder=\"\u00dcr\u00fcn Ara...\" onkeyup=\"urunAramaGecikmeli()\" style=\"padding:8px; border:1px solid #ccc; border-radius:4px; width:200px;\">\r\n      <\/div>\r\n      \r\n      <div class=\"urun-tablo-kapsayici\" style=\"max-height: 500px;\">\r\n          <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:13px;\">\r\n              <thead>\r\n                <tr style=\"background:#f3f0e6;\">\r\n                  <th style=\"padding:8px;\">Kategori<\/th>\r\n                  <th style=\"padding:8px;\">\u00dcr\u00fcn Ad\u0131<\/th>\r\n                  <th style=\"padding:8px; width:60px;\">Birim<\/th>\r\n                  <th style=\"padding:8px; width:70px;\">Fiyat<\/th>\r\n                  <th style=\"padding:8px; width:50px;\">KDV<\/th>\r\n                  <th style=\"padding:8px; width:80px;\">Durum<\/th>\r\n                  <th style=\"padding:8px; width:60px;\">Stok<\/th>\r\n                  <th style=\"padding:8px; min-width:220px;\">G\u00f6r\u00fcn\u00fcrl\u00fck<\/th>\r\n                  <th style=\"padding:8px; width:90px;\">Kara Fiyat<\/th>\r\n                  <th style=\"padding:8px; text-align:center;\">\u0130\u015flem<\/th>\r\n                <\/tr>\r\n              <\/thead>\r\n              <tbody id=\"saUrunTabloGovde\"><\/tbody>\r\n          <\/table>\r\n      <\/div>\r\n\r\n      <h3 style=\"color:#dc3545; margin-top:30px;\">\u26a0\ufe0f Kritik Stoktaki \u00dcr\u00fcnler (T\u00fckeniyor)<\/h3>\r\n      <div class=\"urun-tablo-kapsayici\" style=\"border-color:#dc3545; max-height: 300px;\">\r\n          <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n              <thead>\r\n                <tr style=\"background:#ffe6e6; color:#dc3545;\">\r\n                  <th style=\"padding:10px;\">Kategori<\/th>\r\n                  <th style=\"padding:10px;\">\u00dcr\u00fcn Ad\u0131<\/th>\r\n                  <th style=\"padding:10px; text-align:center;\">Mevcut Stok<\/th>\r\n                  <th style=\"padding:10px; text-align:center;\">Durum<\/th>\r\n                <\/tr>\r\n              <\/thead>\r\n              <tbody id=\"saKritikUrunTabloGovde\"><\/tbody>\r\n          <\/table>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"saDuyurularTab\" class=\"tab-content super-tab\">\r\n      <div style=\"background:#fff; padding:20px; border-radius:8px; margin-bottom:20px; border:1px solid #ccc;\">\r\n        <h3 style=\"margin-top:0; color:#0792ad;\">\ud83d\udce2 Sistem Duyurusu Yay\u0131nla<\/h3>\r\n        <p style=\"font-size:13px; color:#5a564a; margin-bottom:12px;\">Yay\u0131nlad\u0131\u011f\u0131n duyuru, hen\u00fcz g\u00f6rmemi\u015f her kullan\u0131c\u0131n\u0131n giri\u015f yapt\u0131\u011f\u0131nda (ya da uygulamay\u0131 a\u00e7t\u0131\u011f\u0131nda) bir kere a\u00e7\u0131l\u0131r pencerede kar\u015f\u0131s\u0131na \u00e7\u0131kar. Fiyat de\u011fi\u015fimi, yeni \u00fcr\u00fcnler, sistem bak\u0131m\u0131 gibi konularda kullanabilirsin.<\/p>\r\n        <textarea id=\"duyuruMetniInput\" placeholder=\"\u00d6rn: Fiyat listemiz g\u00fcncellendi, g\u00fcncel fiyatlar\u0131 sipari\u015f ekran\u0131nda g\u00f6rebilirsiniz.\" rows=\"3\" maxlength=\"1000\" style=\"width:100%; padding:10px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box; font-family:inherit; resize:vertical;\"><\/textarea>\r\n        <div style=\"margin-top:10px;\">\r\n          <label style=\"font-size:12px; font-weight:bold; color:#8a8578;\">PERSONEL<\/label>\r\n          <div style=\"display:flex; gap:16px; flex-wrap:wrap; margin-top:6px;\">\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"duyuru-hedef-kutu\" value=\"super admin\" checked> S\u00fcper Admin<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"duyuru-hedef-kutu\" value=\"admin\" checked> Admin<\/label>\r\n          <\/div>\r\n        <\/div>\r\n        <div style=\"margin-top:10px;\">\r\n          <label style=\"font-size:12px; font-weight:bold; color:#8a8578;\">M\u00dc\u015eTER\u0130LER (Kullan\u0131c\u0131 Tipi)<\/label>\r\n          <div style=\"display:flex; gap:16px; flex-wrap:wrap; margin-top:6px;\">\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"duyuru-hedef-isletme\" value=\"Acente\" checked onchange=\"duyuruRolDegisti()\"> \ud83e\udd1d Acente<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"duyuru-hedef-isletme\" value=\"Yat\" checked onchange=\"duyuruRolDegisti()\"> \u26f5 Yat<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"duyuru-hedef-isletme\" value=\"Cafe\" checked onchange=\"duyuruRolDegisti()\"> \u2615 Cafe<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"duyuru-hedef-isletme\" value=\"Restoran\" checked onchange=\"duyuruRolDegisti()\"> \ud83c\udf7d\ufe0f Restoran<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"duyuru-hedef-isletme\" value=\"Otel\" checked onchange=\"duyuruRolDegisti()\"> \ud83c\udfe8 Otel<\/label>\r\n          <\/div>\r\n        <\/div>\r\n        <div id=\"duyuruMusteriBolumu\" style=\"margin-top:14px;\">\r\n          <label style=\"font-size:12px; font-weight:bold; color:#8a8578;\">VEYA BEL\u0130RL\u0130 M\u00dc\u015eTER\u0130LER\u0130 SE\u00c7<\/label>\r\n          <p id=\"duyuruMusteriAciklama\" style=\"font-size:12px; color:#999; margin:3px 0 8px;\"><\/p>\r\n          <input type=\"text\" id=\"duyuruMusteriArama\" placeholder=\"\u0130sim ara...\" style=\"width:100%; padding:8px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box; margin-bottom:8px;\" oninput=\"duyuruMusteriListesiniFiltrele()\">\r\n          <div id=\"duyuruMusteriListesi\" style=\"max-height:180px; overflow-y:auto; border:1px solid #eee; border-radius:6px; padding:8px;\">Y\u00fckleniyor...<\/div>\r\n        <\/div>\r\n        <div style=\"display:flex; justify-content:space-between; align-items:center; margin-top:10px;\">\r\n          <span id=\"duyuruSonucAlani\" style=\"font-size:13px;\"><\/span>\r\n          <button type=\"button\" onclick=\"duyuruYayinlaTikla()\" style=\"background:#0792ad; color:#fff; border:none; padding:10px 20px; border-radius:6px; font-weight:600; cursor:pointer;\">Duyuruyu Yay\u0131nla<\/button>\r\n        <\/div>\r\n        <div style=\"margin-top:16px; border-top:1px solid #eee; padding-top:12px;\">\r\n          <div style=\"font-size:12px; font-weight:bold; color:#8a8578; margin-bottom:8px;\">SON DUYURULAR (test ettikten sonra silmeyi unutma!)<\/div>\r\n          <div id=\"duyuruListesiAlani\" style=\"font-size:13px; color:#666;\">Y\u00fckleniyor...<\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"saKampanyalarTab\" class=\"tab-content super-tab\">\r\n      <div style=\"background:#fff; padding:20px; border-radius:8px; margin-bottom:20px; border:1px solid #ccc;\">\r\n        <h3 style=\"margin-top:0; color:#0792ad;\">\ud83d\udcb0 Yeni Kampanya \/ \u0130ndirim Olu\u015ftur<\/h3>\r\n\r\n        <div style=\"margin-bottom:12px;\">\r\n          <label style=\"font-size:13px;\"><b>Kampanya Ad\u0131:<\/b><\/label>\r\n          <input type=\"text\" id=\"kampanyaAd\" placeholder=\"\u00d6rn: Yaz Kampanyas\u0131, Otel X Sabit Fiyat\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n        <\/div>\r\n\r\n        <div style=\"display:flex; gap:12px; flex-wrap:wrap; margin-bottom:12px;\">\r\n          <div style=\"flex:1 1 150px;\">\r\n            <label style=\"font-size:13px;\"><b>\u0130ndirim Tipi:<\/b><\/label>\r\n            <select id=\"kampanyaTip\" onchange=\"kampanyaFormGuncelle()\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px;\">\r\n              <option value=\"yuzde\">Y\u00fczde (%)<\/option>\r\n              <option value=\"tutar\">Sabit Tutar (TL)<\/option>\r\n              <option value=\"sabit_fiyat\">Sabit Fiyat (TL) \u2014 anla\u015fmal\u0131 fiyat<\/option>\r\n            <\/select>\r\n          <\/div>\r\n          <div style=\"flex:1 1 120px;\">\r\n            <label style=\"font-size:13px;\"><b>De\u011fer:<\/b><\/label>\r\n            <input type=\"text\" id=\"kampanyaDeger\" placeholder=\"\u00d6rn: 10\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n          <div style=\"flex:1 1 150px;\">\r\n            <label style=\"font-size:13px;\"><b>Kapsam:<\/b><\/label>\r\n            <select id=\"kampanyaKapsam\" onchange=\"kampanyaFormGuncelle()\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px;\">\r\n              <option value=\"siparis\">Sipari\u015f Geneli<\/option>\r\n              <option value=\"kategori\">Kategori<\/option>\r\n              <option value=\"urun\">\u00dcr\u00fcn<\/option>\r\n            <\/select>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div id=\"kampanyaKategoriAlani\" style=\"display:none; margin-bottom:12px;\">\r\n          <label style=\"font-size:13px;\"><b>Kategori:<\/b><\/label>\r\n          <input type=\"text\" id=\"kampanyaKategori\" placeholder=\"\u00dcr\u00fcn listesindeki kategori ad\u0131yla B\u0130REB\u0130R ayn\u0131 olmal\u0131\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n        <\/div>\r\n        <div id=\"kampanyaUrunAlani\" style=\"display:none; margin-bottom:12px;\">\r\n          <label style=\"font-size:13px;\"><b>\u00dcr\u00fcn Ad\u0131:<\/b><\/label>\r\n          <input type=\"text\" id=\"kampanyaUrunAdi\" placeholder=\"\u00dcr\u00fcn listesindeki ad\u0131yla B\u0130REB\u0130R ayn\u0131 olmal\u0131\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box; margin-bottom:6px;\">\r\n          <label style=\"font-size:13px;\"><b>Birim:<\/b><\/label>\r\n          <input type=\"text\" id=\"kampanyaBirim\" placeholder=\"\u00d6rn: VAKUM 1 KG\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n        <\/div>\r\n\r\n        <div style=\"display:flex; gap:12px; flex-wrap:wrap; margin-bottom:12px;\">\r\n          <div style=\"flex:1 1 150px;\">\r\n            <label style=\"font-size:13px;\"><b>Ba\u015flang\u0131\u00e7 Tarihi (opsiyonel):<\/b><\/label>\r\n            <input type=\"date\" id=\"kampanyaBaslangic\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n          <div style=\"flex:1 1 150px;\">\r\n            <label style=\"font-size:13px;\"><b>Biti\u015f Tarihi (bo\u015f = s\u00fcresiz):<\/b><\/label>\r\n            <input type=\"date\" id=\"kampanyaBitis\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div style=\"margin-bottom:10px;\">\r\n          <label style=\"font-size:12px; font-weight:bold; color:#8a8578;\">K\u0130MLER G\u00d6RS\u00dcN? (Kullan\u0131c\u0131 Tipi)<\/label>\r\n          <div style=\"display:flex; gap:16px; flex-wrap:wrap; margin-top:6px;\">\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"kampanya-hedef-isletme\" value=\"Acente\"> \ud83e\udd1d Acente<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"kampanya-hedef-isletme\" value=\"Yat\"> \u26f5 Yat<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"kampanya-hedef-isletme\" value=\"Cafe\"> \u2615 Cafe<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"kampanya-hedef-isletme\" value=\"Restoran\"> \ud83c\udf7d\ufe0f Restoran<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"kampanya-hedef-isletme\" value=\"Otel\"> \ud83c\udfe8 Otel<\/label>\r\n          <\/div>\r\n        <\/div>\r\n        <div style=\"margin-bottom:14px;\">\r\n          <label style=\"font-size:12px; font-weight:bold; color:#8a8578;\">VEYA BEL\u0130RL\u0130 M\u00dc\u015eTER\u0130LER<\/label>\r\n          <input type=\"text\" id=\"kampanyaMusteriArama\" placeholder=\"\u0130sim ara...\" style=\"width:100%; padding:8px; margin-top:6px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box; margin-bottom:8px;\" oninput=\"kampanyaMusteriListesiniFiltrele()\">\r\n          <div id=\"kampanyaMusteriListesi\" style=\"max-height:150px; overflow-y:auto; border:1px solid #eee; border-radius:6px; padding:8px;\">Y\u00fckleniyor...<\/div>\r\n        <\/div>\r\n\r\n        <button type=\"button\" onclick=\"kampanyaOlustur()\" style=\"background:#0792ad; color:#fff; border:none; padding:12px 24px; border-radius:6px; font-weight:600; cursor:pointer;\">Kampanyay\u0131 Olu\u015ftur<\/button>\r\n        <span id=\"kampanyaSonucAlani\" style=\"margin-left:12px; font-size:13px;\"><\/span>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:20px; border-radius:8px; border:1px solid #ccc;\">\r\n        <div style=\"display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px; margin-bottom:15px;\">\r\n          <h3 style=\"margin:0;\">T\u00fcm Kampanyalar<\/h3>\r\n          <button type=\"button\" onclick=\"kampanyalariTopluPasiflestir()\" style=\"background:#dc3545; color:#fff; border:none; padding:8px 14px; border-radius:4px; font-weight:600; cursor:pointer; font-size:13px;\">T\u00fcm Aktifleri Pasifle\u015ftir (Sezon Sonu)<\/button>\r\n        <\/div>\r\n        <div class=\"kraken-scroll-sarmalayici\" id=\"kampanyaListesiAlani\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"saCiroHedefleriTab\" class=\"tab-content super-tab\">\r\n      <div style=\"background:#fff; padding:20px; border-radius:8px; margin-bottom:20px; border:1px solid #ccc;\">\r\n        <h3 style=\"margin-top:0; color:#0792ad;\">\ud83c\udfaf Yeni Ciro Hedefi Olu\u015ftur<\/h3>\r\n\r\n        <div style=\"margin-bottom:12px;\">\r\n          <label style=\"font-size:13px;\"><b>Hedef Ad\u0131:<\/b><\/label>\r\n          <input type=\"text\" id=\"ciroAd\" placeholder=\"\u00d6rn: Haftal\u0131k Performans, Yaz Sezonu Hedefi\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n        <\/div>\r\n\r\n        <div style=\"margin-bottom:12px;\">\r\n          <label style=\"font-size:13px;\"><b>Hedef Tipi:<\/b><\/label>\r\n          <select id=\"ciroHedefTipi\" onchange=\"ciroFormGuncelle()\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px;\">\r\n            <option value=\"donemsel\">D\u00f6nemsel (kayan pencere, \u00f6rn. haftal\u0131k) \u2192 Otomatik \u0130ndirim<\/option>\r\n            <option value=\"tek_seferlik\">Tek Seferlik (belirli tarihe kadar) \u2192 Hediye \u00c7eki<\/option>\r\n          <\/select>\r\n        <\/div>\r\n\r\n        <div style=\"display:flex; gap:12px; flex-wrap:wrap; margin-bottom:12px;\">\r\n          <div style=\"flex:1 1 150px;\">\r\n            <label style=\"font-size:13px;\"><b>Hedef Ciro (TL):<\/b><\/label>\r\n            <input type=\"text\" id=\"ciroHedefCiro\" placeholder=\"\u00d6rn: 10000\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n          <div id=\"ciroGunSayisiAlani\" style=\"flex:1 1 150px;\">\r\n            <label style=\"font-size:13px;\"><b>De\u011ferlendirme S\u00fcresi (g\u00fcn):<\/b><\/label>\r\n            <input type=\"text\" id=\"ciroGunSayisi\" value=\"7\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n          <div id=\"ciroBitisTarihiAlani\" style=\"display:none; flex:1 1 150px;\">\r\n            <label style=\"font-size:13px;\"><b>Hedef Tarihi:<\/b><\/label>\r\n            <input type=\"date\" id=\"ciroBitisTarihi\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div style=\"display:flex; gap:12px; flex-wrap:wrap; margin-bottom:12px;\">\r\n          <div id=\"ciroOdulYuzdeAlani\" style=\"flex:1 1 150px;\">\r\n            <label style=\"font-size:13px;\"><b>\u00d6d\u00fcl: \u0130ndirim Y\u00fczdesi (%):<\/b><\/label>\r\n            <input type=\"text\" id=\"ciroOdulYuzde\" placeholder=\"\u00d6rn: 5\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n          <div id=\"ciroGecerlilikAlani\" style=\"flex:1 1 150px;\">\r\n            <label style=\"font-size:13px;\"><b>\u0130ndirim Ge\u00e7erlilik (g\u00fcn):<\/b><\/label>\r\n            <input type=\"text\" id=\"ciroGecerlilikGun\" value=\"7\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n          <div id=\"ciroOdulTutarAlani\" style=\"display:none; flex:1 1 150px;\">\r\n            <label style=\"font-size:13px;\"><b>\u00d6d\u00fcl: Hediye \u00c7eki Tutar\u0131 (TL):<\/b><\/label>\r\n            <input type=\"text\" id=\"ciroOdulTutar\" placeholder=\"\u00d6rn: 500\" style=\"width:100%; padding:8px; margin-top:4px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div id=\"ciroBirlesirAlani\" style=\"margin-bottom:12px;\">\r\n          <label style=\"font-size:14px; display:flex; align-items:center; gap:6px; cursor:pointer;\"><input type=\"checkbox\" id=\"ciroBirlesir\"> Bu indirim, ayn\u0131 anda ge\u00e7erli bir kampanyayla <b>birlikte uygulanabilsin<\/b> (i\u015faretlemezsen, hangisi daha avantajl\u0131ysa sadece o uygulan\u0131r)<\/label>\r\n        <\/div>\r\n\r\n        <div style=\"margin-bottom:10px;\">\r\n          <label style=\"font-size:12px; font-weight:bold; color:#8a8578;\">K\u0130MLER \u0130\u00c7\u0130N? (Kullan\u0131c\u0131 Tipi)<\/label>\r\n          <div style=\"display:flex; gap:16px; flex-wrap:wrap; margin-top:6px;\">\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"ciro-hedef-isletme\" value=\"Acente\"> \ud83e\udd1d Acente<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"ciro-hedef-isletme\" value=\"Yat\"> \u26f5 Yat<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"ciro-hedef-isletme\" value=\"Cafe\"> \u2615 Cafe<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"ciro-hedef-isletme\" value=\"Restoran\"> \ud83c\udf7d\ufe0f Restoran<\/label>\r\n            <label style=\"font-size:14px; display:flex; align-items:center; gap:5px; cursor:pointer;\"><input type=\"checkbox\" class=\"ciro-hedef-isletme\" value=\"Otel\"> \ud83c\udfe8 Otel<\/label>\r\n          <\/div>\r\n        <\/div>\r\n        <div style=\"margin-bottom:14px;\">\r\n          <label style=\"font-size:12px; font-weight:bold; color:#8a8578;\">VEYA BEL\u0130RL\u0130 M\u00dc\u015eTER\u0130LER<\/label>\r\n          <input type=\"text\" id=\"ciroMusteriArama\" placeholder=\"\u0130sim ara...\" style=\"width:100%; padding:8px; margin-top:6px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box; margin-bottom:8px;\" oninput=\"ciroMusteriListesiniFiltrele()\">\r\n          <div id=\"ciroMusteriListesi\" style=\"max-height:150px; overflow-y:auto; border:1px solid #eee; border-radius:6px; padding:8px;\">Y\u00fckleniyor...<\/div>\r\n        <\/div>\r\n\r\n        <button type=\"button\" onclick=\"ciroHedefiOlustur()\" style=\"background:#0792ad; color:#fff; border:none; padding:12px 24px; border-radius:6px; font-weight:600; cursor:pointer;\">Hedefi Olu\u015ftur<\/button>\r\n        <span id=\"ciroSonucAlani\" style=\"margin-left:12px; font-size:13px;\"><\/span>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:20px; border-radius:8px; border:1px solid #ccc;\">\r\n        <h3 style=\"margin-top:0;\">T\u00fcm Ciro Hedefleri<\/h3>\r\n        <div class=\"kraken-scroll-sarmalayici\" id=\"ciroHedefListesiAlani\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"saAyarlarTab\" class=\"tab-content super-tab\">\r\n      <div style=\"background:#fff; padding:20px; border:1px solid #ccc; border-radius:8px; margin-bottom:20px;\">\r\n        <h4 style=\"margin-top:0; color:#dc3545;\">Kritik Stok Uyar\u0131 Seviyesi<\/h4>\r\n        <label>Sistemdeki stok miktar\u0131 bu say\u0131n\u0131n alt\u0131na d\u00fc\u015ft\u00fc\u011f\u00fcnde \u00fcr\u00fcnler k\u0131rm\u0131z\u0131 ile i\u015faretlenir:<\/label>\r\n        <div style=\"display:flex; gap:10px; margin-top:10px;\">\r\n           <input type=\"number\" id=\"saKritikStok\" style=\"width:120px; padding:10px; border:1px solid #ccc; border-radius:4px; font-weight:bold; text-align:center;\">\r\n           <button type=\"button\" onclick=\"ayarlariKaydet('stok')\" style=\"background:#0792ad; color:white; border:none; padding:10px 20px; border-radius:4px; font-weight:bold; cursor:pointer;\">Seviyeyi Kaydet<\/button>\r\n        <\/div>\r\n        <hr style=\"margin:20px 0;\">\r\n        <h4>Sistem Ayarlar\u0131 (Bildirim Mailleri)<\/h4>\r\n        <label>Onaylanan sipari\u015flerin g\u00f6nderilece\u011fi adresler (Virg\u00fclle ay\u0131r\u0131n):<\/label>\r\n        <div style=\"display:flex; gap:10px; margin-top:10px;\">\r\n           <input type=\"text\" id=\"saMailListesi\" placeholder=\"ornek1@mail.com\" style=\"flex:1; padding:10px; border:1px solid #ccc; border-radius:4px;\">\r\n           <button type=\"button\" onclick=\"ayarlariKaydet('mail')\" style=\"background:#0792ad; color:white; border:none; padding:10px 20px; border-radius:4px; font-weight:bold; cursor:pointer;\">Mail Ayar\u0131n\u0131 Kaydet<\/button>\r\n        <\/div>\r\n        <hr style=\"margin:20px 0;\">\r\n        <h4>Kredi Kart\u0131 Hesaba Ge\u00e7i\u015f S\u00fcresi<\/h4>\r\n        <label>Kredi kart\u0131yla al\u0131nan bir tahsilat, ka\u00e7 g\u00fcn sonra \"hak edilmi\u015f\" say\u0131ls\u0131n (Komisyon sekmesinde)? Banka\/anla\u015fma de\u011fi\u015firse buray\u0131 g\u00fcncelleyin:<\/label>\r\n        <div style=\"display:flex; gap:10px; margin-top:10px; align-items:center;\">\r\n           <input type=\"number\" id=\"saKrediKartiGecikme\" min=\"0\" style=\"width:120px; padding:10px; border:1px solid #ccc; border-radius:4px; font-weight:bold; text-align:center;\">\r\n           <span>g\u00fcn<\/span>\r\n           <button type=\"button\" onclick=\"ayarlariKaydet('kart')\" style=\"background:#0792ad; color:white; border:none; padding:10px 20px; border-radius:4px; font-weight:bold; cursor:pointer;\">S\u00fcreyi Kaydet<\/button>\r\n        <\/div>\r\n      <\/div>\r\n      \r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px;\">\r\n        <h4>Yeni Kullan\u0131c\u0131 Ekle<\/h4>\r\n        <div class=\"admin-user-grid\" style=\"display:grid; grid-template-columns: 1fr 1fr; gap:10px;\">\r\n          <input type=\"text\" id=\"saKadi\" placeholder=\"Kullan\u0131c\u0131 Ad\u0131\" style=\"width:100%; padding:10px; border:1px solid #ccc; border-radius:4px;\">\r\n          <input type=\"text\" id=\"saSifre\" placeholder=\"\u015eifre\" style=\"width:100%; padding:10px; border:1px solid #ccc; border-radius:4px;\">\r\n          <select id=\"saKullaniciTipi\" style=\"width:100%; padding:10px; border:1px solid #ccc; border-radius:4px; grid-column:span 2;\">\r\n            <option value=\"Acente\">\ud83e\udd1d Acente (Deniz)<\/option>\r\n            <option value=\"Yat\">\u26f5 Yat (Deniz)<\/option>\r\n            <option value=\"Cafe\">\u2615 Cafe (Kara)<\/option>\r\n            <option value=\"Restoran\">\ud83c\udf7d\ufe0f Restoran (Kara)<\/option>\r\n            <option value=\"Otel\">\ud83c\udfe8 Otel (Kara)<\/option>\r\n            <option value=\"Admin\">\ud83d\udd27 Admin (Personel)<\/option>\r\n          <\/select>\r\n          <input type=\"text\" id=\"saIsim\" placeholder=\"\u0130sim \/ Firma \/ Tekne Ad\u0131\" style=\"width:100%; padding:10px; border:1px solid #ccc; border-radius:4px; grid-column:span 2;\">\r\n          <button type=\"button\" onclick=\"kullaniciEkle('sa')\" style=\"background:#0792ad; color:white; padding:10px; grid-column:span 2; border:none; border-radius:4px; font-weight:bold; cursor:pointer;\">Kullan\u0131c\u0131y\u0131 Kaydet<\/button>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-top:20px;\">\r\n        <h4>Kullan\u0131c\u0131lar (\u015eifre S\u0131f\u0131rlama)<\/h4>\r\n        <div id=\"saKullaniciListesiGovde\" class=\"kraken-scroll-sarmalayici\">Y\u00fckleniyor...<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"saGirisKayitlariTab\" class=\"tab-content super-tab\">\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-bottom:15px;\">\r\n        <h4 style=\"margin-top:0;\">\ud83d\udcca Kullan\u0131m \u00d6zeti \u2014 Kim, Ne Zaman, Ne S\u0131kl\u0131kta Giri\u015f Yap\u0131yor<\/h4>\r\n        <div class=\"urun-tablo-kapsayici\" style=\"max-height:400px;\">\r\n          <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n            <thead>\r\n              <tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\">\r\n                <th style=\"padding:10px;\">Kullan\u0131c\u0131<\/th>\r\n                <th style=\"padding:10px;\">Rol\/Tip<\/th>\r\n                <th style=\"padding:10px;\">Son Giri\u015f<\/th>\r\n                <th style=\"padding:10px; text-align:center;\">Son 30 G\u00fcnde Giri\u015f<\/th>\r\n                <th style=\"padding:10px;\">Son Cihaz \/ Taray\u0131c\u0131<\/th>\r\n              <\/tr>\r\n            <\/thead>\r\n            <tbody id=\"kullanimOzetiGovde\"><tr><td colspan=\"5\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n          <\/table>\r\n        <\/div>\r\n      <\/div>\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-bottom:15px; display:flex; justify-content:space-between; align-items:center;\">\r\n        <h4 style=\"margin:0;\">Ham Giri\u015f \/ \u00c7\u0131k\u0131\u015f Kay\u0131tlar\u0131 (son 500 kay\u0131t)<\/h4>\r\n        <button type=\"button\" onclick=\"girisKayitlariYukle(); kullanimOzetiYukle();\" style=\"background:#0792ad; color:white; border:none; padding:8px 15px; border-radius:4px; font-weight:bold; cursor:pointer;\">Yenile<\/button>\r\n      <\/div>\r\n      <div class=\"urun-tablo-kapsayici\" style=\"max-height:600px;\">\r\n        <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n          <thead>\r\n            <tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\">\r\n              <th style=\"padding:10px;\">Tarih \/ Saat<\/th>\r\n              <th style=\"padding:10px;\">Kullan\u0131c\u0131 Ad\u0131<\/th>\r\n              <th style=\"padding:10px;\">Rol<\/th>\r\n              <th style=\"padding:10px;\">\u0130\u015flem<\/th>\r\n              <th style=\"padding:10px;\">Cihaz \/ Taray\u0131c\u0131<\/th>\r\n              <th style=\"padding:10px;\">IP<\/th>\r\n            <\/tr>\r\n          <\/thead>\r\n          <tbody id=\"girisKayitlariGovde\"><tr><td colspan=\"6\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"saIstatistiklerTab\" class=\"tab-content super-tab\">\r\n      <div style=\"display:flex; justify-content:flex-end; margin-bottom:10px;\">\r\n        <button type=\"button\" onclick=\"istatistikleriYukle()\" style=\"background:#0792ad; color:white; border:none; padding:8px 15px; border-radius:4px; font-weight:bold; cursor:pointer;\">Yenile<\/button>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-bottom:20px;\">\r\n        <h4 style=\"margin-top:0;\">\ud83d\udcc8 Ayl\u0131k Ciro Trendi<\/h4>\r\n        <div class=\"urun-tablo-kapsayici\" style=\"max-height:300px;\">\r\n          <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n            <thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:10px;\">Ay<\/th><th style=\"padding:10px; text-align:center;\">Sipari\u015f Say\u0131s\u0131<\/th><th style=\"padding:10px; text-align:right;\">Br\u00fct Ciro<\/th><th style=\"padding:10px; text-align:right;\">Toplam \u0130ade<\/th><th style=\"padding:10px; text-align:right;\">Net Ciro<\/th><\/tr><\/thead>\r\n            <tbody id=\"istCiroTrendiGovde\"><tr><td colspan=\"5\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n          <\/table>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-bottom:20px;\">\r\n        <h4 style=\"margin-top:0;\">\ud83c\udfc6 En \u00c7ok Satan \u00dcr\u00fcnler (\u0130lk 20 \u2014 cirosuna g\u00f6re)<\/h4>\r\n        <div class=\"urun-tablo-kapsayici\" style=\"max-height:400px;\">\r\n          <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n            <thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:10px;\">\u00dcr\u00fcn<\/th><th style=\"padding:10px;\">Kategori<\/th><th style=\"padding:10px; text-align:right;\">Toplam Adet<\/th><th style=\"padding:10px; text-align:right;\">Toplam Ciro<\/th><\/tr><\/thead>\r\n            <tbody id=\"istEnCokSatanlarGovde\"><tr><td colspan=\"4\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n          <\/table>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div style=\"display:flex; gap:20px; flex-wrap:wrap; margin-bottom:20px;\">\r\n        <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; flex:1; min-width:280px;\">\r\n          <h4 style=\"margin-top:0;\">\ud83d\udcb3 Tahsilat Da\u011f\u0131l\u0131m\u0131 (\u00d6deme Y\u00f6ntemi)<\/h4>\r\n          <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n            <thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:10px;\">Y\u00f6ntem<\/th><th style=\"padding:10px; text-align:center;\">Adet<\/th><th style=\"padding:10px; text-align:right;\">Toplam<\/th><\/tr><\/thead>\r\n            <tbody id=\"istTahsilatDagilimiGovde\"><tr><td colspan=\"3\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n          <\/table>\r\n        <\/div>\r\n        <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; flex:1; min-width:280px;\">\r\n          <h4 style=\"margin-top:0;\">\ud83d\udcb0 Genel A\u00e7\u0131k Bakiye \u00d6zeti<\/h4>\r\n          <table style=\"width:100%; border-collapse:collapse; font-size:14px;\" id=\"istAcikBakiyeTablo\"><tbody><\/tbody><\/table>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div style=\"display:flex; gap:20px; flex-wrap:wrap; margin-bottom:20px;\">\r\n        <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; flex:1; min-width:280px;\">\r\n          <h4 style=\"margin-top:0;\">\ud83d\udc65 M\u00fc\u015fteri Durumu<\/h4>\r\n          <p style=\"font-size:14px; color:#555;\">Aktif m\u00fc\u015fteri say\u0131s\u0131: <b id=\"istToplamMusteri\">\u2014<\/b> \u00b7 Son 30 g\u00fcnde giri\u015f yapan: <b id=\"istSon30GunAktif\">\u2014<\/b><\/p>\r\n          <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n            <thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:10px;\">Durum<\/th><th style=\"padding:10px; text-align:center;\">Adet<\/th><\/tr><\/thead>\r\n            <tbody id=\"istMusteriDurumGovde\"><tr><td colspan=\"2\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n          <\/table>\r\n        <\/div>\r\n        <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; flex:1; min-width:280px;\">\r\n          <h4 style=\"margin-top:0;\">\ud83c\udff7\ufe0f \u0130\u015fletme Tipi Da\u011f\u0131l\u0131m\u0131<\/h4>\r\n          <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n            <thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:10px;\">Tip<\/th><th style=\"padding:10px; text-align:center;\">Adet<\/th><\/tr><\/thead>\r\n            <tbody id=\"istMusteriTipGovde\"><tr><td colspan=\"2\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n          <\/table>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-bottom:20px;\">\r\n        <h4 style=\"margin-top:0;\">\ud83c\udfaf Kampanya \/ Hedef Etkinli\u011fi<\/h4>\r\n        <p style=\"font-size:14px; color:#555;\">Kampanya indirimi kullanan sipari\u015f say\u0131s\u0131: <b id=\"istKampanyaliSiparisSayisi\">\u2014<\/b> \u00b7 Toplam verilen indirim: <b id=\"istToplamIndirim\">\u2014<\/b> TL<\/p>\r\n        <div style=\"display:flex; gap:20px; flex-wrap:wrap;\">\r\n          <div style=\"flex:1; min-width:280px;\">\r\n            <h5>Kampanya Baz\u0131nda K\u0131r\u0131l\u0131m<\/h5>\r\n            <div class=\"urun-tablo-kapsayici\" style=\"max-height:300px;\">\r\n              <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:13px;\">\r\n                <thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:8px;\">Kampanya\/Not<\/th><th style=\"padding:8px; text-align:center;\">Adet<\/th><th style=\"padding:8px; text-align:right;\">Toplam \u0130ndirim<\/th><\/tr><\/thead>\r\n                <tbody id=\"istKampanyaKirilimGovde\"><tr><td colspan=\"3\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n              <\/table>\r\n            <\/div>\r\n          <\/div>\r\n          <div style=\"flex:1; min-width:280px;\">\r\n            <h5>Ciro Hedefi Kazan\u0131mlar\u0131<\/h5>\r\n            <div class=\"urun-tablo-kapsayici\" style=\"max-height:300px;\">\r\n              <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:13px;\">\r\n                <thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:8px;\">Hedef<\/th><th style=\"padding:8px;\">Tip<\/th><th style=\"padding:8px; text-align:center;\">Kazanan Say\u0131s\u0131<\/th><\/tr><\/thead>\r\n                <tbody id=\"istHedefKazanimGovde\"><tr><td colspan=\"3\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n              <\/table>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-bottom:20px;\">\r\n        <h4 style=\"margin-top:0;\">\ud83e\udd1d Acentelere G\u00f6re Sipari\u015f Da\u011f\u0131l\u0131m\u0131<\/h4>\r\n        <div class=\"urun-tablo-kapsayici\" style=\"max-height:340px;\">\r\n          <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n            <thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:9px;\">Acente<\/th><th style=\"padding:9px; text-align:center;\">Sipari\u015f Say\u0131s\u0131<\/th><th style=\"padding:9px; text-align:right;\">Net Ciro<\/th><th style=\"padding:9px; text-align:right;\">Pay<\/th><\/tr><\/thead>\r\n            <tbody id=\"istAcenteDagilimGovde\"><tr><td colspan=\"4\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n          <\/table>\r\n        <\/div>\r\n        <div id=\"istAcenteGrafik\" style=\"margin-top:16px;\"><\/div>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-bottom:20px;\">\r\n        <h4 style=\"margin-top:0;\">\u26f5 Yat \/ M\u00fc\u015fteriye G\u00f6re Sipari\u015f Da\u011f\u0131l\u0131m\u0131<\/h4>\r\n        <div class=\"urun-tablo-kapsayici\" style=\"max-height:340px;\">\r\n          <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n            <thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:9px;\">Yat \/ M\u00fc\u015fteri<\/th><th style=\"padding:9px;\">Ba\u011fl\u0131 Oldu\u011fu<\/th><th style=\"padding:9px; text-align:center;\">Sipari\u015f Say\u0131s\u0131<\/th><th style=\"padding:9px; text-align:right;\">Net Ciro<\/th><th style=\"padding:9px; text-align:right;\">Pay<\/th><\/tr><\/thead>\r\n            <tbody id=\"istYatDagilimGovde\"><tr><td colspan=\"5\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n          <\/table>\r\n        <\/div>\r\n        <div id=\"istYatGrafik\" style=\"margin-top:16px;\"><\/div>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-bottom:20px;\">\r\n        <h4 style=\"margin-top:0;\">\ud83d\udce6 \u00dcr\u00fcn \u00d7 Acente K\u0131r\u0131l\u0131m\u0131<\/h4>\r\n        <p style=\"font-size:12px; color:#8a8578; margin-top:-6px;\">Hangi acente hangi \u00fcr\u00fcnden ne kadar ald\u0131 (ciroya g\u00f6re ilk 100 sat\u0131r).<\/p>\r\n        <div class=\"urun-tablo-kapsayici\" style=\"max-height:380px;\">\r\n          <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n            <thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:9px;\">\u00dcr\u00fcn<\/th><th style=\"padding:9px;\">Acente<\/th><th style=\"padding:9px; text-align:center;\">Adet<\/th><th style=\"padding:9px; text-align:right;\">Tutar<\/th><\/tr><\/thead>\r\n            <tbody id=\"istUrunAcenteGovde\"><tr><td colspan=\"4\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n          <\/table>\r\n        <\/div>\r\n        <div id=\"istUrunAcenteGrafik\" style=\"margin-top:16px;\"><\/div>\r\n      <\/div>\r\n\r\n      <div style=\"background:#fff; padding:15px; border:1px solid #ccc; border-radius:8px; margin-bottom:20px;\">\r\n        <h4 style=\"margin-top:0;\">\ud83e\uddfe \u00dcr\u00fcn \u00d7 Yat \/ M\u00fc\u015fteri K\u0131r\u0131l\u0131m\u0131<\/h4>\r\n        <p style=\"font-size:12px; color:#8a8578; margin-top:-6px;\">Hangi yat\/m\u00fc\u015fteri hangi \u00fcr\u00fcnden ne kadar ald\u0131 (ciroya g\u00f6re ilk 100 sat\u0131r).<\/p>\r\n        <div class=\"urun-tablo-kapsayici\" style=\"max-height:380px;\">\r\n          <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n            <thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:9px;\">\u00dcr\u00fcn<\/th><th style=\"padding:9px;\">Yat \/ M\u00fc\u015fteri<\/th><th style=\"padding:9px;\">Ba\u011fl\u0131 Oldu\u011fu<\/th><th style=\"padding:9px; text-align:center;\">Adet<\/th><th style=\"padding:9px; text-align:right;\">Tutar<\/th><\/tr><\/thead>\r\n            <tbody id=\"istUrunYatGovde\"><tr><td colspan=\"5\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr><\/tbody>\r\n          <\/table>\r\n        <\/div>\r\n        <div id=\"istUrunYatGrafik\" style=\"margin-top:16px;\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n<\/div>\r\n<script>\r\n  \/\/ Backend adresi: art\u0131k Google Apps Script de\u011fil, kendi sunucumuzdaki PHP API\r\n  var googleUrl = \"https:\/\/krakenbodrum.com\/b2bapi\/index.php\";\r\n  \r\n  var globalData = null; \r\n  var aktifKullanici = null; \r\n  var aktifTaslakID = null; \r\n  var secilenUrunler = {}; \r\n  var hamRaporVerisi = []; \r\n  var iadeDegisiklikleri = {}; \r\n  var aktifCariYat = \"\";\r\n  var globalTahsilatlar = []; \r\n  var aktifOturumToken = null; \/\/ \ud83d\udd10 Giri\u015f yap\u0131nca sunucudan gelen imzal\u0131 oturum anahtar\u0131 burada tutulur\r\n\r\n  \/\/ URL \u00fczerinden GET ile y\u00f6nlendirme krizlerini (404) a\u015fmak i\u00e7in POST text\/plain takti\u011fi\r\n  function googleAPI(payload, denemeNo) {\r\n    denemeNo = denemeNo || 0;\r\n    \/\/ \ud83d\udd10 login i\u015flemi hari\u00e7 her istekte oturum anahtar\u0131n\u0131 otomatik ekle\r\n    if (payload.action !== 'login' && aktifOturumToken) {\r\n      payload.oturum_token = aktifOturumToken;\r\n    }\r\n    return fetch(googleUrl, {\r\n      method: 'POST',\r\n      body: JSON.stringify(payload),\r\n      headers: {\r\n        \/\/ Bu sat\u0131r taray\u0131c\u0131n\u0131n g\u00fcvenlik (CORS) kontrol\u00fcn\u00fc tetiklemesini engeller\r\n        'Content-Type': 'text\/plain;charset=utf-8' \r\n      }\r\n    }).then(function(res) {\r\n      return res.text();\r\n    }).then(function(text) {\r\n      try { \r\n        return JSON.parse(text); \r\n      } catch(e) { \r\n        \/\/ \ud83d\udd01 Sunucudan d\u00fczg\u00fcn bir cevap (JSON) gelmedi \u2014 Google'\u0131n payla\u015f\u0131ml\u0131 altyap\u0131s\u0131nda\r\n        \/\/ g\u00f6r\u00fclen ge\u00e7ici bir aksakl\u0131k olabilir. Kullan\u0131c\u0131ya hemen hata g\u00f6stermek yerine,\r\n        \/\/ sessizce k\u0131sa bir bekleme sonras\u0131 2 kez daha deneriz.\r\n        if (denemeNo < 2) {\r\n          return new Promise(function(resolve) {\r\n            setTimeout(function() { resolve(googleAPI(payload, denemeNo + 1)); }, 1000 * (denemeNo + 1));\r\n          });\r\n        }\r\n        return { durum: \"hata\", mesaj: \"Sunucu \u015fu anda yan\u0131t vermiyor. L\u00fctfen birka\u00e7 saniye sonra tekrar deneyin. (Detay: \" + text.substring(0, 150) + \")\" }; \r\n      }\r\n    }).catch(function(err) {\r\n      \/\/ \ud83d\udd01 A\u011f seviyesinde bir hata olduysa (ba\u011flant\u0131 koptu vb.) da ayn\u0131 \u015fekilde tekrar dene.\r\n      if (denemeNo < 2) {\r\n        return new Promise(function(resolve) {\r\n          setTimeout(function() { resolve(googleAPI(payload, denemeNo + 1)); }, 1000 * (denemeNo + 1));\r\n        });\r\n      }\r\n      console.error(\"Fetch Hatas\u0131:\", err);\r\n      return { durum: \"hata\", mesaj: \"Ba\u011flant\u0131 hatas\u0131: \" + err.message };\r\n    });\r\n  }\r\n\r\n  function showLoading(msg) { \r\n    document.getElementById('loadingMessage').innerText = msg || \"\u0130\u015flem yap\u0131l\u0131yor, l\u00fctfen bekleyin...\"; \r\n    document.getElementById('loadingOverlay').style.display = 'flex'; \r\n  }\r\n  \r\n  function hideLoading() { \r\n    document.getElementById('loadingOverlay').style.display = 'none'; \r\n  }\r\n\r\n  window.switchTab = function(panelTipi, tabId, btnElement) {\r\n       var tabClass = panelTipi === 'admin' ? '.admin-tab' : (panelTipi === 'super' ? '.super-tab' : '.musteri-tab'); \r\n       var btnContainer = btnElement.parentElement;\r\n       \r\n       document.querySelectorAll(tabClass).forEach(function(t) { t.style.display = 'none'; });\r\n       btnContainer.querySelectorAll('.tab-btn').forEach(function(b) { b.classList.remove('active'); });\r\n       document.getElementById(tabId).style.display = 'block'; \r\n       btnElement.classList.add('active');\r\n  }\r\n\r\n  function veriTemizle(metin) { \r\n    if(!metin) return \"\"; \r\n    return metin.toString().replace(\/\\|\/g, \"-\").replace(\/(\\r\\n|\\n|\\r)\/gm, \" \").trim(); \r\n  }\r\n\r\n  \/\/ \ud83c\udfaf TEK VE ORTAK \u00fcr\u00fcn bulma fonksiyonu \u2014 bir sipari\u015f sat\u0131r\u0131ndaki \u00fcr\u00fcn\u00fc (kategori + \u00fcr\u00fcn ad\u0131 + B\u0130R\u0130M)\r\n  \/\/ globalData.urunler i\u00e7inde bulur. Ayn\u0131 isimli ama farkl\u0131 paket boyutundaki \u00fcr\u00fcnler (500gr\/1kg gibi)\r\n  \/\/ birbirine kar\u0131\u015fmas\u0131n diye, \u00fcr\u00fcn e\u015fle\u015ftirmesi gereken HER yeni kod bu fonksiyonu kullanmal\u0131 \u2014\r\n  \/\/ kendi ba\u015f\u0131na ayr\u0131 bir e\u015fle\u015ftirme mant\u0131\u011f\u0131 yaz\u0131lmamal\u0131.\r\n  function urunSatiriniBul(urunler, kategori, urunAdi, birim) {\r\n    var aranan_kategori = (kategori || \"\").trim();\r\n    var aranan_urunAdi = (urunAdi || \"\").trim();\r\n    var aranan_birim = (birim || \"\").trim();\r\n    return urunler.findIndex(function(u) {\r\n      return veriTemizle(u.kategori) === aranan_kategori && veriTemizle(u.urun_adi) === aranan_urunAdi && veriTemizle(u.birim) === aranan_birim;\r\n    });\r\n  }\r\n\r\n  \/\/ \ud83d\ude80 ZIRHLI \u00d6N Y\u00dcZ SAYI OKUMA MOTORU\r\n  function metniSayiyaCevir(metin) {\r\n    if (metin === null || metin === undefined || metin === '') return 0;\r\n    if (typeof metin === 'number') return metin;\r\n    var str = metin.toString().trim();\r\n    if(str === '') return 0;\r\n    \r\n    str = str.replace(\/[^0-9,\\.-]\/g, '');\r\n    var dot_count = (str.match(\/\\.\/g) || []).length;\r\n    var comma_count = (str.match(\/,\/g) || []).length;\r\n    \r\n    if (dot_count > 0 && comma_count > 0) {\r\n        var last_dot = str.lastIndexOf('.');\r\n        var last_comma = str.lastIndexOf(',');\r\n        if (last_dot > last_comma) { str = str.replace(\/,\/g, ''); } \r\n        else { str = str.replace(\/\\.\/g, '').replace(\/,\/g, '.'); }\r\n    } else if (dot_count > 0 && comma_count === 0) {\r\n        var parcalar = str.split('.');\r\n        if (parcalar.length > 1 && parcalar[parcalar.length - 1].length === 3) { str = str.replace(\/\\.\/g, ''); }\r\n    } else if (comma_count > 0 && dot_count === 0) {\r\n        str = str.replace(\/,\/g, '.');\r\n    }\r\n    var num = parseFloat(str);\r\n    return isNaN(num) ? 0 : num;\r\n  }\r\n  \r\n  \/\/ Kullan\u0131c\u0131 listesi de\u011fi\u015fti\u011finde (ekleme\/ar\u015fivleme\/aktifle\u015ftirme\/silme) \u00f6nbelle\u011fi tazeler \u2014\r\n  \/\/ b\u00f6ylece Duyurular\/Kampanyalar\/Ciro Hedefleri ekranlar\u0131ndaki m\u00fc\u015fteri se\u00e7icileri g\u00fcncel kal\u0131r.\r\n  function musteriOnbelleginiTazele() {\r\n    if (typeof duyuruMusteriListesiniYukle === 'function' && document.getElementById('duyuruMusteriListesi')) duyuruMusteriListesiniYukle(true);\r\n    if (typeof kampanyaMusteriListesiniYukle === 'function' && document.getElementById('kampanyaMusteriListesi')) kampanyaMusteriListesiniYukle(true);\r\n  }\r\n\r\n  \/\/ \ud83d\udd50 Tarih + saat g\u00f6sterimi \u2014 anla\u015fmazl\u0131k\/kay\u0131t takibi i\u00e7in saat de \u00f6nemli.\r\n  function tarihSaat(deger) {\r\n    if (!deger) return '-';\r\n    var d = new Date(deger);\r\n    if (isNaN(d.getTime())) return deger;\r\n    return d.toLocaleDateString('tr-TR') + ' ' + d.toLocaleTimeString('tr-TR', { hour: '2-digit', minute: '2-digit' });\r\n  }\r\n\r\n  function sayiyiMetneCevir(sayi) { \r\n    var num = metniSayiyaCevir(sayi); \r\n    \/\/ \ud83d\udd22 Kayan nokta art\u0131klar\u0131 (\u00f6rn. -0.0000001) \"-0,00\" gibi anlams\u0131z \u00e7\u0131kt\u0131lar \u00fcretiyordu \u2014\r\n    \/\/ kuru\u015f hassasiyetine yuvarlay\u0131p, sonu\u00e7 s\u0131f\u0131rsa i\u015fareti temizliyoruz.\r\n    num = Math.round(num * 100) \/ 100;\r\n    if (num === 0) num = 0; \/\/ -0'\u0131 0'a \u00e7evirir\r\n    return num.toLocaleString('tr-TR', { minimumFractionDigits: 2, maximumFractionDigits: 2 }); \r\n  }\r\n\r\n  \/\/ Bakiye rengi i\u00e7in: kuru\u015f alt\u0131 farklar\u0131 (kayan nokta art\u0131\u011f\u0131) s\u0131f\u0131r kabul eder.\r\n  function bakiyeRengi(bakiye) {\r\n    var yuvarlanmis = Math.round(metniSayiyaCevir(bakiye) * 100) \/ 100;\r\n    return yuvarlanmis > 0 ? \"red\" : (yuvarlanmis < 0 ? \"blue\" : \"green\");\r\n  }\r\n\r\n  \/\/ Ham \"rol\" de\u011ferini (yetki seviyesi, \u00f6rn. \"yat\") kullan\u0131c\u0131ya g\u00f6sterilecek\r\n  \/\/ d\u00fczg\u00fcn bir etikete \u00e7evirir. \"Yat\" \u00f6zellikle \"M\u00fc\u015fteri\" olarak g\u00f6sterilir \u2014\r\n  \/\/ ger\u00e7ek ay\u0131r\u0131c\u0131 unsur art\u0131k Kullan\u0131c\u0131 Tipi (Acente\/Yat\/Cafe\/Restoran\/Otel).\r\n  function rolGosterimAdi(rol) {\r\n    \/\/ \ud83c\udff7\ufe0f Teknik roller (acente\/yat) aray\u00fczde H\u0130\u00c7B\u0130R ZAMAN ham haliyle g\u00f6sterilmez \u2014 ikisi de\r\n    \/\/ \"M\u00fc\u015fteri\"dir. Aralar\u0131ndaki fark (acentenin tekne ekleyebilmesi gibi) bir yetki detay\u0131d\u0131r,\r\n    \/\/ m\u00fc\u015fteri s\u0131n\u0131f\u0131 de\u011fil. Ger\u00e7ek ayr\u0131m her zaman \"Kullan\u0131c\u0131 Tipi\" (Acente\/Yat\/Cafe\/Restoran\/\r\n    \/\/ Otel) s\u00fctunundan okunur.\r\n    var harita = { 'super admin': 'S\u00fcper Admin', 'admin': 'Admin', 'acente': 'M\u00fc\u015fteri', 'yat': 'M\u00fc\u015fteri' };\r\n    return harita[(rol || '').toString().toLowerCase()] || rol;\r\n  }\r\n\r\n  \/\/ KDV ve stok gibi genelde tam say\u0131 olan alanlar i\u00e7in: \"1.00\" yerine \"1\",\r\n  \/\/ ama ger\u00e7ekten \"8.5\" gibi ondal\u0131kl\u0131ysa onu da do\u011fru g\u00f6sterir (zorla .00 eklemez).\r\n  function temizSayi(deger) {\r\n    var num = metniSayiyaCevir(deger);\r\n    return (num % 1 === 0) ? num.toString() : num.toLocaleString('tr-TR', { maximumFractionDigits: 2 });\r\n  }\r\n\r\n  var deferredPrompt;\r\n\r\n  \/\/ \ud83d\udcf2 Ana ekrana ekleme band\u0131 \u2014 dikkat \u00e7ekmeyen, ince bir \u015ferit olarak g\u00f6sterilir.\r\n  \/\/ Kurallar: (1) sadece mobilde, (2) zaten kuruluysa ya da kullan\u0131c\u0131 X ile kapatt\u0131ysa\r\n  \/\/ hi\u00e7 g\u00f6sterilmez, (3) her a\u00e7\u0131l\u0131\u015fta de\u011fil, 3 a\u00e7\u0131l\u0131\u015fta bir g\u00f6sterilir.\r\n  function pwaCihazTipi() {\r\n    var ua = navigator.userAgent;\r\n    if (\/iPad|iPhone|iPod\/.test(ua) && !window.MSStream) return 'ios';\r\n    if (\/Android\/.test(ua)) return 'android';\r\n    return 'diger';\r\n  }\r\n\r\n  window.pwaBandiniDegerlendir = function() {\r\n    var banner = document.getElementById('pwaBannerTop');\r\n    if (!banner) return;\r\n\r\n    var standalone = window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone === true;\r\n    if (standalone) { localStorage.setItem('kraken_pwa_kuruldu', 'evet'); return; }\r\n    if (localStorage.getItem('kraken_pwa_kuruldu') === 'evet') return;\r\n    if (window.innerWidth > 768) return;\r\n    if (pwaCihazTipi() === 'diger') return;\r\n\r\n    var sayac = parseInt(localStorage.getItem('kraken_pwa_banner_sayac') || '0', 10);\r\n    localStorage.setItem('kraken_pwa_banner_sayac', (sayac + 1).toString());\r\n    if (sayac % 3 !== 0) return;\r\n\r\n    banner.style.setProperty('display', 'block', 'important');\r\n  };\r\n\r\n  window.addEventListener('beforeinstallprompt', function(e) { \r\n    e.preventDefault(); \r\n    deferredPrompt = e; \r\n    pwaBandiniDegerlendir();\r\n  });\r\n  \r\n  window.addEventListener('appinstalled', function(evt) { \r\n    document.getElementById('pwaBannerTop').style.setProperty('display', 'none', 'important'); \r\n    localStorage.setItem('kraken_pwa_kuruldu', 'evet'); \r\n  });\r\n  \r\n  window.pwaEkle = function() {\r\n    \/\/ Android\/Chrome: tarayicinin kendi kurulum penceresi varsa dogrudan onu ac.\r\n    if (deferredPrompt) { \r\n      deferredPrompt.prompt(); \r\n      deferredPrompt.userChoice.then(function(choiceResult) { \r\n        if (choiceResult.outcome === 'accepted') { \r\n          document.getElementById('pwaBannerTop').style.setProperty('display', 'none', 'important'); \r\n          localStorage.setItem('kraken_pwa_kuruldu', 'evet'); \r\n        } \r\n        deferredPrompt = null; \r\n      });\r\n      return;\r\n    }\r\n    \/\/ Aksi halde cihaza gore uygun rehberi ac (iOS'ta tarayici kurulum penceresi YOKTUR).\r\n    var tip = pwaCihazTipi();\r\n    if (tip === 'ios') { \r\n      document.getElementById('iosPwaRehberiKutusu').style.display = 'flex';\r\n      document.body.style.overflow = 'hidden';\r\n    } else if (tip === 'android') {\r\n      document.getElementById('androidPwaRehberiKutusu').style.display = 'flex';\r\n      document.body.style.overflow = 'hidden';\r\n    } else {\r\n      alert(\"Tarayicinizin menusunden 'Ana Ekrana Ekle' secenegini kullanabilirsiniz.\");\r\n    }\r\n  };\r\n\r\n  window.androidPwaRehberiKapat = function() {\r\n    document.getElementById('androidPwaRehberiKutusu').style.display = 'none';\r\n    document.body.style.overflow = '';\r\n  };\r\n\r\n  window.iosPwaRehberiKapat = function() {\r\n    document.getElementById('iosPwaRehberiKutusu').style.display = 'none';\r\n    document.body.style.overflow = '';\r\n    \/\/ \ud83d\udd01 Kas\u0131tl\u0131: burada localStorage'a \"kuruldu\" YAZMIYORUZ \u2014 \u00e7\u00fcnk\u00fc kullan\u0131c\u0131n\u0131n\r\n    \/\/ rehberi g\u00f6r\u00fcp ger\u00e7ekten \"Ana Ekrana Ekle\"yi tamamlay\u0131p tamamlamad\u0131\u011f\u0131n\u0131 iOS'ta\r\n    \/\/ hi\u00e7bir \u015fekilde anlayam\u0131yoruz. Eklemediyse, birka\u00e7 ziyaret sonra \u015ferit tekrar\r\n    \/\/ \u00e7\u0131ks\u0131n ki unutmas\u0131n. Ger\u00e7ekten ekledi\u011finde uygulama \"standalone\" modda a\u00e7\u0131laca\u011f\u0131\r\n    \/\/ i\u00e7in \u015ferit kendili\u011finden bir daha hi\u00e7 g\u00f6r\u00fcnmez.\r\n  };\r\n\r\n\r\n  \/\/ \ud83d\udcca \u0130statistikler sekmesinin HTML'i S\u00fcper Admin panelinin i\u00e7inde tan\u0131ml\u0131. Admin de bu\r\n  \/\/ ekran\u0131 (salt okunur olarak) g\u00f6rebildi\u011fi i\u00e7in, Admin giri\u015finde blo\u011fu Admin paneline ta\u015f\u0131y\u0131p\r\n  \/\/ sekme s\u0131n\u0131f\u0131n\u0131 da 'admin-tab' yap\u0131yoruz \u2014 b\u00f6ylece switchTab('admin', ...) do\u011fru \u00e7al\u0131\u015f\u0131r.\r\n  function istatistikSekmesiniAdminePanelineTasi() {\r\n    var blok = document.getElementById('saIstatistiklerTab');\r\n    var adminPanel = document.getElementById('adminPaneli');\r\n    if (!blok || !adminPanel || blok.parentElement === adminPanel) return;\r\n    blok.classList.remove('super-tab');\r\n    blok.classList.add('admin-tab');\r\n    blok.style.display = 'none';\r\n    adminPanel.appendChild(blok);\r\n  }\r\n\r\n  \/\/ \ud83d\udce6 Teslim Edilecek Sipari\u015fler \u2014 onaylanm\u0131\u015f ama teslim_tarihi hen\u00fcz bo\u015f olanlar.\r\n  \/\/ Mevcut raporlari_cek verisini kullan\u0131r (backend de\u011fi\u015fikli\u011fi gerektirmez) ve mali\r\n  \/\/ hesaplara H\u0130\u00c7 dokunmaz; tamamen operasyonel bir i\u015f listesidir.\r\n  var hamTeslimatListesi = [];\r\n\r\n  window.teslimatListesiYukle = function() {\r\n    var alan = document.getElementById('teslimatListesiAlani');\r\n    if (!alan) return;\r\n    alan.innerHTML = 'Y\u00fckleniyor...';\r\n    googleAPI({ action: 'raporlari_cek' }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alan.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>'; return; }\r\n      hamTeslimatListesi = (data.raporlar || []).filter(function(r) { return !r.teslim_tarihi; });\r\n      teslimatListesiCiz();\r\n    }).catch(function(err) { alan.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  };\r\n\r\n  function teslimatListesiCiz() {\r\n    var alan = document.getElementById('teslimatListesiAlani');\r\n    if (!alan) return;\r\n    if (hamTeslimatListesi.length === 0) {\r\n      alan.innerHTML = '<p style=\"color:#155724; background:#d4edda; border:1px solid #28a745; border-radius:8px; text-align:center; padding:15px; font-weight:600;\">Teslim edilecek sipari\u015f yok \u2014 hepsi teslim edilmi\u015f.<\/p>';\r\n      return;\r\n    }\r\n    \/\/ En eski sipari\u015f en \u00fcstte: bekleyen en acil i\u015f \u00f6nce g\u00f6r\u00fcns\u00fcn.\r\n    var liste = hamTeslimatListesi.slice().sort(function(a, b) { return new Date(a.tarih) - new Date(b.tarih); });\r\n\r\n    var html = '<div style=\"overflow-x:auto; -webkit-overflow-scrolling:touch;\"><table style=\"width:100%; min-width:720px; border-collapse:collapse; text-align:left; font-size:14px;\"><thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #0792ad;\"><th style=\"padding:8px;\">Sip. No<\/th><th style=\"padding:8px;\">Tarih<\/th><th style=\"padding:8px;\">M\u00fc\u015fteri<\/th><th style=\"padding:8px;\">Tekne \/ Yer<\/th><th style=\"padding:8px; text-align:right;\">Tutar<\/th><th style=\"padding:8px; text-align:center;\">Bekleme<\/th><th style=\"padding:8px; text-align:center;\">\u0130\u015flem<\/th><\/tr><\/thead><tbody>';\r\n    liste.forEach(function(r) {\r\n      var gunFark = Math.floor((Date.now() - new Date(r.tarih).getTime()) \/ 86400000);\r\n      var beklemeRenk = gunFark >= 3 ? '#dc3545' : (gunFark >= 1 ? '#b8860b' : '#28a745');\r\n      var beklemeMetni = gunFark === 0 ? 'Bug\u00fcn' : gunFark + ' g\u00fcn';\r\n      var guvenliId = (r.siparis_id || '').replace(\/'\/g, \"\\\\'\");\r\n      \/\/ \ud83d\ude9a \u0130ki a\u015famal\u0131 i\u015flem: \u00f6nce \"Yola \u00c7\u0131kt\u0131\" (m\u00fc\u015fteriye bildirim gider),\r\n      \/\/ sonra \"Teslim Edildi\" (yine ayr\u0131 bir bildirim gider). yola_cikti_tarihi\r\n      \/\/ bo\u015fsa h\u00e2l\u00e2 birinci a\u015famaday\u0131z demektir.\r\n      var islemHucre = !r.yola_cikti_tarihi\r\n        ? '<button type=\"button\" onclick=\"yolaCiktiIsaretle(\\'' + guvenliId + '\\')\" style=\"background:#0792ad; color:#fff; border:none; padding:7px 14px; border-radius:4px; cursor:pointer; font-weight:bold; font-size:12px; white-space:nowrap;\">Yola \u00c7\u0131kt\u0131<\/button>'\r\n        : '<span style=\"display:block; font-size:11px; color:#0792ad; margin-bottom:4px;\">\ud83d\ude9a Yolda<\/span><button type=\"button\" onclick=\"teslimEdildiIsaretle(\\'' + guvenliId + '\\')\" style=\"background:#28a745; color:#fff; border:none; padding:7px 14px; border-radius:4px; cursor:pointer; font-weight:bold; font-size:12px; white-space:nowrap;\">Teslim Edildi<\/button>';\r\n      html += `<tr style=\"border-bottom:1px solid #eee;\">\r\n        <td style=\"padding:8px; color:#0792ad; font-weight:bold; cursor:pointer;\" onclick=\"siparisDetayiGoster('${guvenliId}')\" title=\"Detay\u0131 g\u00f6r\u00fcnt\u00fcle\">${r.siparis_id}<\/td>\r\n        <td style=\"padding:8px;\">${tarihSaat(r.tarih)}<\/td>\r\n        <td style=\"padding:8px;\">${r.musteri || '-'}<\/td>\r\n        <td style=\"padding:8px; font-size:12px; color:#666;\">${r.yat_adi || '-'}<\/td>\r\n        <td style=\"padding:8px; text-align:right; font-weight:bold;\">${sayiyiMetneCevir(r.toplam)} TL<\/td>\r\n        <td style=\"padding:8px; text-align:center; font-weight:bold; color:${beklemeRenk};\">${beklemeMetni}<\/td>\r\n        <td style=\"padding:8px; text-align:center;\">${islemHucre}<\/td>\r\n      <\/tr>`;\r\n    });\r\n    html += '<\/tbody><\/table><\/div>';\r\n    alan.innerHTML = html;\r\n  }\r\n\r\n  window.yolaCiktiIsaretle = function(siparisId) {\r\n    if (!confirm(siparisId + ' numaral\u0131 sipari\u015f YOLA \u00c7IKTI olarak i\u015faretlenecek ve m\u00fc\u015fteriye bildirim gidecek. Emin misiniz?')) return;\r\n    showLoading('\u0130\u015faretleniyor...');\r\n    googleAPI({ action: 'siparis_yola_cikti_isaretle', siparis_id: siparisId, isaretle: true }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') {\r\n        teslimatListesiYukle();\r\n      } else { alert('Hata: ' + data.mesaj); }\r\n    }).catch(function(err) { hideLoading(); alert(err); });\r\n  };\r\n\r\n  window.teslimEdildiIsaretle = function(siparisId) {\r\n    if (!confirm(siparisId + ' numaral\u0131 sipari\u015f TESL\u0130M ED\u0130LD\u0130 olarak i\u015faretlenecek.\\n\\nBu sipari\u015f \"Teslim Edilecek Sipari\u015fler\" listesinden \u00e7\u0131kacak. Emin misiniz?')) return;\r\n    showLoading('\u0130\u015faretleniyor...');\r\n    googleAPI({ action: 'siparis_teslim_isaretle', siparis_id: siparisId, isaretle: true }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') {\r\n        teslimatListesiYukle();\r\n        \/\/ A\u00e7\u0131ksa di\u011fer listeleri de tazele ki tutarl\u0131 g\u00f6r\u00fcns\u00fcn.\r\n        if (typeof raporlariYukle === 'function' && document.getElementById('raporTabloGovde')) raporlariYukle();\r\n        if (typeof adminGecmisSiparislerYukle === 'function' && document.getElementById('adminGecmisSiparislerAlani')) adminGecmisSiparislerYukle();\r\n      } else { alert('Hata: ' + data.mesaj); }\r\n    }).catch(function(err) { hideLoading(); alert(err); });\r\n  };\r\n\r\n  \/\/ \u0130statistikler sekmesiyle ayn\u0131 mant\u0131k: \"Teslim Edilecek Sipari\u015fler\" blo\u011fu Admin panelinde\r\n  \/\/ tan\u0131ml\u0131; S\u00fcper Admin giri\u015finde kendi paneline ta\u015f\u0131n\u0131p sekme s\u0131n\u0131f\u0131 d\u00fczeltiliyor.\r\n  function teslimatSekmesiniSuperAdminePanelineTasi() {\r\n    var saPanel = document.getElementById('superAdminPaneli');\r\n    if (!saPanel) return;\r\n    \/\/ \"Teslim Edilecek Sipari\u015fler\" ve \"Bekleyen Sipari\u015fler\" bloklar\u0131 Admin panelinde tan\u0131ml\u0131;\r\n    \/\/ S\u00fcper Admin giri\u015finde kendi paneline ta\u015f\u0131n\u0131p sekme s\u0131n\u0131flar\u0131 d\u00fczeltiliyor. B\u00f6ylece\r\n    \/\/ S\u00fcper Admin de sipari\u015f onaylayabiliyor\/revizyona g\u00f6nderebiliyor.\r\n    ['ortakTeslimatTab', 'adminSiparisTab', 'ortakIadeTalepTab', 'ortakMusteriBilgiTab'].forEach(function(id) {\r\n      var blok = document.getElementById(id);\r\n      if (!blok || blok.parentElement === saPanel) return;\r\n      blok.classList.remove('admin-tab');\r\n      blok.classList.add('super-tab');\r\n      blok.style.display = 'none';\r\n      saPanel.appendChild(blok);\r\n    });\r\n  }\r\n\r\n  \/\/ \u2550\u2550\u2550 \u0130ADE S\u0130STEM\u0130 \u2550\u2550\u2550\r\n  \/\/ Teslim edilmi\u015f bir sipari\u015fin tamam\u0131 ya da bir k\u0131sm\u0131 iade edilebilir. \u0130ade edilen \u00fcr\u00fcnler\r\n  \/\/ sto\u011fa geri eklenir, sipari\u015fin iade tutar\u0131 otomatik g\u00fcncellenir (b\u00f6ylece cari hesap\/ciro\/\r\n  \/\/ komisyon hesaplar\u0131 hi\u00e7 de\u011fi\u015fmeden do\u011fru sonucu verir) ve iade kendi numaras\u0131yla\r\n  \/\/ (IAD-xxxxx) \"\u0130adeler\" sekmesinde kaynak sipari\u015f referans\u0131yla listelenir.\r\n  var aktifIadeSiparisi = null;\r\n\r\n  window.iadePenceresiAc = function(siparisId) {\r\n    aktifIadeSiparisi = siparisId;\r\n    \/\/ Admin do\u011frudan a\u00e7t\u0131ysa talep modundan \u00e7\u0131k (metinler y\u00f6netici s\u00fcr\u00fcm\u00fcne d\u00f6ner).\r\n    if (!iadeTalepModu) {\r\n      var b = document.getElementById('iadeBaslik');\r\n      var e = document.getElementById('iadeAciklamaEtiket');\r\n      var k = document.getElementById('iadeKaydetBtn');\r\n      var a = document.getElementById('iadeAciklama');\r\n      if (e) e.innerHTML = '\u0130ade A\u00e7\u0131klamas\u0131 (opsiyonel)';\r\n      if (k) k.innerText = '\u0130adeyi Kaydet';\r\n      if (a) a.placeholder = '\u00d6rn: \u00dcr\u00fcn hasarl\u0131 geldi \/ m\u00fc\u015fteri fazla sipari\u015f vermi\u015f';\r\n    }\r\n    var kutu = document.getElementById('iadeKutusu');\r\n    document.getElementById('iadeBaslik').innerText = siparisId + ' \u2014 \u00dcr\u00fcn \u0130adesi';\r\n    document.getElementById('iadeGovde').innerHTML = '<p style=\"padding:20px; text-align:center;\">Y\u00fckleniyor...<\/p>';\r\n    document.getElementById('iadeAciklama').value = '';\r\n    kutu.style.display = 'flex';\r\n\r\n    googleAPI({ action: 'siparis_iade_detay_cek', siparis_id: siparisId }).then(function(data) {\r\n      if (data.durum !== 'basarili') { document.getElementById('iadeGovde').innerHTML = '<p style=\"color:red; padding:20px;\">' + data.mesaj + '<\/p>'; return; }\r\n      var kalemler = data.kalemler || [];\r\n      if (kalemler.length === 0) { document.getElementById('iadeGovde').innerHTML = '<p style=\"padding:20px; text-align:center;\">Bu sipari\u015fin \u00fcr\u00fcn kalemleri bulunamad\u0131.<\/p>'; return; }\r\n\r\n      var iadeEdilebilirVar = kalemler.some(function(k) { return k.kalan > 0; });\r\n      if (!iadeEdilebilirVar) { document.getElementById('iadeGovde').innerHTML = '<p style=\"padding:20px; text-align:center; color:#856404; background:#fff3cd; border-radius:6px;\">Bu sipari\u015fin t\u00fcm \u00fcr\u00fcnleri zaten iade edilmi\u015f.<\/p>'; return; }\r\n\r\n      var html = '<table style=\"width:100%; border-collapse:collapse; font-size:13px;\"><thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:8px; text-align:left;\">\u00dcr\u00fcn<\/th><th style=\"padding:8px; text-align:right;\">Birim Fiyat<\/th><th style=\"padding:8px; text-align:center;\">Sipari\u015f<\/th><th style=\"padding:8px; text-align:center;\">\u0130ade Edilmi\u015f<\/th><th style=\"padding:8px; text-align:center;\">\u0130ade Edilecek<\/th><\/tr><\/thead><tbody>';\r\n      kalemler.forEach(function(k, i) {\r\n        var pasif = k.kalan <= 0;\r\n        html += `<tr style=\"border-bottom:1px solid #eee; ${pasif ? 'opacity:0.45;' : ''}\"\r\n          data-kategori=\"${(k.kategori||'').replace(\/\"\/g,'&quot;')}\" data-urun=\"${(k.urun_adi||'').replace(\/\"\/g,'&quot;')}\" data-birim=\"${(k.birim||'').replace(\/\"\/g,'&quot;')}\">\r\n          <td style=\"padding:8px;\"><b>${k.urun_adi}<\/b><br><span style=\"font-size:11px; color:#888;\">${k.kategori} \u00b7 ${k.birim}<\/span><\/td>\r\n          <td style=\"padding:8px; text-align:right;\">${sayiyiMetneCevir(k.birim_fiyat)} TL<\/td>\r\n          <td style=\"padding:8px; text-align:center;\">${k.adet}<\/td>\r\n          <td style=\"padding:8px; text-align:center; color:${k.iade_edilmis > 0 ? '#b8860b' : '#bbb'};\">${k.iade_edilmis}<\/td>\r\n          <td style=\"padding:8px; text-align:center;\"><input type=\"number\" class=\"iade-adet-input\" min=\"0\" max=\"${k.kalan}\" value=\"0\" ${pasif ? 'disabled' : ''} data-fiyat=\"${k.birim_fiyat}\" oninput=\"iadeToplamiHesapla()\" style=\"width:70px; padding:5px; text-align:center; border:1px solid #ccc; border-radius:4px;\"><\/td>\r\n        <\/tr>`;\r\n      });\r\n      html += '<\/tbody><\/table>';\r\n      html += '<div style=\"text-align:right; margin-top:12px; font-size:16px;\"><b>\u0130ade Toplam\u0131: <span id=\"iadeToplamGosterge\" style=\"color:#b8860b;\">0,00<\/span> TL<\/b><\/div>';\r\n      document.getElementById('iadeGovde').innerHTML = html;\r\n    }).catch(function(err) { document.getElementById('iadeGovde').innerHTML = '<p style=\"color:red; padding:20px;\">Hata: ' + err + '<\/p>'; });\r\n  };\r\n\r\n  \/\/ \ud83d\udc64 M\u00fc\u015fterinin kendi iade talebi \u2014 ayn\u0131 iade penceresini kullan\u0131r ama gerek\u00e7e ZORUNLU\r\n  \/\/ ve kaydedildi\u011finde do\u011frudan iade de\u011fil, S\u00fcper Admin onay\u0131 bekleyen bir TALEP olu\u015fur.\r\n  var iadeTalepModu = false;\r\n\r\n  window.musteriIadeTalebiAc = function(siparisId) {\r\n    iadeTalepModu = true;\r\n    iadePenceresiAc(siparisId);\r\n    \/\/ Pencere i\u00e7eri\u011fi y\u00fcklendikten sonra metinleri talep moduna g\u00f6re uyarla.\r\n    setTimeout(function() {\r\n      var baslik = document.getElementById('iadeBaslik');\r\n      if (baslik) baslik.innerText = siparisId + ' \u2014 \u0130ade Talebi';\r\n      var acikKutu = document.getElementById('iadeAciklama');\r\n      if (acikKutu) acikKutu.placeholder = '\u0130ade gerek\u00e7enizi yaz\u0131n (zorunlu) \u2014 \u00f6rn: \u00fcr\u00fcn hasarl\u0131 geldi';\r\n      var etiket = document.getElementById('iadeAciklamaEtiket');\r\n      if (etiket) etiket.innerHTML = '\u0130ade Gerek\u00e7esi <span style=\"color:#d9534f;\">(zorunlu)<\/span>';\r\n      var kaydetBtn = document.getElementById('iadeKaydetBtn');\r\n      if (kaydetBtn) kaydetBtn.innerText = '\u0130ade Talebi G\u00f6nder';\r\n      var tumuBtn = document.getElementById('iadeTumunuBtn');\r\n      if (tumuBtn) tumuBtn.innerText = 'T\u00fcm\u00fcn\u00fc \u0130ade Et';\r\n    }, 50);\r\n  };\r\n\r\n  window.iadeToplamiHesapla = function() {\r\n    var toplam = 0;\r\n    document.querySelectorAll('#iadeGovde .iade-adet-input').forEach(function(inp) {\r\n      var adet = parseInt(inp.value, 10) || 0;\r\n      toplam += adet * (parseFloat(inp.getAttribute('data-fiyat')) || 0);\r\n    });\r\n    var gosterge = document.getElementById('iadeToplamGosterge');\r\n    if (gosterge) gosterge.innerText = sayiyiMetneCevir(toplam);\r\n  };\r\n\r\n  window.iadeTumunuSec = function() {\r\n    document.querySelectorAll('#iadeGovde .iade-adet-input').forEach(function(inp) {\r\n      if (!inp.disabled) inp.value = inp.getAttribute('max');\r\n    });\r\n    iadeToplamiHesapla();\r\n  };\r\n\r\n  window.iadeKaydet = function(btn) {\r\n    var secilenler = [];\r\n    document.querySelectorAll('#iadeGovde tbody tr').forEach(function(tr) {\r\n      var inp = tr.querySelector('.iade-adet-input');\r\n      if (!inp || inp.disabled) return;\r\n      var adet = parseInt(inp.value, 10) || 0;\r\n      if (adet <= 0) return;\r\n      secilenler.push({ kategori: tr.getAttribute('data-kategori'), urun_adi: tr.getAttribute('data-urun'), birim: tr.getAttribute('data-birim'), adet: adet });\r\n    });\r\n    if (secilenler.length === 0) { alert('En az bir \u00fcr\u00fcnden iade adedi girmelisiniz.'); return; }\r\n    var aciklama = (document.getElementById('iadeAciklama').value || '').trim();\r\n    if (iadeTalepModu && aciklama === '') { alert('\u0130ade gerek\u00e7esi yazman\u0131z gerekiyor.'); return; }\r\n    var onayMetni = iadeTalepModu\r\n      ? '\u0130ade talebiniz g\u00f6nderilecek:\\n\\n\u2022 Talebiniz yetkili onay\u0131na d\u00fc\u015fecek\\n\u2022 Onaylanana kadar sipari\u015finizde bir de\u011fi\u015fiklik olmayacak\\n\u2022 Sonucu \"Ge\u00e7mi\u015f Sipari\u015flerim\" \u00fczerinden takip edebilirsiniz\\n\\nDevam edilsin mi?'\r\n      : '\u0130ade kaydedilecek:\\n\\n\u2022 \u0130ade edilen \u00fcr\u00fcnler STO\u011eA geri eklenecek\\n\u2022 Sipari\u015fin iade tutar\u0131 g\u00fcncellenecek (cari hesaba yans\u0131r)\\n\u2022 \u0130ade, kendi numaras\u0131yla cari ekstrede g\u00f6r\u00fcnecek\\n\\nDevam edilsin mi?';\r\n    if (!confirm(onayMetni)) return;\r\n\r\n    var eskiEtiket = btn.innerText;\r\n    btn.disabled = true; btn.innerText = iadeTalepModu ? 'G\u00f6nderiliyor...' : 'Kaydediliyor...';\r\n    googleAPI({ action: 'iade_olustur', siparis_id: aktifIadeSiparisi, kalemler: secilenler, aciklama: aciklama }).then(function(data) {\r\n      btn.disabled = false; btn.innerText = eskiEtiket;\r\n      if (data.durum === 'basarili') {\r\n        alert(data.talep_mi\r\n          ? '\u0130ade talebiniz al\u0131nd\u0131.\\n\\nTalep No: ' + data.iade_id + '\\nTutar: ' + sayiyiMetneCevir(data.toplam) + ' TL\\n\\nYetkili incelemesinden sonra bilgilendirileceksiniz.'\r\n          : '\u0130ade kaydedildi.\\n\\n\u0130ade No: ' + data.iade_id + '\\nTutar: ' + sayiyiMetneCevir(data.toplam) + ' TL');\r\n        document.getElementById('iadeKutusu').style.display = 'none';\r\n        iadeTalepModu = false;\r\n        if (typeof raporlariYukle === 'function' && document.getElementById('raporTabloGovde')) raporlariYukle();\r\n        if (typeof iadeTalepleriYukle === 'function' && document.getElementById('iadeTalepListesiAlani')) iadeTalepleriYukle();\r\n        if (typeof gecmisSiparislerimYukle === 'function' && document.getElementById('gecmisSiparislerimAlani')) gecmisSiparislerimYukle();\r\n      } else { alert('Hata: ' + data.mesaj); }\r\n    }).catch(function(err) { btn.disabled = false; btn.innerText = eskiEtiket; alert(err); });\r\n  };\r\n\r\n  \/\/ \u0130ade sat\u0131r\u0131na t\u0131kland\u0131\u011f\u0131nda i\u00e7eri\u011fini g\u00f6stermek i\u00e7in hareketleri burada sakl\u0131yoruz.\r\n  var iadeIcerikHaritasi = {};\r\n\r\n  window.iadeIcerikGoster = function(iadeId) {\r\n    var h = iadeIcerikHaritasi[iadeId];\r\n    if (!h) return;\r\n    var kalemler = h.kalemler || [];\r\n    var satirlar = kalemler.map(function(k) {\r\n      return `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:8px;\">${k.urun_adi}<br><span style=\"font-size:11px; color:#888;\">${k.kategori || ''} \u00b7 ${k.birim || ''}<\/span><\/td><td style=\"padding:8px; text-align:center;\">${k.adet}<\/td><td style=\"padding:8px; text-align:right;\">${sayiyiMetneCevir(k.birim_fiyat)} TL<\/td><td style=\"padding:8px; text-align:right; font-weight:bold;\">${sayiyiMetneCevir(k.satir_tutari)} TL<\/td><\/tr>`;\r\n    }).join('') || '<tr><td colspan=\"4\" style=\"padding:12px; text-align:center; color:#888;\">Kalem bilgisi bulunamad\u0131.<\/td><\/tr>';\r\n\r\n    document.getElementById('iadeIcerikBaslik').innerText = h.iade_id + ' \u2014 \u0130ade \u0130\u00e7eri\u011fi';\r\n    document.getElementById('iadeIcerikGovde').innerHTML =\r\n      `<p style=\"font-size:13px; color:#5a564a; margin-top:0;\">Kaynak sipari\u015f: <b style=\"color:#0792ad;\">${h.kaynak_siparis_id}<\/b> \u00b7 Tarih: <b>${h.tarihStr}<\/b><\/p>\r\n       <table style=\"width:100%; border-collapse:collapse; font-size:13px;\"><thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:8px; text-align:left;\">\u00dcr\u00fcn<\/th><th style=\"padding:8px; text-align:center;\">Adet<\/th><th style=\"padding:8px; text-align:right;\">Birim Fiyat<\/th><th style=\"padding:8px; text-align:right;\">Tutar<\/th><\/tr><\/thead><tbody>${satirlar}<\/tbody><\/table>\r\n       <div style=\"text-align:right; margin-top:12px; font-size:16px;\"><b>Toplam \u0130ade: <span style=\"color:#b8860b;\">${sayiyiMetneCevir(h.rawTahsilat)} TL<\/span><\/b><\/div>`;\r\n    document.getElementById('iadeIcerikKutusu').style.display = 'flex';\r\n  };\r\n\r\n  \/\/ \ud83e\uddfe Ciro tablosunda \"\u00dcr\u00fcn \u0130adesi\" tutar\u0131na t\u0131kland\u0131\u011f\u0131nda: o sipari\u015fe ait T\u00dcM iadeleri\r\n  \/\/ (bir sipari\u015fte birden fazla k\u0131smi iade olabilir) kalemleriyle birlikte g\u00f6sterir.\r\n  window.siparisIadeleriGoster = function(siparisId) {\r\n    var r = hamRaporVerisi.find(function(x) { return x.siparis_id === siparisId; });\r\n    if (!r || !r.iadeler || r.iadeler.length === 0) { alert('Bu sipari\u015fe ait iade detay\u0131 bulunamad\u0131.'); return; }\r\n\r\n    var toplam = 0;\r\n    var bloklar = r.iadeler.map(function(i) {\r\n      toplam += metniSayiyaCevir(i.toplam_tutar);\r\n      var satirlar = (i.kalemler || []).map(function(k) {\r\n        return `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:7px;\">${k.urun_adi}<br><span style=\"font-size:11px; color:#888;\">${k.kategori || ''} \u00b7 ${k.birim || ''}<\/span><\/td><td style=\"padding:7px; text-align:center;\">${k.adet}<\/td><td style=\"padding:7px; text-align:right;\">${sayiyiMetneCevir(k.birim_fiyat)} TL<\/td><td style=\"padding:7px; text-align:right; font-weight:bold;\">${sayiyiMetneCevir(k.satir_tutari)} TL<\/td><\/tr>`;\r\n      }).join('') || '<tr><td colspan=\"4\" style=\"padding:10px; text-align:center; color:#888;\">Kalem bilgisi yok.<\/td><\/tr>';\r\n      var tipEtiket = i.iade_tipi === 'Tam' ? 'Tam iade' : 'K\u0131smi iade';\r\n      return `<div style=\"margin-bottom:18px; border:1px solid #e3ddc9; border-radius:6px; padding:12px;\">\r\n        <div style=\"display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:6px; margin-bottom:8px;\">\r\n          <b style=\"color:#b8860b;\">${i.iade_id}<\/b>\r\n          <span style=\"font-size:12px; color:#666;\">${new Date(i.tarih).toLocaleDateString('tr-TR')} \u00b7 ${tipEtiket}<\/span>\r\n        <\/div>\r\n        ${i.aciklama ? `<div style=\"font-size:12px; color:#666; font-style:italic; margin-bottom:8px;\">${i.aciklama}<\/div>` : ''}\r\n        <table style=\"width:100%; border-collapse:collapse; font-size:13px;\"><thead><tr style=\"background:#f3f0e6; border-bottom:1px solid #ccc;\"><th style=\"padding:7px; text-align:left;\">\u00dcr\u00fcn<\/th><th style=\"padding:7px; text-align:center;\">Adet<\/th><th style=\"padding:7px; text-align:right;\">Birim Fiyat<\/th><th style=\"padding:7px; text-align:right;\">Tutar<\/th><\/tr><\/thead><tbody>${satirlar}<\/tbody><\/table>\r\n      <\/div>`;\r\n    }).join('');\r\n\r\n    document.getElementById('iadeIcerikBaslik').innerText = siparisId + ' \u2014 \u0130adeler';\r\n    document.getElementById('iadeIcerikGovde').innerHTML = bloklar +\r\n      `<div style=\"text-align:right; font-size:16px;\"><b>Toplam \u0130ade: <span style=\"color:#b8860b;\">${sayiyiMetneCevir(toplam)} TL<\/span><\/b><\/div>`;\r\n    document.getElementById('iadeIcerikKutusu').style.display = 'flex';\r\n  };\r\n\r\n  \/\/ \ud83d\udccb \u0130ade talepleri \u2014 bekleyenler \u00fcstte, karara ba\u011flananlar altta.\r\n  \/\/ \u2550\u2550\u2550 M\u00dc\u015eTER\u0130 B\u0130LG\u0130LER\u0130 \u2550\u2550\u2550\r\n  var hamMusteriBilgileri = [];\r\n\r\n  window.musteriBilgileriYukle = function() {\r\n    var alan = document.getElementById('musteriBilgiListesiAlani');\r\n    if (!alan) return;\r\n    alan.innerHTML = 'Y\u00fckleniyor...';\r\n    googleAPI({ action: 'musteri_bilgileri_cek' }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alan.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>'; return; }\r\n      hamMusteriBilgileri = data.musteriler || [];\r\n      musteriBilgileriCiz();\r\n    }).catch(function(err) { alan.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  };\r\n\r\n  \/\/ \ud83d\uddfa\ufe0f Google Maps ba\u011flant\u0131s\u0131ndan koordinat \u00e7\u0131karmay\u0131 dener. Bulursa k\u00fc\u00e7\u00fck bir harita\r\n  \/\/ \u00f6nizlemesi (OpenStreetMap \u2014 \u00fccretsiz, API anahtar\u0131 gerektirmez) g\u00f6sterilir.\r\n  \/\/ K\u0131salt\u0131lm\u0131\u015f ba\u011flant\u0131larda (maps.app.goo.gl) koordinat bulunmad\u0131\u011f\u0131 i\u00e7in sadece\r\n  \/\/ t\u0131klanabilir ba\u011flant\u0131 g\u00f6sterilir.\r\n  function haritaOnizleme(link) {\r\n    if (!link) return '';\r\n    var m = link.match(\/@(-?\\d+\\.\\d+),(-?\\d+\\.\\d+)\/)\r\n         || link.match(\/[?&]q=(-?\\d+\\.\\d+),\\s*(-?\\d+\\.\\d+)\/)\r\n         || link.match(\/!3d(-?\\d+\\.\\d+)!4d(-?\\d+\\.\\d+)\/)\r\n         || link.match(\/(-?\\d{1,2}\\.\\d{4,}),\\s*(-?\\d{1,3}\\.\\d{4,})\/);\r\n    if (!m) return '';\r\n    var lat = parseFloat(m[1]), lon = parseFloat(m[2]);\r\n    if (isNaN(lat) || isNaN(lon)) return '';\r\n    var d = 0.004;\r\n    var bbox = (lon - d) + ',' + (lat - d) + ',' + (lon + d) + ',' + (lat + d);\r\n    return `<iframe src=\"https:\/\/www.openstreetmap.org\/export\/embed.html?bbox=${bbox}&layer=mapnik&marker=${lat},${lon}\"\r\n              style=\"width:100%; max-width:280px; height:150px; border:1px solid #ddd; border-radius:6px; margin-top:6px;\" loading=\"lazy\"><\/iframe>`;\r\n  }\r\n\r\n  window.musteriBilgileriCiz = function() {\r\n    var alan = document.getElementById('musteriBilgiListesiAlani');\r\n    if (!alan) return;\r\n    var aramaKutusu = document.getElementById('musteriBilgiArama');\r\n    var arama = aramaKutusu ? aramaNormalize(aramaKutusu.value) : '';\r\n\r\n    var liste = hamMusteriBilgileri.filter(function(m) {\r\n      if (arama === '') return true;\r\n      var aranabilir = aramaNormalize([m.gercek_isim, m.kullanici_adi, m.isletme_tipi, m.telefon, m.ilgili_kisi, m.fatura_bilgileri].join(' '));\r\n      return aranabilir.indexOf(arama) !== -1;\r\n    });\r\n\r\n    \/\/ \ud83d\udcc7 Bilgisi girilmi\u015f kartlar \u00f6nce ve alfabetik; hi\u00e7 bilgi girilmemi\u015fler en sonda.\r\n    \/\/ (Masa\u00fcst\u00fcnde soldan sa\u011fa, mobilde yukar\u0131dan a\u015fa\u011f\u0131 akar \u2014 grid d\u00fczeni bunu sa\u011fl\u0131yor.)\r\n    function bilgiVarMi(m) {\r\n      var telVar = telefonlariCoz(m.telefon).some(function(t) { return t.numara || t.kisi; });\r\n      return telVar || !!(m.fatura_bilgileri && m.fatura_bilgileri.trim()) || !!(m.lokasyon_link && m.lokasyon_link.trim());\r\n    }\r\n    liste.sort(function(a, b) {\r\n      var av = bilgiVarMi(a), bv = bilgiVarMi(b);\r\n      if (av !== bv) return av ? -1 : 1;\r\n      return (a.gercek_isim || a.kullanici_adi || '').localeCompare(b.gercek_isim || b.kullanici_adi || '', 'tr');\r\n    });\r\n\r\n    if (liste.length === 0) { alan.innerHTML = '<p style=\"padding:15px; text-align:center; color:#666;\">Kay\u0131t bulunamad\u0131.<\/p>'; return; }\r\n\r\n    var html = '<div style=\"display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:14px;\">';\r\n    liste.forEach(function(m) {\r\n      var pasif = m.durum !== 'Aktif';\r\n      var guvenliKadi = (m.kullanici_adi || '').replace(\/'\/g, \"\\\\'\");\r\n      var duzenlemede = duzenlenenKartlar.indexOf(m.kullanici_adi) !== -1;\r\n      var bos = '<span style=\"color:#bbb;\">\u2014<\/span>';\r\n      var telListe = telefonlariCoz(m.telefon);\r\n\r\n      \/\/ \ud83d\udd12 \u0130ki mod: varsay\u0131lan SALT OKUNUR, \"D\u00fczenle\" ile d\u00fczenleme moduna ge\u00e7ilir.\r\n      \/\/ Kazara de\u011fi\u015fiklik riskini ortadan kald\u0131r\u0131r; kaydetmek bilin\u00e7li bir eylem olur.\r\n      var govde;\r\n      if (duzenlemede) {\r\n        var telSatirlari = (telListe.length ? telListe : [{ numara: '', kisi: '' }])\r\n          .map(function(t) { return telefonSatiriHtml(guvenliKadi, t.numara, t.kisi); }).join('');\r\n        govde = `\r\n          <div style=\"margin-bottom:9px;\">\r\n            <b style=\"display:block; margin-bottom:3px;\">Fatura Bilgileri:<\/b>\r\n            <textarea id=\"mbd-fatura-${guvenliKadi}\" rows=\"5\" placeholder=\"\u00dcnvan&#10;Vergi Dairesi&#10;Vergi No&#10;Adres\"\r\n              style=\"width:100%; box-sizing:border-box; padding:7px; border:1px solid #d8d2c0; border-radius:4px; font-family:inherit; font-size:13px; line-height:1.6; resize:vertical;\">${(m.fatura_bilgileri || '').replace(\/<\/g, '&lt;')}<\/textarea>\r\n          <\/div>\r\n          <div style=\"margin-bottom:9px;\">\r\n            <b style=\"display:block; margin-bottom:3px;\">Telefon:\r\n              <button type=\"button\" onclick=\"telefonSatiriEkle('${guvenliKadi}')\" title=\"Yeni telefon ekle\"\r\n                style=\"background:#0792ad; color:#fff; border:none; border-radius:50%; width:19px; height:19px; line-height:1; cursor:pointer; font-size:13px; font-weight:700; padding:0; vertical-align:middle;\">+<\/button>\r\n            <\/b>\r\n            <div id=\"tel-liste-${guvenliKadi}\">${telSatirlari}<\/div>\r\n          <\/div>\r\n          <div style=\"margin-bottom:12px;\">\r\n            <b style=\"display:block; margin-bottom:3px;\">Lokasyon:<\/b>\r\n            <input type=\"text\" id=\"mbd-lokasyon-${guvenliKadi}\" value=\"${(m.lokasyon_link || '').replace(\/\"\/g, '&quot;')}\" placeholder=\"Google Maps ba\u011flant\u0131s\u0131\"\r\n              style=\"width:100%; box-sizing:border-box; padding:7px; border:1px solid #d8d2c0; border-radius:4px; font-family:inherit; font-size:13px;\">\r\n          <\/div>\r\n          <div style=\"display:flex; gap:8px; justify-content:flex-end;\">\r\n            <button type=\"button\" onclick=\"musteriKartiIptal('${guvenliKadi}')\"\r\n              style=\"background:#f1ede0; color:#5a564a; border:none; padding:8px 16px; border-radius:4px; cursor:pointer; font-weight:600; font-size:13px;\">Vazge\u00e7<\/button>\r\n            <button type=\"button\" onclick=\"musteriKartiKaydet(this, '${guvenliKadi}')\"\r\n              style=\"background:#0792ad; color:#fff; border:none; padding:8px 20px; border-radius:4px; cursor:pointer; font-weight:700; font-size:13px;\">Kaydet<\/button>\r\n          <\/div>`;\r\n      } else {\r\n        var telGosterim = telListe.length\r\n          ? telListe.map(function(t) {\r\n              var ara = (t.numara || '').replace(\/[^\\d+]\/g, '');\r\n              return '<div>' + (ara ? '<a href=\"tel:' + ara + '\" style=\"color:#0792ad;\">' + t.numara + '<\/a>' : t.numara)\r\n                + (t.kisi ? ' <span style=\"color:#8a8578; font-size:12px;\">(' + t.kisi + ')<\/span>' : '') + '<\/div>';\r\n            }).join('')\r\n          : bos;\r\n        var lokGosterim = m.lokasyon_link\r\n          ? '<span title=\"' + m.lokasyon_link.replace(\/\"\/g, '&quot;') + '\">'\r\n            + (m.lokasyon_link.length > 34 ? m.lokasyon_link.slice(0, 34) + '\u2026' : m.lokasyon_link) + '<\/span>'\r\n            + musteriAlanEki('lokasyon_link', m.lokasyon_link)\r\n          : bos;\r\n        \/\/ \ud83d\udcf2 Telegram ba\u011flant\u0131 durumu\/linki \u2014 sadece S\u00fcper Admin g\u00f6r\u00fcr ve \u00fcretir.\r\n        \/\/ Ba\u011flant\u0131, sipari\u015f takibi bildirimlerinin (onay\/yola \u00e7\u0131kt\u0131\/teslim) m\u00fc\u015fteriye\r\n        \/\/ gidebilmesi i\u00e7in gereklidir.\r\n        var suAdminMiKart = aktifKullanici && aktifKullanici.rol && aktifKullanici.rol.toLowerCase() === 'super admin';\r\n        var telegramSatiri = '';\r\n        if (suAdminMiKart) {\r\n          telegramSatiri = m.telegram_chat_id\r\n            ? '<div style=\"margin-bottom:7px;\"><b style=\"display:block;\">Telegram:<\/b><span style=\"color:#28a745;\">\u2705 Ba\u011fl\u0131<\/span><\/div>'\r\n            : `<div style=\"margin-bottom:7px;\"><b style=\"display:block;\">Telegram:<\/b>\r\n                 <button type=\"button\" onclick=\"telegramLinkiOlustur(this, '${guvenliKadi}')\"\r\n                   style=\"background:#0792ad; color:#fff; border:none; padding:5px 12px; border-radius:4px; cursor:pointer; font-size:12px; font-weight:600;\">Ba\u011flant\u0131 Linki Olu\u015ftur<\/button>\r\n                 <div id=\"tg-link-${guvenliKadi}\" style=\"margin-top:6px;\"><\/div>\r\n               <\/div>`;\r\n        }\r\n        govde = `\r\n          <div style=\"margin-bottom:7px;\"><b style=\"display:block;\">Fatura Bilgileri:<\/b>\r\n            <div style=\"white-space:pre-line; word-break:break-word;\">${m.fatura_bilgileri || bos}<\/div><\/div>\r\n          <div style=\"margin-bottom:7px;\"><b style=\"display:block;\">Telefon:<\/b>${telGosterim}<\/div>\r\n          <div style=\"margin-bottom:7px;\"><b style=\"display:block;\">Lokasyon:<\/b>\r\n            <div style=\"word-break:break-word; overflow-wrap:anywhere;\">${lokGosterim}<\/div><\/div>\r\n          ${telegramSatiri}\r\n          ${haritaOnizleme(m.lokasyon_link)}`;\r\n      }\r\n\r\n      html += `<div style=\"border:1px solid ${duzenlemede ? '#0792ad' : (pasif ? '#ddd' : '#e3ddc9')}; border-radius:8px; padding:14px; background:${duzenlemede ? '#fff' : (pasif ? '#f7f7f7' : '#fffdf8')}; ${pasif && !duzenlemede ? 'opacity:0.7;' : ''}\">\r\n        <div style=\"display:flex; justify-content:space-between; align-items:flex-start; gap:8px; margin-bottom:10px; border-bottom:1px solid #eee; padding-bottom:8px;\">\r\n          <div>\r\n            <div style=\"font-weight:700; color:#0792ad; font-size:15px;\">${m.gercek_isim || m.kullanici_adi}<\/div>\r\n            <div style=\"font-size:11px; color:#8a8578;\">${m.isletme_tipi || '-'}${pasif ? ' \u00b7 Ar\u015fivlenmi\u015f' : ''}<\/div>\r\n          <\/div>\r\n          ${duzenlemede ? '' : `<button type=\"button\" onclick=\"musteriKartiDuzenle('${guvenliKadi}')\"\r\n            style=\"background:#f1ede0; color:#5a564a; border:none; padding:5px 12px; border-radius:4px; cursor:pointer; font-size:12px; font-weight:600; white-space:nowrap;\">D\u00fczenle<\/button>`}\r\n        <\/div>\r\n        <div style=\"font-size:13px; line-height:1.7; color:#3d3a33;\">${govde}<\/div>\r\n      <\/div>`;\r\n    });\r\n    html += '<\/div>';\r\n    alan.innerHTML = html;\r\n  };\r\n\r\n  \/\/ Hangi kartlar\u0131n d\u00fczenleme modunda oldu\u011funu tutar (ayn\u0131 anda birden fazla a\u00e7\u0131labilir).\r\n  var duzenlenenKartlar = [];\r\n\r\n  window.musteriKartiDuzenle = function(kadi) {\r\n    if (duzenlenenKartlar.indexOf(kadi) === -1) duzenlenenKartlar.push(kadi);\r\n    musteriBilgileriCiz();\r\n  };\r\n\r\n  window.musteriKartiIptal = function(kadi) {\r\n    duzenlenenKartlar = duzenlenenKartlar.filter(function(k) { return k !== kadi; });\r\n    musteriBilgileriCiz(); \/\/ kaydedilmemi\u015f de\u011fi\u015fiklikler at\u0131l\u0131r, veri kaynaktan yeniden \u00e7izilir\r\n  };\r\n\r\n  window.musteriKartiKaydet = function(btn, kadi) {\r\n    var m = hamMusteriBilgileri.find(function(x) { return x.kullanici_adi === kadi; });\r\n    if (!m) return;\r\n\r\n    var faturaEl = document.getElementById('mbd-fatura-' + kadi);\r\n    var lokEl = document.getElementById('mbd-lokasyon-' + kadi);\r\n    var fatura = faturaEl ? faturaEl.value.trim() : (m.fatura_bilgileri || '');\r\n    var lokasyon = lokEl ? lokEl.value.trim() : (m.lokasyon_link || '');\r\n\r\n    \/\/ Telefonlar: her sat\u0131r \"numara|kisi\" olarak birle\u015ftirilir (bkz. telefonlariCoz).\r\n    var satirlar = [];\r\n    var kap = document.getElementById('tel-liste-' + kadi);\r\n    if (kap) {\r\n      kap.querySelectorAll('.tel-satir').forEach(function(satir) {\r\n        var numara = satir.querySelector('.tel-numara').value.replace(\/\\|\/g, ' ').trim();\r\n        var kisi = satir.querySelector('.tel-kisi').value.replace(\/\\|\/g, ' ').trim();\r\n        if (numara !== '' || kisi !== '') satirlar.push(numara + '|' + kisi);\r\n      });\r\n    }\r\n    var telefon = satirlar.join('\\n');\r\n\r\n    btn.disabled = true; btn.innerText = 'Kaydediliyor...';\r\n    googleAPI({ action: 'musteri_bilgileri_kaydet', kullanici_adi: kadi,\r\n                ilgili_kisi: (m.ilgili_kisi || ''), telefon: telefon,\r\n                fatura_bilgileri: fatura, lokasyon_link: lokasyon }).then(function(data) {\r\n      btn.disabled = false; btn.innerText = 'Kaydet';\r\n      if (data.durum !== 'basarili') { alert(data.mesaj); return; }\r\n      m.fatura_bilgileri = fatura; m.telefon = telefon; m.lokasyon_link = lokasyon;\r\n      duzenlenenKartlar = duzenlenenKartlar.filter(function(k) { return k !== kadi; });\r\n      musteriBilgileriCiz();\r\n    }).catch(function(err) { btn.disabled = false; btn.innerText = 'Kaydet'; alert(err); });\r\n  };\r\n\r\n  \/\/ \ud83d\udcf2 S\u00fcper Admin i\u00e7in: m\u00fc\u015fteriye \u00f6zel tek kullan\u0131ml\u0131k Telegram ba\u011flant\u0131 linki\r\n  \/\/ \u00fcretir ve panoya kopyalanabilir \u015fekilde ekranda g\u00f6sterir. Mevcut \"Kopyala\"\r\n  \/\/ d\u00fc\u011fmesiyle ayn\u0131 panoyaKopyala() fonksiyonu kullan\u0131l\u0131r (lokasyon linkindeki gibi).\r\n  window.telegramLinkiOlustur = function(btn, kadi) {\r\n    btn.disabled = true; btn.innerText = 'Olu\u015fturuluyor...';\r\n    googleAPI({ action: 'telegram_baglama_linki_olustur', kullanici_adi: kadi }).then(function(data) {\r\n      btn.disabled = false; btn.innerText = 'Ba\u011flant\u0131 Linki Olu\u015ftur';\r\n      if (data.durum !== 'basarili') { alert(data.mesaj); return; }\r\n      var kutu = document.getElementById('tg-link-' + kadi);\r\n      if (kutu) {\r\n        var guvenliLink = data.link.replace(\/'\/g, \"\\\\'\");\r\n        kutu.innerHTML = '<input type=\"text\" readonly value=\"' + data.link + '\" onclick=\"this.select();\" '\r\n          + 'style=\"width:70%; box-sizing:border-box; padding:5px; border:1px solid #d8d2c0; border-radius:4px; font-size:12px;\"> '\r\n          + '<button type=\"button\" onclick=\"panoyaKopyala(this, \\'' + guvenliLink + '\\')\" '\r\n          + 'style=\"background:#f1ede0; border:1px solid #ddd6c2; border-radius:4px; padding:5px 10px; cursor:pointer; font-size:12px;\">Kopyala<\/button>';\r\n      }\r\n    }).catch(function(err) { btn.disabled = false; btn.innerText = 'Ba\u011flant\u0131 Linki Olu\u015ftur'; alert(err); });\r\n  };\r\n\r\n  \/\/ \u270f\ufe0f Yerinde (inline) d\u00fczenleme: alana t\u0131klan\u0131nca metin bir girdiye d\u00f6n\u00fc\u015f\u00fcr,\r\n  \/\/ odaktan \u00e7\u0131k\u0131nca otomatik kaydedilir. Esc ile vazge\u00e7ilir.\r\n  \/\/ \u00c7ok sat\u0131rl\u0131 alanlarda (fatura bilgileri) textarea kullan\u0131l\u0131r \u2014 Enter alt sat\u0131ra ge\u00e7er,\r\n  \/\/ kaydetmek i\u00e7in ba\u015fka bir yere t\u0131klamak yeterlidir.\r\n  \/\/ \u260e\ufe0f Telefonlar sat\u0131r sat\u0131r \"numara|kisi\" bi\u00e7iminde saklan\u0131r.\r\n  \/\/ \u26a0\ufe0f Bilin\u00e7li olarak JSON KULLANILMIYOR: JSON'daki t\u0131rnaklar aktar\u0131m s\u0131ras\u0131nda\r\n  \/\/ ka\u00e7\u0131\u015f karakteriyle bozulup ayr\u0131\u015ft\u0131rmay\u0131 k\u0131r\u0131yordu. Boru i\u015fareti (|) hi\u00e7bir yerde\r\n  \/\/ veri i\u00e7inde ge\u00e7medi\u011fi i\u00e7in g\u00fcvenli bir ayra\u00e7.\r\n  \/\/ Eski kay\u0131tlar \"0555 555 55 55 (Ahmet)\" bi\u00e7iminde olabilir \u2014 o da desteklenir.\r\n  function telefonlariCoz(ham) {\r\n    if (!ham || !ham.trim()) return [];\r\n    return ham.split(\/\\r?\\n\/).map(function(satir) {\r\n      satir = satir.trim();\r\n      if (satir === '') return null;\r\n      if (satir.indexOf('|') !== -1) {\r\n        var p = satir.split('|');\r\n        return { numara: (p[0] || '').trim(), kisi: (p[1] || '').trim() };\r\n      }\r\n      \/\/ Eski bi\u00e7im: parantez i\u00e7indeki ki\u015fi ad\u0131n\u0131 ay\u0131kla.\r\n      var m = satir.match(\/\\((.*?)\\)\/);\r\n      return { numara: satir.replace(\/\\s*\\(.*?\\)\\s*\/g, '').trim(), kisi: m ? m[1].trim() : '' };\r\n    }).filter(function(t) { return t && (t.numara || t.kisi); });\r\n  }\r\n\r\n  function telefonAlani(m) {\r\n    var kadi = (m.kullanici_adi || '').replace(\/'\/g, \"\\\\'\");\r\n    var liste = telefonlariCoz(m.telefon);\r\n    if (liste.length === 0) liste = [{ numara: '', kisi: '' }];\r\n\r\n    var satirlar = liste.map(function(t, i) {\r\n      return telefonSatiriHtml(kadi, i, t.numara, t.kisi);\r\n    }).join('');\r\n\r\n    return `<div style=\"margin-bottom:7px;\">\r\n      <b style=\"display:block;\">Telefon:<\/b>\r\n      <div id=\"tel-liste-${kadi}\">${satirlar}<\/div>\r\n    <\/div>`;\r\n  }\r\n\r\n  \/\/ D\u00fczenleme modundaki tek telefon sat\u0131r\u0131: [numara] [ki\u015fi] \u2715\r\n  function telefonSatiriHtml(kadi, numara, kisi) {\r\n    var g = function(s) { return (s || '').replace(\/\"\/g, '&quot;'); };\r\n    return `<div class=\"tel-satir\" style=\"display:flex; gap:5px; align-items:center; margin-bottom:4px;\">\r\n      <input type=\"text\" class=\"tel-numara\" value=\"${g(numara)}\" placeholder=\"0555 555 55 55\"\r\n             style=\"flex:1 1 45%; min-width:0; padding:5px 7px; border:1px solid #d8d2c0; border-radius:4px; font-family:inherit; font-size:13px;\">\r\n      <input type=\"text\" class=\"tel-kisi\" value=\"${g(kisi)}\" placeholder=\"Ki\u015fi \/ \u00dcnvan\"\r\n             style=\"flex:1 1 45%; min-width:0; padding:5px 7px; border:1px solid #d8d2c0; border-radius:4px; font-family:inherit; font-size:13px;\">\r\n      <button type=\"button\" onclick=\"telefonSatiriSil(this, '${kadi}')\" title=\"Bu sat\u0131r\u0131 sil\"\r\n              style=\"background:none; border:none; color:#c0392b; cursor:pointer; font-size:14px; padding:0 3px; line-height:1; flex-shrink:0;\">\u2715<\/button>\r\n    <\/div>`;\r\n  }\r\n\r\n  window.telefonSatiriEkle = function(kadi) {\r\n    var kap = document.getElementById('tel-liste-' + kadi);\r\n    if (!kap) return;\r\n    kap.insertAdjacentHTML('beforeend', telefonSatiriHtml(kadi, '', ''));\r\n    var yeni = kap.lastElementChild.querySelector('.tel-numara');\r\n    if (yeni) yeni.focus();\r\n  };\r\n\r\n  window.telefonSatiriSil = function(btn, kadi) {\r\n    var kap = document.getElementById('tel-liste-' + kadi);\r\n    var satir = btn.closest('.tel-satir');\r\n    if (!kap || !satir) return;\r\n    satir.remove();\r\n    \/\/ Hi\u00e7 sat\u0131r kalmad\u0131ysa bo\u015f bir tane b\u0131rak ki yazacak yer kals\u0131n.\r\n    if (kap.children.length === 0) kap.insertAdjacentHTML('beforeend', telefonSatiriHtml(kadi, '', ''));\r\n  };\r\n\r\n  \/\/ \ud83e\udde9 Bir alan\u0131n G\u00d6STER\u0130M halini \u00fcretir (hem ilk \u00e7izimde hem kay\u0131t sonras\u0131\r\n  \/\/ yerinde g\u00fcncellemede kullan\u0131l\u0131r \u2014 b\u00f6ylece t\u00fcm listeyi yeniden \u00e7izmeye gerek kalmaz).\r\n  function musteriAlanGosterimi(anahtar, deger, cokSatirli) {\r\n    if (!deger) return '<span style=\"color:#bbb;\">\u2014<\/span>';\r\n    if (anahtar === 'lokasyon_link') {\r\n      \/\/ \ud83d\udd17 Uzun ba\u011flant\u0131lar kart tasar\u0131m\u0131n\u0131 ta\u015f\u0131rmas\u0131n diye k\u0131salt\u0131l\u0131r; tam adres title'da.\r\n      var kisa = deger.length > 38 ? deger.slice(0, 38) + '\u2026' : deger;\r\n      return '<span title=\"' + deger.replace(\/\"\/g, '&quot;') + '\">' + kisa + '<\/span>';\r\n    }\r\n    if (anahtar === 'telefon') {\r\n      \/\/ \u260e\ufe0f Birden fazla telefon sat\u0131r sat\u0131r tutulur. Her sat\u0131r ayr\u0131 g\u00f6sterilir ve\r\n      \/\/ aranabilir olur; parantez i\u00e7indeki ki\u015fi ad\u0131 numaradan ay\u0131klan\u0131r.\r\n      return deger.split(\/\\r?\\n\/).filter(function(s) { return s.trim() !== ''; }).map(function(satir) {\r\n        var t = satir.trim();\r\n        var numara = t.replace(\/\\(.*?\\)\/g, '').replace(\/[^\\d+]\/g, '');\r\n        var etiketEsle = t.match(\/\\((.*?)\\)\/);\r\n        var etiket = etiketEsle ? ' <span style=\"color:#8a8578; font-size:12px;\">(' + etiketEsle[1] + ')<\/span>' : '';\r\n        var gorunen = t.replace(\/\\s*\\(.*?\\)\\s*\/g, '').trim();\r\n        return numara\r\n          ? '<div><a href=\"tel:' + numara + '\" onclick=\"event.stopPropagation();\" style=\"color:#0792ad;\">' + gorunen + '<\/a>' + etiket + '<\/div>'\r\n          : '<div>' + t + '<\/div>';\r\n      }).join('');\r\n    }\r\n    if (cokSatirli) return '<span style=\"white-space:pre-line;\">' + deger + '<\/span>';\r\n    return deger;\r\n  }\r\n\r\n  \/\/ Alan\u0131n yan\u0131na gelen ek d\u00fc\u011fmeler (\u015fu an sadece lokasyon i\u00e7in kopyalama).\r\n  function musteriAlanEki(anahtar, deger) {\r\n    if (anahtar !== 'lokasyon_link' || !deger) return '';\r\n    var guvenli = deger.replace(\/'\/g, \"\\\\'\").replace(\/\"\/g, '&quot;');\r\n    return ' <button type=\"button\" class=\"mb-ek\" onclick=\"event.stopPropagation(); panoyaKopyala(this, \\'' + guvenli + '\\')\" title=\"Ba\u011flant\u0131y\u0131 kopyala\" style=\"background:#f1ede0; border:1px solid #ddd6c2; border-radius:4px; padding:1px 7px; cursor:pointer; font-size:11px; vertical-align:middle;\">Kopyala<\/button>'\r\n      + ' <a href=\"' + deger.replace(\/\"\/g, '&quot;') + '\" class=\"mb-ek\" target=\"_blank\" rel=\"noopener\" onclick=\"event.stopPropagation();\" style=\"color:#0792ad; font-size:11px; margin-left:4px;\">Haritada a\u00e7 \u2197<\/a>';\r\n  }\r\n\r\n  \/\/ \ud83d\udccb Panoya kopyalama \u2014 t\u0131klanabilir ba\u011flant\u0131 i\u015fe yaramad\u0131\u011f\u0131nda (baz\u0131 taray\u0131c\u0131\/PWA\r\n  \/\/ durumlar\u0131nda) adresi elle yap\u0131\u015ft\u0131rabilmek i\u00e7in.\r\n  window.panoyaKopyala = function(btn, metin) {\r\n    var basarili = function() {\r\n      var eski = btn.innerText;\r\n      btn.innerText = 'Kopyaland\u0131 \u2713';\r\n      btn.style.background = '#d4edda';\r\n      setTimeout(function() { btn.innerText = eski; btn.style.background = '#f1ede0'; }, 1500);\r\n    };\r\n    if (navigator.clipboard && navigator.clipboard.writeText) {\r\n      navigator.clipboard.writeText(metin).then(basarili).catch(function() { alert(metin); });\r\n    } else {\r\n      \/\/ Eski taray\u0131c\u0131lar i\u00e7in yedek y\u00f6ntem.\r\n      var gecici = document.createElement('textarea');\r\n      gecici.value = metin;\r\n      gecici.style.position = 'fixed';\r\n      gecici.style.opacity = '0';\r\n      document.body.appendChild(gecici);\r\n      gecici.select();\r\n      try { document.execCommand('copy'); basarili(); } catch (e) { alert(metin); }\r\n      document.body.removeChild(gecici);\r\n    }\r\n  };\r\n\r\n  window.iadeTalepleriYukle = function() {\r\n    var alan = document.getElementById('iadeTalepListesiAlani');\r\n    if (!alan) return;\r\n    alan.innerHTML = 'Y\u00fckleniyor...';\r\n    googleAPI({ action: 'iade_talepleri_listele' }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alan.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>'; return; }\r\n      var talepler = data.talepler || [];\r\n      var bekleyenSayisi = talepler.filter(function(t) { return t.durum === 'Talep'; }).length;\r\n\r\n      \/\/ \ud83d\udd34 Bekleyen talep varsa sekme k\u0131rm\u0131z\u0131ya d\u00f6ner ve adet rozeti \u00e7\u0131kar.\r\n      ['admin', 'super'].forEach(function(scope) {\r\n        var btn = document.getElementById(scope + 'IadeTalepBtn');\r\n        var rozet = document.getElementById(scope + 'IadeTalepRozet');\r\n        if (!btn || !rozet) return;\r\n        if (bekleyenSayisi > 0) { rozet.innerText = bekleyenSayisi; rozet.style.display = 'inline-block'; btn.style.color = '#a94442'; btn.style.fontWeight = '700'; }\r\n        else { rozet.style.display = 'none'; btn.style.color = ''; btn.style.fontWeight = ''; }\r\n      });\r\n\r\n      if (talepler.length === 0) { alan.innerHTML = '<p style=\"padding:15px; text-align:center; color:#666;\">\u0130ade talebi bulunmuyor.<\/p>'; return; }\r\n\r\n      var suAdmin = aktifKullanici.rol.toLowerCase() === 'super admin';\r\n      var html = '<div style=\"overflow-x:auto;\"><table style=\"width:100%; min-width:820px; border-collapse:collapse; text-align:left; font-size:14px;\"><thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #b8860b;\"><th style=\"padding:8px;\">Talep No<\/th><th style=\"padding:8px;\">Sipari\u015f<\/th><th style=\"padding:8px;\">Tarih<\/th><th style=\"padding:8px;\">M\u00fc\u015fteri<\/th><th style=\"padding:8px;\">\u0130\u00e7erik \/ Gerek\u00e7e<\/th><th style=\"padding:8px; text-align:right;\">Tutar<\/th><th style=\"padding:8px; text-align:center;\">Durum<\/th>' + (suAdmin ? '<th style=\"padding:8px; text-align:center;\">Karar<\/th>' : '') + '<\/tr><\/thead><tbody>';\r\n      talepler.forEach(function(t) {\r\n        var bekliyor = t.durum === 'Talep';\r\n        var icerik = (t.kalemler || []).map(function(k) { return k.urun_adi + ' (' + k.adet + ')'; }).join(', ') || '-';\r\n        var durumRozet = bekliyor\r\n          ? '<span style=\"background:#fff3cd; color:#856404; border:1px solid #ffc107; padding:3px 9px; border-radius:12px; font-size:11px; font-weight:600;\">\ud83d\udd52 Onay bekliyor<\/span>'\r\n          : '<span style=\"background:#f8d7da; color:#721c24; border:1px solid #d9534f; padding:3px 9px; border-radius:12px; font-size:11px; font-weight:600;\">\u2715 Reddedildi<\/span>';\r\n        var kararHucre = '';\r\n        if (suAdmin) {\r\n          kararHucre = bekliyor\r\n            ? `<td style=\"padding:8px; text-align:center; white-space:nowrap;\"><button type=\"button\" onclick=\"iadeTalebiKarar('${t.iade_id}', true)\" style=\"background:#28a745; color:#fff; border:none; padding:5px 11px; border-radius:4px; cursor:pointer; font-size:11px; font-weight:700; margin-right:4px;\">Onayla<\/button><button type=\"button\" onclick=\"iadeTalebiKarar('${t.iade_id}', false)\" style=\"background:#dc3545; color:#fff; border:none; padding:5px 11px; border-radius:4px; cursor:pointer; font-size:11px; font-weight:700;\">Reddet<\/button><\/td>`\r\n            : `<td style=\"padding:8px; text-align:center; font-size:11px; color:#888;\">${t.karar_veren || '-'}<\/td>`;\r\n        }\r\n        html += `<tr style=\"border-bottom:1px solid #eee; background:${bekliyor ? '#fffdf5' : '#faf7f7'};\">\r\n          <td style=\"padding:8px; font-weight:bold; color:#b8860b;\">${t.iade_id}<\/td>\r\n          <td style=\"padding:8px; color:#0792ad; font-weight:bold; cursor:pointer;\" onclick=\"siparisDetayiGoster('${t.kaynak_siparis_id}')\" title=\"Kaynak sipari\u015fi g\u00f6r\u00fcnt\u00fcle\">${t.kaynak_siparis_id}<\/td>\r\n          <td style=\"padding:8px;\">${tarihSaat(t.tarih)}<\/td>\r\n          <td style=\"padding:8px;\">${t.yat_adi || t.kullanici_adi || '-'}<\/td>\r\n          <td style=\"padding:8px; font-size:12px; color:#666;\">${icerik}${t.aciklama ? '<br><i>' + t.aciklama + '<\/i>' : ''}${t.red_gerekcesi ? '<br><b style=\"color:#a94442;\">Red: ' + t.red_gerekcesi + '<\/b>' : ''}<\/td>\r\n          <td style=\"padding:8px; text-align:right; font-weight:bold; color:#b8860b;\">${sayiyiMetneCevir(t.toplam_tutar)} TL<\/td>\r\n          <td style=\"padding:8px; text-align:center;\">${durumRozet}<\/td>${kararHucre}\r\n        <\/tr>`;\r\n      });\r\n      html += '<\/tbody><\/table><\/div>';\r\n      alan.innerHTML = html;\r\n    }).catch(function(err) { alan.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  };\r\n\r\n  window.iadeTalebiKarar = function(iadeId, onay) {\r\n    var gerekce = '';\r\n    if (onay) {\r\n      if (!confirm(iadeId + ' numaral\u0131 iade talebi ONAYLANACAK.\\n\\n\u2022 \u00dcr\u00fcnler sto\u011fa geri eklenecek\\n\u2022 Sipari\u015fin iade tutar\u0131 g\u00fcncellenecek (ciro ve cari hesaba yans\u0131r)\\n\\nDevam edilsin mi?')) return;\r\n    } else {\r\n      gerekce = prompt('Reddetme gerek\u00e7esi (m\u00fc\u015fteriye g\u00f6sterilecek):');\r\n      if (gerekce === null) return;\r\n      gerekce = gerekce.trim();\r\n      if (gerekce === '') { alert('Reddetme gerek\u00e7esi yazmal\u0131s\u0131n\u0131z.'); return; }\r\n    }\r\n    showLoading(onay ? 'Onaylan\u0131yor...' : 'Reddediliyor...');\r\n    googleAPI({ action: 'iade_talebi_karar', iade_id: iadeId, onay: onay, gerekce: gerekce }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') {\r\n        alert(onay ? '\u0130ade talebi onayland\u0131.' : '\u0130ade talebi reddedildi.');\r\n        iadeTalepleriYukle();\r\n        if (typeof raporlariYukle === 'function' && document.getElementById('raporTabloGovde')) raporlariYukle();\r\n      } else { alert('Hata: ' + data.mesaj); }\r\n    }).catch(function(err) { hideLoading(); alert(err); });\r\n  };\r\n\r\n  window.iadeleriYukle = function() {\r\n    var alan = document.getElementById('iadeListesiAlani');\r\n    if (!alan) return;\r\n    alan.innerHTML = 'Y\u00fckleniyor...';\r\n    googleAPI({ action: 'iadeler_listele' }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alan.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>'; return; }\r\n      var iadeler = data.iadeler || [];\r\n      if (iadeler.length === 0) { alan.innerHTML = '<p style=\"padding:15px; text-align:center; color:#666;\">Hen\u00fcz iade kayd\u0131 yok.<\/p>'; return; }\r\n\r\n      var suAdmin = aktifKullanici.rol.toLowerCase() === 'super admin';\r\n      var html = '<div style=\"overflow-x:auto;\"><table style=\"width:100%; min-width:760px; border-collapse:collapse; text-align:left; font-size:14px;\"><thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #b8860b;\"><th style=\"padding:8px;\">\u0130ade No<\/th><th style=\"padding:8px;\">Kaynak Sipari\u015f<\/th><th style=\"padding:8px;\">Tarih<\/th><th style=\"padding:8px;\">M\u00fc\u015fteri \/ Tekne<\/th><th style=\"padding:8px;\">Tip<\/th><th style=\"padding:8px; text-align:right;\">Tutar<\/th><th style=\"padding:8px;\">\u0130\u00e7erik<\/th>' + (suAdmin ? '<th style=\"padding:8px; text-align:center;\">\u0130\u015flem<\/th>' : '') + '<\/tr><\/thead><tbody>';\r\n      var genelToplam = 0;\r\n      iadeler.forEach(function(i) {\r\n        genelToplam += metniSayiyaCevir(i.toplam_tutar);\r\n        var icerik = (i.kalemler || []).map(function(k) { return k.urun_adi + ' (' + k.adet + ')'; }).join(', ') || '-';\r\n        var tipRozet = i.iade_tipi === 'Tam'\r\n          ? '<span style=\"background:#f8d7da; color:#721c24; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600;\">Tam<\/span>'\r\n          : '<span style=\"background:#fff3cd; color:#856404; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600;\">K\u0131smi<\/span>';\r\n        html += `<tr style=\"border-bottom:1px solid #eee;\">\r\n          <td style=\"padding:8px; font-weight:bold; color:#b8860b;\">${i.iade_id}<\/td>\r\n          <td style=\"padding:8px; color:#0792ad; font-weight:bold; cursor:pointer;\" onclick=\"siparisDetayiGoster('${i.kaynak_siparis_id}')\" title=\"Kaynak sipari\u015fi g\u00f6r\u00fcnt\u00fcle\">${i.kaynak_siparis_id}<\/td>\r\n          <td style=\"padding:8px;\">${new Date(i.tarih).toLocaleDateString('tr-TR')}<\/td>\r\n          <td style=\"padding:8px;\">${i.yat_adi || i.kullanici_adi || '-'}<\/td>\r\n          <td style=\"padding:8px;\">${tipRozet}<\/td>\r\n          <td style=\"padding:8px; text-align:right; font-weight:bold; color:#b8860b;\">${sayiyiMetneCevir(i.toplam_tutar)} TL<\/td>\r\n          <td style=\"padding:8px; font-size:12px; color:#666;\">${icerik}${i.aciklama ? '<br><i>' + i.aciklama + '<\/i>' : ''}<\/td>\r\n          ${suAdmin ? `<td style=\"padding:8px; text-align:center;\"><button type=\"button\" onclick=\"iadeSil('${i.iade_id}')\" title=\"Bu iadeyi geri al (stok tekrar d\u00fc\u015f\u00fcl\u00fcr)\" style=\"background:#dc3545; color:#fff; border:none; padding:5px 10px; border-radius:4px; cursor:pointer; font-size:11px;\">Geri Al<\/button><\/td>` : ''}\r\n        <\/tr>`;\r\n      });\r\n      html += `<tr style=\"border-top:3px double #333; background:#f8f6ef; font-weight:bold;\"><td colspan=\"5\" style=\"padding:10px;\">TOPLAM \u0130ADE<\/td><td style=\"padding:10px; text-align:right; color:#b8860b;\">${sayiyiMetneCevir(genelToplam)} TL<\/td><td colspan=\"${suAdmin ? 2 : 1}\"><\/td><\/tr>`;\r\n      html += '<\/tbody><\/table><\/div>';\r\n      alan.innerHTML = html;\r\n    }).catch(function(err) { alan.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  };\r\n\r\n  window.iadeSil = function(iadeId) {\r\n    if (!confirm(iadeId + ' numaral\u0131 iade GER\u0130 ALINACAK.\\n\\n\u2022 \u0130ade edilen \u00fcr\u00fcnler stoktan tekrar d\u00fc\u015f\u00fclecek\\n\u2022 Sipari\u015fin iade tutar\u0131 g\u00fcncellenecek\\n\\nBu i\u015flem geri al\u0131namaz. Emin misiniz?')) return;\r\n    showLoading('\u0130ade geri al\u0131n\u0131yor...');\r\n    googleAPI({ action: 'iade_sil', iade_id: iadeId }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') { alert('\u0130ade geri al\u0131nd\u0131.'); iadeleriYukle(); raporlariYukle(); }\r\n      else { alert('Hata: ' + data.mesaj); }\r\n    }).catch(function(err) { hideLoading(); alert(err); });\r\n  };\r\n\r\n  function initCariModul() {\r\n    if(document.getElementById('cariHesapTabloGovde')) return;\r\n    if(!aktifKullanici || !aktifKullanici.rol) return; \/\/ hen\u00fcz giri\u015f yap\u0131lmam\u0131\u015fsa (\u00f6rn. window.onload an\u0131nda) sessizce \u00e7\u0131k\r\n    var rolAlt = aktifKullanici.rol.toLowerCase();\r\n    var duzenlenebilir = rolAlt === 'super admin';\r\n    var hedefPanel = document.getElementById(duzenlenebilir ? 'superAdminPaneli' : 'adminPaneli');\r\n    if(!hedefPanel) return;\r\n    var scopeTag = duzenlenebilir ? 'super' : 'admin';\r\n\r\n    var tabContainer = hedefPanel.querySelector('.tab-btn');\r\n    if(tabContainer) {\r\n        tabContainer.parentElement.insertAdjacentHTML('beforeend', '<button id=\"btnCariHesaplar\" class=\"tab-btn\" onclick=\"switchTab(\\'' + scopeTag + '\\', \\'saCariHesaplar\\', this); cariHesaplariYukle();\" style=\"margin-left:5px; background:#0792ad; color:white; border:none; padding:10px 15px; cursor:pointer;\">Cari Hesaplar<\/button>');\r\n    }\r\n\r\n    var tabClass = duzenlenebilir ? 'super-tab' : 'admin-tab';\r\n    \/\/ \ud83d\udc41\ufe0f Admin bu ekran\u0131 SADECE g\u00f6r\u00fcnt\u00fcler \u2014 d\u00fczenlenebilir=false ise devreden bakiye\r\n    \/\/ banner'\u0131 ve tahsilat giri\u015fi formu hi\u00e7 enjekte edilmez, \"Sil\" butonu da (sat\u0131r\r\n    \/\/ render'\u0131nda aktifKullanici.rol kontrol\u00fc ile) hi\u00e7 g\u00f6sterilmez.\r\n    var cariSekmeHtml = `\r\n    <div id=\"saCariHesaplar\" class=\"${tabClass}\" style=\"display:none; margin-top:20px;\">\r\n       <h2 style=\"border-bottom: 2px solid #ccc; padding-bottom: 10px;\">Cari Hesap \u00d6zetleri${duzenlenebilir ? '' : ' (G\u00f6r\u00fcnt\u00fcleme)'}<\/h2>\r\n       ${duzenlenebilir ? `<div id=\"devirBakiyesiAlani\" style=\"display:none; background:#fff8e1; border:1px solid #e0c060; border-radius:8px; padding:12px 15px; margin-bottom:15px; display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap;\">\r\n          <span style=\"font-size:13px; color:#665200;\">Sistem \u00f6ncesi (ge\u00e7mi\u015f) d\u00f6nemden devreden bir bakiye varsa, ilgili teknenin\/m\u00fc\u015fterinin ad\u0131na tek seferlik a\u00e7\u0131l\u0131\u015f kayd\u0131 girin.<\/span>\r\n          <button type=\"button\" onclick=\"devirBakiyesiEklePrompt()\" style=\"background:#b8860b; color:white; border:none; padding:8px 16px; border-radius:4px; font-weight:bold; cursor:pointer; white-space:nowrap;\">Devreden Bakiye Ekle<\/button>\r\n       <\/div>` : ''}\r\n       <div class=\"kraken-scroll-sarmalayici\">\r\n       <table style=\"width:100%; border-collapse:collapse; text-align:left;\">\r\n          <thead>\r\n             <tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\">\r\n                <th style=\"padding:10px;\">M\u00fc\u015fteri<\/th>\r\n                <th style=\"padding:10px;\">Tip<\/th>\r\n                <th style=\"padding:10px; text-align:right;\">Toplam Sipari\u015f<\/th>\r\n                <th style=\"padding:10px; text-align:right;\">Toplam \u00d6deme<\/th>\r\n                <th style=\"padding:10px; text-align:right;\">Kalan Bakiye<\/th>\r\n             <\/tr>\r\n          <\/thead>\r\n          <tbody id=\"cariHesapTabloGovde\">\r\n             <tr><td colspan=\"5\" style=\"text-align:center; padding:20px;\">Veriler Y\u00fckleniyor...<\/td><\/tr>\r\n          <\/tbody>\r\n       <\/table>\r\n       <\/div>\r\n    <\/div>`;\r\n    hedefPanel.insertAdjacentHTML('beforeend', cariSekmeHtml);\r\n    \/\/ Devir bakiyesi kayd\u0131 SADECE S\u00fcper Admin'e a\u00e7\u0131k (backend de ayn\u0131 k\u0131s\u0131t\u0131 uyguluyor).\r\n    if (duzenlenebilir) {\r\n      var dbAlani = document.getElementById('devirBakiyesiAlani');\r\n      if (dbAlani) dbAlani.style.display = 'flex';\r\n    }\r\n\r\n    var popupHtml = `\r\n    <div id=\"cariDetayKutusu\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.8); z-index:2147483647; justify-content:center; align-items:center;\">\r\n       <div style=\"background:#fff; width:90%; max-width:800px; max-height:90vh; overflow-y:auto; border-radius:8px; padding:20px; position:relative;\">\r\n          <button id=\"cariDetayGeriBtn\" onclick=\"cariDetayGeriDon()\" style=\"display:none; position:absolute; right:95px; top:20px; background:#6c757d; color:white; border:none; padding:5px 12px; border-radius:4px; cursor:pointer;\">\u2190 Geri<\/button>\r\n          <button onclick=\"document.getElementById('cariDetayKutusu').style.display='none'\" style=\"position:absolute; right:20px; top:20px; background:red; color:white; border:none; padding:5px 10px; border-radius:4px; cursor:pointer;\">Kapat<\/button>\r\n          <h2 id=\"cariDetayBaslik\" style=\"margin-top:0; border-bottom:1px solid #eee; padding-bottom:10px;\">M\u00fc\u015fteri Cari Kart\u0131<\/h2>\r\n          <h3 style=\"color:#0792ad; text-align:right; margin:10px 0;\">G\u00fcncel Bakiye: <span id=\"cariDetayBakiye\">0,00<\/span> TL<\/h3>\r\n\r\n          <div style=\"background:#f8f6ef; padding:10px 15px; border-radius:6px; margin-bottom:15px; display:flex; gap:10px; align-items:flex-end; flex-wrap:wrap;\">\r\n             <div style=\"flex:1; min-width:140px;\">\r\n                <label style=\"font-weight:bold; font-size:12px; color:#8a8578;\">Ba\u015flang\u0131\u00e7 Tarihi<\/label>\r\n                <input type=\"date\" id=\"cariDetayFiltreBaslangic\" style=\"width:100%; padding:7px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\" onchange=\"adminCariEkstresiCiz()\">\r\n             <\/div>\r\n             <div style=\"flex:1; min-width:140px;\">\r\n                <label style=\"font-weight:bold; font-size:12px; color:#8a8578;\">Biti\u015f Tarihi<\/label>\r\n                <input type=\"date\" id=\"cariDetayFiltreBitis\" style=\"width:100%; padding:7px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\" onchange=\"adminCariEkstresiCiz()\">\r\n             <\/div>\r\n             <div>\r\n                <button type=\"button\" onclick=\"document.getElementById('cariDetayFiltreBaslangic').value=''; document.getElementById('cariDetayFiltreBitis').value=''; adminCariEkstresiCiz();\" style=\"background:#f1ede0; color:#5a564a; border:none; padding:8px 14px; border-radius:4px; font-weight:600; cursor:pointer; font-size:13px;\">Temizle<\/button>\r\n             <\/div>\r\n          <\/div>\r\n\r\n          <div id=\"cariTahsilatFormAlani\" style=\"background:#f8f9fa; padding:15px; border-radius:5px; margin-bottom:20px; display:${duzenlenebilir ? 'flex' : 'none'}; gap:10px; align-items:flex-end; flex-wrap:wrap;\">\r\n             <div style=\"flex:1; min-width:150px;\">\r\n                <label style=\"font-weight:bold; font-size:12px;\">Tahsilat Tutar\u0131 (TL)<\/label>\r\n                <input type=\"text\" id=\"yeniTahsilatTutar\" placeholder=\"\u00d6rn: 5000\" style=\"width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;\">\r\n             <\/div>\r\n             <div style=\"flex:1; min-width:140px;\">\r\n                <label style=\"font-weight:bold; font-size:12px;\">Tahsilat Tarihi<\/label>\r\n                <input type=\"date\" id=\"yeniTahsilatTarih\" style=\"width:100%; padding:8px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n             <\/div>\r\n             <div style=\"flex:1; min-width:140px;\">\r\n                <!-- \ud83d\udcb3 \u00d6deme y\u00f6ntemi art\u0131k yap\u0131sal bir alan \u2014 komisyon hak edi\u015f tarihinin\r\n                     do\u011fru hesaplanabilmesi i\u00e7in (Kredi Kart\u0131 ise ayardaki g\u00fcn kadar gecikmeli\r\n                     hak edilir, bkz. Komisyon sekmesi). -->\r\n                <label style=\"font-weight:bold; font-size:12px;\">\u00d6deme Y\u00f6ntemi<\/label>\r\n                <select id=\"yeniTahsilatYontem\" style=\"width:100%; padding:8px; border:1px solid #ccc; border-radius:4px; box-sizing:border-box;\">\r\n                  <option value=\"Nakit\">Nakit<\/option>\r\n                  <option value=\"Kredi Kart\u0131\">Kredi Kart\u0131<\/option>\r\n                  <option value=\"Havale\">Havale<\/option>\r\n                <\/select>\r\n             <\/div>\r\n             <div style=\"flex:2; min-width:200px;\">\r\n                <label style=\"font-weight:bold; font-size:12px;\">A\u00e7\u0131klama<\/label>\r\n                <input type=\"text\" id=\"yeniTahsilatAciklama\" placeholder=\"\u00d6rn: Elden al\u0131nd\u0131\" style=\"width:100%; padding:8px; border:1px solid #ccc; border-radius:4px;\">\r\n             <\/div>\r\n             <div>\r\n                <button id=\"tahsilatKaydetBtn\" style=\"background:#0792ad; color:white; border:none; padding:9px 15px; border-radius:4px; font-weight:bold; cursor:pointer;\" onclick=\"islemTahsilatKaydet(this)\">Tahsilat \u0130\u015fle<\/button>\r\n             <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"kraken-scroll-sarmalayici\">\r\n          <table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\">\r\n             <thead>\r\n                <tr style=\"background:#f1ede0; border-bottom:1px solid #ccc;\">\r\n                   <th style=\"padding:10px;\">Tarih<\/th>\r\n                   <th style=\"padding:10px;\">\u0130\u015flem T\u00fcr\u00fc<\/th>\r\n                   <th style=\"padding:10px;\">A\u00e7\u0131klama<\/th>\r\n                   <th style=\"padding:10px;\">Fatura No<\/th>\r\n                   <th style=\"padding:10px; text-align:right;\">Bor\u00e7<\/th>\r\n                   <th style=\"padding:10px; text-align:right;\">Alacak<\/th>\r\n                   <th style=\"padding:10px; text-align:right;\">Bakiye<\/th>\r\n                   <th style=\"padding:10px; text-align:center;\">\u0130\u015flem<\/th>\r\n                <\/tr>\r\n             <\/thead>\r\n             <tbody id=\"cariEkstreGovde\">\r\n             <\/tbody>\r\n          <\/table>\r\n          <\/div>\r\n       <\/div>\r\n    <\/div>`;\r\n    document.body.insertAdjacentHTML('beforeend', popupHtml);\r\n\r\n    var acenteTekneleriHtml = `\r\n    <div id=\"acenteTekneleriKutusu\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.8); z-index:2147483647; justify-content:center; align-items:center;\">\r\n       <div style=\"background:#fff; width:90%; max-width:700px; max-height:90vh; overflow-y:auto; border-radius:8px; padding:20px; position:relative;\">\r\n          <button onclick=\"document.getElementById('acenteTekneleriKutusu').style.display='none'\" style=\"position:absolute; right:20px; top:20px; background:red; color:white; border:none; padding:5px 10px; border-radius:4px; cursor:pointer;\">Kapat<\/button>\r\n          <h2 id=\"acenteTekneleriBaslik\" style=\"margin-top:0; border-bottom:1px solid #eee; padding-bottom:10px;\">Acente \u2014 Teknelere G\u00f6re D\u00f6k\u00fcm<\/h2>\r\n          <p style=\"font-size:13px; color:#666; margin-bottom:15px;\">Bir tekneye t\u0131klay\u0131nca o teknenin sipari\u015f bazl\u0131 ekstresi a\u00e7\u0131l\u0131r.<\/p>\r\n          <div class=\"kraken-scroll-sarmalayici\">\r\n             <div id=\"acenteTekneleriGovde\">Y\u00fckleniyor...<\/div>\r\n          <\/div>\r\n       <\/div>\r\n    <\/div>`;\r\n    document.body.insertAdjacentHTML('beforeend', acenteTekneleriHtml);\r\n  }\r\n\r\n  window.onload = function() {\r\n    \/\/ \ud83d\udd1d Sipari\u015f detay penceresini sayfan\u0131n en d\u0131\u015f\u0131na ta\u015f\u0131 \u2014 b\u00f6ylece sitenin kendi\r\n    \/\/ men\u00fcs\u00fc\/ba\u015fl\u0131\u011f\u0131 gibi \u00f6\u011felerin \"\u00fcstte g\u00f6r\u00fcnme s\u0131ras\u0131\" ile hi\u00e7 \u00e7ak\u0131\u015fmaz.\r\n    var goruntuleKutusu = document.getElementById('siparisGoruntuleKutusu');\r\n    if (goruntuleKutusu && goruntuleKutusu.parentElement !== document.body) {\r\n      document.body.appendChild(goruntuleKutusu);\r\n    }\r\n    initCariModul();\r\n    \/\/ \ud83d\udcf2 iOS'ta 'beforeinstallprompt' olayi HIC tetiklenmez (Apple desteklemiyor), bu yuzden\r\n    \/\/ bandin gosterilip gosterilmeyecegine burada da karar veriyoruz. Android'de olay\r\n    \/\/ tetiklendiginde zaten cagriliyor; iki yol da ayni kurallari kullanir.\r\n    pwaBandiniDegerlendir();\r\n    \r\n    var kayitliOturumToken = localStorage.getItem(\"kraken_oturum_token\");\r\n    if (kayitliOturumToken) {\r\n      aktifOturumToken = kayitliOturumToken;\r\n      showLoading(\"Oturum kontrol ediliyor...\");\r\n      googleAPI({ action: 'oturum_ile_giris' }).then(function(data) {\r\n        hideLoading();\r\n        if (data.durum === \"basarili\") {\r\n          oturumBasariylaAcildi(data);\r\n        } else {\r\n          \/\/ token s\u00fcresi dolmu\u015f\/ge\u00e7ersiz \u2014 normal giri\u015f ekran\u0131na geri d\u00f6n\r\n          localStorage.removeItem(\"kraken_oturum_token\");\r\n          aktifOturumToken = null;\r\n        }\r\n      }).catch(function(err) {\r\n        hideLoading();\r\n      });\r\n    }\r\n  };\r\n\r\n  document.getElementById('cikisButonu').addEventListener('click', function() { \r\n    \/\/ \ud83d\udccb \u00c7\u0131k\u0131\u015f yapmadan \u00f6nce sunucuya haber ver ki Giri\u015f Kay\u0131tlar\u0131'na d\u00fc\u015fs\u00fcn.\r\n    googleAPI({ action: 'cikis_yap' }).then(function() {\r\n      localStorage.removeItem(\"kraken_oturum_token\"); \r\n      aktifOturumToken = null; \/\/ \ud83d\udd10 oturum anahtar\u0131n\u0131 da temizle\r\n      window.location.reload(); \r\n    }).catch(function() {\r\n      \/\/ sunucuya ula\u015f\u0131lamasa bile kullan\u0131c\u0131y\u0131 yine de \u00e7\u0131k\u0131\u015f yapt\u0131r\r\n      localStorage.removeItem(\"kraken_oturum_token\"); \r\n      aktifOturumToken = null; \r\n      window.location.reload(); \r\n    });\r\n  });\r\n\r\n  \/\/ Giri\u015f ba\u015far\u0131l\u0131 oldu\u011funda (ister \u015fifreyle, ister kay\u0131tl\u0131 oturum anahtar\u0131yla) aray\u00fcz\u00fc haz\u0131rlar.\r\n  function oturumBasariylaAcildi(data) {\r\n    globalData = data;\r\n    aktifKullanici = data.kullanici;\r\n    aktifOturumToken = data.oturum_token;\r\n    localStorage.setItem(\"kraken_oturum_token\", aktifOturumToken); \/\/ \ud83d\udd10 sadece token saklan\u0131yor, \u015fifre de\u011fil\r\n\r\n    document.getElementById('girisFormu').style.display = 'none';\r\n    document.getElementById('gosterimIsim').innerText = aktifKullanici.gercek_isim;\r\n    document.getElementById('kullaniciPaneli').style.display = 'flex';\r\n\r\n    if(aktifKullanici.rol.toLowerCase() === 'admin') {\r\n      document.getElementById('admMailListesi').value = data.ayarlar.email || \"\";\r\n      document.getElementById('adminPaneli').style.display = 'block';\r\n      adminSiparisleriYukle();\r\n      initCariModul();\r\n      kampanyaMusteriListesiniYukle(); \/\/ ciro hedeflerindeki \u00f6zel-ki\u015fi isimlerini \u00e7\u00f6zebilmek i\u00e7in\r\n      kampanyalariListele();\r\n      ciroHedefleriListele();\r\n      istatistikSekmesiniAdminePanelineTasi();\r\n      iadeTalepleriYukle();\r\n    } else if(aktifKullanici.rol.toLowerCase() === 'super admin') {\r\n      document.getElementById('saKritikStok').value = data.ayarlar.kritikStok || 0; document.getElementById('saKrediKartiGecikme').value = (data.ayarlar.krediKartiGecikme !== undefined ? data.ayarlar.krediKartiGecikme : 2);\r\n      document.getElementById('saMailListesi').value = data.ayarlar.email || \"\";\r\n      document.getElementById('superAdminPaneli').style.display = 'block';\r\n      initCariModul();\r\n      raporlariYukle();\r\n      \/\/ \u26a1 \u00dcr\u00fcn tablosu ilk a\u00e7\u0131l\u0131\u015fta \u00e7izilmez (sekme zaten gizli) \u2014 sekmeye t\u0131kland\u0131\u011f\u0131nda\r\n      \/\/ saUrunTablosuGoster() ile bir kez \u00e7izilir. Giri\u015f ekran\u0131n\u0131 gereksiz yere yava\u015flatmas\u0131n.\r\n      urunTablosunuGecersizKil();\r\n      duyurulariListele();\r\n      teslimatSekmesiniSuperAdminePanelineTasi();\r\n      iadeTalepleriYukle();\r\n    } else if(aktifKullanici.rol.toLowerCase() === 'creator') {\r\n      document.getElementById('creatorPaneli').style.display = 'block';\r\n      creatorKullanicilariYukle();\r\n      komisyonVerisiYukle();\r\n    } else {\r\n      document.getElementById('kullaniciAnaEkran').style.display = 'block';\r\n      taslaklariListele(data.taslaklar);\r\n      yeniSiparisHazirla();\r\n    }\r\n\r\n    duyuruKontrolEt(data.son_duyuru);\r\n  }\r\n\r\n  \/\/ \ud83d\udce2 Sistem duyurusu: sadece daha \u00f6nce G\u00d6R\u00dcLMEM\u0130\u015e (localStorage'da id'si kay\u0131tl\u0131 olmayan)\r\n  \/\/ yeni bir duyuru varsa a\u00e7\u0131l\u0131r pencere g\u00f6sterir.\r\n  function duyuruKontrolEt(duyuru) {\r\n    if (!duyuru || !duyuru.id) return;\r\n    var gorulenId = localStorage.getItem('kraken_son_gorulen_duyuru_id');\r\n    if (String(gorulenId) === String(duyuru.id)) return; \/\/ zaten g\u00f6r\u00fclm\u00fc\u015f\r\n\r\n    document.getElementById('duyuruMetni').innerText = duyuru.mesaj;\r\n    document.getElementById('duyuruTarih').innerText = new Date(duyuru.tarih).toLocaleString('tr-TR');\r\n    document.getElementById('duyuruKutusu').style.display = 'flex';\r\n    window._sonDuyuruId = duyuru.id; \/\/ kapat butonunda kullan\u0131lacak\r\n  }\r\n\r\n  window.duyuruKapat = function() {\r\n    if (window._sonDuyuruId) localStorage.setItem('kraken_son_gorulen_duyuru_id', window._sonDuyuruId);\r\n    document.getElementById('duyuruKutusu').style.display = 'none';\r\n  };\r\n\r\n  var hamDuyuruMusterileri = [];\r\n\r\n  \/\/ \"M\u00fc\u015fteriler (Kullan\u0131c\u0131 Tipi)\" se\u00e7eneklerinden herhangi biri i\u015faretliyken, alttaki\r\n  \/\/ tekil m\u00fc\u015fteri se\u00e7imi anlams\u0131z (o tip zaten hepsini kaps\u0131yor) \u2014 bu y\u00fczden devre d\u0131\u015f\u0131\r\n  \/\/ b\u0131rak\u0131l\u0131r. Personel (S\u00fcper Admin\/Admin) kutucuklar\u0131 bu mant\u0131\u011fa dahil de\u011fil, onlar\r\n  \/\/ m\u00fc\u015fteri se\u00e7imiyle \u00e7ak\u0131\u015fmaz.\r\n  window.duyuruRolDegisti = function() {\r\n    var isletmeSeciliMi = document.querySelectorAll('.duyuru-hedef-isletme:checked').length > 0;\r\n    var arama = document.getElementById('duyuruMusteriArama');\r\n    var aciklama = document.getElementById('duyuruMusteriAciklama');\r\n    var bolum = document.getElementById('duyuruMusteriBolumu');\r\n\r\n    arama.disabled = isletmeSeciliMi;\r\n    document.querySelectorAll('.duyuru-musteri-kutu').forEach(function(k) {\r\n      k.disabled = isletmeSeciliMi;\r\n      if (isletmeSeciliMi) k.checked = false; \/\/ yukar\u0131da zaten kapsand\u0131\u011f\u0131 i\u00e7in se\u00e7imi de temizle\r\n    });\r\n    bolum.style.opacity = isletmeSeciliMi ? '0.45' : '1';\r\n    aciklama.innerText = isletmeSeciliMi\r\n      ? 'Yukar\u0131da en az bir m\u00fc\u015fteri tipi se\u00e7ili oldu\u011fu i\u00e7in bu alan pasif \u2014 o tip zaten herkesi kaps\u0131yor.'\r\n      : 'Hi\u00e7bir m\u00fc\u015fteri tipi se\u00e7ili de\u011fil \u2014 sadece burada i\u015faretledi\u011fin ki\u015filer bu duyuruyu g\u00f6recek.';\r\n  };\r\n\r\n  window.duyuruMusteriListesiniYukle = function(zorlaYenile) {\r\n    var alan = document.getElementById('duyuruMusteriListesi');\r\n    \/\/ \u26a1 Ayn\u0131 \u00f6nbellek mant\u0131\u011f\u0131 (bkz. kampanyaMusteriListesiniYukle) \u2014 sekme ge\u00e7i\u015flerinde\r\n    \/\/ gereksiz sunucu iste\u011fini \u00f6nler.\r\n    if (!zorlaYenile && hamDuyuruMusterileri && hamDuyuruMusterileri.length > 0) {\r\n      duyuruMusteriListesiniCiz(hamDuyuruMusterileri);\r\n      duyuruRolDegisti();\r\n      return;\r\n    }\r\n    googleAPI({ action: 'kullanicilari_listele' }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alan.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>'; return; }\r\n      hamDuyuruMusterileri = (data.kullanicilar || []).filter(function(k) { return k.rol.toLowerCase() === 'acente' || k.rol.toLowerCase() === 'yat'; });\r\n      duyuruMusteriListesiniCiz(hamDuyuruMusterileri);\r\n      duyuruRolDegisti(); \/\/ ba\u015flang\u0131\u00e7 durumunu (varsay\u0131lan hepsi i\u015faretli \u2192 liste pasif) ayarla\r\n    }).catch(function(err) { alan.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  };\r\n\r\n  function duyuruMusteriListesiniCiz(liste) {\r\n    var alan = document.getElementById('duyuruMusteriListesi');\r\n    var isletmeSeciliMi = document.querySelectorAll('.duyuru-hedef-isletme:checked').length > 0;\r\n    if (liste.length === 0) { alan.innerHTML = '<span style=\"color:#999;\">Sonu\u00e7 yok.<\/span>'; return; }\r\n    var onceki = {};\r\n    document.querySelectorAll('.duyuru-musteri-kutu:checked').forEach(function(k) { onceki[k.value] = true; });\r\n    var html = '';\r\n    liste.forEach(function(k) {\r\n      var isaretli = (!isletmeSeciliMi && onceki[k.kullanici_adi]) ? 'checked' : '';\r\n      var pasif = isletmeSeciliMi ? 'disabled' : '';\r\n      html += `<label style=\"display:flex; align-items:center; gap:6px; padding:4px 0; font-size:13px; cursor:pointer;\"><input type=\"checkbox\" class=\"duyuru-musteri-kutu\" value=\"${k.kullanici_adi}\" ${isaretli} ${pasif}> ${k.gercek_isim} <span style=\"color:#999; font-size:11px;\">(${k.isletme_tipi || rolGosterimAdi(k.rol)})<\/span><\/label>`;\r\n    });\r\n    alan.innerHTML = html;\r\n  }\r\n\r\n  window.duyuruMusteriListesiniFiltrele = function() {\r\n    var terim = document.getElementById('duyuruMusteriArama').value.trim().toLowerCase();\r\n    var filtreli = !terim ? hamDuyuruMusterileri : hamDuyuruMusterileri.filter(function(k) { return k.gercek_isim.toLowerCase().indexOf(terim) !== -1; });\r\n    duyuruMusteriListesiniCiz(filtreli);\r\n  };\r\n\r\n  window.duyuruYayinlaTikla = function() {\r\n    var metin = document.getElementById('duyuruMetniInput').value.trim();\r\n    var sonucAlani = document.getElementById('duyuruSonucAlani');\r\n    if (!metin) { sonucAlani.innerHTML = '<span style=\"color:red;\">L\u00fctfen bir duyuru metni yaz.<\/span>'; return; }\r\n\r\n    var hedefRoller = [];\r\n    var isimHaritasi = { 'super admin': 'S\u00fcper Admin', 'admin': 'Admin' };\r\n    document.querySelectorAll('.duyuru-hedef-kutu:checked').forEach(function(kutu) { hedefRoller.push(kutu.value); });\r\n\r\n    var hedefIsletme = [];\r\n    document.querySelectorAll('.duyuru-hedef-isletme:checked').forEach(function(kutu) { hedefIsletme.push(kutu.value); });\r\n\r\n    var hedefKullanicilar = [];\r\n    var hedefKullaniciIsimleri = [];\r\n    document.querySelectorAll('.duyuru-musteri-kutu:checked').forEach(function(kutu) {\r\n      hedefKullanicilar.push(kutu.value);\r\n      hedefKullaniciIsimleri.push(kutu.parentElement.textContent.trim());\r\n    });\r\n\r\n    if (hedefRoller.length === 0 && hedefIsletme.length === 0 && hedefKullanicilar.length === 0) { sonucAlani.innerHTML = '<span style=\"color:red;\">En az bir hedef kitle (personel\/kullan\u0131c\u0131 tipi) veya en az bir m\u00fc\u015fteri se\u00e7.<\/span>'; return; }\r\n\r\n    var ozetParcalari = [];\r\n    if (hedefRoller.length > 0) ozetParcalari.push(hedefRoller.map(function(r) { return isimHaritasi[r] || r; }).join(', '));\r\n    if (hedefIsletme.length > 0) ozetParcalari.push(hedefIsletme.join(', '));\r\n    if (hedefKullaniciIsimleri.length > 0) ozetParcalari.push('Ayr\u0131ca: ' + hedefKullaniciIsimleri.join(', '));\r\n    var hedefOkunakli = ozetParcalari.join(' | ');\r\n\r\n    if (!confirm('Bu duyuru, \u015fu kitlelere g\u00f6sterilecek: ' + hedefOkunakli + '\\n\\n\"' + metin + '\"\\n\\nYay\u0131nlans\u0131n m\u0131?')) return;\r\n\r\n    showLoading('Duyuru yay\u0131nlan\u0131yor...');\r\n    googleAPI({ action: 'duyuru_yayinla', mesaj: metin, hedef_roller: hedefRoller, hedef_isletme_tipleri: hedefIsletme, hedef_kullanicilar: hedefKullanicilar }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') {\r\n        sonucAlani.innerHTML = '<span style=\"color:green; font-weight:bold;\">\u2705 Duyuru yay\u0131nland\u0131!<\/span>';\r\n        document.getElementById('duyuruMetniInput').value = '';\r\n        document.querySelectorAll('.duyuru-musteri-kutu:checked').forEach(function(k) { k.checked = false; });\r\n        duyurulariListele();\r\n      } else {\r\n        sonucAlani.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>';\r\n      }\r\n    }).catch(function(err) { hideLoading(); sonucAlani.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  };\r\n\r\n  window.duyurulariListele = function() {\r\n    var alan = document.getElementById('duyuruListesiAlani');\r\n    if (!alan) return;\r\n    alan.innerHTML = 'Y\u00fckleniyor...';\r\n    var isimHaritasi = { 'super admin': 'S\u00fcper Admin', 'admin': 'Admin', 'acente': 'Acente', 'yat': 'Yat' };\r\n    googleAPI({ action: 'duyurulari_listele' }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alan.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>'; return; }\r\n      var liste = data.duyurular || [];\r\n      if (liste.length === 0) { alan.innerHTML = 'Hen\u00fcz duyuru yay\u0131nlanmad\u0131.'; return; }\r\n      var html = '';\r\n      liste.forEach(function(d) {\r\n        var parcalar = [];\r\n        var rolOkunakli = (d.hedef_roller || '').split(',').filter(Boolean).map(function(r) { return isimHaritasi[r.trim()] || r.trim(); }).join(', ');\r\n        if (rolOkunakli) parcalar.push(rolOkunakli);\r\n        if (d.hedef_isletme_tipleri) parcalar.push(d.hedef_isletme_tipleri);\r\n        if (d.hedef_kullanicilar) {\r\n          var ekKisiler = d.hedef_kullanicilar.split(',').filter(Boolean);\r\n          if (ekKisiler.length > 0) parcalar.push(ekKisiler.length + ' \u00f6zel ki\u015fi');\r\n        }\r\n        var hedefOkunakli = parcalar.join(' + ') || '-';\r\n        html += `<div style=\"display:flex; justify-content:space-between; align-items:center; gap:10px; padding:8px 0; border-bottom:1px solid #f0f0f0;\">\r\n          <div style=\"flex:1;\"><span style=\"color:#999; font-size:11px;\">${new Date(d.tarih).toLocaleString('tr-TR')} \u00b7 Kime: ${hedefOkunakli}<\/span><br>${d.mesaj}<\/div>\r\n          <button type=\"button\" onclick=\"duyuruSilTikla(${d.id})\" style=\"background:#dc3545; color:#fff; border:none; padding:5px 10px; border-radius:4px; cursor:pointer; font-size:11px; flex-shrink:0;\">Sil<\/button>\r\n        <\/div>`;\r\n      });\r\n      alan.innerHTML = html;\r\n    }).catch(function(err) { alan.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  };\r\n\r\n  window.duyuruSilTikla = function(id) {\r\n    if (!confirm('Bu duyuruyu silmek istedi\u011fine emin misin? (Zaten g\u00f6rm\u00fc\u015f olanlardan silinmez, sadece hen\u00fcz g\u00f6rmemi\u015flere bir daha \u00e7\u0131kmaz.)')) return;\r\n    googleAPI({ action: 'duyuru_sil', id: id }).then(function(data) {\r\n      if (data.durum === 'basarili') { duyurulariListele(); } else { alert(data.mesaj); }\r\n    }).catch(function(err) { alert(err); });\r\n  };\r\n\r\n  function oturumGuncelle(mesaj = \"\") {\r\n    showLoading(\"Veriler g\u00fcncelleniyor...\");\r\n    \/\/ \ud83d\udd10 Art\u0131k \u015fifre tekrar g\u00f6nderilmiyor; mevcut oturum anahtar\u0131yla veri tazeleniyor.\r\n    googleAPI({ action: 'oturum_ile_giris' }).then(function(data) {\r\n      hideLoading();\r\n      if(data.durum === \"basarili\") {\r\n        globalData = data; \r\n        aktifKullanici = data.kullanici;\r\n        aktifOturumToken = data.oturum_token;\r\n        localStorage.setItem(\"kraken_oturum_token\", aktifOturumToken);\r\n        document.getElementById('taslakDetayKutusu').style.display = 'none';\r\n        \r\n        if(aktifKullanici.rol.toLowerCase() === 'admin') { \r\n          adminSiparisleriYukle(); \r\n          initCariModul();\r\n          kampanyaMusteriListesiniYukle();\r\n          kampanyalariListele();\r\n          ciroHedefleriListele();\r\n          istatistikSekmesiniAdminePanelineTasi();\r\n          iadeTalepleriYukle();\r\n        } else if (aktifKullanici.rol.toLowerCase() === 'super admin') { \r\n          document.getElementById('saKritikStok').value = data.ayarlar.kritikStok || 0; document.getElementById('saKrediKartiGecikme').value = (data.ayarlar.krediKartiGecikme !== undefined ? data.ayarlar.krediKartiGecikme : 2); \r\n          document.getElementById('saMailListesi').value = data.ayarlar.email || \"\"; \r\n          initCariModul();\r\n          raporlariYukle(); \r\n          \/\/ Veri tazelendi \u2192 \u00fcr\u00fcn tablosu art\u0131k bayat. Kullan\u0131c\u0131 o an \u00dcr\u00fcn sekmesindeyse\r\n          \/\/ hemen yeniden \u00e7iz, de\u011filse sekmeye t\u0131klay\u0131nca \u00e7izilsin (gereksiz beklemeyi \u00f6nler).\r\n          urunTablosunuGecersizKil();\r\n          var urunSekmesi = document.getElementById('saUrunYonetimiTab');\r\n          if (urunSekmesi && urunSekmesi.style.display !== 'none') saUrunTablosuCiz();\r\n          teslimatSekmesiniSuperAdminePanelineTasi();\r\n          iadeTalepleriYukle();\r\n        } else if (aktifKullanici.rol.toLowerCase() === 'creator') {\r\n          creatorKullanicilariYukle();\r\n          komisyonVerisiYukle();\r\n        } else { \r\n          document.getElementById('kullaniciAnaEkran').style.display = 'block'; \r\n          taslaklariListele(data.taslaklar); \r\n          yeniSiparisHazirla();\r\n        }\r\n        if(mesaj) alert(mesaj);\r\n      } else { alert(\"Hata: \" + data.mesaj); document.getElementById('cikisButonu').click(); }\r\n    }).catch(function(err) { hideLoading(); alert(\"Hata: \" + err); });\r\n  }\r\n\r\n  document.getElementById('girisFormu').addEventListener('submit', function(e) {\r\n    e.preventDefault(); \r\n    var kadi = document.getElementById('kullaniciAdiInput').value; \r\n    var sifre = document.getElementById('sifreInput').value;\r\n    var btn = document.getElementById('girisButonu'); \r\n    \r\n    btn.innerText = \"Giri\u015f yap\u0131l\u0131yor...\"; \r\n    btn.disabled = true; \r\n    showLoading(\"Sisteme giri\u015f yap\u0131l\u0131yor...\");\r\n    \r\n    googleAPI({ action: 'login', kadi: kadi, sifre: sifre }).then(function(data) {\r\n      hideLoading(); \r\n      btn.disabled = false; \r\n      btn.innerText = \"Sisteme Giri\u015f Yap\";\r\n      \r\n      if(data.durum === \"hata\") { \r\n        document.getElementById('girisHata').innerText = data.mesaj; \r\n        document.getElementById('girisHata').style.display = 'block'; \r\n      } else {\r\n        document.getElementById('sifreInput').value = \"\"; \/\/ \ud83d\udd10 \u015fifre alan\u0131 bellekte tutulmas\u0131n\r\n        oturumBasariylaAcildi(data);\r\n      }\r\n    }).catch(function(err) { hideLoading(); btn.disabled = false; btn.innerText = \"Sisteme Giri\u015f Yap\"; alert(\"Hata: \" + err); });\r\n  });\r\n\r\n  \/\/ \u26a1 226+ \u00fcr\u00fcn\u00fcn her biri i\u00e7in ~11 form eleman\u0131 (input\/select\/checkbox\/buton) \u00fcretiliyor \u2014\r\n  \/\/ yani ~2.500 interaktif DOM eleman\u0131. Bu, taray\u0131c\u0131 i\u00e7in a\u011f\u0131r bir i\u015f (3-5 sn). Sekmeye her\r\n  \/\/ t\u0131kland\u0131\u011f\u0131nda ba\u015ftan \u00e7izmek yerine, veri ger\u00e7ekten de\u011fi\u015ftiyse (\u00fcr\u00fcn ekle\/sil\/kaydet,\r\n  \/\/ toplu g\u00fcncelleme, arama) \u00e7iziyoruz.\r\n  var urunTablosuGuncelMi = false;\r\n  window.urunTablosunuGecersizKil = function() { urunTablosuGuncelMi = false; };\r\n\r\n  window.saUrunTablosuGoster = function() {\r\n    if (urunTablosuGuncelMi) return; \/\/ zaten \u00e7izili, dokunma\r\n    saUrunTablosuCiz();\r\n  };\r\n\r\n  \/\/ \u26a1 Arama kutusunda her tu\u015f vuru\u015funda tabloyu ba\u015ftan \u00e7izmek \u00e7ok pahal\u0131 (2.500 DOM eleman\u0131) \u2014\r\n  \/\/ kullan\u0131c\u0131 yazmay\u0131 b\u0131rakana kadar (250 ms) bekleyip tek seferde \u00e7iziyoruz.\r\n  var urunAramaZamanlayici = null;\r\n  window.urunAramaGecikmeli = function() {\r\n    clearTimeout(urunAramaZamanlayici);\r\n    urunAramaZamanlayici = setTimeout(function() { saUrunTablosuCiz(); }, 250);\r\n  };\r\n\r\n  window.saUrunTablosuCiz = function() {\r\n      urunKonumSecenekleriDoldur();\r\n      var govde = document.getElementById('saUrunTabloGovde'); \r\n      var kritikGovde = document.getElementById('saKritikUrunTabloGovde');\r\n      var arama = document.getElementById('saUrunArama').value.toLowerCase(); \r\n      var kritikStokSeviyesi = metniSayiyaCevir(globalData.ayarlar.kritikStok);\r\n      var html = \"\"; \r\n      var kritikHtml = \"\";\r\n      \r\n      globalData.urunler.forEach(function(u) {\r\n         if(arama && u.urun_adi.toLowerCase().indexOf(arama) === -1 && u.kategori.toLowerCase().indexOf(arama) === -1) return;\r\n         var stokSayi = metniSayiyaCevir(u.stok); \r\n         var isKritik = stokSayi <= kritikStokSeviyesi;\r\n         var satirClass = isKritik ? \"stok-kritik\" : \"\";\r\n         var mevcutTipler = (u.gorunur_isletme_tipleri || '').split(',').map(function(t) { return t.trim(); }).filter(Boolean);\r\n         var tipKutulari = ['Deniz', 'Kara'].map(function(t) {\r\n           var isaretli = mevcutTipler.indexOf(t) !== -1 ? 'checked' : '';\r\n           return `<label style=\"display:inline-flex; align-items:center; gap:2px; margin-right:6px; font-size:11px; white-space:nowrap;\"><input type=\"checkbox\" class=\"u_gorunur_${u.satir}\" value=\"${t}\" ${isaretli}>${t}<\/label>`;\r\n         }).join('');\r\n         \r\n         html += `<tr class=\"${satirClass}\" style=\"border-bottom:1px solid #eee;\">\r\n            <td style=\"padding:4px;\"><input type=\"text\" id=\"u_kat_${u.satir}\" value=\"${u.kategori}\" style=\"width:100%; padding:5px;\"><\/td>\r\n            <td style=\"padding:4px;\"><input type=\"text\" id=\"u_adi_${u.satir}\" value=\"${u.urun_adi}\" style=\"width:100%; padding:5px; font-weight:bold;\"><\/td>\r\n            <td style=\"padding:4px;\"><input type=\"text\" id=\"u_brm_${u.satir}\" value=\"${u.birim}\" style=\"width:100%; padding:5px;\"><\/td>\r\n            <td style=\"padding:4px;\"><input type=\"text\" id=\"u_fyt_${u.satir}\" value=\"${sayiyiMetneCevir(u.birim_fiyat)}\" style=\"width:100%; padding:5px;\"><\/td>\r\n            <td style=\"padding:4px;\"><input type=\"number\" id=\"u_kdv_${u.satir}\" value=\"${temizSayi(u.kdv)}\" style=\"width:100%; padding:5px;\"><\/td>\r\n            <td style=\"padding:4px;\">\r\n              <select id=\"u_drm_${u.satir}\" style=\"width:100%; padding:5px;\">\r\n                <option value=\"Aktif\" ${u.durum==='Aktif'?'selected':''}>Aktif<\/option>\r\n                <option value=\"Pasif\" ${u.durum==='Pasif'?'selected':''}>Pasif<\/option>\r\n              <\/select>\r\n            <\/td>\r\n            <td style=\"padding:4px;\"><input type=\"number\" id=\"u_stk_${u.satir}\" value=\"${temizSayi(u.stok)}\" style=\"width:100%; padding:5px; font-weight:bold; color:${isKritik?'#dc3545':'#333'};\"><\/td>\r\n            <td style=\"padding:4px; min-width:220px;\">${tipKutulari}<\/td>\r\n            <td style=\"padding:4px;\"><input type=\"text\" id=\"u_karakural_${u.satir}\" value=\"${u.kara_fiyat_kurali || 'x0.9'}\" style=\"width:100%; padding:5px;\" title=\"\u00d6rn: x0.9 (\u00e7arpan) veya 115 (sabit fiyat)\"><\/td>\r\n            <td style=\"padding:4px; text-align:center; white-space:nowrap;\">\r\n              <button type=\"button\" onclick=\"urunKaydet(${u.satir})\" style=\"background:#0792ad; color:white; border:none; padding:6px 10px; cursor:pointer; border-radius:4px; margin-right:5px;\">Kaydet<\/button>\r\n              <button type=\"button\" onclick=\"urunSil(${u.satir})\" style=\"background:#dc3545; color:white; border:none; padding:6px 10px; cursor:pointer; border-radius:4px;\">Sil<\/button>\r\n            <\/td>\r\n         <\/tr>`;\r\n         \r\n         if(isKritik && u.durum === 'Aktif') {\r\n            kritikHtml += `<tr style=\"border-bottom:1px solid #ffcccc;\"><td style=\"padding:10px;\">${u.kategori}<\/td><td style=\"padding:10px;\"><b>${u.urun_adi}<\/b><\/td><td style=\"padding:10px; font-size:16px; font-weight:bold; color:#dc3545; text-align:center;\">${stokSayi}<\/td><td style=\"padding:10px; text-align:center;\"><span style=\"background:#dc3545; color:white; padding:4px 10px; border-radius:4px; font-size:12px; font-weight:bold;\">Kritik Stok<\/span><\/td><\/tr>`;\r\n         }\r\n      });\r\n      govde.innerHTML = html; \r\n      kritikGovde.innerHTML = kritikHtml || '<tr><td colspan=\"4\" style=\"padding:15px; text-align:center; color:#0792ad; font-weight:bold;\">T\u00fcm \u00fcr\u00fcnlerin stoku g\u00fcvenli seviyede. Harika!<\/td><\/tr>';\r\n      urunTablosuGuncelMi = true;\r\n  }\r\n\r\n  \/\/ \"Yeni \u00dcr\u00fcn Ekle\" formundaki konum se\u00e7im listesini mevcut \u00fcr\u00fcnlerle doldurur.\r\n  function urunKonumSecenekleriDoldur() {\r\n    var sel = document.getElementById('yUrunKonumRef');\r\n    if (!sel || !globalData || !globalData.urunler) return;\r\n    var mevcutSecim = sel.value;\r\n    var html = '<option value=\"\">Listenin sonuna ekle (varsay\u0131lan)<\/option>';\r\n    globalData.urunler.forEach(function(u) {\r\n      html += `<option value=\"${u.satir}\">${u.kategori} | ${u.urun_adi} | ${u.birim}<\/option>`;\r\n    });\r\n    sel.innerHTML = html;\r\n    sel.value = mevcutSecim || \"\";\r\n  }\r\n\r\n  window.urunEkle = function() {\r\n       var kat = document.getElementById('yUrunKat').value; \r\n       var altKat = document.getElementById('yUrunAltKat').value;\r\n       var adi = document.getElementById('yUrunAdi').value; \r\n       var brm = document.getElementById('yUrunBrm').value;\r\n       var fyt = document.getElementById('yUrunFyt').value; \r\n       var kdv = document.getElementById('yUrunKdv').value || 0;\r\n       var drm = document.getElementById('yUrunDurum').value; \r\n       var stk = document.getElementById('yUrunStok').value || 0;\r\n       var refSatir = document.getElementById('yUrunKonumRef').value;\r\n       var konum = document.getElementById('yUrunKonumYon').value;\r\n       var gorunurTipler = []; document.querySelectorAll('.yUrun-gorunur-tip:checked').forEach(function(k) { gorunurTipler.push(k.value); });\r\n       var karaKural = document.getElementById('yUrunKaraKural').value.trim() || 'x0.9';\r\n       \r\n       if(!kat || !adi || !fyt) return alert(\"Kategori, \u00dcr\u00fcn Ad\u0131 ve Fiyat zorunludur!\");\r\n       showLoading(\"Yeni \u00fcr\u00fcn veri taban\u0131na ekleniyor...\");\r\n       googleAPI({ action: 'urun_islem', islem: 'ekle', kategori: kat, alt_kategori: altKat, urun_adi: adi, birim: brm, birim_fiyat: fyt, kdv: kdv, durum: drm, stok: stk, referans_satir: refSatir, konum: konum, gorunur_isletme_tipleri: gorunurTipler, kara_fiyat_kurali: karaKural })\r\n       .then(function(data) { hideLoading(); if(data.durum===\"basarili\"){ document.querySelectorAll('.yUrun-gorunur-tip').forEach(function(k) { k.checked = false; }); document.getElementById('yUrunKaraKural').value = 'x0.9'; oturumGuncelle(\"\u00dcr\u00fcn ba\u015far\u0131yla eklendi!\"); } else { alert(data.mesaj); } }).catch(function(e) { hideLoading(); alert(e); });\r\n  }\r\n\r\n  window.urunKaydet = function(satir) {\r\n       var kat = document.getElementById('u_kat_'+satir).value; \r\n       var adi = document.getElementById('u_adi_'+satir).value;\r\n       var brm = document.getElementById('u_brm_'+satir).value; \r\n       var fyt = document.getElementById('u_fyt_'+satir).value;\r\n       var kdv = document.getElementById('u_kdv_'+satir).value; \r\n       var drm = document.getElementById('u_drm_'+satir).value;\r\n       var stk = document.getElementById('u_stk_'+satir).value;\r\n       var gorunurTipler = []; document.querySelectorAll('.u_gorunur_' + satir + ':checked').forEach(function(k) { gorunurTipler.push(k.value); });\r\n       var karaKural = document.getElementById('u_karakural_'+satir).value.trim() || 'x0.9';\r\n       \r\n       var index = globalData.urunler.findIndex(function(x) { return x.satir === satir; }); \r\n       var altKat = globalData.urunler[index].alt_kategori;\r\n       showLoading(\"\u00dcr\u00fcn g\u00fcncelleniyor...\");\r\n       googleAPI({ action: 'urun_islem', islem: 'guncelle', satir: satir, kategori: kat, alt_kategori: altKat, urun_adi: adi, birim: brm, birim_fiyat: fyt, kdv: kdv, durum: drm, stok: stk, gorunur_isletme_tipleri: gorunurTipler, kara_fiyat_kurali: karaKural })\r\n       .then(function(data) { hideLoading(); if(data.durum===\"basarili\"){ oturumGuncelle(\"\u00dcr\u00fcn ba\u015far\u0131yla g\u00fcncellendi!\"); } else { alert(data.mesaj); } }).catch(function(e) { hideLoading(); alert(e); });\r\n  }\r\n\r\n  window.urunSil = function(satir) {\r\n       if(!confirm(\"Bu \u00fcr\u00fcn\u00fc tamamen silmek istedi\u011finize emin misiniz?\")) return; \r\n       showLoading(\"\u00dcr\u00fcn siliniyor...\");\r\n       googleAPI({ action: 'urun_islem', islem: 'sil', satir: satir })\r\n       .then(function(data) { hideLoading(); if(data.durum===\"basarili\"){ oturumGuncelle(\"\u00dcr\u00fcn silindi!\"); } else { alert(data.mesaj); } }).catch(function(e) { hideLoading(); alert(e); });\r\n  }\r\n\r\n  \/\/ \ud83d\udcca TOPLU \u00dcR\u00dcN G\u00dcNCELLEME (Excel) \u2014 k\u00fct\u00fcphane: SheetJS (CDN \u00fczerinden y\u00fckl\u00fc)\r\n  window.urunExcelSablonuIndir = function() {\r\n    if (!globalData || !globalData.urunler || globalData.urunler.length === 0) { alert('\u00dcr\u00fcn verisi hen\u00fcz y\u00fcklenmedi, sayfay\u0131 yenileyip tekrar deneyin.'); return; }\r\n    var veri = globalData.urunler.map(function(u) {\r\n      return {\r\n        'Kategori': u.kategori, 'Alt_Kategori': u.alt_kategori, 'Urun_Adi': u.urun_adi, 'Birim': u.birim,\r\n        'Birim_Fiyat': u.birim_fiyat, 'Kdv': metniSayiyaCevir(u.kdv), 'Durum': u.durum, 'Mevcut Stok': metniSayiyaCevir(u.stok)\r\n      };\r\n    });\r\n    var ws = XLSX.utils.json_to_sheet(veri);\r\n    var wb = XLSX.utils.book_new();\r\n    XLSX.utils.book_append_sheet(wb, ws, 'Urun Listesi');\r\n    var tarihEtiketi = new Date().toISOString().slice(0, 10);\r\n    XLSX.writeFile(wb, 'kraken-urun-listesi-' + tarihEtiketi + '.xlsx');\r\n  };\r\n\r\n  function excelBaslikNormallestir(h) {\r\n    return h.toString().trim().toLowerCase().replace(\/[\\s_]+\/g, '');\r\n  }\r\n\r\n  \/\/ Excel ba\u015fl\u0131klar\u0131n\u0131 (esnek bi\u00e7imde, bo\u015fluk\/alt \u00e7izgi fark\u0131 g\u00f6zetmeksizin) backend alan adlar\u0131na e\u015fler.\r\n  var URUN_EXCEL_BASLIK_ESLEME = {\r\n    'kategori': 'kategori', 'altkategori': 'alt_kategori', 'urunadi': 'urun_adi', 'birim': 'birim',\r\n    'birimfiyat': 'birim_fiyat', 'kdv': 'kdv', 'durum': 'durum', 'mevcutstok': 'stok', 'stok': 'stok'\r\n  };\r\n\r\n  window.urunExcelYukle = function(inputEl) {\r\n    var dosya = inputEl.files[0];\r\n    if (!dosya) return;\r\n    var sonucAlani = document.getElementById('urunExcelSonucAlani');\r\n    sonucAlani.innerHTML = '<span style=\"color:#0792ad;\">Dosya okunuyor...<\/span>';\r\n\r\n    var reader = new FileReader();\r\n    reader.onload = function(e) {\r\n      try {\r\n        var veriDizisi = new Uint8Array(e.target.result);\r\n        var wb = XLSX.read(veriDizisi, { type: 'array' });\r\n        var ilkSayfa = wb.Sheets[wb.SheetNames[0]];\r\n        var satirlar = XLSX.utils.sheet_to_json(ilkSayfa, { defval: '' });\r\n\r\n        if (satirlar.length === 0) { sonucAlani.innerHTML = '<span style=\"color:red;\">Excel dosyas\u0131 bo\u015f g\u00f6r\u00fcn\u00fcyor.<\/span>'; inputEl.value = ''; return; }\r\n\r\n        var urunler = satirlar.map(function(satir) {\r\n          var obj = {};\r\n          Object.keys(satir).forEach(function(baslik) {\r\n            var normal = excelBaslikNormallestir(baslik);\r\n            var hedefAlan = URUN_EXCEL_BASLIK_ESLEME[normal];\r\n            if (hedefAlan) obj[hedefAlan] = satir[baslik];\r\n          });\r\n          return obj;\r\n        }).filter(function(u) { return u.kategori && u.urun_adi && u.birim; });\r\n\r\n        if (urunler.length === 0) {\r\n          sonucAlani.innerHTML = '<span style=\"color:red;\">S\u00fctun ba\u015fl\u0131klar\u0131 tan\u0131namad\u0131 veya ge\u00e7erli sat\u0131r bulunamad\u0131. L\u00fctfen \"G\u00fcncel Listeyi \u0130ndir\" ile ald\u0131\u011f\u0131n \u015fablonun s\u00fctun d\u00fczenini bozmadan kullan.<\/span>';\r\n          inputEl.value = '';\r\n          return;\r\n        }\r\n\r\n        \/\/ 1) \u00d6nce \u00d6N\u0130ZLEME iste \u2014 hi\u00e7bir \u015fey yaz\u0131lmaz, sadece rakamlar d\u00f6ner.\r\n        showLoading('De\u011fi\u015fiklikler hesaplan\u0131yor...');\r\n        googleAPI({ action: 'urun_toplu_guncelle', urunler: urunler, onizleme: true }).then(function(onizlemeData) {\r\n          hideLoading();\r\n          if (onizlemeData.durum !== 'basarili') {\r\n            sonucAlani.innerHTML = '<span style=\"color:red;\">Hata: ' + onizlemeData.mesaj + '<\/span>';\r\n            inputEl.value = '';\r\n            return;\r\n          }\r\n\r\n          var uyariMesaji = 'Bu dosya Y\u00dcKLEN\u0130RSE:\\n\\n';\r\n          uyariMesaji += '\u2705 ' + onizlemeData.guncellenen + ' \u00fcr\u00fcn g\u00fcncellenecek\\n';\r\n          uyariMesaji += '\u2795 ' + onizlemeData.eklenecek + ' yeni \u00fcr\u00fcn eklenecek\\n';\r\n          if (onizlemeData.silinecek > 0) {\r\n            uyariMesaji += '\ud83d\uddd1\ufe0f ' + onizlemeData.silinecek + ' \u00fcr\u00fcn KALICI OLARAK S\u0130L\u0130NECEK';\r\n            if (onizlemeData.silinecek_ornekler && onizlemeData.silinecek_ornekler.length > 0) {\r\n              uyariMesaji += ' (\u00f6rnek: ' + onizlemeData.silinecek_ornekler.join(', ') + (onizlemeData.silinecek > onizlemeData.silinecek_ornekler.length ? ', ...' : '') + ')';\r\n            }\r\n            uyariMesaji += '\\n';\r\n          }\r\n          if (onizlemeData.atlanan > 0) uyariMesaji += '\u26a0\ufe0f ' + onizlemeData.atlanan + ' sat\u0131r eksik bilgi nedeniyle atlanacak\\n';\r\n          uyariMesaji += '\\nBu dosya, sistemdeki \u00fcr\u00fcn listesinin TAMAMININ YER\u0130NE ge\u00e7ecek. Devam edilsin mi?';\r\n\r\n          if (!confirm(uyariMesaji)) { inputEl.value = ''; sonucAlani.innerHTML = '<span style=\"color:#666;\">\u0130\u015flem iptal edildi, hi\u00e7bir de\u011fi\u015fiklik yap\u0131lmad\u0131.<\/span>'; return; }\r\n\r\n          \/\/ 2) Onayland\u0131 \u2014 ger\u00e7ek i\u015flemi yap.\r\n          showLoading('\u00dcr\u00fcnler g\u00fcncelleniyor (' + urunler.length + ' sat\u0131r)...');\r\n          googleAPI({ action: 'urun_toplu_guncelle', urunler: urunler, onizleme: false }).then(function(data) {\r\n            hideLoading();\r\n            inputEl.value = '';\r\n            if (data.durum === 'basarili') {\r\n              var mesaj = '\u2705 Tamamland\u0131: ' + data.guncellenen + ' g\u00fcncellendi, ' + data.eklenen + ' eklendi, ' + data.silinen + ' silindi';\r\n              if (data.atlanan > 0) mesaj += ' (' + data.atlanan + ' sat\u0131r atland\u0131)';\r\n              mesaj += '.';\r\n              sonucAlani.innerHTML = '<span style=\"color:green; font-weight:bold;\">' + mesaj + '<\/span>';\r\n              oturumGuncelle();\r\n\r\n              \/\/ \ud83d\udce2 Bonus: de\u011fi\u015fiklik anlaml\u0131ysa (g\u00fcncelleme veya ekleme varsa) duyuru \u00f6nerisi sun.\r\n              if (data.guncellenen > 0 || data.eklenen > 0) {\r\n                setTimeout(function() {\r\n                  var onerilenMetin = '';\r\n                  if (data.guncellenen > 0) onerilenMetin += data.guncellenen + ' \u00fcr\u00fcnde fiyat\/bilgi g\u00fcncellemesi yap\u0131ld\u0131. ';\r\n                  if (data.eklenen > 0) onerilenMetin += data.eklenen + ' yeni \u00fcr\u00fcn eklendi. ';\r\n                  if (confirm('\u00dcr\u00fcn listesi g\u00fcncellendi.\\n\\nBunu m\u00fc\u015fterilere duyurmak ister misin?\\n\\n\u00d6nerilen metin:\\n\"' + onerilenMetin.trim() + '\"')) {\r\n                    document.getElementById('duyuruMetniInput').value = onerilenMetin.trim();\r\n                    duyuruYayinlaTikla();\r\n                  }\r\n                }, 400);\r\n              }\r\n            } else {\r\n              sonucAlani.innerHTML = '<span style=\"color:red;\">Hata: ' + data.mesaj + '<\/span>';\r\n            }\r\n          }).catch(function(err) { hideLoading(); inputEl.value = ''; sonucAlani.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n\r\n        }).catch(function(err) { hideLoading(); inputEl.value = ''; sonucAlani.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n\r\n      } catch (hata) {\r\n        sonucAlani.innerHTML = '<span style=\"color:red;\">Dosya okunamad\u0131: ' + hata.message + '<\/span>';\r\n        inputEl.value = '';\r\n      }\r\n    };\r\n    reader.readAsArrayBuffer(dosya);\r\n  };\r\n\r\n  \/\/ \ud83d\uddd1\ufe0f Onaylanm\u0131\u015f bir sipari\u015fi kal\u0131c\u0131 olarak siler (stok otomatik geri eklenir).\r\n  window.raporSiparisSil = function(siparisId) {\r\n    if (!confirm('Bu sipari\u015fi kal\u0131c\u0131 olarak silmek istedi\u011fine emin misin?\\n\\nSipari\u015f No: ' + siparisId + '\\n\\nBu i\u015flem geri al\u0131namaz. Sipari\u015f i\u00e7eri\u011findeki \u00fcr\u00fcnlerin sto\u011fu otomatik olarak geri eklenecektir.')) return;\r\n    showLoading('Sipari\u015f siliniyor...');\r\n    googleAPI({ action: 'siparis_sil', siparis_id: siparisId }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') { alert('Sipari\u015f silindi, stok g\u00fcncellendi.'); raporlariYukle(); }\r\n      else { alert(data.mesaj); }\r\n    }).catch(function(err) { hideLoading(); alert(err); });\r\n  };\r\n\r\n  \/\/ \ud83d\udce6 Teslimat durumu rozeti \u2014 t\u0131klanabilir (admin\/s\u00fcper admin), i\u015faret\/geri al.\r\n  \/\/ Tarihi ELLE d\u00fczenleme (\u270f\ufe0f) ise sadece S\u00fcper Admin'e g\u00f6r\u00fcn\u00fcr \u2014 ge\u00e7mi\u015fe d\u00f6n\u00fck\r\n  \/\/ tarih de\u011fi\u015fikli\u011fi hassas bir yetki, s\u0131radan Admin bunu yapamaz.\r\n  \/\/ \ud83e\uddfe Fatura h\u00fccresi \u2014 sipari\u015fe girilmi\u015f fatura numaras\u0131n\u0131 g\u00f6sterir, t\u0131klay\u0131nca d\u00fczenlenir.\r\n  \/\/ Sipari\u015f \u2194 fatura ba\u011f\u0131n\u0131 kurar: m\u00fc\u015fteri kendi panelinde de bu numaray\u0131 g\u00f6r\u00fcr, b\u00f6ylece\r\n  \/\/ faturay\u0131 sipari\u015fle e\u015fle\u015ftirmek i\u00e7in kimseyi aramak zorunda kalmaz.\r\n  function faturaHucresi(r) {\r\n    var guvenliId = (r.siparis_id || '').toString().replace(\/'\/g, \"\\\\'\");\r\n    if (r.fatura_no) {\r\n      var tarihEk = r.fatura_tarihi ? '<br><span style=\"color:#888; font-size:10px;\">' + new Date(r.fatura_tarihi).toLocaleDateString('tr-TR') + '<\/span>' : '';\r\n      return `<span onclick=\"faturaBilgisiDuzenle('${guvenliId}')\" title=\"Fatura bilgisini d\u00fczenle\" style=\"cursor:pointer; color:#0792ad; font-weight:700; font-size:12px; text-decoration:underline dotted;\">${r.fatura_no}${tarihEk}<\/span>`;\r\n    }\r\n    \/\/ Teslim edilmi\u015f ama faturas\u0131 girilmemi\u015f sipari\u015fler dikkat \u00e7eksin \u2014 tahsilat \u00f6ncesi\r\n    \/\/ kontrol noktas\u0131 (fatura yoksa tahsilat al\u0131nm\u0131yor).\r\n    var vurgu = r.teslim_tarihi ? 'background:#fff3cd; color:#856404; border:1px solid #ffc107;' : 'background:#f1ede0; color:#8a8578; border:1px solid #e3ddc9;';\r\n    return `<button type=\"button\" onclick=\"faturaBilgisiDuzenle('${guvenliId}')\" title=\"Fatura numaras\u0131 ekle\" style=\"${vurgu} border-radius:4px; padding:4px 9px; cursor:pointer; font-size:11px; font-weight:600; white-space:nowrap;\">+ Fatura No<\/button>`;\r\n  }\r\n\r\n  window.faturaBilgisiDuzenle = function(siparisId) {\r\n    var kaynaklar = [];\r\n    if (typeof hamRaporVerisi !== 'undefined' && hamRaporVerisi) kaynaklar = kaynaklar.concat(hamRaporVerisi);\r\n    if (typeof hamAdminGecmisSiparisler !== 'undefined' && hamAdminGecmisSiparisler) kaynaklar = kaynaklar.concat(hamAdminGecmisSiparisler);\r\n    var bulunan = kaynaklar.find(function(r) { return r.siparis_id === siparisId; });\r\n\r\n    var mevcutNo = (bulunan && bulunan.fatura_no) ? bulunan.fatura_no : '';\r\n    var yeniNo = prompt('Sipari\u015f ' + siparisId + ' i\u00e7in fatura numaras\u0131:\\n\\n(Bo\u015f b\u0131rak\u0131p Tamam derseniz fatura bilgisi silinir.)', mevcutNo);\r\n    if (yeniNo === null) return;\r\n    yeniNo = yeniNo.trim();\r\n\r\n    var yeniTarih = '';\r\n    if (yeniNo !== '') {\r\n      var p = function(n) { return (n < 10 ? '0' : '') + n; };\r\n      var bugun = new Date();\r\n      var varsayilan = (bulunan && bulunan.fatura_tarihi)\r\n        ? new Date(bulunan.fatura_tarihi).toISOString().slice(0, 10)\r\n        : bugun.getFullYear() + '-' + p(bugun.getMonth() + 1) + '-' + p(bugun.getDate());\r\n      yeniTarih = prompt('Fatura tarihi (YYYY-AA-GG):', varsayilan);\r\n      if (yeniTarih === null) return;\r\n      yeniTarih = yeniTarih.trim();\r\n      if (yeniTarih !== '' && !\/^\\d{4}-\\d{2}-\\d{2}$\/.test(yeniTarih)) { alert('Ge\u00e7ersiz tarih format\u0131. \u00d6rnek: 2026-08-30'); return; }\r\n    }\r\n\r\n    googleAPI({ action: 'siparis_fatura_kaydet', siparis_id: siparisId, fatura_no: yeniNo, fatura_tarihi: yeniTarih }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alert(data.mesaj); return; }\r\n      \/\/ Yerel kopyalar\u0131 tazele ki tablo hemen g\u00fcncellensin.\r\n      [hamRaporVerisi, (typeof hamAdminGecmisSiparisler !== 'undefined' ? hamAdminGecmisSiparisler : null)].forEach(function(liste) {\r\n        if (!liste) return;\r\n        liste.forEach(function(r) { if (r.siparis_id === siparisId) { r.fatura_no = yeniNo; r.fatura_tarihi = yeniTarih; } });\r\n      });\r\n      if (document.getElementById('raporTabloGovde')) raporTablosunuCiz();\r\n      if (typeof adminGecmisTablosunuCiz === 'function' && document.getElementById('adminGecmisSiparislerAlani')) adminGecmisTablosunuCiz();\r\n    }).catch(function(err) { alert(err); });\r\n  };\r\n\r\n  \/\/ \ud83d\udcdb Bu rozet art\u0131k SADECE g\u00f6r\u00fcnt\u00fcleme ama\u00e7l\u0131 \u2014 \"Teslim Edildi\" i\u015faretlemesi tek bir yerden\r\n  \/\/ (Teslim Edilecek Sipari\u015fler sekmesi) yap\u0131l\u0131r ki kar\u0131\u015f\u0131kl\u0131k olmas\u0131n. S\u00fcper Admin h\u00e2l\u00e2\r\n  \/\/ \u270f\ufe0f ile tarihi elle d\u00fczeltebilir; as\u0131l \"ilk i\u015faretlenme\" zaman\u0131 ise (varsa) ipucu olarak\r\n  \/\/ g\u00f6sterilir ve hi\u00e7bir aray\u00fczden de\u011fi\u015ftirilemez.\r\n  function teslimatRozetiOlustur(siparisId, teslimTarihi, ilkIsaretlenmeTarihi) {\r\n    var guvenliId = siparisId.toString().replace(\/'\/g, \"\\\\'\");\r\n    var superAdminMi = aktifKullanici && aktifKullanici.rol && aktifKullanici.rol.toLowerCase() === 'super admin';\r\n    var duzenleIkonu = superAdminMi ? `<span onclick=\"event.stopPropagation(); teslimTarihiDuzenleAc('${guvenliId}')\" title=\"Tarihi elle d\u00fczenle (S\u00fcper Admin)\" style=\"cursor:pointer; margin-left:5px; opacity:0.55; font-size:12px;\">\u270f\ufe0f<\/span>` : '';\r\n    var ilkIsaretlenmeIpucu = (superAdminMi && ilkIsaretlenmeTarihi) ? (' \u2014 ilk i\u015faretlenme: ' + tarihSaat(ilkIsaretlenmeTarihi)) : '';\r\n    if (teslimTarihi) {\r\n      \/\/ \ud83d\udd50 G\u00fcn + saat: teslimat\u0131n g\u00fcn i\u00e7inde ne zaman yap\u0131ld\u0131\u011f\u0131 hem i\u00e7 takip hem de\r\n      \/\/ m\u00fc\u015fteriye dakikli\u011fi g\u00f6stermek a\u00e7\u0131s\u0131ndan \u00f6nemli.\r\n      var tarihStr = tarihSaat(teslimTarihi);\r\n      return `<span style=\"display:inline-flex; align-items:center;\"><span title=\"${ilkIsaretlenmeIpucu ? ilkIsaretlenmeIpucu.replace(' \u2014 ', '') : ''}\" style=\"background:#d4edda; color:#155724; border:1px solid #28a745; padding:4px 10px; border-radius:12px; font-size:11px; white-space:nowrap; font-weight:600;\">\u2705 ${tarihStr}<\/span>${duzenleIkonu}<\/span>`;\r\n    }\r\n    return `<span style=\"display:inline-flex; align-items:center;\"><span style=\"background:#fff3cd; color:#856404; border:1px solid #ffc107; padding:4px 10px; border-radius:12px; font-size:11px; white-space:nowrap; font-weight:600;\">\ud83d\udfe1 Bekliyor<\/span>${duzenleIkonu}<\/span>`;\r\n  }\r\n\r\n  \/\/ \u270f\ufe0f Sadece S\u00fcper Admin \u2014 teslim tarihini ge\u00e7mi\u015fe d\u00f6n\u00fck olarak elle ayarlar.\r\n  window.teslimTarihiDuzenleAc = function(siparisId) {\r\n    var kaynaklar = [];\r\n    if (typeof hamRaporVerisi !== 'undefined' && hamRaporVerisi) kaynaklar = kaynaklar.concat(hamRaporVerisi);\r\n    if (typeof hamAdminGecmisSiparisler !== 'undefined' && hamAdminGecmisSiparisler) kaynaklar = kaynaklar.concat(hamAdminGecmisSiparisler);\r\n    var bulunan = kaynaklar.find(function(r) { return r.siparis_id === siparisId; });\r\n    \/\/ \ud83d\udd50 Saat de d\u00fczenlenebilir \u2014 teslimat\u0131n g\u00fcn i\u00e7indeki zaman\u0131 kay\u0131t a\u00e7\u0131s\u0131ndan \u00f6nemli.\r\n    function yerelDamga(d) {\r\n      var p = function(n) { return (n < 10 ? '0' : '') + n; };\r\n      return d.getFullYear() + '-' + p(d.getMonth() + 1) + '-' + p(d.getDate()) + ' ' + p(d.getHours()) + ':' + p(d.getMinutes());\r\n    }\r\n    var mevcut = yerelDamga((bulunan && bulunan.teslim_tarihi) ? new Date(bulunan.teslim_tarihi) : new Date());\r\n    var ilkBilgi = (bulunan && bulunan.teslim_ilk_isaretlenme_tarihi)\r\n      ? ('\\n(\u0130lk i\u015faretlenme: ' + tarihSaat(bulunan.teslim_ilk_isaretlenme_tarihi) + ' \u2014 bu kay\u0131t de\u011fi\u015fmez, sadece referans)')\r\n      : '';\r\n\r\n    var yeniTarih = prompt('Sipari\u015f ' + siparisId + ' i\u00e7in teslim tarih ve saatini gir\\n(YYYY-AA-GG SS:DD):' + ilkBilgi, mevcut);\r\n    if (!yeniTarih) return;\r\n    yeniTarih = yeniTarih.trim();\r\n    if (!\/^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2})?$\/.test(yeniTarih)) { alert('Ge\u00e7ersiz format. \u00d6rnek: 2026-08-15 14:30'); return; }\r\n    \/\/ Saat girilmediyse g\u00fcn\u00fcn ortas\u0131n\u0131 varsay (eski davran\u0131\u015fla uyumlu kals\u0131n).\r\n    if (yeniTarih.length === 10) yeniTarih += ' 12:00';\r\n\r\n    googleAPI({ action: 'siparis_teslim_tarihi_duzenle', siparis_id: siparisId, tarih: yeniTarih }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alert(data.mesaj); return; }\r\n      var yeniDeger = yeniTarih.replace(' ', 'T') + ':00';\r\n      if (typeof hamRaporVerisi !== 'undefined' && hamRaporVerisi) {\r\n        hamRaporVerisi.forEach(function(r) { if (r.siparis_id === siparisId) r.teslim_tarihi = yeniDeger; });\r\n        if (document.getElementById('raporTabloGovde')) raporTablosunuCiz();\r\n      }\r\n      if (typeof hamAdminGecmisSiparisler !== 'undefined' && hamAdminGecmisSiparisler) {\r\n        hamAdminGecmisSiparisler.forEach(function(r) { if (r.siparis_id === siparisId) r.teslim_tarihi = yeniDeger; });\r\n        if (document.getElementById('adminGecmisSiparislerAlani')) adminGecmisTablosunuCiz();\r\n      }\r\n    }).catch(function(err) { alert(err); });\r\n  };\r\n\r\n  window.siparisTeslimIsaretle = function(siparisId, isaretle) {\r\n    googleAPI({ action: 'siparis_teslim_isaretle', siparis_id: siparisId, isaretle: isaretle }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alert(data.mesaj); return; }\r\n      var yeniDeger = isaretle ? new Date().toISOString() : null;\r\n      if (typeof hamRaporVerisi !== 'undefined' && hamRaporVerisi) {\r\n        hamRaporVerisi.forEach(function(r) { if (r.siparis_id === siparisId) r.teslim_tarihi = yeniDeger; });\r\n        if (document.getElementById('raporTabloGovde')) raporTablosunuCiz();\r\n      }\r\n      if (typeof hamAdminGecmisSiparisler !== 'undefined' && hamAdminGecmisSiparisler) {\r\n        hamAdminGecmisSiparisler.forEach(function(r) { if (r.siparis_id === siparisId) r.teslim_tarihi = yeniDeger; });\r\n        if (document.getElementById('adminGecmisSiparislerAlani')) adminGecmisTablosunuCiz();\r\n      }\r\n    }).catch(function(err) { alert(err); });\r\n  };\r\n\r\n  window.raporlariYukle = function() {\r\n    document.getElementById('raporTabloGovde').innerHTML = '<tr><td colspan=\"13\" style=\"padding:10px; text-align:center;\">Veriler \u00e7ekiliyor...<\/td><\/tr>';\r\n    iadeDegisiklikleri = {}; \r\n    document.getElementById('raporGuncelleBtn').disabled = true; \r\n    document.getElementById('raporGuncelleBtn').style.opacity = '0.6';\r\n    \r\n    showLoading(\"Raporlar \u00e7ekiliyor...\");\r\n    googleAPI({ action: 'raporlari_cek' }).then(function(data) {\r\n      hideLoading();\r\n      if(data.durum === \"basarili\") {\r\n        hamRaporVerisi = data.raporlar || [];\r\n        globalTahsilatlar = data.tahsilatlar || []; \r\n\r\n        if(hamRaporVerisi.length === 0) { \r\n          document.getElementById('raporTabloGovde').innerHTML = '<tr><td colspan=\"13\" style=\"text-align:center;\">Onaylanm\u0131\u015f sipari\u015f bulunmuyor.<\/td><\/tr>'; \r\n          return; \r\n        }\r\n        \r\n        var mSet = new Set(), rSet = new Set(), aySet = new Set();\r\n        hamRaporVerisi.forEach(function(r) { \r\n            var temizRol = r.rol ? r.rol.toString().trim() : \"Belirsiz\"; \r\n            temizRol = temizRol.charAt(0).toUpperCase() + temizRol.slice(1).toLowerCase(); \r\n            r.rol = temizRol; \r\n            \/\/ \ud83c\udff7\ufe0f \"M\u00fc\u015fteri Tipi\" g\u00f6r\u00fcn\u00fcm\u00fc art\u0131k ham rol yerine ger\u00e7ek Kullan\u0131c\u0131 Tipi'ni\r\n            \/\/ (Acente\/Yat\/Cafe\/Restoran\/Otel) kullan\u0131r \u2014 backend musteri_tipi alan\u0131n\u0131 sa\u011flar.\r\n            var temizMusteriTipi = r.musteri_tipi ? r.musteri_tipi.toString().trim() : temizRol;\r\n            temizMusteriTipi = temizMusteriTipi.charAt(0).toUpperCase() + temizMusteriTipi.slice(1).toLowerCase();\r\n            r.musteri_tipi = temizMusteriTipi;\r\n            r.musteri = r.musteri ? r.musteri.toString().trim() : \"\"; \r\n            mSet.add(r.musteri); \r\n            rSet.add(r.musteri_tipi); \r\n            var d = new Date(r.tarih); \r\n            if(!isNaN(d)) { \r\n              var m = d.toLocaleString('tr-TR', { month: 'long', year: 'numeric' }); \r\n              r.ayStr = m.charAt(0).toUpperCase() + m.slice(1); \r\n              aySet.add(r.ayStr); \r\n            }\r\n        });\r\n        \r\n        var fAy = document.getElementById('raporFiltreAy'); fAy.innerHTML = '<option value=\"\">T\u00fcm Aylar<\/option>'; \r\n        aySet.forEach(function(ay) { fAy.innerHTML += `<option value=\"${ay}\">${ay}<\/option>`; });\r\n        \r\n        var fMus = document.getElementById('raporFiltreMusteri'); fMus.innerHTML = '<option value=\"\">T\u00fcm M\u00fc\u015fteriler<\/option>'; \r\n        mSet.forEach(function(m) { fMus.innerHTML += `<option value=\"${m}\">${m}<\/option>`; });\r\n        \r\n        var fRol = document.getElementById('raporFiltreRol'); fRol.innerHTML = '<option value=\"\">T\u00fcm Tipler<\/option>'; \r\n        rSet.forEach(function(r) { fRol.innerHTML += `<option value=\"${r}\">${r}<\/option>`; });\r\n        \r\n        fAy.onchange = raporTablosunuCiz; fMus.onchange = raporTablosunuCiz; fRol.onchange = raporTablosunuCiz; \r\n        document.getElementById('raporFiltreSiparisNo').oninput = raporTablosunuCiz;\r\n        document.getElementById('raporFiltreBaslangic').onchange = raporTablosunuCiz;\r\n        document.getElementById('raporFiltreBitis').onchange = raporTablosunuCiz;\r\n        \r\n        raporTablosunuCiz(); \r\n      } else { document.getElementById('raporTabloGovde').innerHTML = '<tr><td colspan=\"13\" style=\"color:red; text-align:center;\">' + data.mesaj + '<\/td><\/tr>'; }\r\n    }).catch(function(err) { hideLoading(); document.getElementById('raporTabloGovde').innerHTML = '<tr><td colspan=\"13\" style=\"color:red; text-align:center;\">Hata: ' + err + '<\/td><\/tr>'; });\r\n  }\r\n\r\n  \/\/ \ud83d\udd0d Sipari\u015f No arama + tarih aral\u0131\u011f\u0131 + mevcut filtreler \u2014 tek yerden kontrol edilir,\r\n  \/\/ hem tabloyu \u00e7izen hem toplamlar\u0131 hesaplayan fonksiyon ayn\u0131 mant\u0131\u011f\u0131 kullan\u0131r.\r\n  function raporFiltreyeUyuyorMu(r) {\r\n    var sAy = document.getElementById('raporFiltreAy').value;\r\n    var sMus = document.getElementById('raporFiltreMusteri').value;\r\n    var sRol = document.getElementById('raporFiltreRol').value;\r\n    var sSiparisNo = (document.getElementById('raporFiltreSiparisNo').value || '').trim().toUpperCase();\r\n    var sBaslangic = document.getElementById('raporFiltreBaslangic').value;\r\n    var sBitis = document.getElementById('raporFiltreBitis').value;\r\n\r\n    if (sAy && r.ayStr !== sAy) return false;\r\n    if (sMus && r.musteri !== sMus) return false;\r\n    if (sRol && r.musteri_tipi !== sRol) return false;\r\n    if (sSiparisNo && r.siparis_id.toString().toUpperCase().indexOf(sSiparisNo) === -1) return false;\r\n\r\n    if (sBaslangic || sBitis) {\r\n      var siparisTarihi = new Date(r.tarih);\r\n      if (sBaslangic && siparisTarihi < new Date(sBaslangic + 'T00:00:00')) return false;\r\n      if (sBitis && siparisTarihi > new Date(sBitis + 'T23:59:59')) return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  function raporTablosunuCiz() {\r\n    var govde = document.getElementById('raporTabloGovde'); \r\n    var tabloHTML = \"\"; \r\n    var kartHTML = \"\";\r\n    var gToplamDip = 0; \r\n    var gIadeDip = 0;\r\n    \r\n    hamRaporVerisi.forEach(function(r) {\r\n      if(!raporFiltreyeUyuyorMu(r)) return;\r\n      \/\/ \ud83d\udca1 \"Teslim edilmeyen ciro de\u011fildir\": teslim edilmemi\u015f bir sipari\u015f hen\u00fcz\r\n      \/\/ ger\u00e7ekle\u015fmi\u015f ciro say\u0131lmaz \u2014 bu sekmeden (liste + alttaki toplamlar) teslim\r\n      \/\/ edilene kadar tamamen d\u0131\u015far\u0131da tutulur. Takibi \"Teslim Edilecek Sipari\u015fler\"\r\n      \/\/ sekmesinden yap\u0131l\u0131r.\r\n      if (!r.teslim_tarihi) return;\r\n      var iadeSayi = metniSayiyaCevir(iadeDegisiklikleri[r.satir] !== undefined ? iadeDegisiklikleri[r.satir] : r.duzeltme); \r\n      var netGenelToplam = metniSayiyaCevir(r.toplam) - metniSayiyaCevir(r.iade) - iadeSayi; \r\n      gToplamDip += netGenelToplam; gIadeDip += iadeSayi;\r\n      var teslimRozetHtml = teslimatRozetiOlustur(r.siparis_id, r.teslim_tarihi, r.teslim_ilk_isaretlenme_tarihi);\r\n\r\n      tabloHTML += `<tr style=\"cursor:pointer;\" onclick=\"siparisDetayiGoster('${r.siparis_id}')\" title=\"Detaylar\u0131 g\u00f6r\u00fcnt\u00fclemek i\u00e7in t\u0131klay\u0131n\"><td style=\"padding:10px;\">${new Date(r.tarih).toLocaleDateString()}<\/td><td style=\"padding:10px;\"><b>${r.musteri}<\/b><\/td><td style=\"padding:10px; color:#555;\">${r.yat_adi || '-'}<\/td><td style=\"padding:10px;\">${r.musteri_tipi}<\/td><td style=\"padding:10px; text-align:right;\">${sayiyiMetneCevir(r.kdvsiz)} TL<\/td><td style=\"padding:10px; text-align:right;\">${sayiyiMetneCevir(r.kdv)} TL<\/td><td style=\"padding:10px; text-align:right; color:#b8860b; font-weight:${metniSayiyaCevir(r.iade) > 0 ? 'bold' : 'normal'}; ${metniSayiyaCevir(r.iade) > 0 ? 'cursor:pointer; text-decoration:underline dotted;' : ''}\" ${metniSayiyaCevir(r.iade) > 0 ? `onclick=\"event.stopPropagation(); siparisIadeleriGoster('${r.siparis_id}')\" title=\"\u0130ade i\u00e7eri\u011fini g\u00f6r\u00fcnt\u00fcle\"` : ''}>${metniSayiyaCevir(r.iade) > 0 ? sayiyiMetneCevir(r.iade) + ' TL' : '-'}<\/td><td style=\"padding:10px; text-align:right; background:#fff3cd;\" onclick=\"event.stopPropagation();\" title=\"${(r.duzeltme_notu || '').replace(\/\"\/g, '&quot;')}\"><input type=\"text\" id=\"iadeInput-td-${r.satir}\" value=\"${sayiyiMetneCevir(iadeSayi)}\" class=\"iade-input\" style=\"width:80px; padding:5px; text-align:right;\" onfocus=\"if(this.value==='0,00' || this.value==='0') this.value='';\" onblur=\"if(this.value==='') this.value='0,00'; iadeDegisti(this, '${r.satir}', ${metniSayiyaCevir(r.toplam)});\" oninput=\"iadeDegisti(this, '${r.satir}', ${metniSayiyaCevir(r.toplam)})\"><\/td><td id=\"netToplam-td-${r.satir}\" style=\"padding:10px; text-align:right; font-weight:bold; color:${netGenelToplam < 0 ? 'red' : 'green'};\">${sayiyiMetneCevir(netGenelToplam)} TL<\/td><td style=\"padding:10px; font-size:12px; color:#555;\">${r.onaylayan || '-'}<\/td><td style=\"padding:10px; text-align:center;\" onclick=\"event.stopPropagation();\">${teslimRozetHtml}<\/td><td style=\"padding:10px; text-align:center;\" onclick=\"event.stopPropagation();\">${faturaHucresi(r)}<\/td><td style=\"padding:10px; text-align:center;\" onclick=\"event.stopPropagation();\"><button type=\"button\" onclick=\"iadePenceresiAc('${r.siparis_id}')\" title=\"Bu sipari\u015ften \u00fcr\u00fcn iade al (k\u0131smi veya tam)\" style=\"background:#b8860b; color:white; border:none; padding:6px 10px; border-radius:4px; cursor:pointer; font-size:12px; margin-right:4px;\">\u0130ade<\/button><button type=\"button\" onclick=\"raporSiparisSil('${r.siparis_id}')\" title=\"Bu sipari\u015fi kal\u0131c\u0131 olarak sil\" style=\"background:#dc3545; color:white; border:none; padding:6px 10px; border-radius:4px; cursor:pointer; font-size:12px;\">Sil<\/button><\/td><\/tr>`;\r\n      kartHTML += `<div class=\"gecmis-mobil-kart\" onclick=\"siparisDetayiGoster('${r.siparis_id}')\">\r\n        <div class=\"gecmis-mobil-kart-ust\"><b>${r.musteri}<\/b><b id=\"netToplam-kart-${r.satir}\" style=\"color:${netGenelToplam < 0 ? 'red' : 'green'};\">${sayiyiMetneCevir(netGenelToplam)} TL<\/b><\/div>\r\n        <div class=\"gecmis-mobil-kart-alt\">${new Date(r.tarih).toLocaleDateString()} \u00b7 ${r.yat_adi || '-'} \u00b7 ${r.musteri_tipi} \u00b7 Sipari\u015f: ${sayiyiMetneCevir(r.toplam)} TL \u00b7 KDV: ${sayiyiMetneCevir(r.kdv)} TL${r.onaylayan ? ' \u00b7 Onaylayan: ' + r.onaylayan : ''}<\/div>\r\n        <div onclick=\"event.stopPropagation();\" style=\"margin-top:8px; display:flex; gap:8px; align-items:center; flex-wrap:wrap;\">${teslimRozetHtml}${faturaHucresi(r)}<\/div>\r\n        <div onclick=\"event.stopPropagation();\" style=\"display:flex; align-items:center; gap:8px; margin-top:8px;\">\r\n          <span style=\"font-size:12px; color:#8a8578;\">D\u00fczeltme:<\/span>\r\n          <input type=\"text\" id=\"iadeInput-kart-${r.satir}\" value=\"${sayiyiMetneCevir(iadeSayi)}\" class=\"iade-input\" style=\"flex:1; padding:6px; text-align:right; background:#fff3cd; border:1px solid #ffe08a; border-radius:4px;\" onfocus=\"if(this.value==='0,00' || this.value==='0') this.value='';\" onblur=\"if(this.value==='') this.value='0,00'; iadeDegisti(this, '${r.satir}', ${metniSayiyaCevir(r.toplam)});\" oninput=\"iadeDegisti(this, '${r.satir}', ${metniSayiyaCevir(r.toplam)})\">\r\n        <\/div>\r\n        <button type=\"button\" onclick=\"event.stopPropagation(); raporSiparisSil('${r.siparis_id}')\" style=\"width:100%; margin-top:8px; background:#dc3545; color:white; border:none; padding:8px; border-radius:4px; cursor:pointer; font-size:13px;\">Sipari\u015f Sil<\/button>\r\n      <\/div>`;\r\n    });\r\n    govde.innerHTML = tabloHTML; \r\n    document.getElementById('raporMobilKartlar').innerHTML = kartHTML;\r\n    document.getElementById('raporDipToplam').innerText = sayiyiMetneCevir(gToplamDip); \r\n    document.getElementById('raporIadeToplam').innerText = sayiyiMetneCevir(gIadeDip);\r\n  }\r\n\r\n  \/\/ \ud83d\udc64 CREATOR PANEL\u0130 \u2014 Kullan\u0131c\u0131lar listesi + \u015fifre s\u0131f\u0131rlama\r\n  function creatorKullanicilariYukle() {\r\n    var govde = document.getElementById('creatorKullaniciGovde');\r\n    if (govde) govde.innerHTML = '<tr><td colspan=\"6\" style=\"text-align:center; padding:20px;\">Y\u00fckleniyor...<\/td><\/tr>';\r\n    googleAPI({ action: 'kullanicilari_listele' }).then(function(data) {\r\n      if (data.durum !== 'basarili') { if (govde) govde.innerHTML = '<tr><td colspan=\"6\" style=\"color:red; text-align:center;\">' + data.mesaj + '<\/td><\/tr>'; return; }\r\n      var html = '';\r\n      (data.kullanicilar || []).forEach(function(k) {\r\n        var guvenliKadi = (k.kullanici_adi || '').replace(\/'\/g, \"\\\\'\");\r\n        html += `<tr style=\"border-bottom:1px solid #eee;\">\r\n          <td style=\"padding:8px;\">${k.kullanici_adi}<\/td>\r\n          <td style=\"padding:8px;\">${k.gercek_isim || '-'}<\/td>\r\n          <td style=\"padding:8px;\">${k.rol}<\/td>\r\n          <td style=\"padding:8px;\">${k.isletme_tipi || '-'}<\/td>\r\n          <td style=\"padding:8px;\">${k.durum}<\/td>\r\n          <td style=\"padding:8px; text-align:center;\"><button type=\"button\" onclick=\"creatorSifreSifirla('${guvenliKadi}')\" style=\"background:#0792ad; color:#fff; border:none; padding:6px 12px; border-radius:4px; cursor:pointer; font-size:12px;\">\u015eifre S\u0131f\u0131rla<\/button><\/td>\r\n        <\/tr>`;\r\n      });\r\n      govde.innerHTML = html || '<tr><td colspan=\"6\" style=\"padding:10px; text-align:center;\">Kay\u0131t yok.<\/td><\/tr>';\r\n    }).catch(function(err) { if (govde) govde.innerHTML = '<tr><td colspan=\"6\" style=\"color:red; text-align:center;\">' + err + '<\/td><\/tr>'; });\r\n  }\r\n\r\n  window.creatorSifreSifirla = function(kadi) {\r\n    var yeni = prompt(kadi + ' i\u00e7in yeni \u015fifre belirleyin (en az 4 karakter):');\r\n    if (yeni === null) return; \/\/ vazge\u00e7ildi\r\n    yeni = yeni.trim();\r\n    if (yeni.length < 4) { alert('\u015eifre en az 4 karakter olmal\u0131.'); return; }\r\n    googleAPI({ action: 'sifre_sifirla', kullanici_adi: kadi, yeni_sifre: yeni }).then(function(data) {\r\n      if (data.durum === 'basarili') { alert(kadi + ' i\u00e7in \u015fifre g\u00fcncellendi.'); }\r\n      else { alert('Hata: ' + data.mesaj); }\r\n    }).catch(function(err) { alert(err); });\r\n  };\r\n\r\n  \/\/ \ud83d\ude80 KOM\u0130SYON TABLOSU\r\n  var hamKomisyonVerisi = [];\r\n  var hamKomisyonDetaylar = {}; \/\/ anahtar (donem_tip) -> [tahsilat sat\u0131rlar\u0131] \u2014 \"Hak Edilen Komisyon\"un a\u00e7\u0131k d\u00f6k\u00fcm\u00fc\r\n  var hamKomisyonBekleyenler = {}; \/\/ anahtar (donem_tip) -> [hen\u00fcz hesaba ge\u00e7memi\u015f tahsilat sat\u0131rlar\u0131]\r\n\r\n  function komisyonVerisiYukle() {\r\n    var govde = document.getElementById('komisyonTabloGovde');\r\n    if (govde) govde.innerHTML = '<tr><td colspan=\"6\" style=\"text-align:center; padding:20px;\">Hesaplan\u0131yor...<\/td><\/tr>';\r\n    googleAPI({ action: 'komisyon_hesapla' }).then(function(data) {\r\n      if (data.durum !== 'basarili') { if (govde) govde.innerHTML = '<tr><td colspan=\"6\" style=\"color:red; text-align:center;\">' + data.mesaj + '<\/td><\/tr>'; return; }\r\n      hamKomisyonVerisi = data.gruplar || [];\r\n      hamKomisyonDetaylar = data.detaylar || {};\r\n      hamKomisyonBekleyenler = data.bekleyenler || {};\r\n\r\n      var kAy = document.getElementById('komisyonFiltreAy'); var kRol = document.getElementById('komisyonFiltreRol');\r\n      if (kAy && kRol) {\r\n        var aySet = new Set(), tipSet = new Set();\r\n        hamKomisyonVerisi.forEach(function(g) { aySet.add(g.donem); tipSet.add(g.tip); });\r\n        var eskiAy = kAy.value, eskiRol = kRol.value;\r\n        kAy.innerHTML = '<option value=\"\">T\u00fcm Aylar<\/option>'; Array.from(aySet).sort().forEach(function(ay) { kAy.innerHTML += `<option value=\"${ay}\">${ay}<\/option>`; });\r\n        kRol.innerHTML = '<option value=\"\">T\u00fcm Tipler<\/option>'; Array.from(tipSet).sort().forEach(function(t) { kRol.innerHTML += `<option value=\"${t}\">${t}<\/option>`; });\r\n        kAy.value = eskiAy; kRol.value = eskiRol;\r\n        kAy.onchange = komisyonTablosunuCiz; kRol.onchange = komisyonTablosunuCiz;\r\n      }\r\n      komisyonTablosunuCiz();\r\n    }).catch(function(err) { if (govde) govde.innerHTML = '<tr><td colspan=\"6\" style=\"color:red; text-align:center;\">' + err + '<\/td><\/tr>'; });\r\n  }\r\n\r\n  \/\/ \ud83d\udcb3 Komisyon art\u0131k sipari\u015fin AYINA g\u00f6re de\u011fil, TAHS\u0130LATIN hak edili\u015f tarihine g\u00f6re hesaplan\u0131r:\r\n  \/\/ Nakit an\u0131nda, Kredi Kart\u0131 ayarlardaki gecikme g\u00fcn\u00fc kadar sonra hak edilir (bkz. backend\r\n  \/\/ komisyon_hesapla). Her sat\u0131rda \u0130K\u0130 ayr\u0131 rakam g\u00f6sterilir:\r\n  \/\/  - Ger\u00e7ekle\u015fen Tahsilat: o ay fiilen al\u0131nan \u00f6deme toplam\u0131\r\n  \/\/  - Hak Edilen Tahsilat: o ay i\u00e7in komisyona esas olan (kredi kart\u0131nda kayd\u0131r\u0131lm\u0131\u015f) tutar\r\n  \/\/ B\u00f6ylece ay sonundaki bir kredi kart\u0131 tahsilat\u0131n\u0131n komisyonunun bir sonraki aya\r\n  \/\/ kaym\u0131\u015f olmas\u0131, tabloda do\u011frudan g\u00f6r\u00fclebiliyor.\r\n  function komisyonTablosunuCiz() {\r\n    var kAy = document.getElementById('komisyonFiltreAy').value; \r\n    var kRol = document.getElementById('komisyonFiltreRol').value; \r\n\r\n    var komisyonTablo = document.getElementById('komisyonTabloGovde').closest('table');\r\n    if(komisyonTablo) {\r\n        komisyonTablo.querySelector('thead').innerHTML = `<tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:10px;\">D\u00f6nem (Ay)<\/th><th style=\"padding:10px;\">Rol\/Tip<\/th><th style=\"padding:10px; text-align:right;\">Ger\u00e7ekle\u015fen Tahsilat<\/th><th style=\"padding:10px; text-align:right;\">Hesaba Ge\u00e7en Tahsilat<\/th><th style=\"padding:10px; text-align:center;\">Oran<\/th><th style=\"padding:10px; text-align:right;\">Hak Edilen Komisyon<\/th><\/tr>`;\r\n    }\r\n\r\n    var filtreli = hamKomisyonVerisi.filter(function(g) {\r\n        if (kAy && g.donem !== kAy) return false;\r\n        if (kRol && g.tip !== kRol) return false;\r\n        return true;\r\n    }).slice().sort(function(a, b) { return a.donem < b.donem ? -1 : (a.donem > b.donem ? 1 : 0); });\r\n\r\n    var govde = document.getElementById('komisyonTabloGovde'); \r\n    var tabloHTML = \"\"; var toplamKomisyon = 0; var kOran = 10;\r\n    \/\/ \ud83d\udcca Ay baz\u0131nda ara toplam + genel toplam (ba\u011f\u0131ms\u0131z denetim\/mutabakat kolayl\u0131\u011f\u0131 i\u00e7in).\r\n    var araGerceklesen = 0, araHesabaGecen = 0, araKomisyon = 0;\r\n    var genelGerceklesen = 0, genelHesabaGecen = 0, genelKomisyon = 0;\r\n    var oncekiDonem = null;\r\n\r\n    function araToplamSatiriEkle(donem) {\r\n        tabloHTML += `<tr style=\"border-top:2px solid #999; border-bottom:2px solid #999; background:#f8f6ef; font-weight:bold;\"><td style=\"padding:10px;\" colspan=\"2\">${donem} \u2014 Ara Toplam<\/td><td style=\"padding:10px; text-align:right; color:#666;\">${sayiyiMetneCevir(araGerceklesen)} TL<\/td><td style=\"padding:10px; text-align:right; color:#0792ad;\">${sayiyiMetneCevir(araHesabaGecen)} TL<\/td><td><\/td><td style=\"padding:10px; text-align:right; color:#0792ad;\">${sayiyiMetneCevir(araKomisyon)} TL<\/td><\/tr>`;\r\n    }\r\n\r\n    filtreli.forEach(function(g) {\r\n        if (oncekiDonem !== null && g.donem !== oncekiDonem) {\r\n            araToplamSatiriEkle(oncekiDonem);\r\n            araGerceklesen = 0; araHesabaGecen = 0; araKomisyon = 0;\r\n        }\r\n        var komisyon = g.hesabaGecen * (kOran \/ 100);\r\n        toplamKomisyon += komisyon;\r\n        araGerceklesen += g.gerceklesen; araHesabaGecen += g.hesabaGecen; araKomisyon += komisyon;\r\n        genelGerceklesen += g.gerceklesen; genelHesabaGecen += g.hesabaGecen; genelKomisyon += komisyon;\r\n\r\n        var anahtar = g.donem + '_' + g.tip;\r\n        var anahtarGuvenli = anahtar.replace(\/'\/g, \"\\\\'\").replace(\/\"\/g, '&quot;');\r\n        var detayListesi = hamKomisyonDetaylar[anahtar] || [];\r\n        var bekleyenListesi = hamKomisyonBekleyenler[anahtar] || [];\r\n        var toplamKayitSayisi = detayListesi.length + bekleyenListesi.length;\r\n\r\n        tabloHTML += `<tr class=\"komisyon-grup-satir\" style=\"border-bottom:1px solid #eee;\" onclick=\"komisyonSatirAcKapa('${anahtarGuvenli}')\" title=\"Bu d\u00f6nemin tahsilat d\u00f6k\u00fcm\u00fcn\u00fc g\u00f6rmek i\u00e7in t\u0131klay\u0131n\">\r\n          <td style=\"padding:10px;\"><span id=\"komisyon-ok-${anahtarGuvenli}\" class=\"no-print\" style=\"display:inline-block; width:14px; color:#0792ad;\">${toplamKayitSayisi ? '\u25b6' : ''}<\/span>${g.donem}<\/td>\r\n          <td style=\"padding:10px;\">${g.tip}<\/td>\r\n          <td style=\"padding:10px; text-align:right; color:#666;\">${sayiyiMetneCevir(g.gerceklesen)} TL<\/td>\r\n          <td style=\"padding:10px; text-align:right; font-weight:bold; color:#0792ad;\">${sayiyiMetneCevir(g.hesabaGecen)} TL<\/td>\r\n          <td style=\"padding:10px; text-align:center;\">%${kOran}<\/td>\r\n          <td style=\"padding:10px; text-align:right; font-weight:bold; color:#0792ad;\">${sayiyiMetneCevir(komisyon)} TL<\/td>\r\n        <\/tr>`;\r\n\r\n        \/\/ \ud83d\udcc4 A\u00e7\u0131k d\u00f6k\u00fcm sat\u0131rlar\u0131 \u2014 ekranda varsay\u0131lan olarak gizli (t\u0131klay\u0131nca a\u00e7\u0131l\u0131r),\r\n        \/\/ yazd\u0131rma\/PDF \u00e7\u0131kt\u0131s\u0131nda CSS ile HER ZAMAN g\u00f6r\u00fcn\u00fcr (bkz. .komisyon-detay-satir kural\u0131).\r\n        \/\/ \u00d6nce hesaba ge\u00e7mi\u015f (\u2705, komisyona dahil), sonra hen\u00fcz ge\u00e7memi\u015f (\u23f3, sadece bilgi ama\u00e7l\u0131).\r\n        detayListesi.forEach(function(d) {\r\n          var detayKomisyon = d.tutar * (kOran \/ 100);\r\n          tabloHTML += `<tr class=\"komisyon-detay-satir\" data-grup=\"${anahtarGuvenli}\">\r\n            <td style=\"padding:5px 10px 5px 34px; font-size:12px; color:#666;\" colspan=\"2\">\u2705 ${d.tahsilat_tarihi} \u00b7 ${d.musteri || '-'}<\/td>\r\n            <td style=\"padding:5px 10px; text-align:right; font-size:12px; color:#666;\">${sayiyiMetneCevir(d.tutar)} TL <span style=\"color:#aaa;\">(${d.odeme_yontemi})<\/span><\/td>\r\n            <td style=\"padding:5px 10px; text-align:right; font-size:12px; color:#0792ad;\">${sayiyiMetneCevir(d.tutar)} TL <span style=\"color:#aaa;\">\u2192 ${d.hesaba_gecis_tarihi}<\/span><\/td>\r\n            <td><\/td>\r\n            <td style=\"padding:5px 10px; text-align:right; font-size:12px; color:#0792ad;\">${sayiyiMetneCevir(detayKomisyon)} TL<\/td>\r\n          <\/tr>`;\r\n        });\r\n        bekleyenListesi.forEach(function(b) {\r\n          tabloHTML += `<tr class=\"komisyon-detay-satir\" data-grup=\"${anahtarGuvenli}\">\r\n            <td style=\"padding:5px 10px 5px 34px; font-size:12px; color:#b8860b;\" colspan=\"2\">\u23f3 ${b.tahsilat_tarihi} \u00b7 ${b.musteri || '-'} <span style=\"color:#aaa;\">(bekliyor)<\/span><\/td>\r\n            <td style=\"padding:5px 10px; text-align:right; font-size:12px; color:#b8860b;\">${sayiyiMetneCevir(b.tutar)} TL <span style=\"color:#aaa;\">(${b.odeme_yontemi})<\/span><\/td>\r\n            <td style=\"padding:5px 10px; text-align:right; font-size:12px; color:#aaa;\">\u2014 <span style=\"color:#aaa;\">\u2192 ${b.beklenen_hesaba_gecis_tarihi}'te ge\u00e7ecek<\/span><\/td>\r\n            <td><\/td>\r\n            <td style=\"padding:5px 10px; text-align:right; font-size:12px; color:#aaa;\">\u2014<\/td>\r\n          <\/tr>`;\r\n        });\r\n\r\n        oncekiDonem = g.donem;\r\n    });\r\n    if (oncekiDonem !== null) araToplamSatiriEkle(oncekiDonem);\r\n\r\n    if (filtreli.length > 0) {\r\n        tabloHTML += `<tr style=\"border-top:3px double #333; background:#e9e4d4; font-weight:bold; font-size:15px;\"><td style=\"padding:12px;\" colspan=\"2\">GENEL TOPLAM<\/td><td style=\"padding:12px; text-align:right;\">${sayiyiMetneCevir(genelGerceklesen)} TL<\/td><td style=\"padding:12px; text-align:right; color:#0792ad;\">${sayiyiMetneCevir(genelHesabaGecen)} TL<\/td><td><\/td><td style=\"padding:12px; text-align:right; color:#0792ad;\">${sayiyiMetneCevir(genelKomisyon)} TL<\/td><\/tr>`;\r\n    }\r\n    govde.innerHTML = tabloHTML || '<tr><td colspan=\"6\" style=\"padding:10px; text-align:center;\">Kay\u0131t yok.<\/td><\/tr>'; \r\n    var dipTopEl = document.getElementById('komisyonDipToplam'); if(dipTopEl) dipTopEl.innerText = sayiyiMetneCevir(toplamKomisyon);\r\n  }\r\n\r\n  \/\/ \ud83d\udd3d Bir komisyon grubunun (Ay+Tip) alt\u0131ndaki tahsilat d\u00f6k\u00fcm\u00fcn\u00fc a\u00e7ar\/kapat\u0131r.\r\n  window.komisyonSatirAcKapa = function(anahtar) {\r\n    var satirlar = document.querySelectorAll('.komisyon-detay-satir');\r\n    var eslesenler = [];\r\n    satirlar.forEach(function(s) { if (s.getAttribute('data-grup') === anahtar) eslesenler.push(s); });\r\n    if (!eslesenler.length) return;\r\n    var acikMi = eslesenler[0].classList.contains('acik');\r\n    eslesenler.forEach(function(s) { s.classList.toggle('acik', !acikMi); });\r\n    var ok = document.getElementById('komisyon-ok-' + anahtar.replace(\/&quot;\/g, '\"'));\r\n    if (ok) ok.innerText = acikMi ? '\u25b6' : '\u25bc';\r\n  };\r\n\r\n  \/\/ \ud83d\udda8\ufe0f Komisyon tablosunu (d\u00f6k\u00fcmler her zaman a\u00e7\u0131k \u015fekilde) yazd\u0131r\u0131r \/ PDF olarak kaydeder.\r\n  \/\/ Mevcut sipari\u015f\/cari yazd\u0131rma fonksiyonlar\u0131yla AYNI mekanizmay\u0131 kullan\u0131r.\r\n  window.komisyonYazdir = function() {\r\n    var kutu = document.getElementById('creatorKomisyonBolumu');\r\n    var gizlenenler = digerIcerigiGizle(kutu);\r\n    var oncekiOverflow = document.body.style.overflow;\r\n    document.body.style.overflow = '';\r\n\r\n    var eskiHaleDondur = function() {\r\n      gizlenenler.forEach(function(g) { g.el.style.display = g.eskiDisplay; });\r\n      document.body.style.overflow = oncekiOverflow;\r\n      window.removeEventListener('focus', eskiHaleDondurGecikmeli);\r\n    };\r\n    var eskiHaleDondurGecikmeli = function() { setTimeout(eskiHaleDondur, 300); };\r\n    if (window.matchMedia) {\r\n      var medyaSorgusu = window.matchMedia('print');\r\n      var dinleyici = function(mql) { if (!mql.matches) { eskiHaleDondur(); medyaSorgusu.removeListener && medyaSorgusu.removeListener(dinleyici); } };\r\n      medyaSorgusu.addListener && medyaSorgusu.addListener(dinleyici);\r\n    }\r\n    window.onafterprint = eskiHaleDondur;\r\n    window.addEventListener('focus', eskiHaleDondurGecikmeli);\r\n    window.print();\r\n  };\r\n\r\n  window.iadeDegisti = function(input, satir, asilToplam) {\r\n    iadeDegiskikleriGuncelle(satir, input.value);\r\n    var yeniNet = asilToplam - iadeDegisiklikleri[satir];\r\n    var netStr = sayiyiMetneCevir(yeniNet) + \" TL\";\r\n    var renk = (yeniNet < 0) ? 'red' : 'green';\r\n    ['td', 'kart'].forEach(function(tur) {\r\n      var netEl = document.getElementById('netToplam-' + tur + '-' + satir);\r\n      if (netEl) { netEl.innerText = netStr; netEl.style.color = renk; }\r\n      var girisEl = document.getElementById('iadeInput-' + tur + '-' + satir);\r\n      if (girisEl && girisEl !== input) { girisEl.value = sayiyiMetneCevir(iadeDegisiklikleri[satir]); }\r\n    });\r\n    document.getElementById('raporGuncelleBtn').disabled = false; \r\n    document.getElementById('raporGuncelleBtn').style.opacity = '1'; \r\n    raporDipToplamHesapla();\r\n  }\r\n  function iadeDegiskikleriGuncelle(satir, deger) { iadeDegisiklikleri[satir] = metniSayiyaCevir(deger); }\r\n\r\n  function raporDipToplamHesapla() {\r\n    var gToplamDip = 0; var gIadeDip = 0;\r\n    \r\n    hamRaporVerisi.forEach(function(r) {\r\n      if(!raporFiltreyeUyuyorMu(r)) return;\r\n      if (!r.teslim_tarihi) return;\r\n      var iadeSayi = metniSayiyaCevir(iadeDegisiklikleri[r.satir] !== undefined ? iadeDegisiklikleri[r.satir] : r.duzeltme); \r\n      gIadeDip += iadeSayi; gToplamDip += (metniSayiyaCevir(r.toplam) - iadeSayi);\r\n    });\r\n    \r\n    document.getElementById('raporDipToplam').innerText = sayiyiMetneCevir(gToplamDip); \r\n    document.getElementById('raporIadeToplam').innerText = sayiyiMetneCevir(gIadeDip); \r\n    komisyonTablosunuCiz();\r\n  }\r\n\r\n  document.getElementById('raporGuncelleBtn').addEventListener('click', function() {\r\n    var gonderilecek = []; \r\n    \/\/ \ud83d\udcdd Her d\u00fczeltme i\u00e7in sebep sorulur \u2014 sonradan \"bu neden yap\u0131lm\u0131\u015ft\u0131?\" sorusuna\r\n    \/\/ cevap kals\u0131n diye. S\u0131f\u0131ra \u00e7ekilen (iptal edilen) d\u00fczeltmelerde not istenmez.\r\n    for (var satir in iadeDegisiklikleri) {\r\n      var tutar = iadeDegisiklikleri[satir];\r\n      var not = '';\r\n      if (tutar > 0) {\r\n        not = prompt('D\u00fczeltme sebebi (' + satir + ' \u00b7 ' + sayiyiMetneCevir(tutar) + ' TL):\\n\\n\u00d6rn: \"Fatura ile sipari\u015f toplam\u0131 aras\u0131ndaki kuru\u015f fark\u0131\"');\r\n        if (not === null) return; \/\/ vazge\u00e7ildi, hi\u00e7bir \u015fey kaydetme\r\n        not = not.trim();\r\n        if (not === '') { alert('D\u00fczeltmenin sebebini yazmal\u0131s\u0131n\u0131z.'); return; }\r\n      }\r\n      gonderilecek.push({ satir: satir, iade: tutar, not: not });\r\n    }\r\n    if(gonderilecek.length === 0) return; \r\n    \r\n    this.disabled = true; showLoading(\"D\u00fczeltmeler kaydediliyor...\");\r\n    googleAPI({ action: 'iade_guncelle', iadeler: gonderilecek }).then(function(data) { \r\n      hideLoading(); \r\n      if(data.durum === \"basarili\") { alert(\"Kaydedildi.\"); raporlariYukle(); } else { alert(data.mesaj); this.disabled = false; } \r\n    }).catch(function(err) { hideLoading(); alert(err); this.disabled = false; });\r\n  });\r\n\r\n  window.ayarlariKaydet = function(tip) {\r\n    var payload = { action: 'ayar_guncelle' };\r\n    if(tip === 'stok') payload.kritik_stok = document.getElementById('saKritikStok').value;\r\n    if(tip === 'mail') payload.yeni_mailler = document.getElementById('saMailListesi').value || document.getElementById('admMailListesi').value;\r\n    if(tip === 'kart') payload.kredi_karti_gecikme = document.getElementById('saKrediKartiGecikme').value;\r\n    \r\n    showLoading(\"Ayarlar kaydediliyor...\");\r\n    googleAPI(payload).then(function(data) { \r\n      hideLoading(); \r\n      if(data.durum==='basarili') {\r\n        if(payload.kritik_stok !== undefined) globalData.ayarlar.kritikStok = payload.kritik_stok;\r\n        if(payload.kredi_karti_gecikme !== undefined) { globalData.ayarlar.krediKartiGecikme = payload.kredi_karti_gecikme; }\r\n        alert('Kaydedildi!'); saUrunTablosuCiz();\r\n      } else { alert(data.mesaj); }\r\n    }).catch(function(e) { hideLoading(); alert(e); });\r\n  }\r\n\r\n  window.kullaniciEkle = function(prefix) {\r\n    var kadi = document.getElementById(prefix+'Kadi').value; var sifre = document.getElementById(prefix+'Sifre').value; \r\n    var kullaniciTipi = document.getElementById(prefix+'KullaniciTipi').value; var isim = document.getElementById(prefix+'Isim').value;\r\n    \r\n    if(!kadi || !sifre) return alert(\"Kullan\u0131c\u0131 ad\u0131 ve \u015fifre zorunlu!\"); \r\n    showLoading(\"Kullan\u0131c\u0131 ekleniyor...\");\r\n    googleAPI({ action: 'kullanici_ekle', yeni_kadi:kadi, yeni_sifre:sifre, kullanici_tipi:kullaniciTipi, yeni_isim:isim })\r\n    .then(function(data) { hideLoading(); if(data.durum==='basarili') { alert('Eklendi!'); document.getElementById(prefix+'Kadi').value=\"\"; document.getElementById(prefix+'Sifre').value=\"\"; document.getElementById(prefix+'Isim').value=\"\"; kullanicilariListele(prefix); musteriOnbelleginiTazele(); } else { alert(data.mesaj); } }).catch(function(e) { hideLoading(); alert(e); });\r\n  }\r\n\r\n  \/\/ \ud83d\udc65 Kullan\u0131c\u0131 listesini \u00e7izer, her sat\u0131ra \"yeni \u015fifre belirle\" alan\u0131 ekler.\r\n  window.kullanicilariListele = function(prefix) {\r\n    var govde = document.getElementById(prefix + 'KullaniciListesiGovde');\r\n    if (!govde) return;\r\n    govde.innerHTML = 'Y\u00fckleniyor...';\r\n    googleAPI({ action: 'kullanicilari_listele' }).then(function(data) {\r\n      if (data.durum === 'basarili') {\r\n        var liste = data.kullanicilar || [];\r\n        if (liste.length === 0) { govde.innerHTML = 'Hen\u00fcz kullan\u0131c\u0131 yok.'; return; }\r\n        var html = '<div style=\"overflow-x:auto;\"><table style=\"width:100%; min-width:650px; border-collapse:collapse; text-align:left; font-size:14px; white-space:nowrap;\"><thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:8px;\">Kullan\u0131c\u0131 Ad\u0131<\/th><th style=\"padding:8px;\">\u0130sim<\/th><th style=\"padding:8px;\">Rol<\/th><th style=\"padding:8px;\">\u0130\u015fletme Tipi<\/th><th style=\"padding:8px; min-width:220px;\">Yeni \u015eifre Belirle<\/th><th style=\"padding:8px; text-align:center;\">Durum<\/th><\/tr><\/thead><tbody>';\r\n        var isletmeIkonHaritasi = { 'Kraken': '\ud83d\udd27', 'Acente': '\ud83e\udd1d', 'Yat': '\u26f5', 'Cafe': '\u2615', 'Restoran': '\ud83c\udf7d\ufe0f', 'Otel': '\ud83c\udfe8' };\r\n        liste.forEach(function(k) {\r\n          var girisId = prefix + '_sifre_' + k.satir;\r\n          var guvenliKadi = k.kullanici_adi.toString().replace(\/'\/g, \"\\\\'\");\r\n          var arsivliMi = k.durum === 'Ar\u015fivlenmi\u015f';\r\n          var satirStil = arsivliMi ? 'opacity:0.55;' : '';\r\n          var isletmeGosterim = (isletmeIkonHaritasi[k.isletme_tipi] || '') + ' ' + (k.isletme_tipi || 'Yat');\r\n          var durumButonu = arsivliMi\r\n            ? `<div style=\"display:flex; gap:6px; justify-content:center; flex-wrap:wrap;\"><button type=\"button\" onclick=\"kullaniciAktiflestir('${guvenliKadi}', '${prefix}')\" style=\"background:#28a745; color:#fff; border:none; padding:6px 10px; border-radius:4px; cursor:pointer; font-size:12px; white-space:nowrap;\">Aktifle\u015ftir<\/button><button type=\"button\" onclick=\"kullaniciTamamenSil('${guvenliKadi}', '${prefix}')\" style=\"background:#6c1a1a; color:#fff; border:none; padding:6px 10px; border-radius:4px; cursor:pointer; font-size:12px; white-space:nowrap;\">T\u00fcmden Sil<\/button><\/div>`\r\n            : `<button type=\"button\" onclick=\"kullaniciSil('${guvenliKadi}', '${prefix}')\" style=\"background:#dc3545; color:#fff; border:none; padding:6px 10px; border-radius:4px; cursor:pointer; font-size:12px; white-space:nowrap;\">Sil<\/button>`;\r\n          html += `<tr style=\"border-bottom:1px solid #eee; ${satirStil}\"><td style=\"padding:8px; font-weight:bold;\">${k.kullanici_adi}<\/td><td style=\"padding:8px;\">${k.gercek_isim || '-'}<\/td><td style=\"padding:8px;\">${rolGosterimAdi(k.rol)}<\/td><td style=\"padding:8px;\">${isletmeGosterim}<\/td><td style=\"padding:8px;\"><div style=\"display:flex; gap:6px;\"><input type=\"text\" id=\"${girisId}\" placeholder=\"Yeni \u015fifre (en az 4 karakter)\" style=\"flex:1; padding:6px; border:1px solid #ccc; border-radius:4px;\"><button type=\"button\" onclick=\"sifreSifirla('${prefix}', '${guvenliKadi}', ${k.satir}, '${girisId}')\" style=\"background:#0792ad; color:#fff; border:none; padding:6px 10px; border-radius:4px; cursor:pointer; font-size:12px; white-space:nowrap;\">G\u00fcncelle<\/button><\/div><\/td><td style=\"padding:8px; text-align:center;\">${durumButonu}<\/td><\/tr>`;\r\n        });\r\n        html += '<\/tbody><\/table><\/div>';\r\n        govde.innerHTML = html;\r\n      } else {\r\n        govde.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>';\r\n      }\r\n    }).catch(function(err) { govde.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  }\r\n\r\n  \/\/ \ud83d\uddc4\ufe0f Kullan\u0131c\u0131y\u0131 ar\u015fivler (kal\u0131c\u0131 silme de\u011fil) \u2014 giri\u015f yapamaz olur, ama\r\n  \/\/ sipari\u015f\/tahsilat\/cari ge\u00e7mi\u015fi hesaptan ba\u011f\u0131ms\u0131z oldu\u011fu i\u00e7in hi\u00e7 etkilenmez.\r\n  window.kullaniciSil = function(kullaniciAdi, prefix) {\r\n    if (!confirm('\"' + kullaniciAdi + '\" hesab\u0131n\u0131 ar\u015fivlemek istedi\u011fine emin misin?\\n\\nBu kullan\u0131c\u0131 art\u0131k giri\u015f yapamayacak. Ge\u00e7mi\u015f sipari\u015fleri\/cari hesab\u0131 etkilenmez, istersen sonra tekrar aktifle\u015ftirebilirsin.')) return;\r\n    showLoading('Ar\u015fivleniyor...');\r\n    googleAPI({ action: 'kullanici_sil', kullanici_adi: kullaniciAdi }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') { kullanicilariListele(prefix); musteriOnbelleginiTazele(); } else { alert(data.mesaj); }\r\n    }).catch(function(err) { hideLoading(); alert(err); });\r\n  };\r\n\r\n  window.kullaniciAktiflestir = function(kullaniciAdi, prefix) {\r\n    if (!confirm('\"' + kullaniciAdi + '\" hesab\u0131n\u0131 tekrar aktif etmek istedi\u011fine emin misin?')) return;\r\n    showLoading('Aktifle\u015ftiriliyor...');\r\n    googleAPI({ action: 'kullanici_aktiflestir', kullanici_adi: kullaniciAdi }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') { kullanicilariListele(prefix); musteriOnbelleginiTazele(); } else { alert(data.mesaj); }\r\n    }).catch(function(err) { hideLoading(); alert(err); });\r\n  };\r\n\r\n  \/\/ \u26a0\ufe0f Kal\u0131c\u0131 silme \u2014 geri al\u0131namaz. Sadece zaten ar\u015fivlenmi\u015f hesaplarda kullan\u0131labilir.\r\n  window.kullaniciTamamenSil = function(kullaniciAdi, prefix) {\r\n    if (!confirm('\"' + kullaniciAdi + '\" hesab\u0131n\u0131 KALICI OLARAK silmek \u00fczeresin.\\n\\nBu i\u015flem GER\u0130 ALINAMAZ. Hesap listeden tamamen kaybolacak (sipari\u015f\/cari ge\u00e7mi\u015fi etkilenmez, o veriler ayr\u0131 saklan\u0131yor).\\n\\nDevam edilsin mi?')) return;\r\n    if (!confirm('Son bir kez soruyorum: \"' + kullaniciAdi + '\" hesab\u0131n\u0131 ger\u00e7ekten kal\u0131c\u0131 olarak silmek istiyor musun?')) return;\r\n    showLoading('Kal\u0131c\u0131 olarak siliniyor...');\r\n    googleAPI({ action: 'kullanici_tamamen_sil', kullanici_adi: kullaniciAdi }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') { kullanicilariListele(prefix); musteriOnbelleginiTazele(); } else { alert(data.mesaj); }\r\n    }).catch(function(err) { hideLoading(); alert(err); });\r\n  };\r\n\r\n  \/\/ \ud83d\udd11 Bir kullan\u0131c\u0131n\u0131n \u015fifresini, eskisini bilmeye gerek kalmadan yenisiyle de\u011fi\u015ftirir.\r\n  window.sifreSifirla = function(prefix, kullaniciAdi, satir, inputId) {\r\n    var input = document.getElementById(inputId);\r\n    var yeniSifre = input.value.trim();\r\n    if (yeniSifre.length < 4) { alert('\u015eifre en az 4 karakter olmal\u0131.'); return; }\r\n    if (!confirm('\"' + kullaniciAdi + '\" kullan\u0131c\u0131s\u0131n\u0131n \u015fifresini de\u011fi\u015ftirmek istedi\u011finize emin misiniz?')) return;\r\n    showLoading(\"\u015eifre g\u00fcncelleniyor...\");\r\n    googleAPI({ action: 'sifre_sifirla', satir: satir, kullanici_adi: kullaniciAdi, yeni_sifre: yeniSifre }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') { alert('\u015eifre ba\u015far\u0131yla g\u00fcncellendi!'); input.value = ''; } else { alert(data.mesaj); }\r\n    }).catch(function(err) { hideLoading(); alert(err); });\r\n  }\r\n\r\n  window.girisKayitlariYukle = function() {\r\n    var govde = document.getElementById('girisKayitlariGovde');\r\n    govde.innerHTML = '<tr><td colspan=\"6\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr>';\r\n    googleAPI({ action: 'giris_kayitlari_cek' }).then(function(data) {\r\n      if(data.durum === 'basarili') {\r\n        var kayitlar = data.kayitlar || [];\r\n        if(kayitlar.length === 0) { govde.innerHTML = '<tr><td colspan=\"6\" style=\"padding:15px; text-align:center;\">Hen\u00fcz kay\u0131t bulunmuyor.<\/td><\/tr>'; return; }\r\n        var html = \"\";\r\n        kayitlar.forEach(function(k) {\r\n          \/\/ \"Giri\u015f\" ve \"Giri\u015f (otomatik)\" ikisi de giri\u015f say\u0131l\u0131r; \u00e7\u0131k\u0131\u015f k\u0131rm\u0131z\u0131 g\u00f6sterilir.\r\n          var girisMi = (k.islem || '').indexOf('Giri\u015f') === 0;\r\n          var islemRenk = girisMi ? '#0792ad' : '#dc3545';\r\n          var cihazMetni = (k.cihaz_tipi || k.tarayici) ? [k.cihaz_tipi, k.tarayici].filter(Boolean).join(' \/ ') : '<span style=\"color:#999;\">\u2014<\/span>';\r\n          html += `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:10px;\">${k.tarih_saat}<\/td><td style=\"padding:10px; font-weight:bold;\">${k.kullanici_adi}<\/td><td style=\"padding:10px;\">${rolGosterimAdi(k.rol)}<\/td><td style=\"padding:10px; font-weight:bold; color:${islemRenk};\">${k.islem}<\/td><td style=\"padding:10px; font-size:12px;\">${cihazMetni}<\/td><td style=\"padding:10px; font-size:12px; color:#888;\">${k.ip_adresi || '\u2014'}<\/td><\/tr>`;\r\n        });\r\n        govde.innerHTML = html;\r\n      } else {\r\n        govde.innerHTML = '<tr><td colspan=\"6\" style=\"color:red; text-align:center; padding:15px;\">' + data.mesaj + '<\/td><\/tr>';\r\n      }\r\n    }).catch(function(err) { govde.innerHTML = '<tr><td colspan=\"6\" style=\"color:red; text-align:center; padding:15px;\">Hata: ' + err + '<\/td><\/tr>'; });\r\n  }\r\n\r\n  \/\/ \ud83d\udcca Her kullan\u0131c\u0131n\u0131n son giri\u015f tarihi + son 30 g\u00fcndeki giri\u015f say\u0131s\u0131 + son kulland\u0131\u011f\u0131\r\n  \/\/ cihaz\/taray\u0131c\u0131 \u2014 \"sistem ger\u00e7ekten aktif kullan\u0131l\u0131yor mu\" sorusuna h\u0131zl\u0131 cevap.\r\n  window.kullanimOzetiYukle = function() {\r\n    var govde = document.getElementById('kullanimOzetiGovde');\r\n    govde.innerHTML = '<tr><td colspan=\"5\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr>';\r\n    googleAPI({ action: 'kullanim_ozeti_cek' }).then(function(data) {\r\n      if(data.durum === 'basarili') {\r\n        var ozet = data.ozet || [];\r\n        if(ozet.length === 0) { govde.innerHTML = '<tr><td colspan=\"5\" style=\"padding:15px; text-align:center;\">Hen\u00fcz kay\u0131t bulunmuyor.<\/td><\/tr>'; return; }\r\n        var html = \"\";\r\n        ozet.forEach(function(o) {\r\n          var girisSayisi = parseInt(o.son_30_gun_giris_sayisi, 10) || 0;\r\n          var sayiRenk = girisSayisi === 0 ? '#dc3545' : (girisSayisi < 5 ? '#b8860b' : '#28a745');\r\n          var cihazMetni = (o.son_cihaz || o.son_tarayici) ? [o.son_cihaz, o.son_tarayici].filter(Boolean).join(' \/ ') : '<span style=\"color:#999;\">\u2014<\/span>';\r\n          html += `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:10px; font-weight:bold;\">${o.kullanici_adi}<\/td><td style=\"padding:10px;\">${rolGosterimAdi(o.rol)}<\/td><td style=\"padding:10px;\">${o.son_giris || '\u2014'}<\/td><td style=\"padding:10px; text-align:center; font-weight:bold; color:${sayiRenk};\">${girisSayisi}<\/td><td style=\"padding:10px; font-size:12px;\">${cihazMetni}<\/td><\/tr>`;\r\n        });\r\n        govde.innerHTML = html;\r\n      } else {\r\n        govde.innerHTML = '<tr><td colspan=\"5\" style=\"color:red; text-align:center; padding:15px;\">' + data.mesaj + '<\/td><\/tr>';\r\n      }\r\n    }).catch(function(err) { govde.innerHTML = '<tr><td colspan=\"5\" style=\"color:red; text-align:center; padding:15px;\">Hata: ' + err + '<\/td><\/tr>'; });\r\n  }\r\n\r\n  \/\/ \ud83d\udcca Genel istatistik paneli: ciro trendi, en \u00e7ok satan \u00fcr\u00fcnler, tahsilat da\u011f\u0131l\u0131m\u0131,\r\n  \/\/ a\u00e7\u0131k bakiye \u00f6zeti, m\u00fc\u015fteri davran\u0131\u015f\u0131, kampanya\/hedef etkinli\u011fi. Hepsi tek bir backend\r\n  \/\/ \u00e7a\u011fr\u0131s\u0131yla (istatistikler_cek) geliyor, burada sadece ilgili tablolara da\u011f\u0131t\u0131l\u0131yor.\r\n  \/\/ \ud83d\udcca Basit yatay \u00e7ubuk grafik \u2014 d\u0131\u015f k\u00fct\u00fcphane yok, saf CSS. De\u011ferler en b\u00fcy\u00fc\u011fe g\u00f6re\r\n  \/\/ oranlan\u0131r; s\u0131f\u0131r\/negatif de\u011ferler \u00e7izilmez.\r\n  function cubukGrafikCiz(hedefId, veriler, renk) {\r\n    var alan = document.getElementById(hedefId);\r\n    if (!alan) return;\r\n    var gecerli = (veriler || []).filter(function(v) { return v.deger > 0; });\r\n    if (gecerli.length === 0) { alan.innerHTML = ''; return; }\r\n    var enBuyuk = Math.max.apply(null, gecerli.map(function(v) { return v.deger; }));\r\n\r\n    var html = '<div style=\"border-top:1px solid #eee; padding-top:14px;\"><div style=\"font-size:12px; color:#8a8578; margin-bottom:10px;\">En y\u00fcksek ' + gecerli.length + ' kay\u0131t<\/div>';\r\n    gecerli.forEach(function(v) {\r\n      var oran = enBuyuk > 0 ? (v.deger \/ enBuyuk * 100) : 0;\r\n      html += `<div style=\"margin-bottom:9px;\">\r\n        <div style=\"display:flex; justify-content:space-between; gap:10px; font-size:12px; margin-bottom:3px;\">\r\n          <span style=\"color:#3d3a33; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\">${v.etiket}<\/span>\r\n          <span style=\"color:${renk}; font-weight:600; white-space:nowrap;\">${sayiyiMetneCevir(v.deger)} TL<\/span>\r\n        <\/div>\r\n        <div style=\"background:#f1ede0; border-radius:3px; height:14px; overflow:hidden;\">\r\n          <div style=\"background:${renk}; width:${oran.toFixed(1)}%; height:100%; border-radius:3px;\"><\/div>\r\n        <\/div>\r\n      <\/div>`;\r\n    });\r\n    html += '<\/div>';\r\n    alan.innerHTML = html;\r\n  }\r\n\r\n  window.istatistikleriYukle = function() {\r\n    ['istCiroTrendiGovde', 'istEnCokSatanlarGovde', 'istTahsilatDagilimiGovde', 'istMusteriDurumGovde', 'istMusteriTipGovde', 'istKampanyaKirilimGovde', 'istHedefKazanimGovde', 'istAcenteDagilimGovde', 'istYatDagilimGovde', 'istUrunAcenteGovde', 'istUrunYatGovde'].forEach(function(id) {\r\n      var el = document.getElementById(id);\r\n      if (el) el.innerHTML = '<tr><td colspan=\"5\" style=\"padding:15px; text-align:center;\">Y\u00fckleniyor...<\/td><\/tr>';\r\n    });\r\n\r\n    googleAPI({ action: 'istatistikler_cek' }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alert(data.mesaj || '\u0130statistikler y\u00fcklenemedi.'); return; }\r\n\r\n      \/\/ 1) Ciro trendi\r\n      var ciroGovde = document.getElementById('istCiroTrendiGovde'); var ciroHtml = \"\";\r\n      (data.ciro_trendi || []).forEach(function(c) {\r\n        ciroHtml += `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:10px; font-weight:bold;\">${c.ay}<\/td><td style=\"padding:10px; text-align:center;\">${c.siparis_sayisi}<\/td><td style=\"padding:10px; text-align:right;\">${sayiyiMetneCevir(c.brut_ciro)} TL<\/td><td style=\"padding:10px; text-align:right; color:#dc3545;\">${sayiyiMetneCevir(c.toplam_iade)} TL<\/td><td style=\"padding:10px; text-align:right; font-weight:bold; color:#0792ad;\">${sayiyiMetneCevir(c.net_ciro)} TL<\/td><\/tr>`;\r\n      });\r\n      ciroGovde.innerHTML = ciroHtml || '<tr><td colspan=\"5\" style=\"padding:15px; text-align:center;\">Kay\u0131t yok.<\/td><\/tr>';\r\n\r\n      \/\/ 2) En \u00e7ok satan \u00fcr\u00fcnler\r\n      var urunGovde = document.getElementById('istEnCokSatanlarGovde'); var urunHtml = \"\";\r\n      (data.en_cok_satanlar || []).forEach(function(u) {\r\n        urunHtml += `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:10px; font-weight:bold;\">${u.urun} <span style=\"font-weight:normal; color:#888; font-size:12px;\">(${u.birim})<\/span><\/td><td style=\"padding:10px; font-size:12px; color:#666;\">${u.kategori}<\/td><td style=\"padding:10px; text-align:right;\">${u.adet}<\/td><td style=\"padding:10px; text-align:right; font-weight:bold; color:#0792ad;\">${sayiyiMetneCevir(u.ciro)} TL<\/td><\/tr>`;\r\n      });\r\n      urunGovde.innerHTML = urunHtml || '<tr><td colspan=\"4\" style=\"padding:15px; text-align:center;\">Kay\u0131t yok.<\/td><\/tr>';\r\n\r\n      \/\/ 3) Tahsilat da\u011f\u0131l\u0131m\u0131\r\n      var tGovde = document.getElementById('istTahsilatDagilimiGovde'); var tHtml = \"\";\r\n      (data.tahsilat_dagilimi || []).forEach(function(t) {\r\n        tHtml += `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:10px;\">${t.yontem}<\/td><td style=\"padding:10px; text-align:center;\">${t.adet}<\/td><td style=\"padding:10px; text-align:right; font-weight:bold; color:#0792ad;\">${sayiyiMetneCevir(t.toplam)} TL<\/td><\/tr>`;\r\n      });\r\n      tGovde.innerHTML = tHtml || '<tr><td colspan=\"3\" style=\"padding:15px; text-align:center;\">Kay\u0131t yok.<\/td><\/tr>';\r\n\r\n      \/\/ A\u00e7\u0131k bakiye \u00f6zeti\r\n      var ab = data.acik_bakiye_ozeti || {};\r\n      var abGovde = document.getElementById('istAcikBakiyeTablo').querySelector('tbody');\r\n      abGovde.innerHTML = `\r\n        <tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:8px;\">Toplam Sipari\u015f (net)<\/td><td style=\"padding:8px; text-align:right;\">${sayiyiMetneCevir(ab.toplam_siparis||0)} TL<\/td><\/tr>\r\n        <tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:8px;\">+ Devreden Bakiyeler<\/td><td style=\"padding:8px; text-align:right;\">${sayiyiMetneCevir(ab.toplam_devir||0)} TL<\/td><\/tr>\r\n        <tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:8px;\">\u2212 Toplam Tahsilat<\/td><td style=\"padding:8px; text-align:right; color:#28a745;\">${sayiyiMetneCevir(ab.toplam_tahsilat||0)} TL<\/td><\/tr>\r\n        <tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:8px;\">\u2212 Toplam Hediye \u00c7eki<\/td><td style=\"padding:8px; text-align:right; color:#28a745;\">${sayiyiMetneCevir(ab.toplam_hediye_ceki||0)} TL<\/td><\/tr>\r\n        <tr style=\"font-weight:bold; font-size:16px;\"><td style=\"padding:10px;\">GENEL A\u00c7IK BAK\u0130YE<\/td><td style=\"padding:10px; text-align:right; color:${(ab.acik_bakiye||0) > 0 ? '#dc3545' : '#28a745'};\">${sayiyiMetneCevir(ab.acik_bakiye||0)} TL<\/td><\/tr>`;\r\n\r\n      \/\/ 4) M\u00fc\u015fteri davran\u0131\u015f\u0131\r\n      document.getElementById('istToplamMusteri').innerText = data.toplam_musteri_sayisi ?? '\u2014';\r\n      document.getElementById('istSon30GunAktif').innerText = data.son_30_gun_aktif_musteri ?? '\u2014';\r\n\r\n      var mdGovde = document.getElementById('istMusteriDurumGovde'); var mdHtml = \"\";\r\n      (data.musteri_durum_dagilimi || []).forEach(function(d) {\r\n        mdHtml += `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:10px;\">${d.durum}<\/td><td style=\"padding:10px; text-align:center; font-weight:bold;\">${d.adet}<\/td><\/tr>`;\r\n      });\r\n      mdGovde.innerHTML = mdHtml || '<tr><td colspan=\"2\" style=\"padding:15px; text-align:center;\">Kay\u0131t yok.<\/td><\/tr>';\r\n\r\n      var mtGovde = document.getElementById('istMusteriTipGovde'); var mtHtml = \"\";\r\n      (data.musteri_tip_dagilimi || []).forEach(function(t) {\r\n        mtHtml += `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:10px;\">${t.tip}<\/td><td style=\"padding:10px; text-align:center; font-weight:bold;\">${t.adet}<\/td><\/tr>`;\r\n      });\r\n      mtGovde.innerHTML = mtHtml || '<tr><td colspan=\"2\" style=\"padding:15px; text-align:center;\">Kay\u0131t yok.<\/td><\/tr>';\r\n\r\n      \/\/ 5) Kampanya \/ Hedef\r\n      var ks = data.kampanyali_siparis_ozet || {};\r\n      document.getElementById('istKampanyaliSiparisSayisi').innerText = ks.adet || 0;\r\n      document.getElementById('istToplamIndirim').innerText = sayiyiMetneCevir(ks.toplam_indirim || 0);\r\n\r\n      var kkGovde = document.getElementById('istKampanyaKirilimGovde'); var kkHtml = \"\";\r\n      (data.kampanya_kirilimi || []).forEach(function(k) {\r\n        kkHtml += `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:8px;\">${k.kampanya_notu}<\/td><td style=\"padding:8px; text-align:center;\">${k.adet}<\/td><td style=\"padding:8px; text-align:right; font-weight:bold; color:#0792ad;\">${sayiyiMetneCevir(k.toplam)} TL<\/td><\/tr>`;\r\n      });\r\n      kkGovde.innerHTML = kkHtml || '<tr><td colspan=\"3\" style=\"padding:15px; text-align:center;\">Kay\u0131t yok.<\/td><\/tr>';\r\n\r\n      var hkGovde = document.getElementById('istHedefKazanimGovde'); var hkHtml = \"\";\r\n      (data.hedef_kazanimlari || []).forEach(function(h) {\r\n        hkHtml += `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:8px;\">${h.ad}<\/td><td style=\"padding:8px; font-size:12px; color:#666;\">${h.hedef_tipi} \/ ${h.odul_tipi}<\/td><td style=\"padding:8px; text-align:center; font-weight:bold;\">${h.kazanan_sayisi}<\/td><\/tr>`;\r\n      });\r\n      hkGovde.innerHTML = hkHtml || '<tr><td colspan=\"3\" style=\"padding:15px; text-align:center;\">Kay\u0131t yok.<\/td><\/tr>';\r\n\r\n      \/\/ \u2550\u2550\u2550 6-9) M\u00fc\u015fteri ve \u00fcr\u00fcn k\u0131r\u0131l\u0131mlar\u0131 \u2550\u2550\u2550\r\n      \/\/ 1) Acentelere g\u00f6re da\u011f\u0131l\u0131m\r\n      var acenteler = data.acente_dagilimi || [];\r\n      var acenteToplam = acenteler.reduce(function(t, a) { return t + metniSayiyaCevir(a.net_ciro); }, 0);\r\n      var adGovde = document.getElementById('istAcenteDagilimGovde'); var adHtml = \"\";\r\n      acenteler.forEach(function(a) {\r\n        var pay = acenteToplam > 0 ? (metniSayiyaCevir(a.net_ciro) \/ acenteToplam * 100) : 0;\r\n        adHtml += `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:9px; font-weight:bold;\">${a.ad}<\/td><td style=\"padding:9px; text-align:center;\">${a.siparis_sayisi}<\/td><td style=\"padding:9px; text-align:right; font-weight:bold; color:#0792ad;\">${sayiyiMetneCevir(a.net_ciro)} TL<\/td><td style=\"padding:9px; text-align:right; color:#888;\">%${pay.toFixed(1)}<\/td><\/tr>`;\r\n      });\r\n      adGovde.innerHTML = adHtml || '<tr><td colspan=\"4\" style=\"padding:15px; text-align:center;\">Kay\u0131t yok.<\/td><\/tr>';\r\n      cubukGrafikCiz('istAcenteGrafik', acenteler.slice(0, 12).map(function(a) {\r\n        return { etiket: a.ad, deger: metniSayiyaCevir(a.net_ciro) };\r\n      }), '#0792ad');\r\n\r\n      \/\/ 2) Yat\/m\u00fc\u015fteriye g\u00f6re da\u011f\u0131l\u0131m\r\n      var yatlar = data.yat_dagilimi || [];\r\n      var yatToplam = yatlar.reduce(function(t, y) { return t + metniSayiyaCevir(y.net_ciro); }, 0);\r\n      var ydGovde = document.getElementById('istYatDagilimGovde'); var ydHtml = \"\";\r\n      yatlar.forEach(function(y) {\r\n        var pay = yatToplam > 0 ? (metniSayiyaCevir(y.net_ciro) \/ yatToplam * 100) : 0;\r\n        var baglantiRenk = y.baglantili === 'M\u00fc\u015fteri' ? '#888' : '#b8860b';\r\n        ydHtml += `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:9px; font-weight:bold;\">${y.yat_adi}<\/td><td style=\"padding:9px; font-size:12px; color:${baglantiRenk};\">${y.baglantili}<\/td><td style=\"padding:9px; text-align:center;\">${y.siparis_sayisi}<\/td><td style=\"padding:9px; text-align:right; font-weight:bold; color:#0792ad;\">${sayiyiMetneCevir(y.net_ciro)} TL<\/td><td style=\"padding:9px; text-align:right; color:#888;\">%${pay.toFixed(1)}<\/td><\/tr>`;\r\n      });\r\n      ydGovde.innerHTML = ydHtml || '<tr><td colspan=\"5\" style=\"padding:15px; text-align:center;\">Kay\u0131t yok.<\/td><\/tr>';\r\n      cubukGrafikCiz('istYatGrafik', yatlar.slice(0, 12).map(function(y) {\r\n        return { etiket: y.yat_adi + ' (' + y.baglantili + ')', deger: metniSayiyaCevir(y.net_ciro) };\r\n      }), '#0792ad');\r\n\r\n      \/\/ 3) \u00dcr\u00fcn \u00d7 Acente\r\n      var urunAcente = data.urun_acente || [];\r\n      var uaGovde = document.getElementById('istUrunAcenteGovde'); var uaHtml = \"\";\r\n      urunAcente.forEach(function(u) {\r\n        uaHtml += `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:9px;\">${u.urun}<\/td><td style=\"padding:9px; font-weight:bold;\">${u.musteri}<\/td><td style=\"padding:9px; text-align:center;\">${u.adet}<\/td><td style=\"padding:9px; text-align:right; font-weight:bold; color:#0792ad;\">${sayiyiMetneCevir(u.tutar)} TL<\/td><\/tr>`;\r\n      });\r\n      uaGovde.innerHTML = uaHtml || '<tr><td colspan=\"4\" style=\"padding:15px; text-align:center;\">Kay\u0131t yok.<\/td><\/tr>';\r\n      cubukGrafikCiz('istUrunAcenteGrafik', urunAcente.slice(0, 12).map(function(u) {\r\n        return { etiket: u.urun + ' \u2192 ' + u.musteri, deger: metniSayiyaCevir(u.tutar) };\r\n      }), '#b8860b');\r\n\r\n      \/\/ 4) \u00dcr\u00fcn \u00d7 Yat\/M\u00fc\u015fteri\r\n      var urunYat = data.urun_yat || [];\r\n      var uyGovde = document.getElementById('istUrunYatGovde'); var uyHtml = \"\";\r\n      urunYat.forEach(function(u) {\r\n        var baglantiRenk = u.baglantili === 'M\u00fc\u015fteri' ? '#888' : '#b8860b';\r\n        uyHtml += `<tr style=\"border-bottom:1px solid #eee;\"><td style=\"padding:9px;\">${u.urun}<\/td><td style=\"padding:9px; font-weight:bold;\">${u.musteri}<\/td><td style=\"padding:9px; font-size:12px; color:${baglantiRenk};\">${u.baglantili}<\/td><td style=\"padding:9px; text-align:center;\">${u.adet}<\/td><td style=\"padding:9px; text-align:right; font-weight:bold; color:#0792ad;\">${sayiyiMetneCevir(u.tutar)} TL<\/td><\/tr>`;\r\n      });\r\n      uyGovde.innerHTML = uyHtml || '<tr><td colspan=\"5\" style=\"padding:15px; text-align:center;\">Kay\u0131t yok.<\/td><\/tr>';\r\n      cubukGrafikCiz('istUrunYatGrafik', urunYat.slice(0, 12).map(function(u) {\r\n        return { etiket: u.urun + ' \u2192 ' + u.musteri, deger: metniSayiyaCevir(u.tutar) };\r\n      }), '#b8860b');\r\n    }).catch(function(err) { alert('\u0130statistikler y\u00fcklenirken hata: ' + err); });\r\n  }\r\n\r\n  \/\/ \ud83e\uddfe Herhangi bir sipari\u015fin tam detay\u0131n\u0131 getirip yazd\u0131r\u0131labilir bir pencerede g\u00f6sterir.\r\n  \/\/ S\u00fcper Admin raporunda ve m\u00fc\u015fterinin \"Ge\u00e7mi\u015f Sipari\u015flerim\" listesinde ortak kullan\u0131l\u0131r.\r\n  window.siparisDetayiGoster = function(siparisId) {\r\n    showLoading(\"Sipari\u015f detay\u0131 getiriliyor...\");\r\n    googleAPI({ action: 'siparis_detay_getir', siparis_id: siparisId }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum !== 'basarili') { alert(data.mesaj); return; }\r\n      var s = data.siparis;\r\n      var kimlik = (s.rol && s.rol.toString().toLowerCase() === 'acente') ? `<p style=\"margin:2px 0 !important; line-height:1.3 !important;\"><b>Sipari\u015fi Veren:<\/b> ${s.kullanici}<\/p><p style=\"margin:2px 0 !important; line-height:1.3 !important;\"><b>Tekne Ad\u0131:<\/b> ${s.yat_adi}<\/p>` : `<p style=\"margin:2px 0 !important; line-height:1.3 !important;\"><b>Tekne Ad\u0131:<\/b> ${s.kullanici}<\/p>`;\r\n      var notHtml = (s.musteri_notu && s.musteri_notu.toString().trim() !== \"\") ? `<div style=\"margin:8px 0; padding:8px; background:#fff3cd; border-left:4px solid #ffc107;\"><b>\ud83d\udcdd Not:<\/b> ${s.musteri_notu}<\/div>` : \"\";\r\n      var yoneticiGoruyor = aktifKullanici.rol.toLowerCase() === 'admin' || aktifKullanici.rol.toLowerCase() === 'super admin';\r\n      var durumHtml = yoneticiGoruyor ? `<p style=\"margin:2px 0 !important; line-height:1.3 !important;\"><b>Durum:<\/b> ${s.durum_metni}<\/p>` : \"\";\r\n      var teslimHtml = s.teslim_tarihi\r\n        ? `<p style=\"margin:2px 0 !important; line-height:1.3 !important;\"><b>Teslimat:<\/b> <span style=\"color:#155724;\">\u2705 Teslim Edildi (${new Date(s.teslim_tarihi).toLocaleString('tr-TR')})<\/span><\/p>`\r\n        : `<p style=\"margin:2px 0 !important; line-height:1.3 !important;\"><b>Teslimat:<\/b> <span style=\"color:#856404;\">\ud83d\udfe1 Bekliyor<\/span><\/p>`;\r\n      var indirimHtml = (s.indirim_tutari && metniSayiyaCevir(s.indirim_tutari) > 0)\r\n        ? `<p style=\"margin:2px 0 !important; line-height:1.3 !important; color:#0792ad;\"><b>\ud83d\udcb8 Uygulanan \u0130ndirim:<\/b> -${sayiyiMetneCevir(s.indirim_tutari)} TL${s.kampanya_notu ? ' (' + s.kampanya_notu + ')' : ''}<\/p>`\r\n        : '';\r\n      var faturaHtml = s.fatura_no\r\n        ? `<p style=\"margin:2px 0 !important; line-height:1.3 !important;\"><b>Fatura No:<\/b> ${s.fatura_no}${s.fatura_tarihi ? ' (' + new Date(s.fatura_tarihi).toLocaleDateString('tr-TR') + ')' : ''}<\/p>`\r\n        : '';\r\n      \/\/ \ud83e\udeaa M\u00fc\u015fteri bilgi kart\u0131 \u2014 fi\u015fin alt\u0131nda. Sadece y\u00f6neticilere g\u00f6nderiliyor\r\n      \/\/ (backend m\u00fc\u015fteriye bu alan\u0131 hi\u00e7 g\u00f6ndermiyor).\r\n      var mk = s.musteri_karti;\r\n      var musteriKartiHtml = '';\r\n      if (mk) {\r\n        var satirlar = '';\r\n        if (mk.ilgili_kisi) satirlar += `<div><b>\u0130lgili Ki\u015fi:<\/b> ${mk.ilgili_kisi}<\/div>`;\r\n        if (mk.telefon) {\r\n          var telListe = telefonlariCoz(mk.telefon).filter(function(x) { return x.numara || x.kisi; });\r\n          if (telListe.length) {\r\n            satirlar += '<div><b>Telefon:<\/b><div>' + telListe.map(function(x) {\r\n              return x.numara + (x.kisi ? ' <span style=\"color:#888;\">(' + x.kisi + ')<\/span>' : '');\r\n            }).join('<br>') + '<\/div><\/div>';\r\n          }\r\n        }\r\n        if (mk.fatura_bilgileri) satirlar += `<div style=\"margin-top:4px;\"><b>Fatura Bilgileri:<\/b><div style=\"white-space:pre-line;\">${mk.fatura_bilgileri}<\/div><\/div>`;\r\n        if (mk.lokasyon_link) satirlar += `<div style=\"margin-top:4px;\"><b>Lokasyon:<\/b> <a href=\"${mk.lokasyon_link}\" target=\"_blank\" rel=\"noopener\" style=\"color:#0792ad;\">Haritada a\u00e7 \u2197<\/a><\/div>`;\r\n        if (satirlar) {\r\n          musteriKartiHtml = `<div style=\"margin-top:18px; padding:12px; background:#f7f5ef; border:1px solid #e3ddc9; border-radius:6px; font-size:12px; line-height:1.6;\">\r\n            <b style=\"display:block; margin-bottom:6px; border-bottom:1px solid #ddd; padding-bottom:5px;\">M\u00fc\u015fteri Bilgileri<\/b>${satirlar}<\/div>`;\r\n        }\r\n      }\r\n      var html = `\r\n        <div style=\"font-family:'Inter',sans-serif; font-size:14px; color:#2b2b28;\">\r\n          <div style=\"text-align:center; margin-bottom:10px;\">\r\n            <div style=\"font-family:'Playfair Display',serif; font-weight:700; font-size:22px; letter-spacing:1px;\">KRAKEN<\/div>\r\n            <div style=\"font-size:11px; color:#8a8578; letter-spacing:2px;\">S\u0130PAR\u0130\u015e F\u0130\u015e\u0130<\/div>\r\n          <\/div>\r\n          <p style=\"margin:2px 0 !important; line-height:1.3 !important;\"><b>Sipari\u015f No:<\/b> ${s.siparis_id}<\/p>\r\n          ${kimlik}\r\n          <p style=\"margin:2px 0 !important; line-height:1.3 !important;\"><b>Tarih:<\/b> ${new Date(s.tarih).toLocaleString('tr-TR')}<\/p>\r\n          <p style=\"margin:2px 0 !important; line-height:1.3 !important;\"><b>Teslimat Yeri:<\/b> ${s.gonderim_yeri}<\/p>\r\n          ${durumHtml}\r\n          ${teslimHtml}\r\n          ${faturaHtml}\r\n          ${indirimHtml}\r\n          ${notHtml}\r\n          ${detayTablosuOlustur(s.detay)}\r\n          <div style=\"text-align:right; margin-top:8px; font-size:18px; color:#0792ad;\"><b>Genel Toplam: ${sayiyiMetneCevir(s.toplam)} TL<\/b><\/div>\r\n          ${musteriKartiHtml}\r\n        <\/div>`;\r\n      document.getElementById('siparisYazdirmaAlani').innerHTML = html;\r\n      document.getElementById('siparisGoruntuleKutusu').style.display = 'flex';\r\n      document.body.style.overflow = 'hidden'; \/\/ \ud83d\udd12 arka plan kaymas\u0131n, \u00e7ift scroll olu\u015fmas\u0131n\r\n    }).catch(function(err) { hideLoading(); alert(\"Hata: \" + err); });\r\n  }\r\n\r\n  \/\/ \ud83d\udcdc M\u00fc\u015fterinin kendi ge\u00e7mi\u015f sipari\u015flerini (durum ne olursa olsun) listeler.\r\n  var hamAdminGecmisSiparisler = [];\r\n\r\n  window.adminGecmisSiparislerYukle = function() {\r\n    var alan = document.getElementById('adminGecmisSiparislerAlani');\r\n    if (!alan) return;\r\n    alan.innerHTML = 'Y\u00fckleniyor...';\r\n    showLoading('Ge\u00e7mi\u015f sipari\u015fler getiriliyor...');\r\n    googleAPI({ action: 'raporlari_cek' }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum !== 'basarili') { alan.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>'; return; }\r\n      hamAdminGecmisSiparisler = data.raporlar || [];\r\n      adminGecmisTablosunuCiz();\r\n    }).catch(function(err) { hideLoading(); alan.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  }\r\n\r\n  function adminGecmisTablosunuCiz() {\r\n    var alan = document.getElementById('adminGecmisSiparislerAlani');\r\n    if (!alan) return;\r\n    var sSiparisNo = (document.getElementById('adminGecmisFiltreSiparisNo').value || '').trim().toUpperCase();\r\n    var sBaslangic = document.getElementById('adminGecmisFiltreBaslangic').value;\r\n    var sBitis = document.getElementById('adminGecmisFiltreBitis').value;\r\n    var sTeslimat = document.getElementById('adminGecmisFiltreTeslimat').value;\r\n\r\n    var filtreliListe = hamAdminGecmisSiparisler.filter(function(r) {\r\n      if (sSiparisNo && r.siparis_id.toString().toUpperCase().indexOf(sSiparisNo) === -1) return false;\r\n      if (sTeslimat === 'edildi' && !r.teslim_tarihi) return false;\r\n      if (sTeslimat === 'bekliyor' && r.teslim_tarihi) return false;\r\n      if (sBaslangic || sBitis) {\r\n        var t = new Date(r.tarih);\r\n        if (sBaslangic && t < new Date(sBaslangic + 'T00:00:00')) return false;\r\n        if (sBitis && t > new Date(sBitis + 'T23:59:59')) return false;\r\n      }\r\n      return true;\r\n    });\r\n\r\n    if (hamAdminGecmisSiparisler.length === 0) { alan.innerHTML = 'Onaylanm\u0131\u015f sipari\u015f bulunmuyor.'; return; }\r\n    if (filtreliListe.length === 0) { alan.innerHTML = '<p style=\"color:#666; text-align:center; padding:15px;\">Filtreye uyan sipari\u015f bulunamad\u0131.<\/p>'; return; }\r\n\r\n    \/\/ En yeni en \u00fcstte\r\n    filtreliListe = filtreliListe.slice().sort(function(a, b) { return new Date(b.tarih) - new Date(a.tarih); });\r\n\r\n    var html = '<div class=\"gecmis-desktop-tablosu\"><div style=\"overflow-x:auto; -webkit-overflow-scrolling:touch;\"><table style=\"width:100%; min-width:650px; border-collapse:collapse; text-align:left; font-size:14px; white-space:nowrap;\"><thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #0792ad;\"><th style=\"padding:4px 8px;\">Sip. No<\/th><th style=\"padding:4px 8px;\">Tarih<\/th><th style=\"padding:4px 8px;\">M\u00fc\u015fteri<\/th><th style=\"padding:4px 8px;\">Yat Ad\u0131<\/th><th style=\"padding:4px 8px;\">Tip<\/th><th style=\"padding:4px 8px; text-align:right;\">Tutar<\/th><th style=\"padding:4px 8px; text-align:center;\">Teslimat<\/th><\/tr><\/thead><tbody>';\r\n    var kartHtml = '<div class=\"gecmis-mobil-kartlar\">';\r\n    filtreliListe.forEach(function(r) {\r\n      var teslimRozetHtml = teslimatRozetiOlustur(r.siparis_id, r.teslim_tarihi, r.teslim_ilk_isaretlenme_tarihi);\r\n      html += `<tr style=\"border-bottom:1px solid #eee; cursor:pointer;\" onclick=\"siparisDetayiGoster('${r.siparis_id}')\" title=\"Detaylar\u0131 g\u00f6r\u00fcnt\u00fclemek i\u00e7in t\u0131klay\u0131n\"><td style=\"padding:4px 8px; color:#0792ad; font-weight:bold;\">${r.siparis_id}<\/td><td style=\"padding:4px 8px;\">${new Date(r.tarih).toLocaleDateString()}<\/td><td style=\"padding:4px 8px;\">${r.musteri}<\/td><td style=\"padding:4px 8px; color:#555;\">${r.yat_adi || '-'}<\/td><td style=\"padding:4px 8px;\">${r.musteri_tipi || r.rol}<\/td><td style=\"padding:4px 8px; text-align:right; font-weight:bold;\">${sayiyiMetneCevir(r.toplam)} TL<\/td><td style=\"padding:4px 8px; text-align:center;\" onclick=\"event.stopPropagation();\">${teslimRozetHtml}<\/td><\/tr>`;\r\n      kartHtml += `<div class=\"gecmis-mobil-kart\" onclick=\"siparisDetayiGoster('${r.siparis_id}')\">\r\n        <div class=\"gecmis-mobil-kart-ust\"><b style=\"color:#0792ad;\">${r.siparis_id}<\/b><b>${sayiyiMetneCevir(r.toplam)} TL<\/b><\/div>\r\n        <div class=\"gecmis-mobil-kart-alt\">${new Date(r.tarih).toLocaleDateString()} \u00b7 ${r.musteri} \u00b7 ${r.yat_adi || '-'} \u00b7 ${r.musteri_tipi || r.rol}<\/div>\r\n        <div onclick=\"event.stopPropagation();\" style=\"margin-top:6px;\">${teslimRozetHtml}<\/div>\r\n      <\/div>`;\r\n    });\r\n    html += '<\/tbody><\/table><\/div><\/div>';\r\n    kartHtml += '<\/div>';\r\n    alan.innerHTML = html + kartHtml;\r\n  }\r\n\r\n  document.getElementById('adminGecmisFiltreSiparisNo').oninput = adminGecmisTablosunuCiz;\r\n  document.getElementById('adminGecmisFiltreBaslangic').onchange = adminGecmisTablosunuCiz;\r\n  document.getElementById('adminGecmisFiltreBitis').onchange = adminGecmisTablosunuCiz;\r\n  document.getElementById('adminGecmisFiltreTeslimat').onchange = adminGecmisTablosunuCiz;\r\n  document.getElementById('adminGecmisYenileBtn').addEventListener('click', function() { adminGecmisSiparislerYukle(); });\r\n\r\n  var hamGecmisSiparislerim = [];\r\n\r\n  window.gecmisSiparislerimYukle = function() {\r\n    var alan = document.getElementById('gecmisSiparislerimAlani');\r\n    var bekleyenAlan = document.getElementById('bekleyenSiparislerimAlani');\r\n    if (!alan && !bekleyenAlan) return;\r\n    if (alan) alan.innerHTML = 'Y\u00fckleniyor...';\r\n    if (bekleyenAlan) bekleyenAlan.innerHTML = 'Y\u00fckleniyor...';\r\n    googleAPI({ action: 'musteri_gecmis_siparisler' }).then(function(data) {\r\n      if (data.durum !== 'basarili') {\r\n        if (alan) alan.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>';\r\n        if (bekleyenAlan) bekleyenAlan.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>';\r\n        return;\r\n      }\r\n      hamGecmisSiparislerim = data.siparisler || [];\r\n      gecmisSiparislerimTablosunuCiz();\r\n      bekleyenSiparislerimTablosunuCiz();\r\n    }).catch(function(err) {\r\n      if (alan) alan.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>';\r\n      if (bekleyenAlan) bekleyenAlan.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>';\r\n    });\r\n  }\r\n\r\n  \/\/ \ud83d\udce6 Hen\u00fcz teslim edilmemi\u015f sipari\u015fler (onay bekleyenler DAH\u0130L). M\u00fc\u015fteri a\u00e7\u0131s\u0131ndan ikisi de\r\n  \/\/ \"hen\u00fcz elime ge\u00e7medi\" demek \u2014 sipari\u015fin sisteme ula\u015ft\u0131\u011f\u0131n\u0131 an\u0131nda g\u00f6rmesi, s\u00fcre\u00e7 boyunca\r\n  \/\/ nerede oldu\u011funu bilmesi i\u00e7in bilin\u00e7li olarak birlikte g\u00f6steriliyor.\r\n  function bekleyenSiparislerimTablosunuCiz() {\r\n    var alan = document.getElementById('bekleyenSiparislerimAlani');\r\n    if (!alan) return;\r\n    var liste = hamGecmisSiparislerim.filter(function(s) { return !s.teslim_tarihi; });\r\n\r\n    if (liste.length === 0) {\r\n      alan.innerHTML = '<p style=\"color:#155724; background:#d4edda; border:1px solid #28a745; border-radius:8px; text-align:center; padding:15px; font-weight:600;\">Devam eden sipari\u015finiz yok \u2014 hepsi teslim edilmi\u015f g\u00f6r\u00fcn\u00fcyor.<\/p>';\r\n      return;\r\n    }\r\n\r\n    var html = '<div class=\"gecmis-desktop-tablosu\"><div style=\"overflow-x:auto; -webkit-overflow-scrolling:touch;\"><table style=\"width:100%; min-width:560px; border-collapse:collapse; text-align:left; font-size:14px; white-space:nowrap;\"><thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #0792ad;\"><th style=\"padding:4px 8px;\">Sip. No<\/th><th style=\"padding:4px 8px;\">Tarih<\/th><th style=\"padding:4px 8px;\">Teslimat Yeri<\/th><th style=\"padding:4px 8px; text-align:right;\">Tutar<\/th><th style=\"padding:4px 8px; text-align:center;\">Durum<\/th><\/tr><\/thead><tbody>';\r\n    var kartHtml = '<div class=\"gecmis-mobil-kartlar\">';\r\n    liste.forEach(function(s) {\r\n      var onayliMi = (s.durum || '').indexOf('Onayland\u0131') !== -1;\r\n      var revizyonMu = (s.durum || '').indexOf('Revizyon') !== -1;\r\n      var yoldaMi = onayliMi && !!s.yola_cikti_tarihi;\r\n      var durumRozet = revizyonMu\r\n        ? '<span style=\"background:#ffe0b2; color:#7a4f00; border:1px solid #b8860b; padding:3px 9px; border-radius:12px; font-size:11px; font-weight:600; white-space:nowrap;\">\u21a9\ufe0f D\u00fczenlemeniz bekleniyor<\/span>'\r\n        : (yoldaMi\r\n          ? '<span style=\"background:#d1ecf1; color:#0c5460; border:1px solid #0792ad; padding:3px 9px; border-radius:12px; font-size:11px; font-weight:600; white-space:nowrap;\">\ud83d\ude9a Yolda<\/span>'\r\n          : (onayliMi\r\n            ? '<span style=\"background:#cce5ff; color:#004085; border:1px solid #0792ad; padding:3px 9px; border-radius:12px; font-size:11px; font-weight:600; white-space:nowrap;\">\ud83d\udce6 Haz\u0131rlan\u0131yor<\/span>'\r\n            : '<span style=\"background:#fff3cd; color:#856404; border:1px solid #ffc107; padding:3px 9px; border-radius:12px; font-size:11px; font-weight:600; white-space:nowrap;\">\ud83d\udd52 Onay bekliyor<\/span>'));\r\n      var revizyonAciklama = (revizyonMu && s.revizyon_notu)\r\n        ? `<div style=\"margin-top:6px; padding:10px 12px; background:#fdecea; border-left:3px solid #d9534f; font-size:12px; color:#7a2e2a; white-space:normal;\"><b style=\"color:#a94442;\">\ud83d\udcac Sipari\u015f Yaz\u0131\u015fmas\u0131<\/b><div style=\"margin-top:6px; line-height:1.7; white-space:pre-line;\">${s.revizyon_notu}<\/div><i style=\"display:block; margin-top:6px;\">D\u00fczenlemek i\u00e7in \"Revizyon\" sekmesine bak\u0131n.<\/i><\/div>`\r\n        : '';\r\n      html += `<tr style=\"border-bottom:1px solid #eee; cursor:pointer;\" onclick=\"siparisDetayiGoster('${s.siparis_id}')\" title=\"Detaylar\u0131 g\u00f6r\u00fcnt\u00fclemek i\u00e7in t\u0131klay\u0131n\"><td style=\"padding:4px 8px; color:#0792ad; font-weight:bold;\">${s.siparis_id}<\/td><td style=\"padding:4px 8px;\">${tarihSaat(s.tarih)}<\/td><td style=\"padding:4px 8px;\">${s.gonderim_yeri || '-'}<\/td><td style=\"padding:4px 8px; text-align:right; font-weight:bold;\">${sayiyiMetneCevir(s.toplam)} TL<\/td><td style=\"padding:4px 8px; text-align:center;\">${durumRozet}<\/td><\/tr>` + (revizyonAciklama ? `<tr><td colspan=\"5\" style=\"padding:0 8px 8px 8px;\">${revizyonAciklama}<\/td><\/tr>` : '');\r\n      kartHtml += `<div class=\"gecmis-mobil-kart\" onclick=\"siparisDetayiGoster('${s.siparis_id}')\">\r\n        <div class=\"gecmis-mobil-kart-ust\"><b style=\"color:#0792ad;\">${s.siparis_id}<\/b><b>${sayiyiMetneCevir(s.toplam)} TL<\/b><\/div>\r\n        <div class=\"gecmis-mobil-kart-alt\">${new Date(s.tarih).toLocaleDateString()} \u00b7 ${s.gonderim_yeri || '-'}<\/div>\r\n        <div style=\"margin-top:6px;\">${durumRozet}<\/div>${revizyonAciklama}\r\n      <\/div>`;\r\n    });\r\n    html += '<\/tbody><\/table><\/div><\/div>';\r\n    kartHtml += '<\/div>';\r\n    alan.innerHTML = html + kartHtml;\r\n  }\r\n\r\n  function gecmisSiparislerimTablosunuCiz() {\r\n    var alan = document.getElementById('gecmisSiparislerimAlani');\r\n    if (!alan) return;\r\n    var sSiparisNo = (document.getElementById('gecmisFiltreSiparisNo').value || '').trim().toUpperCase();\r\n    var sBaslangic = document.getElementById('gecmisFiltreBaslangic').value;\r\n    var sBitis = document.getElementById('gecmisFiltreBitis').value;\r\n\r\n    var filtreliListe = hamGecmisSiparislerim.filter(function(s) {\r\n      \/\/ \ud83d\udce6 Art\u0131k SADECE teslim edilmi\u015f sipari\u015fler burada \u2014 teslim al\u0131nmam\u0131\u015flar kendi\r\n      \/\/ sekmesinde (\"Teslim Al\u0131nmam\u0131\u015f Sipari\u015fler\") listeleniyor.\r\n      if (!s.teslim_tarihi) return false;\r\n      if (sSiparisNo && s.siparis_id.toString().toUpperCase().indexOf(sSiparisNo) === -1) return false;\r\n      if (sBaslangic || sBitis) {\r\n        var t = new Date(s.tarih);\r\n        if (sBaslangic && t < new Date(sBaslangic + 'T00:00:00')) return false;\r\n        if (sBitis && t > new Date(sBitis + 'T23:59:59')) return false;\r\n      }\r\n      return true;\r\n    });\r\n\r\n    var teslimEdilmisSayisi = hamGecmisSiparislerim.filter(function(s) { return !!s.teslim_tarihi; }).length;\r\n    if (teslimEdilmisSayisi === 0) { alan.innerHTML = 'Hen\u00fcz teslim edilmi\u015f sipari\u015finiz yok.'; return; }\r\n    if (filtreliListe.length === 0) { alan.innerHTML = '<p style=\"color:#666; text-align:center; padding:15px;\">Filtreye uyan sipari\u015f bulunamad\u0131.<\/p>'; return; }\r\n\r\n    var html = '<div class=\"gecmis-desktop-tablosu\"><div style=\"overflow-x:auto; -webkit-overflow-scrolling:touch;\"><table style=\"width:100%; min-width:560px; border-collapse:collapse; text-align:left; font-size:14px; white-space:nowrap;\"><thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #0792ad;\"><th style=\"padding:4px 8px;\">Sip. No<\/th><th style=\"padding:4px 8px;\">Tarih<\/th><th style=\"padding:4px 8px;\">Teslimat Yeri<\/th><th style=\"padding:4px 8px; text-align:right;\">Tutar<\/th><th style=\"padding:4px 8px; text-align:center;\">Teslimat<\/th><th style=\"padding:4px 8px;\">Fatura No<\/th><th style=\"padding:4px 8px; text-align:center;\">\u0130ade<\/th><\/tr><\/thead><tbody>';\r\n    var kartHtml = '<div class=\"gecmis-mobil-kartlar\">';\r\n    filtreliListe.forEach(function(s) {\r\n      var teslimGosterim = s.teslim_tarihi\r\n        ? `<span style=\"background:#d4edda; color:#155724; border:1px solid #28a745; padding:3px 9px; border-radius:12px; font-size:11px; font-weight:600; white-space:nowrap;\">\u2705 ${tarihSaat(s.teslim_tarihi)}<\/span>`\r\n        : `<span style=\"background:#fff3cd; color:#856404; border:1px solid #ffc107; padding:3px 9px; border-radius:12px; font-size:11px; font-weight:600; white-space:nowrap;\">\ud83d\udfe1 Bekliyor<\/span>`;\r\n      \/\/ \u21a9\ufe0f \u0130ade talebi yaln\u0131zca TESL\u0130M ED\u0130LM\u0130\u015e sipari\u015fler i\u00e7in a\u00e7\u0131labilir. Halihaz\u0131rda\r\n      \/\/ bekleyen bir talep ya da onaylanm\u0131\u015f bir iade varsa buton yerine durum etiketi \u00e7\u0131kar.\r\n      var iadeBtn;\r\n      if (!s.teslim_tarihi) {\r\n        iadeBtn = '<span style=\"color:#bbb; font-size:12px;\">\u2014<\/span>';\r\n      } else if (s.iade_durumu === 'Talep') {\r\n        iadeBtn = '<span style=\"background:#fff3cd; color:#856404; border:1px solid #ffc107; padding:3px 9px; border-radius:12px; font-size:11px; font-weight:600; white-space:nowrap;\">\ud83d\udd52 \u0130ade s\u00fcrecinde<\/span>';\r\n      } else if (s.iade_durumu === 'Onaylandi') {\r\n        iadeBtn = '<span style=\"background:#e2e3e5; color:#41464b; border:1px solid #adb5bd; padding:3px 9px; border-radius:12px; font-size:11px; font-weight:600; white-space:nowrap;\">\u21a9\ufe0f \u0130ade edildi<\/span>';\r\n      } else {\r\n        iadeBtn = `<button type=\"button\" onclick=\"event.stopPropagation(); musteriIadeTalebiAc('${s.siparis_id}')\" style=\"background:#b8860b; color:#fff; border:none; padding:5px 12px; border-radius:4px; cursor:pointer; font-size:12px; font-weight:600; white-space:nowrap;\">\u0130ade Talebi<\/button>`;\r\n      }\r\n      html += `<tr style=\"border-bottom:1px solid #eee; cursor:pointer;\" onclick=\"siparisDetayiGoster('${s.siparis_id}')\" title=\"Detaylar\u0131 g\u00f6r\u00fcnt\u00fclemek i\u00e7in t\u0131klay\u0131n\"><td style=\"padding:4px 8px; color:#0792ad; font-weight:bold;\">${s.siparis_id}<\/td><td style=\"padding:4px 8px;\">${tarihSaat(s.tarih)}<\/td><td style=\"padding:4px 8px;\">${s.gonderim_yeri}<\/td><td style=\"padding:4px 8px; text-align:right; font-weight:bold;\">${sayiyiMetneCevir(s.toplam)} TL<\/td><td style=\"padding:4px 8px; text-align:center;\">${teslimGosterim}<\/td><td style=\"padding:4px 8px; font-size:12px;\">${s.fatura_no ? '<b>' + s.fatura_no + '<\/b>' + (s.fatura_tarihi ? '<br><span style=\"color:#888; font-size:11px;\">' + new Date(s.fatura_tarihi).toLocaleDateString('tr-TR') + '<\/span>' : '') : '<span style=\"color:#bbb;\">\u2014<\/span>'}<\/td><td style=\"padding:4px 8px; text-align:center;\">${iadeBtn}<\/td><\/tr>`;\r\n      kartHtml += `<div class=\"gecmis-mobil-kart\" onclick=\"siparisDetayiGoster('${s.siparis_id}')\">\r\n        <div class=\"gecmis-mobil-kart-ust\"><b style=\"color:#0792ad;\">${s.siparis_id}<\/b><b>${sayiyiMetneCevir(s.toplam)} TL<\/b><\/div>\r\n        <div class=\"gecmis-mobil-kart-alt\">${new Date(s.tarih).toLocaleDateString()} \u00b7 ${s.gonderim_yeri}${s.fatura_no ? ' \u00b7 Fatura: <b>' + s.fatura_no + '<\/b>' : ''}<\/div>\r\n        <div style=\"margin-top:6px; display:flex; justify-content:space-between; align-items:center; gap:8px;\">${teslimGosterim}${iadeBtn}<\/div>\r\n      <\/div>`;\r\n    });\r\n    html += '<\/tbody><\/table><\/div><\/div>';\r\n    kartHtml += '<\/div>';\r\n    alan.innerHTML = html + kartHtml;\r\n  }\r\n\r\n  document.getElementById('gecmisFiltreSiparisNo').oninput = gecmisSiparislerimTablosunuCiz;\r\n  document.getElementById('gecmisFiltreBaslangic').onchange = gecmisSiparislerimTablosunuCiz;\r\n  document.getElementById('gecmisFiltreBitis').onchange = gecmisSiparislerimTablosunuCiz;\r\n  document.getElementById('gecmisSiparislerYenileBtn').addEventListener('click', function() { gecmisSiparislerimYukle(); });\r\n\r\n  \/\/ \ud83d\udda8\ufe0f Yazd\u0131rmadan \u00f6nce, modal\u0131n DI\u015eINDAK\u0130 HER \u015eEY\u0130 (sayfan\u0131n geri kalan\u0131, WordPress\r\n  \/\/ header\/footer vs.) ger\u00e7ekten kald\u0131r\u0131yoruz (display:none \u2014 alan da kaplamaz).\r\n  \/\/ Eski y\u00f6ntemde bunlar sadece \"g\u00f6r\u00fcnmez\" yap\u0131l\u0131yordu ama h\u00e2l\u00e2 yer kapl\u0131yorlard\u0131,\r\n  \/\/ bu da yazd\u0131r\u0131rken gereksiz bo\u015f bir 2. sayfa a\u00e7\u0131lmas\u0131na sebep oluyordu.\r\n  function digerIcerigiGizle(hedefElement) {\r\n    var gizlenenler = [];\r\n    var el = hedefElement;\r\n    while (el && el !== document.body && el.parentElement) {\r\n      var ebeveyn = el.parentElement;\r\n      Array.prototype.forEach.call(ebeveyn.children, function(kardes) {\r\n        if (kardes !== el && kardes.style.display !== 'none') {\r\n          gizlenenler.push({ el: kardes, eskiDisplay: kardes.style.display });\r\n          kardes.style.display = 'none';\r\n        }\r\n      });\r\n      el = ebeveyn;\r\n    }\r\n    return gizlenenler;\r\n  }\r\n\r\n  window.siparisYazdir = function() {\r\n    var kutu = document.getElementById('siparisGoruntuleKutusu');\r\n    var gizlenenler = digerIcerigiGizle(kutu);\r\n    var oncekiOverflow = document.body.style.overflow;\r\n    document.body.style.overflow = '';\r\n\r\n    var eskiHaleDondur = function() {\r\n      gizlenenler.forEach(function(g) { g.el.style.display = g.eskiDisplay; });\r\n      document.body.style.overflow = oncekiOverflow;\r\n      window.removeEventListener('focus', eskiHaleDondurGecikmeli);\r\n    };\r\n    var eskiHaleDondurGecikmeli = function() { setTimeout(eskiHaleDondur, 300); };\r\n    if (window.matchMedia) {\r\n      var medyaSorgusu = window.matchMedia('print');\r\n      var dinleyici = function(mql) { if (!mql.matches) { eskiHaleDondur(); medyaSorgusu.removeListener && medyaSorgusu.removeListener(dinleyici); } };\r\n      medyaSorgusu.addListener && medyaSorgusu.addListener(dinleyici);\r\n    }\r\n    window.onafterprint = eskiHaleDondur;\r\n    window.addEventListener('focus', eskiHaleDondurGecikmeli); \/\/ mobilde yazd\u0131rma sayfas\u0131 kapan\u0131nca sekme oda\u011fa d\u00f6ner\r\n    window.print();\r\n  };\r\n\r\n  function detayTablosuOlustur(detayMetni) {\r\n    var satirlar = detayMetni.split('\\n'); \r\n    var html = '<div class=\"siparis-detay-tablo-sarmalayici\"><table><thead><tr><th>Kategori<\/th><th>\u00dcr\u00fcn Ad\u0131<\/th><th>Birim<\/th><th>Br. Fiyat<\/th><th>KDV(%)<\/th><th>Adet<\/th><th style=\"text-align:right;\">Tutar<\/th><\/tr><\/thead><tbody>';\r\n    \r\n    for(var i=0; i<satirlar.length; i++) {\r\n      var str = satirlar[i].trim();\r\n      if(str.length > 0) {\r\n         if(str.indexOf(' | ') !== -1) { \r\n           var p = str.split(' | '); \r\n           html += '<tr><td>'+(p[0]||'-')+'<\/td><td><b>'+(p[1]||'-')+'<\/b><\/td><td>'+(p[2]||'-')+'<\/td><td>'+sayiyiMetneCevir(p[3])+' TL<\/td><td>%'+(p[4]||'0')+'<\/td><td>'+(p[5]||'0')+'<\/td><td style=\"text-align:right;\">'+sayiyiMetneCevir(p[6])+' TL<\/td><\/tr>';\r\n         } else { \r\n           var m = str.split(' x ')[0] || \"\"; var g = str.split(' x ')[1] || str; var u = g, t = \"\"; \r\n           if(g.lastIndexOf('(') !== -1) { var par = g.lastIndexOf('('); u = g.substring(0, par).trim(); t = g.substring(par + 1).replace(')', '').trim(); } \r\n           html += '<tr><td>-<\/td><td><b>'+u+'<\/b><\/td><td>-<\/td><td>-<\/td><td>-<\/td><td>'+m+'<\/td><td style=\"text-align:right;\">'+sayiyiMetneCevir(t)+' TL<\/td><\/tr>'; \r\n         }\r\n      }\r\n    } \r\n    html += '<\/tbody><\/table><\/div>'; \r\n    return html;\r\n  }\r\n\r\n  \/\/ \ud83d\uddc2\ufe0f Taslaklar ikiye ayr\u0131l\u0131r: normal taslaklar \"Taslaklar\u0131m\", admin taraf\u0131ndan geri\r\n  \/\/ g\u00f6nderilenler (kaynak_siparis_id dolu olanlar) ise \"Revizyon\" sekmesinde listelenir.\r\n  function taslaklariListele(taslaklar) {\r\n    var hepsi = taslaklar || [];\r\n    var revizyonlar = hepsi.filter(function(t) { return !!t.kaynak_siparis_id; });\r\n    var normaller = hepsi.filter(function(t) { return !t.kaynak_siparis_id; });\r\n\r\n    var isAcente = (aktifKullanici.rol.toLowerCase() === 'acente');\r\n\r\n    function tabloCiz(liste, revizyonMu) {\r\n      var html = '<table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\"><thead><tr style=\"background:' + (revizyonMu ? '#fdecea' : '#f3f0e6') + ';\">'\r\n        + (revizyonMu ? '<th style=\"padding:10px;\">Sipari\u015f No<\/th>' : '')\r\n        + '<th style=\"padding:10px;\">Taslak No<\/th><th style=\"padding:10px;\">Tarih<\/th>'\r\n        + (isAcente ? '<th style=\"padding:10px;\">Yat Ad\u0131<\/th>' : '')\r\n        + '<th style=\"padding:10px;\">Teslimat Yeri<\/th><th style=\"padding:10px; text-align:right;\">Tutar<\/th><\/tr><\/thead><tbody>';\r\n      liste.forEach(function(t) {\r\n        html += `<tr style=\"border-bottom:1px solid #eee; cursor:pointer; ${revizyonMu ? 'background:#fffafa;' : ''}\" onclick='taslakSec(\"${t.taslak_id}\")'>`\r\n          + (revizyonMu ? `<td style=\"padding:10px; font-weight:bold; color:#a94442;\">${t.kaynak_siparis_id}<\/td>` : '')\r\n          + `<td style=\"padding:10px; font-weight:bold;\">${t.taslak_id}<\/td><td style=\"padding:10px;\">${tarihSaat(t.tarih)}<\/td>`\r\n          + (isAcente ? `<td style=\"padding:10px;\">${t.yat_adi||'-'}<\/td>` : '')\r\n          + `<td style=\"padding:10px;\">${t.teslimat_yeri}<\/td><td style=\"padding:10px; text-align:right; font-weight:bold; color:#0792ad;\">${sayiyiMetneCevir(t.toplam)} TL<\/td><\/tr>`;\r\n      });\r\n      return html + '<\/tbody><\/table>';\r\n    }\r\n\r\n    var alan = document.getElementById('taslaklarListesiAlani');\r\n    if (alan) alan.innerHTML = normaller.length === 0\r\n      ? \"<p style='color:#666;'>Kay\u0131tl\u0131 taslak sipari\u015finiz bulunmuyor.<\/p>\"\r\n      : tabloCiz(normaller, false);\r\n\r\n    var rAlan = document.getElementById('revizyonListesiAlani');\r\n    if (rAlan) rAlan.innerHTML = revizyonlar.length === 0\r\n      ? \"<p style='color:#155724; background:#d4edda; border:1px solid #28a745; border-radius:8px; padding:15px; text-align:center; font-weight:600;'>Revizyon bekleyen sipari\u015finiz yok.<\/p>\"\r\n      : tabloCiz(revizyonlar, true);\r\n\r\n    \/\/ \ud83d\udd34 Revizyon varsa sekme k\u0131rm\u0131z\u0131ya d\u00f6ner ve adet rozeti \u00e7\u0131kar.\r\n    var btn = document.getElementById('musteriRevizyonSekmeBtn');\r\n    var rozet = document.getElementById('revizyonSayacRozet');\r\n    if (btn && rozet) {\r\n      if (revizyonlar.length > 0) {\r\n        rozet.innerText = revizyonlar.length;\r\n        rozet.style.display = 'inline-block';\r\n        btn.style.color = '#a94442';\r\n        btn.style.fontWeight = '700';\r\n      } else {\r\n        rozet.style.display = 'none';\r\n        btn.style.color = '';\r\n        btn.style.fontWeight = '';\r\n      }\r\n    }\r\n  }\r\n\r\n  \/\/ \ud83d\udcac M\u00fc\u015fteri, revizyon s\u00fcrecindeki sipari\u015fin yaz\u0131\u015fmas\u0131na mesaj ekler.\r\n  window.yazismaMesajGonder = function(btn, siparisId) {\r\n    var kutu = document.getElementById('yazismaMesajKutusu');\r\n    var mesaj = (kutu.value || '').trim();\r\n    if (mesaj === '') { alert('L\u00fctfen bir mesaj yaz\u0131n.'); return; }\r\n    btn.disabled = true; btn.innerText = 'G\u00f6nderiliyor...';\r\n    googleAPI({ action: 'revizyon_mesaj_ekle', siparis_id: siparisId, mesaj: mesaj }).then(function(data) {\r\n      btn.disabled = false; btn.innerText = 'Mesaj Ekle';\r\n      if (data.durum === 'basarili') {\r\n        document.getElementById('yazismaAkisi').innerText = data.yazisma;\r\n        kutu.value = '';\r\n        \/\/ Yerel kopyay\u0131 da tazele ki taslak tekrar a\u00e7\u0131ld\u0131\u011f\u0131nda g\u00fcncel g\u00f6r\u00fcns\u00fcn.\r\n        var t = globalData.taslaklar.find(function(x) { return x.kaynak_siparis_id === siparisId; });\r\n        if (t) t.revizyon_notu = data.yazisma;\r\n      } else { alert('Hata: ' + data.mesaj); }\r\n    }).catch(function(err) { btn.disabled = false; btn.innerText = 'Mesaj Ekle'; alert(err); });\r\n  };\r\n\r\n  window.taslakSec = function(taslakID) {\r\n    var taslak = globalData.taslaklar.find(function(t) { return t.taslak_id === taslakID; }); \r\n    if(!taslak) return; \r\n    aktifTaslakID = taslak.taslak_id; \r\n    var revizyonMu = !!taslak.kaynak_siparis_id;\r\n    document.getElementById('taslakBaslik').innerText = revizyonMu\r\n      ? \"Revizyon: \" + taslak.kaynak_siparis_id + \" (\" + taslak.teslimat_yeri + \")\"\r\n      : \"Taslak Detay\u0131: \" + taslak.taslak_id + \" (\" + taslak.teslimat_yeri + \")\";\r\n    document.getElementById('taslakBaslik').style.color = revizyonMu ? '#a94442' : '#0792ad';\r\n    \/\/ \u21a9\ufe0f Revizyon tasla\u011f\u0131ysa, geri g\u00f6nderme sebepleri kendi ba\u015fl\u0131kl\u0131 k\u0131rm\u0131z\u0131 alan\u0131nda g\u00f6sterilir.\r\n    \/\/ \ud83d\udcac Revizyon s\u00fcrecinde iki tarafl\u0131 yaz\u0131\u015fma: admin'in gerek\u00e7esi ve m\u00fc\u015fterinin cevaplar\u0131\r\n    \/\/ ayn\u0131 kronolojik ak\u0131\u015fta, her giri\u015f tarih\/saat ve yazan ki\u015fiyle damgal\u0131.\r\n    var revHtml = revizyonMu\r\n      ? `<div style=\"margin-bottom:12px; padding:12px; background:#fdecea; border-left:4px solid #d9534f; font-size:13px;\">\r\n           <b style=\"color:#a94442;\">\ud83d\udcac Sipari\u015f Yaz\u0131\u015fmas\u0131<\/b>\r\n           <div id=\"yazismaAkisi\" style=\"margin-top:8px; line-height:1.8; white-space:pre-line;\">${taslak.revizyon_notu || 'Hen\u00fcz mesaj yok.'}<\/div>\r\n           <div style=\"margin-top:10px; font-size:12px; color:#8a6d6b; font-style:italic;\">Not ekleme, \"\u00dcr\u00fcnleri D\u00fczenle\" ile d\u00fczenleme yaparken kaydet\/g\u00f6nder an\u0131nda sorulur.<\/div>\r\n         <\/div>`\r\n      : \"\";\r\n    \/\/ \ud83d\udcdd \u0130lk sipari\u015f notu g\u00f6nderildikten sonra DE\u011e\u0130\u015eT\u0130R\u0130LEMEZ \u2014 tarihsel kay\u0131t olarak durur.\r\n    \/\/ Sonradan s\u00f6ylenecekler yukar\u0131daki yaz\u0131\u015fma alan\u0131na yaz\u0131l\u0131r.\r\n    var notHtml = taslak.not ? `<div style=\"margin-top:10px; padding:10px; background:#fff3cd; border-left:4px solid #ffc107; font-size:13px;\"><b>\ud83d\udcdd Sipari\u015f Notunuz:<\/b> ${taslak.not}${revizyonMu ? '<div style=\"font-size:11px; color:#8a7a00; margin-top:5px;\">Bu not sipari\u015f an\u0131nda yaz\u0131ld\u0131, de\u011fi\u015ftirilemez.<\/div>' : ''}<\/div>` : \"\";\r\n    document.getElementById('taslakOzetiIcerik').innerHTML = revHtml + detayTablosuOlustur(taslak.detay) + notHtml + `<div style=\"text-align:right; margin-top:15px; font-size:18px; color:#0792ad;\"><b>Genel Toplam: ${sayiyiMetneCevir(taslak.toplam)} TL<\/b><\/div>`; \r\n    \/\/ \ud83d\udd00 Detay kutusu Taslaklar\u0131m sekmesinin i\u00e7inde tan\u0131ml\u0131; revizyon sat\u0131r\u0131na t\u0131kland\u0131\u011f\u0131nda\r\n    \/\/ o sekme kapal\u0131 oldu\u011fu i\u00e7in g\u00f6r\u00fcnm\u00fcyordu. Kutuyu aktif sekmenin i\u00e7ine ta\u015f\u0131yoruz.\r\n    var kutu = document.getElementById('taslakDetayKutusu');\r\n    var hedefSekme = document.getElementById(revizyonMu ? 'musteriRevizyonTab' : 'musteriTaslaklarTab');\r\n    if (hedefSekme && kutu.parentElement !== hedefSekme) hedefSekme.appendChild(kutu);\r\n    kutu.style.borderColor = revizyonMu ? '#d9534f' : '#0792ad';\r\n    \/\/ \ud83c\udff7\ufe0f Buton etiketleri revizyonda netle\u015fsin \u2014 \"taslak\" kelimesi kafa kar\u0131\u015ft\u0131r\u0131yordu.\r\n    var kaydetBtn = document.getElementById('taslakSilBtn');\r\n    var urunBtn = document.getElementById('taslakUrunEkleBtn');\r\n    var gonderBtn = document.getElementById('taslakGonderBtn');\r\n    if (urunBtn) urunBtn.innerText = revizyonMu ? '\u00dcr\u00fcnleri D\u00fczenle' : '\u00dcr\u00fcn Ekle \/ D\u00fczenle';\r\n    if (gonderBtn) gonderBtn.innerText = revizyonMu ? 'Revizyonu G\u00f6nder' : 'Sipari\u015fi G\u00f6nder';\r\n    if (kaydetBtn) kaydetBtn.innerText = revizyonMu ? 'Revizyonu \u0130ptal Et' : 'Listeyi Sil';\r\n    kutu.style.display = 'block';\r\n    kutu.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\r\n  }\r\n\r\n  document.getElementById('secilenYat').addEventListener('change', function() { basligiGuncelle(); }); \r\n  document.getElementById('sYeriDepo').addEventListener('change', function() { basligiGuncelle(); }); \r\n  document.getElementById('sYeriTekne').addEventListener('change', function() { basligiGuncelle(); });\r\n\r\n  \/\/ \ud83d\udea4 \"Tekne Ekle\" butonuna daha \u00f6nce hi\u00e7 i\u015flev atanmam\u0131\u015ft\u0131 \u2014 eksik olan tam olarak buydu.\r\n  document.getElementById('yeniTekneEkleBtn').addEventListener('click', function() {\r\n    var girdi = document.getElementById('yeniTekneAdi');\r\n    var yeniTekneAdi = girdi.value.trim();\r\n    if (!yeniTekneAdi) { alert(\"L\u00fctfen bir tekne ad\u0131 girin.\"); return; }\r\n    showLoading(\"Tekne ekleniyor...\");\r\n    googleAPI({ action: 'yat_ekle', kadi: aktifKullanici.kullanici_adi, yeni_yat: yeniTekneAdi }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === \"basarili\") {\r\n        if (!globalData.yatlar) globalData.yatlar = [];\r\n        globalData.yatlar.push(yeniTekneAdi);\r\n        yatListesiniGuncelle(globalData.yatlar);\r\n        document.getElementById('secilenYat').value = yeniTekneAdi;\r\n        basligiGuncelle();\r\n        girdi.value = \"\";\r\n        alert(\"Tekne ba\u015far\u0131yla eklendi!\");\r\n      } else {\r\n        alert(data.mesaj);\r\n      }\r\n    }).catch(function(err) { hideLoading(); alert(\"Hata: \" + err); });\r\n  });\r\n  \r\n  function yatListesiniGuncelle(yatlar) { \r\n    var sel = document.getElementById('secilenYat'); var eskiSecim = sel.value; \r\n    sel.innerHTML = '<option value=\"\">Se\u00e7iminizi yap\u0131n<\/option><option value=\"DEPO ALIMI\">Depo Al\u0131m\u0131<\/option>'; \r\n    (yatlar||[]).forEach(function(y) { if (y !== \"DEPO ALIMI\" && y !== \"Merkez Depo\") sel.innerHTML += `<option value=\"${y}\">${y}<\/option>`; }); \r\n    if(eskiSecim) sel.value = eskiSecim; \r\n  }\r\n\r\n  \/\/ \ud83d\uddc2\ufe0f M\u00fc\u015fteri panelindeki 3 sekme aras\u0131nda ge\u00e7i\u015f yapar (Yeni Sipari\u015f \/ Taslaklar\u0131m \/ Ge\u00e7mi\u015f Sipari\u015flerim).\r\n  window.musteriTabAc = function(tabId, btnElement) {\r\n    document.querySelectorAll('.musteri-tab').forEach(function(t) { t.style.display = 'none'; });\r\n    document.querySelectorAll('#musteriTabButonlari .tab-btn').forEach(function(b) { b.classList.remove('active'); });\r\n    document.getElementById(tabId).style.display = 'block';\r\n    if (btnElement) btnElement.classList.add('active');\r\n    \/\/ Taslak\/revizyon detay kutusu iki sekme aras\u0131nda ta\u015f\u0131nd\u0131\u011f\u0131 i\u00e7in, sekme de\u011fi\u015fince\r\n    \/\/ kapat\u0131yoruz \u2014 yoksa yanl\u0131\u015f sekmede a\u00e7\u0131k kalm\u0131\u015f gibi g\u00f6r\u00fcnebiliyor.\r\n    if (tabId !== 'musteriTaslaklarTab' && tabId !== 'musteriRevizyonTab') {\r\n      var dk = document.getElementById('taslakDetayKutusu');\r\n      if (dk) dk.style.display = 'none';\r\n    }\r\n  }\r\n\r\n  \/\/ \ud83c\udfdd\ufe0f\/\ud83c\udfd9\ufe0f Kara i\u015fletmeleri (Cafe\/Restoran\/Otel) i\u00e7in \"Teslimat Yeri\" (Depo\/Tekne) alan\u0131\r\n  \/\/ anlams\u0131z \u2014 sadece Deniz m\u00fc\u015fterileri (Acente\/Yat) i\u00e7in g\u00f6sterilir. Kara i\u015fletmelerinin\r\n  \/\/ \u015fubesi oldu\u011funda gerekirse ge\u00e7ici olarak teslimat notuna yazd\u0131r\u0131l\u0131r (bkz. A\u00e7\u0131k Kararlar).\r\n  function isKaraIsletmesi() {\r\n    return ['Cafe', 'Restoran', 'Otel'].indexOf(aktifKullanici.isletme_tipi) !== -1;\r\n  }\r\n\r\n  \/\/ Sadece \"Yeni Sipari\u015f\" sekmesini o anki verilerle \u00e7izer\/haz\u0131rlar (se\u00e7imleri SIFIRLAMAZ).\r\n  \/\/ \ud83d\udd01 Revizyon d\u00fczenleme modu: sipari\u015f formu, d\u00fczenlenmekte olan revizyonun sipari\u015f\r\n  \/\/ numaras\u0131n\u0131 tutar. null ise normal (yeni sipari\u015f \/ normal taslak) modundad\u0131r.\r\n  var aktifRevizyonSiparisId = null;\r\n\r\n  \/\/ Sipari\u015f formunu revizyon moduna sokar\/\u00e7\u0131kar\u0131r: yaz\u0131\u015fma panelini ve buton etiketlerini ayarlar.\r\n  function revizyonModunuUygula(aktif, yazisma) {\r\n    var panel = document.getElementById('formYazismaAlani');\r\n    var akis = document.getElementById('formYazismaAkisi');\r\n    var kaydetBtn = document.getElementById('taslakKaydetBtn');\r\n    var gonderBtn = document.getElementById('siparisGonderBtn');\r\n    if (panel) panel.style.display = aktif ? 'block' : 'none';\r\n    if (akis) akis.innerText = yazisma || 'Hen\u00fcz mesaj yok.';\r\n    if (kaydetBtn) kaydetBtn.innerText = aktif ? 'Revizyonu Kaydet' : 'Taslak Olarak Kaydet';\r\n    if (gonderBtn) gonderBtn.innerText = aktif ? 'Revizyonu G\u00f6nder' : 'Sipari\u015fi G\u00f6nder';\r\n  }\r\n\r\n  \/\/ \ud83d\udcac \u0130\u015flem ANINDA not sorar \u2014 b\u00f6ylece \"sonra yazar\u0131m\" deyip unutulmas\u0131 m\u00fcmk\u00fcn de\u011fil.\r\n  \/\/ S\u00f6z verilen davran\u0131\u015f: Evet \u2192 not yaz\u0131l\u0131r ve i\u015flem devam eder; Hay\u0131r \u2192 \"M\u00fc\u015fteri notu\r\n  \/\/ eklenmedi\" kayd\u0131 d\u00fc\u015f\u00fcl\u00fcr ve i\u015flem yine devam eder.\r\n  function revizyonNotuSor(devamEt) {\r\n    if (!aktifRevizyonSiparisId) { devamEt(); return; }\r\n    var eklensinMi = confirm('Bu revizyona bir not eklemek ister misiniz?\\n\\nNot, sipari\u015fin yaz\u0131\u015fma kayd\u0131na tarih\/saat damgas\u0131yla i\u015flenir ve sonradan \"neden yap\u0131lm\u0131\u015ft\u0131?\" sorusuna yaz\u0131l\u0131 kan\u0131t olu\u015fturur.\\n\\nTamam = Not ekle \u00b7 \u0130ptal = Not ekleme');\r\n    var mesaj = '';\r\n    if (eklensinMi) {\r\n      mesaj = prompt('Revizyon notunuz:\\n\\n(\u00d6rn: \"500 GR olarak 2 adet yapt\u0131m\", \"F\u0131st\u0131\u011f\u0131 \u00e7\u0131kard\u0131m\")');\r\n      if (mesaj === null) return; \/\/ vazge\u00e7ti \u2014 i\u015flemi de iptal et\r\n      mesaj = mesaj.trim();\r\n      if (mesaj === '') { alert('Bo\u015f not kaydedilemez. \u0130\u015flem iptal edildi.'); return; }\r\n    } else {\r\n      mesaj = 'M\u00fc\u015fteri notu eklenmedi.';\r\n    }\r\n    googleAPI({ action: 'revizyon_mesaj_ekle', siparis_id: aktifRevizyonSiparisId, mesaj: mesaj }).then(function(data) {\r\n      if (data.durum === 'basarili') {\r\n        var akis = document.getElementById('formYazismaAkisi');\r\n        if (akis) akis.innerText = data.yazisma;\r\n        devamEt();\r\n      } else { alert('Not kaydedilemedi: ' + data.mesaj); }\r\n    }).catch(function(err) { alert(err); });\r\n  }\r\n\r\n  function yeniSiparisSekmesineGec() {\r\n    \/\/ Not alan\u0131 bir \u00f6nceki revizyon d\u00fczenlemesinden kilitli kalm\u0131\u015f olabilir \u2014 s\u0131f\u0131rla.\r\n    var nAlan = document.getElementById('siparisNotu');\r\n    if (nAlan) { nAlan.readOnly = false; nAlan.style.background = ''; nAlan.title = ''; }\r\n    var ilkTabBtn = document.querySelector('#musteriTabButonlari .tab-btn');\r\n    musteriTabAc('musteriYeniSiparisTab', ilkTabBtn);\r\n    if(aktifKullanici.rol.toLowerCase() === 'acente') { document.getElementById('acenteGonderimAlani').style.display = 'block'; yatListesiniGuncelle(globalData.yatlar); } \r\n    if (isKaraIsletmesi()) {\r\n      document.getElementById('siparisYeriAlani').style.display = 'none';\r\n      document.getElementById('siparisNotuIpucu').innerText = '\u00d6rn: \"Yar\u0131n teslim ama bu ak\u015fama kadar laz\u0131m\" gibi \u00f6zel bir durum, ya da bir \u015fubeniz varsa hangi \u015fubeye gidece\u011fi buraya yaz\u0131labilir.';\r\n    } else {\r\n      document.getElementById('siparisYeriAlani').style.display = 'block';\r\n    }\r\n    filtreleriDoldur(); tablosuCiz(); basligiGuncelle(); \r\n  }\r\n\r\n  \/\/ Giri\u015fte \/ panele d\u00f6n\u00fc\u015fte: se\u00e7imleri s\u0131f\u0131rlay\u0131p \"Yeni Sipari\u015f\" sekmesini ba\u015ftan haz\u0131rlar.\r\n  \/\/ B\u00f6ylece m\u00fc\u015fteri giri\u015f yapar yapmaz direkt sipari\u015f verebilecek durumda olur.\r\n  function yeniSiparisHazirla() {\r\n    aktifTaslakID = null; secilenUrunler = {}; \r\n    var rad = document.querySelector('input[name=\"siparisYeriRadyo\"]:checked'); if(rad) rad.checked = false; \r\n    document.getElementById('siparisNotu').value = \"\";\r\n    if(aktifKullanici.rol.toLowerCase() === 'acente') document.getElementById('secilenYat').value = \"\"; \r\n    yeniSiparisSekmesineGec();\r\n  }\r\n\r\n  document.getElementById('taslakUrunEkleBtn').addEventListener('click', function() { \r\n    var taslak = globalData.taslaklar.find(function(t) { return t.taslak_id === aktifTaslakID; }); \r\n    secilenUrunler = {};\r\n    if (taslak) { \r\n      var satirlar = taslak.detay.split('\\n'); \r\n      for(var i=0; i<satirlar.length; i++) { \r\n        var s = satirlar[i].trim(); \r\n        if(s.length > 0 && s.indexOf(' | ') !== -1) { \r\n          var p = s.split(' | '); \r\n          var fIdx = urunSatiriniBul(globalData.urunler, p[0], p[1], p[2]); \r\n          if(fIdx !== -1 && parseInt(p[5]) > 0) secilenUrunler[fIdx] = parseInt(p[5]); \r\n        } \r\n      } \r\n    }\r\n    yeniSiparisSekmesineGec(); \r\n    var notAlani = document.getElementById('siparisNotu');\r\n    notAlani.value = (taslak && taslak.not) ? taslak.not : \"\";\r\n    \/\/ \ud83d\udcdd Revizyonda ilk sipari\u015f notu K\u0130L\u0130TL\u0130 (tarihsel kay\u0131t). Yeni s\u00f6ylenecekler, i\u015flem\r\n    \/\/ an\u0131nda sorulan \"Sipari\u015f Yaz\u0131\u015fmas\u0131\" ak\u0131\u015f\u0131na eklenir.\r\n    var revizyonMuDuzenleme = !!(taslak && taslak.kaynak_siparis_id);\r\n    aktifRevizyonSiparisId = revizyonMuDuzenleme ? taslak.kaynak_siparis_id : null;\r\n    notAlani.readOnly = revizyonMuDuzenleme;\r\n    notAlani.style.background = revizyonMuDuzenleme ? '#f5f3ee' : '';\r\n    notAlani.title = revizyonMuDuzenleme ? 'Sipari\u015f notu de\u011fi\u015ftirilemez \u2014 a\u00e7\u0131klamalar\u0131n\u0131z yaz\u0131\u015fmaya eklenir.' : '';\r\n    var ipucu = document.getElementById('siparisNotuIpucu');\r\n    if (ipucu && revizyonMuDuzenleme) ipucu.innerText = 'Bu not sipari\u015f an\u0131nda yaz\u0131ld\u0131 ve de\u011fi\u015ftirilemez.';\r\n    revizyonModunuUygula(revizyonMuDuzenleme, taslak ? taslak.revizyon_notu : '');\r\n    if(taslak && aktifKullanici.rol.toLowerCase() === 'acente') { \r\n      var sel = document.getElementById('secilenYat'); \r\n      if(!Array.from(sel.options).some(function(o) { return o.value === taslak.yat_adi; }) && taslak.yat_adi) { sel.innerHTML += `<option value=\"${taslak.yat_adi}\">${taslak.yat_adi}<\/option>`; } \r\n      sel.value = taslak.yat_adi || \"\"; \r\n      if(taslak.teslimat_yeri === \"Depo\") document.getElementById('sYeriDepo').checked = true; \r\n      else if(taslak.teslimat_yeri === \"Tekne\") document.getElementById('sYeriTekne').checked = true; \r\n      basligiGuncelle(); \r\n    }\r\n  });\r\n  \r\n  document.getElementById('taslakSilBtn').addEventListener('click', function() { \r\n    if(!confirm(\"Emin misiniz?\")) return; \r\n    showLoading(\"Taslak siliniyor...\"); \r\n    googleAPI({ action: 'taslak_sil', taslak_id: aktifTaslakID }).then(function(data) { hideLoading(); if(data.durum === \"basarili\") { aktifTaslakID = null; oturumGuncelle(\"Silindi.\"); } else { alert(data.mesaj); } }).catch(function(err) { hideLoading(); alert(err); }); \r\n  });\r\n\r\n  document.getElementById('taslakGonderBtn').addEventListener('click', function() {\r\n    var taslak = globalData.taslaklar.find(function(t) { return t.taslak_id === aktifTaslakID; }); \r\n    if(!taslak) return; \r\n    if(!confirm(\"G\u00f6nderiliyor. Emin misiniz?\")) return;\r\n    \r\n    var kdvsizTop = 0, kdvTop = 0; var satirlar = taslak.detay.split('\\n'); \r\n    for(var i=0; i<satirlar.length; i++) { \r\n      var s = satirlar[i].trim(); \r\n      if(s.length > 0 && s.indexOf(' | ') !== -1) { \r\n        var p = s.split(' | '); var adet = parseInt(p[5]); var brFiyat = metniSayiyaCevir(p[3]) || 0; var kdvO = metniSayiyaCevir(p[4]) || 0; \r\n        var satirKdvsiz = adet * brFiyat; var satirKdv = satirKdvsiz * (kdvO \/ 100); kdvsizTop += satirKdvsiz; kdvTop += satirKdv; \r\n      } \r\n    }\r\n    \r\n    showLoading(\"Sipari\u015f iletiliyor...\");\r\n    googleAPI({ action: 'siparis_gonder', taslak_id: taslak.taslak_id, kadi: aktifKullanici.kullanici_adi, gercek_isim: aktifKullanici.gercek_isim, rol: aktifKullanici.rol, yat_adi: taslak.yat_adi || aktifKullanici.gercek_isim, gonderim_yeri: taslak.teslimat_yeri, detay: taslak.detay, toplam: taslak.toplam, kdvsiz: sayiyiMetneCevir(kdvsizTop), kdv: sayiyiMetneCevir(kdvTop), not: taslak.not || \"\" }).then(function(data) { hideLoading(); if(data.durum === \"basarili\") { aktifTaslakID = null; oturumGuncelle(\"Sipari\u015f g\u00f6nderildi! No: \" + data.siparisID); } else { alert(data.mesaj); } }).catch(function(err) { hideLoading(); alert(err); });\r\n  });\r\n\r\n  function basligiGuncelle() { \r\n    var hedefAdi = \"Hen\u00fcz Se\u00e7ilmedi\"; \r\n    if(aktifKullanici.rol.toLowerCase() === 'acente') { var yat = document.getElementById('secilenYat').value; if (yat) { hedefAdi = yat; } } \r\n    else { hedefAdi = aktifKullanici.gercek_isim; } \r\n    document.getElementById('urunListesiBaslik').innerText = hedefAdi + \" i\u00e7in verilen sipari\u015f\"; \r\n  }\r\n\r\n  var musteriAramaZamanlayici = null;\r\n  function musteriAramaBagla() {\r\n    var kutu = document.getElementById('musteriUrunArama');\r\n    if (!kutu || kutu.dataset.bagli === '1') return;\r\n    kutu.dataset.bagli = '1';\r\n    \/\/ \u26a1 Yazarken her tu\u015fta tabloyu ba\u015ftan \u00e7izmek pahal\u0131 \u2014 200 ms bekleyip tek seferde \u00e7iz.\r\n    kutu.addEventListener('input', function() {\r\n      clearTimeout(musteriAramaZamanlayici);\r\n      musteriAramaZamanlayici = setTimeout(tablosuCiz, 200);\r\n    });\r\n    \/\/ Enter'a bas\u0131nca sayfa\/form davran\u0131\u015f\u0131 tetiklenmesin.\r\n    kutu.addEventListener('keydown', function(e) { if (e.key === 'Enter') e.preventDefault(); });\r\n  }\r\n\r\n  function filtreleriDoldur() {\r\n    musteriAramaBagla();\r\n    var katSet = new Set(), altKatSet = new Set(); \r\n    (globalData.urunler||[]).forEach(function(u) { katSet.add(u.kategori); altKatSet.add(u.alt_kategori); });\r\n    \r\n    var katSel = document.getElementById('filtreKategori'); katSel.innerHTML = '<option value=\"\">T\u00fcm Kategoriler<\/option>'; \r\n    katSet.forEach(function(k) { katSel.innerHTML += `<option value=\"${k}\">${k}<\/option>`; });\r\n    \r\n    var altKatSel = document.getElementById('filtreAltKategori'); altKatSel.innerHTML = '<option value=\"\">T\u00fcm Alt Kategoriler<\/option>'; \r\n    altKatSet.forEach(function(ak) { altKatSel.innerHTML += `<option value=\"${ak}\">${ak}<\/option>`; });\r\n    \r\n    katSel.onchange = function(e) { e.preventDefault(); var guncelAltKatSet = new Set(); (globalData.urunler||[]).forEach(function(u) { if (!katSel.value || u.kategori === katSel.value) guncelAltKatSet.add(u.alt_kategori); }); altKatSel.innerHTML = '<option value=\"\">T\u00fcm Alt Kategoriler<\/option>'; guncelAltKatSet.forEach(function(ak) { altKatSel.innerHTML += `<option value=\"${ak}\">${ak}<\/option>`; }); tablosuCiz(); }; \r\n    altKatSel.onchange = function(e) { e.preventDefault(); tablosuCiz(); };\r\n  }\r\n\r\n  \/\/ \ud83d\udd0d T\u00fcrk\u00e7e karakterleri normalle\u015ftirerek arama \u2014 \"kekik\" yaz\u0131nca \"KEK\u0130K\"i,\r\n  \/\/ \"cig\" yaz\u0131nca \"\u00c7\u0130\u011e\"i de bulsun.\r\n  function aramaNormalize(metin) {\r\n    return (metin || '').toString()\r\n      .replace(\/\u0130\/g, 'i').replace(\/I\/g, 'i').replace(\/\u0131\/g, 'i')\r\n      .replace(\/\u015e\/g, 's').replace(\/\u015f\/g, 's')\r\n      .replace(\/\u011e\/g, 'g').replace(\/\u011f\/g, 'g')\r\n      .replace(\/\u00dc\/g, 'u').replace(\/\u00fc\/g, 'u')\r\n      .replace(\/\u00d6\/g, 'o').replace(\/\u00f6\/g, 'o')\r\n      .replace(\/\u00c7\/g, 'c').replace(\/\u00e7\/g, 'c')\r\n      .toLowerCase().trim();\r\n  }\r\n\r\n  window.musteriAramaSifirla = function() {\r\n    var kutu = document.getElementById('musteriUrunArama');\r\n    if (kutu) { kutu.value = ''; kutu.focus(); }\r\n    tablosuCiz();\r\n  };\r\n\r\n  function tablosuCiz() {\r\n    var secilenKat = document.getElementById('filtreKategori').value; \r\n    var secilenAltKat = document.getElementById('filtreAltKategori').value; \r\n    var aramaKutusu = document.getElementById('musteriUrunArama');\r\n    var aramaMetni = aramaKutusu ? aramaNormalize(aramaKutusu.value) : '';\r\n    \/\/ Arama kelimelere b\u00f6l\u00fcn\u00fcr: \"kav badem\" hem \"kav\" hem \"badem\" ge\u00e7enleri bulur.\r\n    var aramaKelimeleri = aramaMetni === '' ? [] : aramaMetni.split(\/\\s+\/);\r\n    var temizleBtn = document.getElementById('musteriAramaTemizle');\r\n    if (temizleBtn) temizleBtn.style.display = aramaMetni === '' ? 'none' : 'block';\r\n\r\n    var govde = document.getElementById('urunlerGovde'); \r\n    var tabloHTML = \"\";\r\n    var bulunanSayisi = 0;\r\n    \r\n    (globalData.urunler||[]).forEach(function(u, index) {\r\n      if(secilenKat && u.kategori !== secilenKat) return; \r\n      if(secilenAltKat && u.alt_kategori !== secilenAltKat) return;\r\n      if (aramaKelimeleri.length > 0) {\r\n        var aranabilir = aramaNormalize(u.urun_adi + ' ' + u.kategori + ' ' + u.alt_kategori + ' ' + u.birim);\r\n        var hepsiVar = aramaKelimeleri.every(function(kelime) { return aranabilir.indexOf(kelime) !== -1; });\r\n        if (!hepsiVar) return;\r\n      }\r\n      bulunanSayisi++;\r\n      var kaydedilenAdet = secilenUrunler[index] || 0; \r\n      \r\n      tabloHTML += `<tr style=\"border-bottom:1px solid #eee;\" data-index=\"${index}\">\r\n        <td class=\"desktop-only\" style=\"padding:10px;\"><b>${u.kategori}<\/b><\/td>\r\n        <td class=\"desktop-only\" style=\"padding:10px;\">${u.urun_adi}<\/td>\r\n        <td class=\"desktop-only\" style=\"padding:10px;\">${u.birim}<\/td>\r\n        <td class=\"mobile-only\" style=\"padding:10px;\"><b>${u.urun_adi}<\/b><br><span style=\"font-size:11px;color:#666;\">Birim: ${u.birim}<\/span><\/td>\r\n        <td style=\"padding:10px;\">${sayiyiMetneCevir(u.birim_fiyat)} TL<\/td>\r\n        <td style=\"padding:10px;\">%${temizSayi(u.kdv)}<\/td>\r\n        <td style=\"padding:10px;\"><input type=\"number\" min=\"0\" value=\"${kaydedilenAdet}\" class=\"adet-input\" style=\"width:60px; padding:5px; box-sizing:border-box;\" onfocus=\"if(this.value==='0') this.value='';\" onblur=\"if(this.value==='') this.value='0'; adetDegisti(this, ${index});\" oninput=\"adetDegisti(this, ${index})\"><\/td>\r\n        <td style=\"padding:10px; text-align:right;\" class=\"satir-tutar\">0,00 TL<\/td>\r\n      <\/tr>`;\r\n    }); \r\n    if (bulunanSayisi === 0) {\r\n      tabloHTML = `<tr><td colspan=\"7\" style=\"padding:25px; text-align:center; color:#8a8578;\">\r\n        ${aramaMetni ? 'Araman\u0131zla e\u015fle\u015fen \u00fcr\u00fcn bulunamad\u0131: <b>' + (aramaKutusu ? aramaKutusu.value : '') + '<\/b><br><span style=\"font-size:12px;\">Farkl\u0131 bir kelime deneyin ya da kategori filtresini s\u0131f\u0131rlay\u0131n.<\/span>' : 'Bu filtreye uyan \u00fcr\u00fcn bulunmuyor.'}\r\n      <\/td><\/tr>`;\r\n    }\r\n    govde.innerHTML = tabloHTML; hesapla();\r\n  }\r\n\r\n  window.adetDegisti = function(input, index) { \r\n    var adet = parseInt(input.value) || 0; \r\n    if(adet > 0) secilenUrunler[index] = adet; else delete secilenUrunler[index]; \r\n    hesapla(); \r\n  }\r\n\r\n  function hesapla() {\r\n    \/\/ G\u00f6r\u00fcn\u00fcr sat\u0131rlar\u0131n kendi sat\u0131r toplamlar\u0131n\u0131 g\u00fcncelle\r\n    document.querySelectorAll('#urunlerGovde tr').forEach(function(s) {\r\n      var idx = s.getAttribute('data-index'); var u = globalData.urunler[idx]; var adet = secilenUrunler[idx] || 0; \r\n      var birimFiyat = metniSayiyaCevir(u.birim_fiyat); var kdvOrani = metniSayiyaCevir(u.kdv);\r\n      var satirKdvsiz = adet * birimFiyat; var satirKdv = satirKdvsiz * (kdvOrani \/ 100); var satirToplam = satirKdvsiz + satirKdv;\r\n      var hucre = s.querySelector('.satir-tutar'); if (hucre) hucre.innerText = sayiyiMetneCevir(satirToplam) + \" TL\";\r\n    });\r\n    \/\/ Genel toplam\u0131 T\u00dcM se\u00e7ili \u00fcr\u00fcnlerden hesapla (o an ekranda g\u00f6r\u00fcnmeseler bile \u2014\r\n    \/\/ \u00f6rn. \"S\u0131k Ald\u0131klar\u0131m\" sekmesinden eklenen ama \u015fu an filtre d\u0131\u015f\u0131nda kalan \u00fcr\u00fcnler dahil)\r\n    var kdvsizToplam = 0, kdvToplam = 0;\r\n    for (var idx in secilenUrunler) {\r\n      var adet = secilenUrunler[idx]; if (!adet) continue;\r\n      var u = globalData.urunler[idx]; if (!u) continue;\r\n      var birimFiyat = metniSayiyaCevir(u.birim_fiyat); var kdvOrani = metniSayiyaCevir(u.kdv);\r\n      var satirKdvsiz = adet * birimFiyat; var satirKdv = satirKdvsiz * (kdvOrani \/ 100);\r\n      kdvsizToplam += satirKdvsiz; kdvToplam += satirKdv;\r\n    }\r\n    document.getElementById('toplam Kdvsiz').innerText = sayiyiMetneCevir(kdvsizToplam); \r\n    document.getElementById('toplam Kdv').innerText = sayiyiMetneCevir(kdvToplam); \r\n\r\n    \/\/ \ud83d\udcb8 Sipari\u015f geneli indirim + performans indirimi \u2014 backend'in giri\u015f s\u0131ras\u0131nda\r\n    \/\/ hesaplad\u0131\u011f\u0131, bu m\u00fc\u015fteriye uygun tek indirim (ikisi \u00e7ak\u0131\u015f\u0131rsa zaten backend\r\n    \/\/ hangisinin kalaca\u011f\u0131n\u0131 belirlemi\u015fti, burada sadece g\u00f6steriyoruz).\r\n    var kdvDahilToplam = kdvsizToplam + kdvToplam;\r\n    var toplamIndirim = 0;\r\n    window._aktifIndirimBilgisi = { siparis: null, performans: null };\r\n\r\n    var sIndirim = globalData.siparis_indirimi;\r\n    var sIndirimSatiri = document.getElementById('siparisIndirimSatiri');\r\n    if (sIndirim) {\r\n      var sTutar = sIndirim.tip === 'yuzde' ? kdvDahilToplam * sIndirim.deger \/ 100 : Math.min(sIndirim.deger, kdvDahilToplam);\r\n      document.getElementById('siparisIndirimAdi').innerText = sIndirim.ad;\r\n      document.getElementById('siparisIndirimTutari').innerText = sayiyiMetneCevir(sTutar);\r\n      sIndirimSatiri.style.display = 'block';\r\n      toplamIndirim += sTutar;\r\n      window._aktifIndirimBilgisi.siparis = { ad: sIndirim.ad, tutar: sTutar };\r\n    } else { sIndirimSatiri.style.display = 'none'; }\r\n\r\n    var pIndirim = globalData.performans_indirimi;\r\n    var pIndirimSatiri = document.getElementById('performansIndirimSatiri');\r\n    if (pIndirim) {\r\n      var pTutar = kdvDahilToplam * pIndirim.yuzde \/ 100;\r\n      document.getElementById('performansIndirimAdi').innerText = pIndirim.ad;\r\n      document.getElementById('performansIndirimTutari').innerText = sayiyiMetneCevir(pTutar);\r\n      pIndirimSatiri.style.display = 'block';\r\n      toplamIndirim += pTutar;\r\n      window._aktifIndirimBilgisi.performans = { ad: pIndirim.ad, tutar: pTutar };\r\n    } else { pIndirimSatiri.style.display = 'none'; }\r\n\r\n    document.getElementById('genelToplam').innerText = sayiyiMetneCevir(kdvDahilToplam - toplamIndirim);\r\n  }\r\n\r\n  function sipari\u015fiPaketle() {\r\n    var siparisYeriRadyo = document.querySelector('input[name=\"siparisYeriRadyo\"]:checked'); var gonderimYeri = siparisYeriRadyo ? siparisYeriRadyo.value : \"\"; var yatAdi = \"\";\r\n    if (isKaraIsletmesi()) {\r\n      \/\/ Kara i\u015fletmelerinde (Cafe\/Restoran\/Otel) teslimat yeri kavram\u0131 yok \u2014 \u015fube a\u00e7\u0131l\u0131rsa\r\n      \/\/ ge\u00e7ici olarak \"not\" alan\u0131na yaz\u0131l\u0131yor (bkz. A\u00e7\u0131k Kararlar).\r\n      yatAdi = aktifKullanici.gercek_isim; gonderimYeri = \"\";\r\n    } else if (aktifKullanici.rol.toLowerCase() === 'acente') { \r\n      yatAdi = document.getElementById('secilenYat').value; \r\n      if (!yatAdi && !gonderimYeri) { alert(\"Se\u00e7imlerinizi yap\u0131n!\"); return null; } \r\n      if (!yatAdi) { alert(\"Kim i\u00e7in oldu\u011funu se\u00e7in!\"); return null; } \r\n      if (!gonderimYeri) { alert(\"Teslimat yeri se\u00e7in!\"); return null; }\r\n    } else { \r\n      yatAdi = aktifKullanici.gercek_isim; if (!gonderimYeri) { alert(\"Teslimat yeri se\u00e7in!\"); return null; } \r\n    }\r\n    \r\n    var detay = \"\"; var gercekGenelToplam = 0;\r\n    for(var idx in secilenUrunler) {\r\n      var adet = secilenUrunler[idx];\r\n      if(adet > 0) {\r\n        var u = globalData.urunler[idx]; var birimFiyat = metniSayiyaCevir(u.birim_fiyat); var kdvOrani = metniSayiyaCevir(u.kdv); \r\n        var satirToplam = (adet * birimFiyat) * (1 + kdvOrani \/ 100); gercekGenelToplam += satirToplam;\r\n        detay += veriTemizle(u.kategori) + \" | \" + veriTemizle(u.urun_adi) + \" | \" + veriTemizle(u.birim) + \" | \" + sayiyiMetneCevir(birimFiyat) + \" | \" + kdvOrani + \" | \" + adet + \" | \" + sayiyiMetneCevir(satirToplam) + \"\\n\";\r\n      }\r\n    } \r\n    if(!detay) { alert(\"En az bir \u00fcr\u00fcn se\u00e7melisiniz!\"); return null; }\r\n    var not = document.getElementById('siparisNotu').value || \"\";\r\n\r\n    \/\/ \ud83d\udcb8 \u0130ndirimleri, ekranda g\u00f6sterilen (hesapla() taraf\u0131ndan hesaplanm\u0131\u015f) rakamlardan aynen al \u2014\r\n    \/\/ m\u00fc\u015fteriye g\u00f6sterilenle sisteme kaydedilen HER ZAMAN ayn\u0131 olsun diye.\r\n    hesapla(); \/\/ en g\u00fcncel indirim bilgisiyle senkron kalmak i\u00e7in son bir kez tazele\r\n    var indirimToplami = 0; var kampanyaNotParcalari = [];\r\n    if (window._aktifIndirimBilgisi) {\r\n      if (window._aktifIndirimBilgisi.siparis) { indirimToplami += window._aktifIndirimBilgisi.siparis.tutar; kampanyaNotParcalari.push(window._aktifIndirimBilgisi.siparis.ad); }\r\n      if (window._aktifIndirimBilgisi.performans) { indirimToplami += window._aktifIndirimBilgisi.performans.tutar; kampanyaNotParcalari.push(window._aktifIndirimBilgisi.performans.ad); }\r\n    }\r\n    var netGenelToplam = gercekGenelToplam - indirimToplami;\r\n\r\n    return {\r\n      yat_adi: yatAdi, gonderim_yeri: gonderimYeri, detay: detay, toplam: sayiyiMetneCevir(netGenelToplam),\r\n      kdvsiz: document.getElementById('toplam Kdvsiz').innerText, kdv: document.getElementById('toplam Kdv').innerText, not: not,\r\n      indirim_tutari: sayiyiMetneCevir(indirimToplami), kampanya_notu: kampanyaNotParcalari.join(' + '),\r\n    };\r\n  }\r\n\r\n  document.getElementById('taslakKaydetBtn').addEventListener('click', function() {\r\n    var paket = sipari\u015fiPaketle(); if(!paket) return; \r\n    \/\/ Revizyon modundaysa \u00f6nce not sorulur, sonra kaydedilir (bkz. revizyonNotuSor).\r\n    revizyonNotuSor(function() {\r\n      showLoading(aktifRevizyonSiparisId ? \"Revizyon kaydediliyor...\" : \"Taslak kaydediliyor...\");\r\n      googleAPI({ action: 'taslak_kaydet', taslak_id: aktifTaslakID, kadi: aktifKullanici.kullanici_adi, gercek_isim: aktifKullanici.gercek_isim, yat_adi: paket.yat_adi, teslimat_yeri: paket.gonderim_yeri, detay: paket.detay, toplam: paket.toplam, not: paket.not }).then(function(data) { hideLoading(); if(data.durum === \"basarili\") { aktifTaslakID = data.taslak_id; oturumGuncelle(aktifRevizyonSiparisId ? \"Revizyon kaydedildi. Haz\u0131r oldu\u011funuzda g\u00f6nderebilirsiniz.\" : \"Taslak ba\u015far\u0131yla kaydedildi!\"); } else { alert(data.mesaj); } }).catch(function(err) { hideLoading(); alert(err); });\r\n    });\r\n  });\r\n\r\n  document.getElementById('siparisGonderBtn').addEventListener('click', function() {\r\n    var paket = sipari\u015fiPaketle(); if(!paket) return; \r\n    if(!confirm(aktifRevizyonSiparisId ? \"Revize edilmi\u015f sipari\u015finiz yeniden onaya g\u00f6nderiliyor. Emin misiniz?\" : \"Sipari\u015finiz g\u00f6nderiliyor. Emin misiniz?\")) return; \r\n    revizyonNotuSor(function() {\r\n      showLoading(\"Sipari\u015finiz merkeze iletiliyor...\");\r\n      googleAPI({ action: 'siparis_gonder', taslak_id: aktifTaslakID, kadi: aktifKullanici.kullanici_adi, gercek_isim: aktifKullanici.gercek_isim, rol: aktifKullanici.rol, yat_adi: paket.yat_adi, gonderim_yeri: paket.gonderim_yeri, detay: paket.detay, toplam: paket.toplam, kdvsiz: paket.kdvsiz, kdv: paket.kdv, not: paket.not, indirim_tutari: paket.indirim_tutari, kampanya_notu: paket.kampanya_notu }).then(function(data) { hideLoading(); if(data.durum === \"basarili\") { aktifTaslakID = null; aktifRevizyonSiparisId = null; revizyonModunuUygula(false, ''); oturumGuncelle(\"Sipari\u015f g\u00f6nderildi! No: \" + data.siparisID); } else { alert(data.mesaj); } }).catch(function(err) { hideLoading(); alert(err); });\r\n    });\r\n  });\r\n\r\n  var globalBekleyenSiparisler = [];\r\n  function adminSiparisleriYukle() {\r\n    showLoading(\"Bekleyen sipari\u015fler y\u00fckleniyor...\");\r\n    var liste = document.getElementById('bekleyenSiparislerListesi'); liste.innerHTML = \"Veriler kontrol ediliyor...\";\r\n    googleAPI({ action: 'admin_siparisleri_cek' }).then(function(data) {\r\n      hideLoading(); \r\n      if(data.durum === \"hata\") { liste.innerHTML = \"<span style='color:red; font-weight:bold;'>\" + data.mesaj + \"<\/span>\"; return; }\r\n      globalBekleyenSiparisler = data.siparisler || []; \r\n      if(globalBekleyenSiparisler.length === 0) { liste.innerHTML = \"Onay bekleyen sipari\u015f yok.\"; return; }\r\n      var html = '<table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\"><thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th>Sip. No<\/th><th>Sip. Tarihi<\/th><th>Teslimat Yeri<\/th><th style=\"text-align:right;\">Sipari\u015f Tutar\u0131<\/th><th style=\"text-align:center;\">Durum \/ \u0130\u015flem<\/th><\/tr><\/thead><tbody>';\r\n      globalBekleyenSiparisler.forEach(function(s) { \r\n        var notIsareti = (s.musteri_notu && s.musteri_notu.trim() !== \"\") ? ' <span title=\"M\u00fc\u015fteri notu var\" style=\"background:#ffc107; color:#333; font-size:11px; padding:2px 6px; border-radius:10px; font-weight:bold;\">\ud83d\udcdd Not<\/span>' : '';\r\n        \/\/ \u21a9\ufe0f Revizyondaki sipari\u015flerde top M\u00dc\u015eTER\u0130DE \u2014 onay butonu g\u00f6sterilmez, bekleme\r\n        \/\/ s\u00fcresiyle birlikte uyar\u0131 rozeti g\u00f6sterilir ki takipsiz kalmas\u0131n.\r\n        var revizyondaMi = (s.durum || '') === 'Revizyon Bekliyor';\r\n        var gunFark = Math.floor((Date.now() - new Date(s.tarih).getTime()) \/ 86400000);\r\n        var islemHucresi = revizyondaMi\r\n          ? `<span title=\"${(s.revizyon_notu || '').replace(\/\"\/g, '&quot;')}\" style=\"background:#ffe0b2; color:#7a4f00; border:1px solid #b8860b; padding:4px 10px; border-radius:12px; font-size:12px; font-weight:600; white-space:nowrap;\">\u21a9\ufe0f M\u00fc\u015fteride${gunFark > 0 ? ' \u00b7 ' + gunFark + ' g\u00fcn' : ''}<\/span>`\r\n          : `<button type=\"button\" onclick=\"event.stopPropagation(); adminSiparisSec(${s.satir});\" title=\"Sipari\u015fin i\u00e7eri\u011fini g\u00f6r\u00fcnt\u00fcleyip onaylay\u0131n\" style=\"background:#f1ede0; color:#5a564a; border:1px solid #d8d2c0; padding:6px 12px; border-radius:4px; cursor:pointer; font-weight:600;\">\u0130ncele &rsaquo;<\/button>`;\r\n        html += `<tr style=\"border-bottom:1px solid #eee; cursor:pointer; ${revizyondaMi ? 'background:#fffaf0;' : ''}\" onclick='adminSiparisSec(${s.satir})'><td style=\"padding:10px; color:#0792ad; font-weight:bold;\">${s.siparis_id}${notIsareti}<\/td><td style=\"padding:10px;\">${tarihSaat(s.tarih)}<\/td><td style=\"padding:10px;\">${s.gonderim_yeri}<\/td><td style=\"padding:10px; text-align:right; font-weight:bold; color:#0792ad;\">${sayiyiMetneCevir(s.toplam)} TL<\/td><td style=\"padding:10px; text-align:center;\">${islemHucresi}<\/td><\/tr>`; \r\n      });\r\n      html += '<\/tbody><\/table>'; liste.innerHTML = html;\r\n    }).catch(function(err) { hideLoading(); liste.innerHTML = \"Ba\u011flant\u0131 Hatas\u0131: \" + err; });\r\n  }\r\n\r\n  window.adminSiparisSec = function(satir) {\r\n    var s = globalBekleyenSiparisler.find(function(x) { return x.satir === satir; }); if(!s) return;\r\n    var kimlikBilgisi = (s.rol.toLowerCase() === 'acente') ? `<b>Sipari\u015fi Veren:<\/b> ${s.kullanici}<br><b>Tekne Ad\u0131:<\/b> ${s.yat_adi}<br>` : `<b>Tekne Ad\u0131:<\/b> ${s.kullanici}<br>`;\r\n    var ustBilgi = `<div style=\"font-family:sans-serif; margin-bottom:10px;\"><b>Sipari\u015f No:<\/b> ${s.siparis_id}<br><b>Sipari\u015f Zaman\u0131:<\/b> ${tarihSaat(s.tarih)}<br>${kimlikBilgisi}<b>Teslimat Yeri:<\/b> ${s.gonderim_yeri}<\/div>`;\r\n    var notHtml = (s.musteri_notu && s.musteri_notu.trim() !== \"\") ? `<div style=\"margin-bottom:15px; padding:12px; background:#fff3cd; border-left:4px solid #ffc107; font-family:sans-serif;\"><b>\ud83d\udcdd M\u00fc\u015fteri Notu:<\/b> ${s.musteri_notu}<\/div>` : \"\";\r\n    \/\/ \u21a9\ufe0f Revizyon notlar\u0131 m\u00fc\u015fteri notundan AYRI, kendi ba\u015fl\u0131kl\u0131 alan\u0131nda; her giri\u015f ayr\u0131 sat\u0131rda\r\n    \/\/ ve tarih\/saat damgas\u0131yla (backend biriktiriyor). Sadece revizyon notu varsa g\u00f6r\u00fcn\u00fcr.\r\n    var revizyonHtml = (s.revizyon_notu && s.revizyon_notu.trim() !== \"\")\r\n      ? `<div style=\"margin-bottom:15px; padding:12px; background:#fdecea; border-left:4px solid #d9534f; font-family:sans-serif;\"><b style=\"color:#a94442;\">\ud83d\udcac Sipari\u015f Yaz\u0131\u015fmas\u0131<\/b><div style=\"margin-top:8px; font-size:13px; line-height:1.7; white-space:pre-line;\">${s.revizyon_notu}<\/div>${(s.durum || '') === 'Revizyon Bekliyor' ? '<i style=\"font-size:12px; color:#a94442; display:block; margin-top:8px;\">M\u00fc\u015fterinin d\u00fczenleyip yeniden g\u00f6ndermesi bekleniyor. Onaylanamaz.<\/i>' : ''}<\/div>`\r\n      : '';\r\n    \/\/ \u2705 Onay butonu art\u0131k SADECE bu pencerede \u2014 admin sipari\u015fi g\u00f6rmeden onaylayamas\u0131n diye.\r\n    \/\/ Hat\u0131rlatma en \u00fcstte duruyor ki neden a\u00e7mak zorunda oldu\u011fu unutulmas\u0131n.\r\n    var kontrolUyarisi = ((s.durum || '') === 'Revizyon Bekliyor') ? '' :\r\n      `<div style=\"margin-bottom:15px; padding:12px 14px; background:#e7f4f7; border-left:4px solid #0792ad; font-family:sans-serif;\"><b style=\"color:#0792ad;\">\ud83d\udd0d L\u00fctfen sipari\u015fin i\u00e7eri\u011fini kontrol edin.<\/b><div style=\"font-size:12px; color:#5a564a; margin-top:5px;\">\u00dcr\u00fcnleri, miktarlar\u0131 ve varsa m\u00fc\u015fteri notunu g\u00f6zden ge\u00e7irdikten sonra onaylay\u0131n. Bir sorun varsa sipari\u015fi m\u00fc\u015fteriye geri g\u00f6nderebilirsiniz.<\/div><\/div>`;\r\n    document.getElementById('adminSiparisDetayIcerik').innerHTML = kontrolUyarisi + ustBilgi + revizyonHtml + notHtml + detayTablosuOlustur(s.detay) + `<div style=\"text-align:right; margin-top:15px; font-size:18px; color:#0792ad; font-family:sans-serif;\"><b>Genel Toplam: ${sayiyiMetneCevir(s.toplam)} TL<\/b><\/div>`;\r\n    \/\/ Revizyondaki sipari\u015fte onay ve tekrar-geri-g\u00f6nderme anlams\u0131z; sadece iptal edilebilir.\r\n    var revizyondaMi = (s.durum || '') === 'Revizyon Bekliyor';\r\n    document.getElementById('adminDetayOnaylaBtn').style.display = revizyondaMi ? 'none' : '';\r\n    document.getElementById('adminDetayRevizyonBtn').style.display = revizyondaMi ? 'none' : '';\r\n    document.getElementById('adminDetayOnaylaBtn').setAttribute('onclick', 'adminSiparisOnayla(' + s.satir + ')'); document.getElementById('adminDetaySilBtn').setAttribute('onclick', 'adminSiparisSil(' + s.satir + ')'); document.getElementById('adminDetayRevizyonBtn').setAttribute('onclick', 'adminSiparisRevizyonaGonder(' + s.satir + ')'); document.getElementById('adminSiparisDetayKutusu').style.display = 'block';\r\n  }\r\n\r\n  \/\/ \u21a9\ufe0f Sipari\u015fi silmek yerine m\u00fc\u015fteriye geri g\u00f6nderir: i\u00e7eri\u011fi m\u00fc\u015fterinin taslaklar\u0131na\r\n  \/\/ kopyalan\u0131r, stok iade edilir, sipari\u015f \"Revizyon Bekliyor\" olarak iz b\u0131rak\u0131r.\r\n  window.adminSiparisRevizyonaGonder = function(satir) {\r\n    var s = globalBekleyenSiparisler.find(function(x) { return x.satir === satir; });\r\n    var neden = prompt('M\u00fc\u015fteriye iletilecek a\u00e7\u0131klama:\\n\\n(\u00d6rn: \"Kabuklu Antep 1 KG stokta yok, 500 GR \u00f6nerebiliriz\" ya da \"F\u0131st\u0131k miktar\u0131n\u0131 teyit eder misiniz?\")');\r\n    if (neden === null) return;\r\n    neden = neden.trim();\r\n    if (neden === '') { alert('M\u00fc\u015fterinin ne yapmas\u0131 gerekti\u011fini anlamas\u0131 i\u00e7in bir a\u00e7\u0131klama yazmal\u0131s\u0131n\u0131z.'); return; }\r\n    if (!confirm('Sipari\u015f m\u00fc\u015fteriye geri g\u00f6nderilecek.\\n\\n\u2022 Sipari\u015f i\u00e7eri\u011fi m\u00fc\u015fterinin \"Revizyon\" sekmesine d\u00fc\u015fecek\\n\u2022 Stok iade edilecek\\n\u2022 M\u00fc\u015fteri d\u00fczenleyip yeniden g\u00f6nderebilecek\\n\\nDevam edilsin mi?')) return;\r\n\r\n    showLoading('M\u00fc\u015fteriye geri g\u00f6nderiliyor...');\r\n    googleAPI({ action: 'siparis_revizyona_gonder', siparis_id: s ? s.siparis_id : null, revizyon_notu: neden }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') {\r\n        alert('Sipari\u015f m\u00fc\u015fteriye geri g\u00f6nderildi. M\u00fc\u015fteri \"Revizyon\" sekmesinden d\u00fczenleyip yeniden g\u00f6nderebilir.');\r\n        document.getElementById('adminSiparisDetayKutusu').style.display = 'none';\r\n        adminSiparisleriYukle();\r\n      } else { alert('Hata: ' + data.mesaj); }\r\n    }).catch(function(err) { hideLoading(); alert(err); });\r\n  }\r\n\r\n  window.adminSiparisSil = function(satir) {\r\n    if(!confirm(\"Bu sipari\u015fi tamamen silmek istedi\u011finize emin misiniz? Bu i\u015flem geri al\u0131namaz!\")) return; \r\n    var s = globalBekleyenSiparisler.find(function(x) { return x.satir === satir; }); \r\n    showLoading(\"Sipari\u015f kal\u0131c\u0131 olarak siliniyor...\");\r\n    googleAPI({ action: 'siparis_sil', satir: satir, siparis_id: s ? s.siparis_id : null }).then(function(data) { hideLoading(); if(data.durum === \"basarili\") { alert(\"Sipari\u015f ba\u015far\u0131yla silindi!\" + (data.stok_iade_edildi === false ? \"\\n\\nNot: Sipari\u015f teslim edilmi\u015f oldu\u011fu i\u00e7in \u00fcr\u00fcnler sto\u011fa geri EKLENMED\u0130 (mal m\u00fc\u015fteride). Ger\u00e7ekten iade al\u0131nd\u0131ysa sto\u011fu elle g\u00fcncelleyin.\" : \"\")); document.getElementById('adminSiparisDetayKutusu').style.display = 'none'; adminSiparisleriYukle(); } else { alert(data.mesaj); } }).catch(function(err) { hideLoading(); alert(err); });\r\n  }\r\n\r\n  window.adminSiparisOnayla = function(satir) {\r\n    if(!confirm(\"Bu sipari\u015f onaylanarak mail bildirimi yap\u0131lacak. Emin misiniz?\")) return; \r\n    var s = globalBekleyenSiparisler.find(function(x) { return x.satir === satir; }); \r\n    showLoading(\"Onaylan\u0131p mailler g\u00f6nderiliyor...\");\r\n    googleAPI({ action: 'siparis_onayla', satir: satir, siparis_id: s ? s.siparis_id : null }).then(function(data) { hideLoading(); if(data.durum === \"basarili\") { alert(\"Onayland\u0131!\"); document.getElementById('adminSiparisDetayKutusu').style.display = 'none'; adminSiparisleriYukle(); } else { alert(data.mesaj); } }).catch(function(err) { hideLoading(); alert(err); });\r\n  }\r\n\r\n  \/\/ \ud83d\ude80 ZIRHLI CAR\u0130 HESAP Y\u00dcKLEY\u0130C\u0130\r\n  var hamCariSiparisler = [], hamCariTahsilatlar = [], hamCariDevirler = [], yatToAcente = {}, kullaniciToAcente = {}, acenteAdiToKullanici = {};\r\n  function musteriAdiBul(yatAdi) { return yatToAcente[yatAdi] || yatAdi; }\r\n  \/\/ \"DEPO ALIMI\" bir tekne de\u011fil, acentenin kendi deposu i\u00e7in verdi\u011fi sipari\u015fi ifade eder \u2014\r\n  \/\/ bu y\u00fczden tekne e\u015flemesine de\u011fil, sipari\u015fi VEREN ki\u015finin (kullanici_adi) ad\u0131na atfedilir.\r\n  \/\/ kullaniciToAcente haritas\u0131, bu atf\u0131 tekne-bazl\u0131 sipari\u015flerle AYNI m\u00fc\u015fteri grubuna (acentenin\r\n  \/\/ ger\u00e7ek ad\u0131) birle\u015ftirmek i\u00e7in kullan\u0131l\u0131r \u2014 yoksa depo sipari\u015fleri kullan\u0131c\u0131 ad\u0131yla (\u00f6rn.\r\n  \/\/ \"acente_marina1\") ayr\u0131, sahte bir m\u00fc\u015fteri gibi g\u00f6r\u00fcn\u00fcr.\r\n  function siparisMusteriAdiBul(s) { return s.yat_adi === 'DEPO ALIMI' ? (kullaniciToAcente[s.kullanici_adi] || s.kullanici_adi) : musteriAdiBul(s.yat_adi); }\r\n  \/\/ Tahsilat\/hediye \u00e7eki kay\u0131tlar\u0131 \"DEPO ALIMI\" ise yat_adi T\u00dcM acenteler i\u00e7in ortakt\u0131r, ger\u00e7ek\r\n  \/\/ ay\u0131rt edici bilgi kullanici_adi alan\u0131ndad\u0131r (backend art\u0131k bunu g\u00f6nderiyor).\r\n  function hareketMusteriAdiBul(h) { return (h.yat_adi === 'DEPO ALIMI' && h.kullanici_adi) ? (kullaniciToAcente[h.kullanici_adi] || h.kullanici_adi) : musteriAdiBul(h.yat_adi); }\r\n\r\n  window.cariHesaplariYukle = function() {\r\n    var govde = document.getElementById('cariHesapTabloGovde'); if(!govde) return;\r\n    govde.innerHTML = '<tr><td colspan=\"5\" style=\"text-align:center; padding:20px;\">Cari Veriler Hesaplan\u0131yor...<\/td><\/tr>';\r\n    googleAPI({ action: 'cari_liste_cek' }).then(function(data) {\r\n      if(data.durum === \"basarili\") {\r\n        \r\n        \/\/ --- \ud83d\udd34 \u00d6NBELLEK G\u00dcVENL\u0130K DUVARI ---\r\n        if(data.cari_liste && !data.siparisler) {\r\n            govde.innerHTML = '<tr><td colspan=\"5\" style=\"color:white; background:#dc3545; text-align:center; padding:20px; font-weight:bold; font-size:16px;\">S\u0130STEM HATASI: Google eski kodlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131yor!<br><br>L\u00fctfen Google Apps Script panelinde \"Da\u011f\u0131t\u0131mlar Y\u00f6net\" YER\u0130NE do\u011frudan \"Yeni Da\u011f\u0131t\u0131m (New Deployment)\" diyerek yepyeni URL al\u0131n.<\/td><\/tr>';\r\n            return;\r\n        }\r\n\r\n        var sips = data.siparisler || [];\r\n        var tahs = data.tahsilatlar || [];\r\n        var devirler = data.devir_bakiyeleri || [];\r\n        hamCariSiparisler = sips; hamCariTahsilatlar = tahs; hamCariDevirler = devirler;\r\n\r\n        \/\/ Tekne \u2192 Acente e\u015flemesi: bir tekne bir acenteye ba\u011fl\u0131ysa, o teknenin sipari\u015f\/tahsilat\u0131\r\n        \/\/ \"m\u00fc\u015fteri\" baz\u0131nda acentenin ADI alt\u0131nda toplan\u0131r. Ba\u011fl\u0131 de\u011filse (do\u011frudan Yat m\u00fc\u015fterisi)\r\n        \/\/ tekne ad\u0131n\u0131n kendisi zaten m\u00fc\u015fteri ad\u0131d\u0131r.\r\n        yatToAcente = {};\r\n        kullaniciToAcente = {}; acenteAdiToKullanici = {};\r\n        var acenteAdlari = {};\r\n        (data.yat_acente_haritasi || []).forEach(function(m) { yatToAcente[m.yat_adi] = m.acente_adi; acenteAdlari[m.acente_adi] = true; });\r\n        (data.acente_kullanici_haritasi || []).forEach(function(a) { kullaniciToAcente[a.kullanici_adi] = a.gercek_isim; acenteAdiToKullanici[a.gercek_isim] = a.kullanici_adi; acenteAdlari[a.gercek_isim] = true; });\r\n\r\n        if(sips.length === 0 && tahs.length === 0 && devirler.length === 0) { \r\n           govde.innerHTML = '<tr><td colspan=\"5\" style=\"text-align:center; padding:20px;\">Sistemde kay\u0131tl\u0131 cari hareket bulunmuyor.<\/td><\/tr>'; return; \r\n        }\r\n        \r\n        var cariVeri = {};\r\n        sips.forEach(function(s) {\r\n            var musteri = siparisMusteriAdiBul(s);\r\n            var net = metniSayiyaCevir(s.toplam) - metniSayiyaCevir(s.iade);\r\n            if(!cariVeri[musteri]) cariVeri[musteri] = { siparis: 0, tahsilat: 0, tekneler: {}, depoAlimiVarMi: false };\r\n            cariVeri[musteri].siparis += net;\r\n            if (s.yat_adi === 'DEPO ALIMI') { cariVeri[musteri].depoAlimiVarMi = true; }\r\n            else { cariVeri[musteri].tekneler[s.yat_adi] = true; }\r\n        });\r\n\r\n        \/\/ \ud83d\udcbc Devreden bakiyeler \u2014 bir \"bor\u00e7\" (sipari\u015f) gibi cariye eklenir. Tekne baz\u0131nda girildi\u011fi\r\n        \/\/ i\u00e7in acenteye ba\u011fl\u0131ysa acentenin toplam\u0131na yans\u0131r, teknesi de \"tekneler\" listesinde g\u00f6r\u00fcn\u00fcr.\r\n        devirler.forEach(function(d) {\r\n            var musteri = musteriAdiBul(d.yat_adi);\r\n            var tutar = metniSayiyaCevir(d.tutar);\r\n            if(!cariVeri[musteri]) cariVeri[musteri] = { siparis: 0, tahsilat: 0, tekneler: {}, depoAlimiVarMi: false };\r\n            cariVeri[musteri].siparis += tutar;\r\n            cariVeri[musteri].tekneler[d.yat_adi] = true;\r\n        });\r\n        \r\n        tahs.forEach(function(t) {\r\n            var musteri = hareketMusteriAdiBul(t);\r\n            var tutar = metniSayiyaCevir(t.tutar);\r\n            if(!cariVeri[musteri]) cariVeri[musteri] = { siparis: 0, tahsilat: 0, tekneler: {}, depoAlimiVarMi: false };\r\n            cariVeri[musteri].tahsilat += tutar;\r\n            if (t.yat_adi === 'DEPO ALIMI') { cariVeri[musteri].depoAlimiVarMi = true; } else { cariVeri[musteri].tekneler[t.yat_adi] = true; }\r\n        });\r\n\r\n        var cariListe = [];\r\n        for(var m in cariVeri) {\r\n            var bakiye = cariVeri[m].siparis - cariVeri[m].tahsilat;\r\n            var tip = acenteAdlari[m] ? 'Acente' : 'Yat';\r\n            var tekneSayisi = Object.keys(cariVeri[m].tekneler).length;\r\n            cariListe.push({ musteri: m, tip: tip, tekneSayisi: tekneSayisi, depoAlimiVarMi: cariVeri[m].depoAlimiVarMi, siparis: cariVeri[m].siparis, tahsilat: cariVeri[m].tahsilat, bakiye: bakiye });\r\n        }\r\n        cariListe.sort(function(a,b) { return b.bakiye - a.bakiye; });\r\n\r\n        var html = \"\";\r\n        cariListe.forEach(function(c) {\r\n          var bakiyeRenk = bakiyeRengi(c.bakiye);\r\n          var guvenliMusteri = c.musteri.replace(\/'\/g, \"\\\\'\");\r\n          var tiklaIslemi = c.tip === 'Acente' ? `acenteTekneleriGoster('${guvenliMusteri}')` : `cariDetayAc('${guvenliMusteri}')`;\r\n          var tipEtiket = c.tip === 'Acente'\r\n            ? `Acente \u00b7 ${c.tekneSayisi} tekne${c.depoAlimiVarMi ? ', 1 depo' : ''}`\r\n            : 'Yat';\r\n          html += `<tr style=\"border-bottom:1px solid #eee; cursor:pointer;\" onclick=\"${tiklaIslemi}\"><td style=\"padding:15px; font-weight:bold; color:#0792ad;\">${c.musteri}<\/td><td style=\"padding:15px; font-size:12px; color:#666;\">${tipEtiket}<\/td><td style=\"padding:15px; text-align:right;\">${sayiyiMetneCevir(c.siparis)} TL<\/td><td style=\"padding:15px; text-align:right;\">${sayiyiMetneCevir(c.tahsilat)} TL<\/td><td style=\"padding:15px; text-align:right; font-weight:bold; font-size:16px; color:${bakiyeRenk};\">${sayiyiMetneCevir(c.bakiye)} TL<\/td><\/tr>`;\r\n        });\r\n        govde.innerHTML = html;\r\n      } else { govde.innerHTML = '<tr><td colspan=\"5\" style=\"color:red; text-align:center; padding:20px;\">' + data.mesaj + '<\/td><\/tr>'; }\r\n    }).catch(function(err) { govde.innerHTML = '<tr><td colspan=\"5\" style=\"color:red; text-align:center;\">' + err + '<\/td><\/tr>'; });\r\n  };\r\n\r\n  \/\/ Bir acentenin, kendi teknelerine g\u00f6re k\u0131r\u0131l\u0131m\u0131n\u0131 g\u00f6sterir (ara katman) \u2014\r\n  \/\/ bir tekneye t\u0131klan\u0131nca zaten var olan sipari\u015f bazl\u0131 ekstre (cariDetayAc) a\u00e7\u0131l\u0131r.\r\n  window.acenteTekneleriGoster = function(acenteAdi) {\r\n    document.getElementById('acenteTekneleriBaslik').innerText = acenteAdi + ' \u2014 Teknelere G\u00f6re Cari D\u00f6k\u00fcm\u00fc';\r\n    var govde = document.getElementById('acenteTekneleriGovde');\r\n\r\n    var tekneVeri = {};\r\n    hamCariSiparisler.forEach(function(s) {\r\n        if (siparisMusteriAdiBul(s) !== acenteAdi) return;\r\n        if (!tekneVeri[s.yat_adi]) tekneVeri[s.yat_adi] = { siparis: 0, tahsilat: 0 };\r\n        tekneVeri[s.yat_adi].siparis += (metniSayiyaCevir(s.toplam) - metniSayiyaCevir(s.iade));\r\n    });\r\n    hamCariDevirler.forEach(function(d) {\r\n        if (musteriAdiBul(d.yat_adi) !== acenteAdi) return;\r\n        if (!tekneVeri[d.yat_adi]) tekneVeri[d.yat_adi] = { siparis: 0, tahsilat: 0 };\r\n        tekneVeri[d.yat_adi].siparis += metniSayiyaCevir(d.tutar);\r\n    });\r\n    hamCariTahsilatlar.forEach(function(t) {\r\n        if (hareketMusteriAdiBul(t) !== acenteAdi) return;\r\n        if (!tekneVeri[t.yat_adi]) tekneVeri[t.yat_adi] = { siparis: 0, tahsilat: 0 };\r\n        tekneVeri[t.yat_adi].tahsilat += metniSayiyaCevir(t.tutar);\r\n    });\r\n\r\n    var liste = [];\r\n    for (var y in tekneVeri) liste.push({ yat: y, siparis: tekneVeri[y].siparis, tahsilat: tekneVeri[y].tahsilat, bakiye: tekneVeri[y].siparis - tekneVeri[y].tahsilat });\r\n    liste.sort(function(a,b) { return b.bakiye - a.bakiye; });\r\n\r\n    if (liste.length === 0) {\r\n      govde.innerHTML = '<p style=\"padding:20px; text-align:center; color:#666;\">Bu acenteye ait tekne bulunamad\u0131.<\/p>';\r\n    } else {\r\n      var html = '<table style=\"width:100%; border-collapse:collapse; text-align:left; font-size:14px;\"><thead><tr style=\"background:#f1ede0; border-bottom:1px solid #ccc;\"><th style=\"padding:10px;\">Tekne<\/th><th style=\"padding:10px; text-align:right;\">Sipari\u015f<\/th><th style=\"padding:10px; text-align:right;\">Tahsilat<\/th><th style=\"padding:10px; text-align:right;\">Bakiye<\/th><\/tr><\/thead><tbody>';\r\n      liste.forEach(function(t) {\r\n        var renk = bakiyeRengi(t.bakiye);\r\n        var guvenliYat = t.yat.replace(\/'\/g, \"\\\\'\");\r\n        var depoParam = t.yat === 'DEPO ALIMI' ? `, '${(acenteAdiToKullanici[acenteAdi] || '').replace(\/'\/g, \"\\\\'\")}'` : '';\r\n        html += `<tr style=\"border-bottom:1px solid #eee; cursor:pointer;\" onclick=\"document.getElementById('acenteTekneleriKutusu').style.display='none'; cariDetayAc('${guvenliYat}', '${acenteAdi.replace(\/'\/g, \"\\\\'\")}'${depoParam});\"><td style=\"padding:12px; font-weight:bold; color:#0792ad;\">${t.yat}<\/td><td style=\"padding:12px; text-align:right;\">${sayiyiMetneCevir(t.siparis)} TL<\/td><td style=\"padding:12px; text-align:right;\">${sayiyiMetneCevir(t.tahsilat)} TL<\/td><td style=\"padding:12px; text-align:right; font-weight:bold; color:${renk};\">${sayiyiMetneCevir(t.bakiye)} TL<\/td><\/tr>`;\r\n      });\r\n      html += '<\/tbody><\/table>';\r\n      govde.innerHTML = html;\r\n    }\r\n    document.getElementById('acenteTekneleriKutusu').style.display = 'flex';\r\n  };\r\n\r\n  var hamAdminCariHareketleri = [];\r\n  var aktifCariDepoKullaniciAdi = \"\"; \/\/ \"DEPO ALIMI\" ekstresi a\u00e7\u0131kken, hangi acenteye ait oldu\u011fu\r\n\r\n  window.cariDetayAc = function(yatAdi, geriDonulecekAcente, depoKullaniciAdi) {\r\n    aktifCariYat = yatAdi;\r\n    \/\/ \"DEPO ALIMI\" T\u00dcM acentelerin ortak etiketi oldu\u011fu i\u00e7in, hangi acenteye ait oldu\u011funu ayr\u0131ca\r\n    \/\/ sakl\u0131yoruz \u2014 hem ekstreyi do\u011fru filtrelemek hem de yeni tahsilat kaydederken do\u011fru acenteyi\r\n    \/\/ i\u015faretlemek i\u00e7in gerekiyor.\r\n    aktifCariDepoKullaniciAdi = (yatAdi === 'DEPO ALIMI') ? (depoKullaniciAdi || '') : '';\r\n    document.getElementById('cariDetayBaslik').innerText = (yatAdi === 'DEPO ALIMI' && geriDonulecekAcente ? geriDonulecekAcente + ' \u2014 Depo Al\u0131m\u0131' : yatAdi) + \" - Cari Kart Ekstresi\";\r\n    document.getElementById('cariEkstreGovde').innerHTML = '<tr><td colspan=\"8\" style=\"text-align:center; padding:20px;\">Ekstre Y\u00fckleniyor...<\/td><\/tr>';\r\n    document.getElementById('cariDetayKutusu').style.display = 'flex'; document.getElementById('yeniTahsilatTutar').value = \"\"; document.getElementById('yeniTahsilatAciklama').value = \"\"; document.getElementById('yeniTahsilatTarih').value = new Date().toISOString().slice(0, 10); document.getElementById('yeniTahsilatYontem').value = \"Nakit\";\r\n    document.getElementById('cariDetayFiltreBaslangic').value = \"\"; document.getElementById('cariDetayFiltreBitis').value = \"\";\r\n\r\n    \/\/ Acente'nin tekne d\u00f6k\u00fcm\u00fcnden gelindiyse \"Geri\" butonu g\u00f6ster, o d\u00f6k\u00fcmana d\u00f6nmeyi sa\u011fla.\r\n    window._cariDetayGeriDonusAcente = geriDonulecekAcente || null;\r\n    document.getElementById('cariDetayGeriBtn').style.display = geriDonulecekAcente ? 'block' : 'none';\r\n\r\n    googleAPI({ action: 'cari_detay_cek', yat_adi: yatAdi, kullanici_adi: aktifCariDepoKullaniciAdi }).then(function(data) {\r\n       if(data.durum === \"basarili\") {\r\n          hamAdminCariHareketleri = data.hareketler || [];\r\n          adminCariEkstresiCiz();\r\n       }\r\n    });\r\n  };\r\n\r\n  window.cariDetayGeriDon = function() {\r\n    document.getElementById('cariDetayKutusu').style.display = 'none';\r\n    if (window._cariDetayGeriDonusAcente) { acenteTekneleriGoster(window._cariDetayGeriDonusAcente); }\r\n  };\r\n\r\n  window.adminCariEkstresiCiz = function() {\r\n    var eGovde = document.getElementById('cariEkstreGovde');\r\n    var hareketler = hamAdminCariHareketleri;\r\n    if (hareketler.length === 0) { document.getElementById('cariDetayBakiye').innerText = \"0,00\"; eGovde.innerHTML = '<tr><td colspan=\"8\" style=\"text-align:center; padding:20px;\">Ge\u00e7mi\u015f i\u015flem bulunmuyor.<\/td><\/tr>'; return; }\r\n\r\n    \/\/ Bakiye HER ZAMAN t\u00fcm ge\u00e7mi\u015ften (tarih filtresi olmadan) hesaplan\u0131r \u2014 filtre sadece\r\n    \/\/ hangi sat\u0131rlar\u0131n listelenece\u011fini belirler, bakiyenin ba\u015flang\u0131\u00e7 noktas\u0131n\u0131 de\u011fil.\r\n    var kronolojik = hareketler.slice().sort(function(a, b) { return a.tarih - b.tarih; });\r\n    var kosanBakiye = {};\r\n    var guncelBakiyeToplam = 0;\r\n    kronolojik.forEach(function(h) {\r\n       var isBorc = h.tur === 'Sipari\u015f' || h.tur === 'Devir';\r\n       var borcRakam = isBorc ? (metniSayiyaCevir(h.rawToplam) - metniSayiyaCevir(h.rawIade)) : 0;\r\n       var alacakRakam = isBorc ? 0 : metniSayiyaCevir(h.rawTahsilat);\r\n       guncelBakiyeToplam += (borcRakam - alacakRakam);\r\n       kosanBakiye[h.tarih + '|' + h.tur + '|' + h.aciklama] = guncelBakiyeToplam;\r\n    });\r\n    document.getElementById('cariDetayBakiye').innerText = sayiyiMetneCevir(guncelBakiyeToplam);\r\n\r\n    var sBaslangic = document.getElementById('cariDetayFiltreBaslangic').value;\r\n    var sBitis = document.getElementById('cariDetayFiltreBitis').value;\r\n    var filtreli = kronolojik.filter(function(h) {\r\n       if (sBaslangic && h.tarih < new Date(sBaslangic + 'T00:00:00').getTime()) return false;\r\n       if (sBitis && h.tarih > new Date(sBitis + 'T23:59:59').getTime()) return false;\r\n       return true;\r\n    });\r\n\r\n    if (filtreli.length === 0) { eGovde.innerHTML = '<tr><td colspan=\"8\" style=\"text-align:center; padding:20px;\">Filtreye uyan i\u015flem bulunamad\u0131.<\/td><\/tr>'; return; }\r\n\r\n    var html = \"\";\r\n    filtreli.forEach(function(h) {\r\n       var isBorc = h.tur === 'Sipari\u015f' || h.tur === 'Devir';\r\n       var borcRakam = 0, alacakRakam = 0;\r\n       if(isBorc) { borcRakam = metniSayiyaCevir(h.rawToplam) - metniSayiyaCevir(h.rawIade); }\r\n       else { alacakRakam = metniSayiyaCevir(h.rawTahsilat); }\r\n       var oAndakiBakiye = kosanBakiye[h.tarih + '|' + h.tur + '|' + h.aciklama];\r\n\r\n       \/\/ Admin salt-g\u00f6r\u00fcnt\u00fcleme modundad\u0131r \u2014 silme yetkisi sadece S\u00fcper Admin'e ait.\r\n       var suAdminMi = aktifKullanici.rol.toLowerCase() === 'super admin';\r\n       var silButonu = '';\r\n       if (!isBorc && h.tahsilat_id && suAdminMi) silButonu = `<button type=\"button\" onclick=\"tahsilatSil('${h.tahsilat_id}')\" title=\"Bu tahsilat\u0131 sil (hatal\u0131 girildiyse)\" style=\"background:#dc3545; color:#fff; border:none; padding:4px 8px; border-radius:4px; cursor:pointer; font-size:11px;\">Sil<\/button>`;\r\n       else if (h.tur === '\u0130ade' && h.iade_id && suAdminMi) silButonu = `<button type=\"button\" onclick=\"event.stopPropagation(); iadeSil('${h.iade_id}')\" title=\"Bu iadeyi geri al (stok tekrar d\u00fc\u015f\u00fcl\u00fcr)\" style=\"background:#dc3545; color:#fff; border:none; padding:4px 8px; border-radius:4px; cursor:pointer; font-size:11px;\">Geri Al<\/button>`;\r\n\r\n       \/\/ \ud83e\uddfe \u0130ade sat\u0131r\u0131 t\u0131klanabilir: hangi \u00fcr\u00fcnden ka\u00e7 adet iade edildi\u011fi a\u00e7\u0131l\u0131r.\r\n       var iadeMi = h.tur === '\u0130ade';\r\n       var satirEkstra = iadeMi ? ` cursor:pointer;` : '';\r\n       var tiklama = iadeMi ? ` onclick=\"iadeIcerikGoster('${h.iade_id}')\" title=\"\u0130ade i\u00e7eri\u011fini g\u00f6r\u00fcnt\u00fcle\"` : '';\r\n       var aciklamaMetni = iadeMi\r\n         ? `${h.aciklama} <span style=\"color:#b8860b; font-size:11px;\">(i\u00e7eri\u011fi g\u00f6r &rsaquo;)<\/span>`\r\n         : (h.odeme_yontemi ? '<b>' + h.odeme_yontemi + '<\/b>' + (h.aciklama && h.aciklama !== '-' ? ' \u2014 ' + h.aciklama : '') : h.aciklama);\r\n       if (iadeMi && h.kalemler) iadeIcerikHaritasi[h.iade_id] = h;\r\n\r\n       html += `<tr style=\"border-bottom:1px solid #eee; background:${isBorc ? '#fff' : (iadeMi ? '#fffaf0' : '#f4fbf5')};${satirEkstra}\"${tiklama}><td style=\"padding:10px;\">${h.tarihStr}<\/td><td style=\"padding:10px; font-weight:bold; color:${isBorc ? '#666' : (iadeMi ? '#b8860b' : 'green')};\">${h.tur}<\/td><td style=\"padding:10px;\">${aciklamaMetni}<\/td><td style=\"padding:10px; font-size:12px;\">${h.fatura_no ? '<b>' + h.fatura_no + '<\/b>' + (h.fatura_tarihi ? '<br><span style=\"color:#888; font-size:10px;\">' + new Date(h.fatura_tarihi).toLocaleDateString('tr-TR') + '<\/span>' : '') : '<span style=\"color:#ccc;\">\u2014<\/span>'}<\/td><td style=\"padding:10px; text-align:right;\">${borcRakam > 0 ? sayiyiMetneCevir(borcRakam) + ' TL' : '-'}<\/td><td style=\"padding:10px; text-align:right;\">${alacakRakam > 0 ? sayiyiMetneCevir(alacakRakam) + ' TL' : '-'}<\/td><td style=\"padding:10px; text-align:right; font-weight:bold;\">${sayiyiMetneCevir(oAndakiBakiye)} TL<\/td><td style=\"padding:10px; text-align:center;\">${silButonu}<\/td><\/tr>`;\r\n    });\r\n    eGovde.innerHTML = html;\r\n  };\r\n\r\n  window.tahsilatSil = function(tahsilatId) {\r\n    if (!confirm('Bu tahsilat kayd\u0131n\u0131 kal\u0131c\u0131 olarak silmek istedi\u011fine emin misin?\\n\\nBu i\u015flem geri al\u0131namaz.')) return;\r\n    showLoading('Tahsilat siliniyor...');\r\n    googleAPI({ action: 'tahsilat_sil', tahsilat_id: tahsilatId }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') { cariDetayAc(aktifCariYat, window._cariDetayGeriDonusAcente, aktifCariDepoKullaniciAdi); cariHesaplariYukle(); }\r\n      else { alert(data.mesaj); }\r\n    }).catch(function(err) { hideLoading(); alert(err); });\r\n  };\r\n\r\n  window.devirBakiyesiEklePrompt = function() {\r\n    var yatAdi = prompt('Hangi tekne\/m\u00fc\u015fteri i\u00e7in? (Acente ise ACENTEN\u0130N DE\u011e\u0130L, TEKNEN\u0130N ad\u0131n\u0131 yaz\u0131n \u2014 cari hesap tekne baz\u0131nda tutuluyor)');\r\n    if (yatAdi === null || yatAdi.trim() === '') return;\r\n    yatAdi = yatAdi.trim();\r\n\r\n    var tutarStr = prompt(yatAdi + ' i\u00e7in devreden (\u00f6denmemi\u015f) bakiye tutar\u0131 (TL):');\r\n    if (tutarStr === null) return;\r\n    var tutar = metniSayiyaCevir(tutarStr);\r\n    if (tutar <= 0) { alert('Ge\u00e7erli bir tutar girin.'); return; }\r\n\r\n    var donem = prompt('Bu bakiye hangi tarihten itibaren ge\u00e7erli olsun? (YYYY-AA-GG, \u00f6rn. bu ay\u0131n ilk g\u00fcn\u00fc)', new Date().toISOString().slice(0, 8) + '01');\r\n    if (!donem || !\/^\\d{4}-\\d{2}-\\d{2}$\/.test(donem)) { alert('Tarih format\u0131 YYYY-AA-GG olmal\u0131.'); return; }\r\n\r\n    var aciklama = prompt('A\u00e7\u0131klama (opsiyonel, \u00f6rn. \"Temmuz 2026\\'dan devreden bakiye\"):', '') || '';\r\n\r\n    if (!confirm(yatAdi + ' i\u00e7in ' + sayiyiMetneCevir(tutar) + ' TL devreden bakiye kaydedilecek. Bu, cari hesapta bir \"Devir\" hareketi olarak g\u00f6r\u00fcnecek. Emin misiniz?')) return;\r\n\r\n    googleAPI({ action: 'devir_bakiyesi_ekle', yat_adi: yatAdi, tutar: tutarStr, donem_baslangic: donem, aciklama: aciklama }).then(function(data) {\r\n      if (data.durum === 'basarili') { alert('Devreden bakiye kaydedildi.'); cariHesaplariYukle(); }\r\n      else { alert('Hata: ' + data.mesaj); }\r\n    }).catch(function(err) { alert(err); });\r\n  };\r\n\r\n  window.islemTahsilatKaydet = function(btn) {\r\n    var tutarInput = document.getElementById('yeniTahsilatTutar').value; var aciklamaInput = document.getElementById('yeniTahsilatAciklama').value || \"\";\r\n    var tarihInput = document.getElementById('yeniTahsilatTarih').value;\r\n    var yontemInput = document.getElementById('yeniTahsilatYontem').value;\r\n    var tutarRakam = metniSayiyaCevir(tutarInput);\r\n    if(tutarRakam <= 0) { alert(\"L\u00fctfen ge\u00e7erli bir tahsilat tutar\u0131 girin.\"); return; }\r\n    if(!confirm(aktifCariYat + \" hesab\u0131na \" + sayiyiMetneCevir(tutarRakam) + \" TL (\" + yontemInput + \") tahsilat i\u015flenecek. Emin misiniz?\")) return;\r\n\r\n    btn.disabled = true; btn.innerText = \"\u0130\u015fleniyor...\";\r\n    googleAPI({ action: 'tahsilat_ekle', yat_adi: aktifCariYat, kullanici_adi: aktifCariDepoKullaniciAdi, tutar: tutarInput, aciklama: aciklamaInput, tarih: tarihInput, odeme_yontemi: yontemInput }).then(function(data) {\r\n       btn.disabled = false; btn.innerText = \"Tahsilat \u0130\u015fle\";\r\n       if(data.durum === \"basarili\") { cariDetayAc(aktifCariYat, window._cariDetayGeriDonusAcente, aktifCariDepoKullaniciAdi); cariHesaplariYukle(); } else { alert(\"Hata: \" + data.mesaj); }\r\n    }).catch(function(err) { btn.disabled = false; btn.innerText = \"Tahsilat \u0130\u015fle\"; alert(err); });\r\n  };\r\n\r\n\r\n  \/\/ ============================================================\r\n  \/\/ \ud83d\uded2 SIK ALDIKLARIM (m\u00fc\u015fteri)\r\n  \/\/ ============================================================\r\n  window.sikAlinanlarYukle = function() {\r\n    var alan = document.getElementById('sikAlinanAlani');\r\n    alan.innerHTML = 'Y\u00fckleniyor...';\r\n\r\n    \/\/ Teslimat mini-formunu, \"Yeni Sipari\u015f\" sekmesindeki ger\u00e7ek alanlarla senkronize ba\u015flat.\r\n    if (aktifKullanici.rol.toLowerCase() === 'acente') {\r\n      document.getElementById('sikAcenteYatAlani').style.display = 'block';\r\n      document.getElementById('sikSecilenYat').innerHTML = document.getElementById('secilenYat').innerHTML;\r\n      document.getElementById('sikSecilenYat').value = document.getElementById('secilenYat').value;\r\n    }\r\n    if (isKaraIsletmesi()) {\r\n      document.getElementById('sikTeslimatYeriAlani').style.display = 'none';\r\n    } else {\r\n      document.getElementById('sikTeslimatYeriAlani').style.display = 'block';\r\n      var mevcutTur = document.querySelector('input[name=\"siparisYeriRadyo\"]:checked');\r\n      if (mevcutTur) sikTeslimatYeriSec(mevcutTur.value);\r\n    }\r\n    document.getElementById('sikSiparisNotu').value = document.getElementById('siparisNotu').value;\r\n\r\n    googleAPI({ action: 'sik_alinan_urunler_cek' }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alan.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>'; return; }\r\n      var liste = data.urunler || [];\r\n      if (liste.length === 0) { alan.innerHTML = '<p style=\"color:#666; text-align:center; padding:20px;\">Hen\u00fcz yeterli sipari\u015f ge\u00e7mi\u015fin yok. Birka\u00e7 sipari\u015f verdikten sonra burada en s\u0131k ald\u0131\u011f\u0131n \u00fcr\u00fcnler g\u00f6r\u00fcnmeye ba\u015flayacak.<\/p>'; return; }\r\n\r\n      var html = '<div style=\"display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:12px;\">';\r\n      var eslesmeyen = 0;\r\n      liste.forEach(function(su) {\r\n        var index = -1;\r\n        for (var i = 0; i < globalData.urunler.length; i++) {\r\n          var u = globalData.urunler[i];\r\n          if (u.kategori === su.kategori && u.urun_adi === su.urun_adi && u.birim === su.birim && u.durum === 'Aktif') { index = i; break; }\r\n        }\r\n        if (index === -1) { eslesmeyen++; return; }\r\n        var u = globalData.urunler[index];\r\n        var kaydedilenAdet = secilenUrunler[index] || 0;\r\n        html += `<div style=\"border:1px solid #e3ddc9; border-radius:10px; padding:12px; background:#f8f6ef;\">\r\n          <div style=\"font-weight:bold; font-size:14px; margin-bottom:2px;\">${u.urun_adi}<\/div>\r\n          <div style=\"font-size:12px; color:#8a8578; margin-bottom:8px;\">${u.kategori} \u00b7 ${u.birim} \u00b7 ${sayiyiMetneCevir(u.birim_fiyat)} TL<\/div>\r\n          <div style=\"font-size:11px; color:#0792ad; margin-bottom:8px;\">\ud83d\udd01 ${su.siparis_sayisi} kez sipari\u015f ettin<\/div>\r\n          <div style=\"display:flex; align-items:center; gap:8px;\">\r\n            <label style=\"font-size:12px; color:#5a564a;\">Miktar:<\/label>\r\n            <input type=\"number\" min=\"0\" value=\"${kaydedilenAdet}\" data-sik-index=\"${index}\" style=\"width:70px; padding:6px; border:1px solid #ccc; border-radius:4px;\"\r\n              onfocus=\"if(this.value==='0') this.value='';\"\r\n              onblur=\"if(this.value==='') this.value='0'; sikAdetDegisti(this, ${index});\"\r\n              oninput=\"sikAdetDegisti(this, ${index})\">\r\n          <\/div>\r\n        <\/div>`;\r\n      });\r\n      html += '<\/div>';\r\n      if (eslesmeyen > 0) html += `<p style=\"font-size:12px; color:#999; margin-top:12px;\">(${eslesmeyen} eski \u00fcr\u00fcn art\u0131k sat\u0131\u015fta olmad\u0131\u011f\u0131 i\u00e7in listelenmedi.)<\/p>`;\r\n      alan.innerHTML = html;\r\n    }).catch(function(err) { alan.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  };\r\n\r\n  window.sikAdetDegisti = function(input, index) {\r\n    adetDegisti(input, index); \/\/ ayn\u0131 sepet mekanizmas\u0131n\u0131 kullan \u2014 \"Yeni Sipari\u015f\" sekmesine d\u00f6n\u00fcnce miktar korunur\r\n    \/\/ Ana katalogda o an bu \u00fcr\u00fcn g\u00f6r\u00fcn\u00fcyorsa (ayn\u0131 index'e sahip input varsa) onu da senkron tut\r\n    var anaInput = document.querySelector('#urunlerGovde tr[data-index=\"' + index + '\"] .adet-input');\r\n    if (anaInput && anaInput !== input) anaInput.value = input.value;\r\n  };\r\n\r\n  \/\/ \"S\u0131k Ald\u0131klar\u0131m\" sekmesinden do\u011frudan g\u00f6nderim \u2014 ger\u00e7ek teslimat alanlar\u0131na yaz\u0131p\r\n  \/\/ MEVCUT paketleme\/g\u00f6nderme mant\u0131\u011f\u0131n\u0131 (sipari\u015fiPaketle + ayn\u0131 API \u00e7a\u011fr\u0131lar\u0131) aynen kullan\u0131r.\r\n  window.sikTeslimatYeriSec = function(deger) {\r\n    var radio = document.getElementById(deger === 'Depo' ? 'sYeriDepo' : 'sYeriTekne');\r\n    if (radio) radio.checked = true;\r\n    var depoBtn = document.getElementById('sikYeriDepoBtn'); var tekneBtn = document.getElementById('sikYeriTekneBtn');\r\n    depoBtn.style.background = deger === 'Depo' ? '#0792ad' : '#fff'; depoBtn.style.color = deger === 'Depo' ? '#fff' : '#333';\r\n    tekneBtn.style.background = deger === 'Tekne' ? '#0792ad' : '#fff'; tekneBtn.style.color = deger === 'Tekne' ? '#fff' : '#333';\r\n  };\r\n\r\n  function sikAlanlariGercekAlanlaraAktar() {\r\n    document.getElementById('siparisNotu').value = document.getElementById('sikSiparisNotu').value;\r\n    if (aktifKullanici.rol.toLowerCase() === 'acente') document.getElementById('secilenYat').value = document.getElementById('sikSecilenYat').value;\r\n  }\r\n\r\n  document.getElementById('sikTaslakKaydetBtn').addEventListener('click', function() {\r\n    sikAlanlariGercekAlanlaraAktar();\r\n    var paket = sipari\u015fiPaketle(); if(!paket) return;\r\n    showLoading(\"Taslak kaydediliyor...\");\r\n    googleAPI({ action: 'taslak_kaydet', taslak_id: aktifTaslakID, kadi: aktifKullanici.kullanici_adi, gercek_isim: aktifKullanici.gercek_isim, yat_adi: paket.yat_adi, teslimat_yeri: paket.gonderim_yeri, detay: paket.detay, toplam: paket.toplam, not: paket.not }).then(function(data) { hideLoading(); if(data.durum === \"basarili\") { aktifTaslakID = data.taslak_id; oturumGuncelle(\"Taslak ba\u015far\u0131yla kaydedildi!\"); } else { alert(data.mesaj); } }).catch(function(err) { hideLoading(); alert(err); });\r\n  });\r\n\r\n  document.getElementById('sikSiparisGonderBtn').addEventListener('click', function() {\r\n    sikAlanlariGercekAlanlaraAktar();\r\n    var paket = sipari\u015fiPaketle(); if(!paket) return; if(!confirm(\"Sipari\u015finiz g\u00f6nderiliyor. Emin misiniz?\")) return;\r\n    showLoading(\"Sipari\u015finiz merkeze iletiliyor...\");\r\n    googleAPI({ action: 'siparis_gonder', taslak_id: aktifTaslakID, kadi: aktifKullanici.kullanici_adi, gercek_isim: aktifKullanici.gercek_isim, rol: aktifKullanici.rol, yat_adi: paket.yat_adi, gonderim_yeri: paket.gonderim_yeri, detay: paket.detay, toplam: paket.toplam, kdvsiz: paket.kdvsiz, kdv: paket.kdv, not: paket.not, indirim_tutari: paket.indirim_tutari, kampanya_notu: paket.kampanya_notu }).then(function(data) { hideLoading(); if(data.durum === \"basarili\") { aktifTaslakID = null; oturumGuncelle(\"Sipari\u015f g\u00f6nderildi! No: \" + data.siparisID); } else { alert(data.mesaj); } }).catch(function(err) { hideLoading(); alert(err); });\r\n  });\r\n\r\n  \/\/ ============================================================\r\n  \/\/ \ud83d\udcb3 CAR\u0130 HESABIM (Acente \/ Yat)\r\n  \/\/ ============================================================\r\n  var hamMusteriCari = { hareketler: [], yatlar: [] };\r\n\r\n  window.musteriCariYukle = function() {\r\n    var alan = document.getElementById('cariHesabimAlani');\r\n    alan.innerHTML = 'Y\u00fckleniyor...';\r\n    googleAPI({ action: 'musteri_cari_cek' }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alan.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>'; return; }\r\n      hamMusteriCari.hareketler = data.hareketler || [];\r\n      hamMusteriCari.yatlar = data.yatlar || [];\r\n\r\n      var secim = document.getElementById('cariFiltreTekne');\r\n      secim.innerHTML = '<option value=\"\">T\u00fcm Teknelerim<\/option>';\r\n      hamMusteriCari.yatlar.forEach(function(y) { secim.innerHTML += `<option value=\"${y}\">${y}<\/option>`; });\r\n\r\n      musteriCariTablosunuCiz();\r\n    }).catch(function(err) { alan.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  };\r\n\r\n  function musteriCariTablosunuCiz() {\r\n    var alan = document.getElementById('cariHesabimAlani');\r\n    var secilenTekne = document.getElementById('cariFiltreTekne').value;\r\n    var siralama = document.getElementById('cariSiralama').value;\r\n    var sBaslangic = document.getElementById('cariFiltreBaslangic').value;\r\n    var sBitis = document.getElementById('cariFiltreBitis').value;\r\n\r\n    var filtreUyumluMu = function(h) {\r\n      if (secilenTekne && h.yat_adi !== secilenTekne) return false;\r\n      if (sBaslangic && h.tarih < new Date(sBaslangic + 'T00:00:00').getTime()) return false;\r\n      if (sBitis && h.tarih > new Date(sBitis + 'T23:59:59').getTime()) return false;\r\n      return true;\r\n    };\r\n\r\n    var liste = hamMusteriCari.hareketler.filter(filtreUyumluMu);\r\n\r\n    if (liste.length === 0) { alan.innerHTML = '<p style=\"color:#666; text-align:center; padding:20px;\">Filtreye uyan i\u015flem bulunamad\u0131.<\/p>'; document.getElementById('cariToplamBorc').innerText = '0,00 TL'; document.getElementById('cariToplamTahsilat').innerText = '0,00 TL'; document.getElementById('cariNetBakiye').innerText = '0,00 TL'; return; }\r\n\r\n    if (siralama === 'tekne') {\r\n      liste = liste.slice().sort(function(a, b) { return a.yat_adi.localeCompare(b.yat_adi) || a.tarih - b.tarih; });\r\n    } else {\r\n      liste = liste.slice().sort(function(a, b) { return b.tarih - a.tarih; });\r\n    }\r\n\r\n    var toplamBorc = 0, toplamTahsilat = 0;\r\n    liste.forEach(function(h) {\r\n      if (h.tur === 'Sipari\u015f' || h.tur === 'Devir') toplamBorc += (metniSayiyaCevir(h.rawToplam) - metniSayiyaCevir(h.rawIade));\r\n      else toplamTahsilat += metniSayiyaCevir(h.rawTahsilat);\r\n    });\r\n    document.getElementById('cariToplamBorc').innerText = sayiyiMetneCevir(toplamBorc) + ' TL';\r\n    document.getElementById('cariToplamTahsilat').innerText = sayiyiMetneCevir(toplamTahsilat) + ' TL';\r\n    var netBakiye = toplamBorc - toplamTahsilat;\r\n    var bakiyeEl = document.getElementById('cariNetBakiye');\r\n    bakiyeEl.innerText = sayiyiMetneCevir(netBakiye) + ' TL';\r\n    bakiyeEl.style.color = netBakiye > 0 ? '#dc3545' : (netBakiye < 0 ? '#0792ad' : '#28a745');\r\n\r\n    \/\/ Bakiye s\u00fctunu SADECE tek bir tekne se\u00e7iliyken anlaml\u0131 (farkl\u0131 teknelerin bakiyesini kar\u0131\u015ft\u0131rmamak i\u00e7in).\r\n    \/\/ Do\u011fru bakiye i\u00e7in HER ZAMAN o teknenin T\u00dcM ge\u00e7mi\u015fi kullan\u0131l\u0131r (tarih filtresi burada g\u00f6z ard\u0131 edilir) \u2014\r\n    \/\/ yoksa \"filtre \u00f6ncesi\" bakiye yok say\u0131l\u0131p yan\u0131lt\u0131c\u0131 bir rakam g\u00f6sterilirdi. Tarih filtresi sadece\r\n    \/\/ hangi sat\u0131rlar\u0131n EKRANDA L\u0130STELENECE\u011e\u0130N\u0130 belirler, bakiyenin ba\u015flang\u0131\u00e7 noktas\u0131n\u0131 de\u011fil.\r\n    var bakiyeGoster = !!secilenTekne;\r\n    var tekneTumGecmisi = hamMusteriCari.hareketler.filter(function(h) { return !secilenTekne || h.yat_adi === secilenTekne; });\r\n    var kronolojik = tekneTumGecmisi.slice().sort(function(a, b) { return a.tarih - b.tarih; });\r\n    var kosanBakiye = {};\r\n    var b = 0;\r\n    kronolojik.forEach(function(h) {\r\n      if (h.tur === 'Sipari\u015f' || h.tur === 'Devir') b += (metniSayiyaCevir(h.rawToplam) - metniSayiyaCevir(h.rawIade));\r\n      else b -= metniSayiyaCevir(h.rawTahsilat);\r\n      kosanBakiye[h.tarih + '|' + h.tur + '|' + h.aciklama] = b;\r\n    });\r\n\r\n    var teknesutunu = !secilenTekne;\r\n    var tabloHtml = '<div class=\"gecmis-desktop-tablosu\"><div style=\"overflow-x:auto;\"><table style=\"width:100%; min-width:600px; border-collapse:collapse; text-align:left; font-size:14px;\"><thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #0792ad;\">' +\r\n      (teknesutunu ? '<th style=\"padding:8px;\">Tekne<\/th>' : '') +\r\n      '<th style=\"padding:8px;\">Tarih<\/th><th style=\"padding:8px;\">\u0130\u015flem<\/th><th style=\"padding:8px;\">A\u00e7\u0131klama<\/th><th style=\"padding:8px;\">Fatura No<\/th><th style=\"padding:8px; text-align:right;\">Bor\u00e7<\/th><th style=\"padding:8px; text-align:right;\">Alacak<\/th>' +\r\n      (bakiyeGoster ? '<th style=\"padding:8px; text-align:right;\">Bakiye<\/th>' : '') +\r\n      '<\/tr><\/thead><tbody>';\r\n    var kartHtml = '<div class=\"gecmis-mobil-kartlar\">';\r\n\r\n    liste.forEach(function(h) {\r\n      var isBorc = h.tur === 'Sipari\u015f' || h.tur === 'Devir';\r\n      var gosterimTur = isBorc ? h.tur : (h.tur === '\u0130ade' ? '\u0130ade' : '\u00d6deme');\r\n      var borc = isBorc ? (metniSayiyaCevir(h.rawToplam) - metniSayiyaCevir(h.rawIade)) : 0;\r\n      var alacak = isBorc ? 0 : metniSayiyaCevir(h.rawTahsilat);\r\n      var bKey = h.tarih + '|' + h.tur + '|' + h.aciklama;\r\n      var oAndakiBakiye = kosanBakiye[bKey];\r\n\r\n      \/\/ \ud83e\uddfe \u0130ade sat\u0131r\u0131 t\u0131klanabilir \u2014 m\u00fc\u015fteri hangi \u00fcr\u00fcnden ka\u00e7 adet iade edildi\u011fini g\u00f6rebilsin.\r\n      var iadeMi = h.tur === '\u0130ade';\r\n      if (iadeMi && h.kalemler) iadeIcerikHaritasi[h.iade_id] = h;\r\n      var tiklama = iadeMi ? ` onclick=\"iadeIcerikGoster('${h.iade_id}')\" title=\"\u0130ade i\u00e7eri\u011fini g\u00f6r\u00fcnt\u00fcle\"` : '';\r\n      var arkaPlan = isBorc ? '#fff' : (iadeMi ? '#fffaf0' : '#f4fbf5');\r\n      var turRengi = isBorc ? '#666' : (iadeMi ? '#b8860b' : 'green');\r\n      var aciklamaMetni = iadeMi\r\n        ? `${h.aciklama} <span style=\"color:#b8860b; font-size:11px;\">(i\u00e7eri\u011fi g\u00f6r &rsaquo;)<\/span>`\r\n        : (h.odeme_yontemi ? '<b>' + h.odeme_yontemi + '<\/b>' + (h.aciklama && h.aciklama !== '-' ? ' \u2014 ' + h.aciklama : '') : h.aciklama);\r\n\r\n      tabloHtml += '<tr style=\"border-bottom:1px solid #eee; background:' + arkaPlan + ';' + (iadeMi ? ' cursor:pointer;' : '') + '\"' + tiklama + '>' +\r\n        (teknesutunu ? `<td style=\"padding:8px; font-weight:bold; color:#0792ad;\">${h.yat_adi}<\/td>` : '') +\r\n        `<td style=\"padding:8px;\">${h.tarihStr}<\/td><td style=\"padding:8px; font-weight:bold; color:${turRengi};\">${gosterimTur}<\/td><td style=\"padding:8px;\">${aciklamaMetni}<\/td><td style=\"padding:8px; font-size:12px;\">${h.fatura_no ? '<b>' + h.fatura_no + '<\/b>' + (h.fatura_tarihi ? '<br><span style=\"color:#888; font-size:10px;\">' + new Date(h.fatura_tarihi).toLocaleDateString('tr-TR') + '<\/span>' : '') : '<span style=\"color:#ccc;\">\u2014<\/span>'}<\/td><td style=\"padding:8px; text-align:right;\">${borc > 0 ? sayiyiMetneCevir(borc) + ' TL' : '-'}<\/td><td style=\"padding:8px; text-align:right;\">${alacak > 0 ? sayiyiMetneCevir(alacak) + ' TL' : '-'}<\/td>` +\r\n        (bakiyeGoster ? `<td style=\"padding:8px; text-align:right; font-weight:bold;\">${sayiyiMetneCevir(oAndakiBakiye)} TL<\/td>` : '') +\r\n        '<\/tr>';\r\n\r\n      kartHtml += `<div class=\"gecmis-mobil-kart\" style=\"cursor:${iadeMi ? 'pointer' : 'default'};\"${tiklama}>\r\n        <div class=\"gecmis-mobil-kart-ust\"><b style=\"color:${turRengi};\">${gosterimTur}<\/b><b>${borc > 0 ? sayiyiMetneCevir(borc) + ' TL' : (alacak > 0 ? '+' + sayiyiMetneCevir(alacak) + ' TL' : '-')}<\/b><\/div>\r\n        <div class=\"gecmis-mobil-kart-alt\">${h.tarihStr}${teknesutunu ? ' \u00b7 ' + h.yat_adi : ''} \u00b7 ${iadeMi ? h.aciklama : (h.odeme_yontemi || h.aciklama)}${bakiyeGoster ? ' \u00b7 Bakiye: ' + sayiyiMetneCevir(oAndakiBakiye) + ' TL' : ''}<\/div>\r\n      <\/div>`;\r\n    });\r\n    tabloHtml += '<\/tbody><\/table><\/div><\/div>';\r\n    kartHtml += '<\/div>';\r\n    alan.innerHTML = tabloHtml + kartHtml;\r\n  }\r\n\r\n  document.getElementById('cariFiltreTekne').addEventListener('change', musteriCariTablosunuCiz);\r\n  document.getElementById('cariSiralama').addEventListener('change', musteriCariTablosunuCiz);\r\n  document.getElementById('cariFiltreBaslangic').addEventListener('change', musteriCariTablosunuCiz);\r\n  document.getElementById('cariFiltreBitis').addEventListener('change', musteriCariTablosunuCiz);\r\n\r\n  window.musteriCariYazdir = function() {\r\n    var kutu = document.getElementById('musteriCariTab');\r\n    var gizlenenler = digerIcerigiGizle(kutu);\r\n    var oncekiOverflow = document.body.style.overflow;\r\n    document.body.style.overflow = '';\r\n\r\n    var eskiHaleDondur = function() {\r\n      gizlenenler.forEach(function(g) { g.el.style.display = g.eskiDisplay; });\r\n      document.body.style.overflow = oncekiOverflow;\r\n      window.removeEventListener('focus', eskiHaleDondurGecikmeli);\r\n    };\r\n    var eskiHaleDondurGecikmeli = function() { setTimeout(eskiHaleDondur, 300); };\r\n    if (window.matchMedia) {\r\n      var medyaSorgusu = window.matchMedia('print');\r\n      var dinleyici = function(mql) { if (!mql.matches) { eskiHaleDondur(); medyaSorgusu.removeListener && medyaSorgusu.removeListener(dinleyici); } };\r\n      medyaSorgusu.addListener && medyaSorgusu.addListener(dinleyici);\r\n    }\r\n    window.onafterprint = eskiHaleDondur;\r\n    window.addEventListener('focus', eskiHaleDondurGecikmeli);\r\n    window.print();\r\n  };\r\n\r\n  \/\/ ============================================================\r\n  \/\/ \ud83d\udcb0 KAMPANYALAR\r\n  \/\/ ============================================================\r\n  var hamKampanyaMusterileri = [];\r\n\r\n  window.kampanyaMusteriListesiniYukle = function(zorlaYenile) {\r\n    \/\/ \u26a1 M\u00fc\u015fteri listesi nadiren de\u011fi\u015fir ama Duyurular\/Kampanyalar\/Ciro Hedefleri sekmelerinin\r\n    \/\/ \u00dc\u00c7\u00dc de her a\u00e7\u0131l\u0131\u015fta ayr\u0131 ayr\u0131 \u00e7ekiyordu \u2014 bu, sekme ge\u00e7i\u015flerinde gereksiz bekleme\r\n    \/\/ yarat\u0131yordu. Art\u0131k bir kez \u00e7ekilip \u00f6nbellekte tutuluyor; kullan\u0131c\u0131 ekleme\/silme gibi\r\n    \/\/ listeyi de\u011fi\u015ftiren i\u015flemlerden sonra zorlaYenile=true ile tazelenir.\r\n    if (!zorlaYenile && hamKampanyaMusterileri && hamKampanyaMusterileri.length > 0) {\r\n      hedefMusteriListesiniCiz('kampanyaMusteriListesi', hamKampanyaMusterileri);\r\n      hedefMusteriListesiniCiz('ciroMusteriListesi', hamKampanyaMusterileri);\r\n      return;\r\n    }\r\n    googleAPI({ action: 'kullanicilari_listele' }).then(function(data) {\r\n      if (data.durum !== 'basarili') return;\r\n      hamKampanyaMusterileri = (data.kullanicilar || []).filter(function(k) { return k.rol.toLowerCase() === 'acente' || k.rol.toLowerCase() === 'yat'; });\r\n      hedefMusteriListesiniCiz('kampanyaMusteriListesi', hamKampanyaMusterileri);\r\n      hedefMusteriListesiniCiz('ciroMusteriListesi', hamKampanyaMusterileri);\r\n    }).catch(function() {});\r\n  };\r\n\r\n  function hedefMusteriListesiniCiz(containerId, liste) {\r\n    var alan = document.getElementById(containerId);\r\n    if (!alan) return;\r\n    if (liste.length === 0) { alan.innerHTML = '<span style=\"color:#999;\">Kay\u0131tl\u0131 m\u00fc\u015fteri yok.<\/span>'; return; }\r\n    var html = '';\r\n    liste.forEach(function(k) {\r\n      html += `<label style=\"display:flex; align-items:center; gap:6px; padding:4px 0; font-size:13px; cursor:pointer;\"><input type=\"checkbox\" class=\"${containerId}-kutu\" value=\"${k.kullanici_adi}\"> ${k.gercek_isim} <span style=\"color:#999; font-size:11px;\">(${k.isletme_tipi || rolGosterimAdi(k.rol)})<\/span><\/label>`;\r\n    });\r\n    alan.innerHTML = html;\r\n  }\r\n\r\n  window.kampanyaMusteriListesiniFiltrele = function() {\r\n    var terim = document.getElementById('kampanyaMusteriArama').value.trim().toLowerCase();\r\n    var filtreli = !terim ? hamKampanyaMusterileri : hamKampanyaMusterileri.filter(function(k) { return k.gercek_isim.toLowerCase().indexOf(terim) !== -1; });\r\n    hedefMusteriListesiniCiz('kampanyaMusteriListesi', filtreli);\r\n  };\r\n\r\n  window.ciroMusteriListesiniFiltrele = function() {\r\n    var terim = document.getElementById('ciroMusteriArama').value.trim().toLowerCase();\r\n    var filtreli = !terim ? hamKampanyaMusterileri : hamKampanyaMusterileri.filter(function(k) { return k.gercek_isim.toLowerCase().indexOf(terim) !== -1; });\r\n    hedefMusteriListesiniCiz('ciroMusteriListesi', filtreli);\r\n  };\r\n\r\n  window.kampanyaFormGuncelle = function() {\r\n    var kapsam = document.getElementById('kampanyaKapsam').value;\r\n    var tip = document.getElementById('kampanyaTip').value;\r\n    document.getElementById('kampanyaKategoriAlani').style.display = (kapsam === 'kategori' || kapsam === 'urun') ? 'block' : 'none';\r\n    document.getElementById('kampanyaUrunAlani').style.display = (kapsam === 'urun') ? 'block' : 'none';\r\n    if (tip === 'sabit_fiyat' && kapsam !== 'urun') {\r\n      document.getElementById('kampanyaKapsam').value = 'urun';\r\n      kampanyaFormGuncelle();\r\n    }\r\n  };\r\n\r\n  window.kampanyaOlustur = function() {\r\n    var ad = document.getElementById('kampanyaAd').value.trim();\r\n    var tip = document.getElementById('kampanyaTip').value;\r\n    var deger = document.getElementById('kampanyaDeger').value;\r\n    var kapsam = document.getElementById('kampanyaKapsam').value;\r\n    var sonucAlani = document.getElementById('kampanyaSonucAlani');\r\n\r\n    var hedefIsletme = []; document.querySelectorAll('.kampanya-hedef-isletme:checked').forEach(function(k) { hedefIsletme.push(k.value); });\r\n    var hedefKullanicilar = []; document.querySelectorAll('.kampanyaMusteriListesi-kutu:checked').forEach(function(k) { hedefKullanicilar.push(k.value); });\r\n\r\n    if (!ad) { sonucAlani.innerHTML = '<span style=\"color:red;\">Kampanya ad\u0131 gerekli.<\/span>'; return; }\r\n    if (!deger || metniSayiyaCevir(deger) <= 0) { sonucAlani.innerHTML = '<span style=\"color:red;\">Ge\u00e7erli bir de\u011fer gir.<\/span>'; return; }\r\n    if (kapsam !== 'siparis' && !document.getElementById('kampanyaKategori').value.trim()) { sonucAlani.innerHTML = '<span style=\"color:red;\">Kategori ad\u0131 gerekli.<\/span>'; return; }\r\n    if (kapsam === 'urun' && (!document.getElementById('kampanyaUrunAdi').value.trim() || !document.getElementById('kampanyaBirim').value.trim())) { sonucAlani.innerHTML = '<span style=\"color:red;\">\u00dcr\u00fcn ad\u0131 ve birim gerekli.<\/span>'; return; }\r\n    if (hedefIsletme.length === 0 && hedefKullanicilar.length === 0) { sonucAlani.innerHTML = '<span style=\"color:red;\">En az bir hedef (kullan\u0131c\u0131 tipi\/m\u00fc\u015fteri) se\u00e7.<\/span>'; return; }\r\n\r\n    showLoading('Kampanya olu\u015fturuluyor...');\r\n    googleAPI({\r\n      action: 'kampanya_ekle', ad: ad, tip: tip, deger: deger, kapsam: kapsam,\r\n      kategori: document.getElementById('kampanyaKategori').value.trim(),\r\n      urun_adi: document.getElementById('kampanyaUrunAdi').value.trim(),\r\n      birim: document.getElementById('kampanyaBirim').value.trim(),\r\n      baslangic: document.getElementById('kampanyaBaslangic').value,\r\n      bitis: document.getElementById('kampanyaBitis').value,\r\n      hedef_isletme_tipleri: hedefIsletme, hedef_kullanicilar: hedefKullanicilar\r\n    }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') {\r\n        sonucAlani.innerHTML = '<span style=\"color:green; font-weight:bold;\">\u2705 Olu\u015fturuldu!<\/span>';\r\n        ['kampanyaAd', 'kampanyaDeger', 'kampanyaKategori', 'kampanyaUrunAdi', 'kampanyaBirim', 'kampanyaBaslangic', 'kampanyaBitis'].forEach(function(id) { document.getElementById(id).value = ''; });\r\n        document.querySelectorAll('.kampanya-hedef-isletme, .kampanyaMusteriListesi-kutu').forEach(function(k) { k.checked = false; });\r\n        kampanyalariListele();\r\n      } else { sonucAlani.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>'; }\r\n    }).catch(function(err) { hideLoading(); sonucAlani.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  };\r\n\r\n  window.kampanyalariListele = function() {\r\n    var suAdminMiOnce = aktifKullanici && aktifKullanici.rol && aktifKullanici.rol.toLowerCase() === 'super admin';\r\n    var alan = document.getElementById(suAdminMiOnce ? 'kampanyaListesiAlani' : 'admKampanyaListesiAlani');\r\n    if (!alan) return;\r\n    alan.innerHTML = 'Y\u00fckleniyor...';\r\n    var isimHaritasi = { 'super admin': 'S\u00fcper Admin', 'admin': 'Admin', 'acente': 'Acente', 'yat': 'Yat' };\r\n    googleAPI({ action: 'kampanyalari_listele' }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alan.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>'; return; }\r\n      var liste = data.kampanyalar || [];\r\n      if (liste.length === 0) { alan.innerHTML = 'Hen\u00fcz kampanya yok.'; return; }\r\n      var html = '<table style=\"width:100%; min-width:750px; border-collapse:collapse; text-align:left; font-size:13px; white-space:nowrap;\"><thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:8px;\">Ad<\/th><th style=\"padding:8px;\">Tip\/De\u011fer<\/th><th style=\"padding:8px;\">Kapsam<\/th><th style=\"padding:8px;\">Hedef<\/th><th style=\"padding:8px;\">Tarih<\/th><th style=\"padding:8px; text-align:center;\">Durum<\/th><th style=\"padding:8px; text-align:center;\">\u0130\u015flem<\/th><\/tr><\/thead><tbody>';\r\n      liste.forEach(function(k) {\r\n        var tipGosterim = k.tip === 'yuzde' ? '%' + temizSayi(k.deger) : (k.tip === 'tutar' ? temizSayi(k.deger) + ' TL' : temizSayi(k.deger) + ' TL (sabit)');\r\n        var kapsamGosterim = k.kapsam === 'siparis' ? 'Sipari\u015f Geneli' : (k.kapsam === 'kategori' ? 'Kat: ' + k.kategori : '\u00dcr\u00fcn: ' + k.urun_adi);\r\n        \/\/ \ud83c\udff7\ufe0f Hedef kitle s\u00fctununda sadece Kullan\u0131c\u0131 Tipi g\u00f6sterilir \u2014 kampanyalar\/hedefler\r\n        \/\/ pratikte hep m\u00fc\u015fteri tipi baz\u0131nda kurulur, rol\/\u00f6zel-ki\u015fi bilgisi burada i\u015fe yaram\u0131yor.\r\n        var hedefGosterim = (k.hedef_isletme_tipleri || '').split(',').map(function(s) { return s.trim(); }).filter(Boolean).join(', ') || '-';\r\n        var tarihGosterim = (k.baslangic || k.bitis) ? (k.baslangic || '...') + ' \u2192 ' + (k.bitis || 's\u00fcresiz') : 'S\u00fcresiz';\r\n        var durumRengi = k.aktif == 1 ? '#28a745' : '#999';\r\n        var durumMetin = k.aktif == 1 ? 'Aktif' : 'Pasif';\r\n        var suAdminMi = aktifKullanici.rol.toLowerCase() === 'super admin';\r\n        var islemHucresi = suAdminMi ? `<td style=\"padding:8px; text-align:center;\"><div style=\"display:flex; gap:4px; justify-content:center;\"><button type=\"button\" onclick=\"kampanyaDurumDegistir(${k.id}, ${k.aktif == 1 ? 0 : 1})\" style=\"background:#f1ede0; border:none; padding:5px 8px; border-radius:4px; cursor:pointer; font-size:11px;\">${k.aktif == 1 ? 'Pasifle\u015ftir' : 'Aktifle\u015ftir'}<\/button><button type=\"button\" onclick=\"kampanyaSilTikla(${k.id})\" style=\"background:#dc3545; color:#fff; border:none; padding:5px 8px; border-radius:4px; cursor:pointer; font-size:11px;\">Sil<\/button><\/div><\/td>` : '<td><\/td>';\r\n        html += `<tr style=\"border-bottom:1px solid #eee; ${k.aktif == 1 ? '' : 'opacity:0.55;'}\"><td style=\"padding:8px; font-weight:bold;\">${k.ad}<\/td><td style=\"padding:8px;\">${tipGosterim}<\/td><td style=\"padding:8px;\">${kapsamGosterim}<\/td><td style=\"padding:8px; font-size:12px; color:#666;\">${hedefGosterim}<\/td><td style=\"padding:8px; font-size:12px;\">${tarihGosterim}<\/td><td style=\"padding:8px; text-align:center;\"><span style=\"color:${durumRengi}; font-weight:bold;\">${durumMetin}<\/span><\/td>${islemHucresi}<\/tr>`;\r\n      });\r\n      html += '<\/tbody><\/table>';\r\n      alan.innerHTML = html;\r\n    }).catch(function(err) { alan.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  };\r\n\r\n  window.kampanyaDurumDegistir = function(id, yeniDurum) {\r\n    googleAPI({ action: 'kampanya_durum_degistir', id: id, aktif: yeniDurum }).then(function(data) {\r\n      if (data.durum === 'basarili') kampanyalariListele(); else alert(data.mesaj);\r\n    }).catch(function(err) { alert(err); });\r\n  };\r\n\r\n  window.kampanyaSilTikla = function(id) {\r\n    if (!confirm('Bu kampanyay\u0131 kal\u0131c\u0131 olarak silmek istedi\u011fine emin misin?')) return;\r\n    googleAPI({ action: 'kampanya_sil', id: id }).then(function(data) {\r\n      if (data.durum === 'basarili') kampanyalariListele(); else alert(data.mesaj);\r\n    }).catch(function(err) { alert(err); });\r\n  };\r\n\r\n  window.kampanyalariTopluPasiflestir = function() {\r\n    if (!confirm('T\u00dcM aktif kampanyalar pasifle\u015ftirilecek (sezon sonu temizli\u011fi). Kay\u0131tlar silinmez, sadece pasif olur. Emin misin?')) return;\r\n    showLoading('Kampanyalar pasifle\u015ftiriliyor...');\r\n    googleAPI({ action: 'kampanyalari_toplu_pasiflestir' }).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') { alert(data.kapatilan + ' kampanya pasifle\u015ftirildi.'); kampanyalariListele(); }\r\n      else alert(data.mesaj);\r\n    }).catch(function(err) { hideLoading(); alert(err); });\r\n  };\r\n\r\n  \/\/ ============================================================\r\n  \/\/ \ud83c\udfaf C\u0130RO HEDEFLER\u0130\r\n  \/\/ ============================================================\r\n  window.ciroFormGuncelle = function() {\r\n    var donemselMi = document.getElementById('ciroHedefTipi').value === 'donemsel';\r\n    document.getElementById('ciroGunSayisiAlani').style.display = donemselMi ? 'block' : 'none';\r\n    document.getElementById('ciroBitisTarihiAlani').style.display = donemselMi ? 'none' : 'block';\r\n    document.getElementById('ciroOdulYuzdeAlani').style.display = donemselMi ? 'block' : 'none';\r\n    document.getElementById('ciroGecerlilikAlani').style.display = donemselMi ? 'block' : 'none';\r\n    document.getElementById('ciroOdulTutarAlani').style.display = donemselMi ? 'none' : 'block';\r\n    document.getElementById('ciroBirlesirAlani').style.display = donemselMi ? 'block' : 'none';\r\n  };\r\n\r\n  window.ciroHedefiOlustur = function() {\r\n    var ad = document.getElementById('ciroAd').value.trim();\r\n    var hedefTipi = document.getElementById('ciroHedefTipi').value;\r\n    var hedefCiro = document.getElementById('ciroHedefCiro').value;\r\n    var sonucAlani = document.getElementById('ciroSonucAlani');\r\n\r\n    var hedefIsletme = []; document.querySelectorAll('.ciro-hedef-isletme:checked').forEach(function(k) { hedefIsletme.push(k.value); });\r\n    var hedefKullanicilar = []; document.querySelectorAll('.ciroMusteriListesi-kutu:checked').forEach(function(k) { hedefKullanicilar.push(k.value); });\r\n\r\n    if (!ad) { sonucAlani.innerHTML = '<span style=\"color:red;\">Hedef ad\u0131 gerekli.<\/span>'; return; }\r\n    if (!hedefCiro || metniSayiyaCevir(hedefCiro) <= 0) { sonucAlani.innerHTML = '<span style=\"color:red;\">Ge\u00e7erli bir hedef ciro gir.<\/span>'; return; }\r\n    if (hedefIsletme.length === 0 && hedefKullanicilar.length === 0) { sonucAlani.innerHTML = '<span style=\"color:red;\">En az bir hedef se\u00e7.<\/span>'; return; }\r\n\r\n    var payload = {\r\n      action: 'ciro_hedefi_ekle', ad: ad, hedef_tipi: hedefTipi, hedef_ciro: hedefCiro,\r\n      hedef_isletme_tipleri: hedefIsletme, hedef_kullanicilar: hedefKullanicilar\r\n    };\r\n    if (hedefTipi === 'donemsel') {\r\n      payload.degerlendirme_gun_sayisi = document.getElementById('ciroGunSayisi').value;\r\n      payload.odul_tipi = 'indirim';\r\n      payload.odul_degeri = document.getElementById('ciroOdulYuzde').value;\r\n      payload.indirim_gecerlilik_gun = document.getElementById('ciroGecerlilikGun').value;\r\n      payload.diger_kampanyalarla_birlesir = document.getElementById('ciroBirlesir').checked;\r\n    } else {\r\n      payload.hedef_bitis_tarihi = document.getElementById('ciroBitisTarihi').value;\r\n      payload.odul_tipi = 'hediye_ceki';\r\n      payload.odul_degeri = document.getElementById('ciroOdulTutar').value;\r\n      if (!payload.hedef_bitis_tarihi) { sonucAlani.innerHTML = '<span style=\"color:red;\">Hedef tarihi se\u00e7melisin.<\/span>'; return; }\r\n    }\r\n    if (!payload.odul_degeri || metniSayiyaCevir(payload.odul_degeri) <= 0) { sonucAlani.innerHTML = '<span style=\"color:red;\">Ge\u00e7erli bir \u00f6d\u00fcl de\u011feri gir.<\/span>'; return; }\r\n\r\n    showLoading('Hedef olu\u015fturuluyor...');\r\n    googleAPI(payload).then(function(data) {\r\n      hideLoading();\r\n      if (data.durum === 'basarili') {\r\n        sonucAlani.innerHTML = '<span style=\"color:green; font-weight:bold;\">\u2705 Olu\u015fturuldu!<\/span>';\r\n        ['ciroAd', 'ciroHedefCiro', 'ciroOdulYuzde', 'ciroOdulTutar', 'ciroBitisTarihi'].forEach(function(id) { document.getElementById(id).value = ''; });\r\n        document.getElementById('ciroGunSayisi').value = '7'; document.getElementById('ciroGecerlilikGun').value = '7';\r\n        document.getElementById('ciroBirlesir').checked = false;\r\n        document.querySelectorAll('.ciro-hedef-isletme, .ciroMusteriListesi-kutu').forEach(function(k) { k.checked = false; });\r\n        ciroHedefleriListele();\r\n      } else { sonucAlani.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>'; }\r\n    }).catch(function(err) { hideLoading(); sonucAlani.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  };\r\n\r\n  window.ciroHedefleriListele = function() {\r\n    var suAdminMiOnce2 = aktifKullanici && aktifKullanici.rol && aktifKullanici.rol.toLowerCase() === 'super admin';\r\n    var alan = document.getElementById(suAdminMiOnce2 ? 'ciroHedefListesiAlani' : 'admCiroHedefListesiAlani');\r\n    if (!alan) return;\r\n    alan.innerHTML = 'Y\u00fckleniyor...';\r\n    var isimHaritasi = { 'super admin': 'S\u00fcper Admin', 'admin': 'Admin', 'acente': 'Acente', 'yat': 'Yat' };\r\n    googleAPI({ action: 'ciro_hedefleri_listele' }).then(function(data) {\r\n      if (data.durum !== 'basarili') { alan.innerHTML = '<span style=\"color:red;\">' + data.mesaj + '<\/span>'; return; }\r\n      var liste = data.hedefler || [];\r\n      if (liste.length === 0) { alan.innerHTML = 'Hen\u00fcz ciro hedefi yok.'; return; }\r\n      var html = '<table style=\"width:100%; min-width:750px; border-collapse:collapse; text-align:left; font-size:13px; white-space:nowrap;\"><thead><tr style=\"background:#f3f0e6; border-bottom:2px solid #ccc;\"><th style=\"padding:8px;\">Ad<\/th><th style=\"padding:8px;\">Tip<\/th><th style=\"padding:8px;\">Hedef Ciro<\/th><th style=\"padding:8px;\">\u00d6d\u00fcl<\/th><th style=\"padding:8px;\">Hedef Kitle<\/th><th style=\"padding:8px; text-align:center;\">Durum<\/th><th style=\"padding:8px; text-align:center;\">\u0130\u015flem<\/th><\/tr><\/thead><tbody>';\r\n      liste.forEach(function(h) {\r\n        var tipGosterim = h.hedef_tipi === 'donemsel' ? ('D\u00f6nemsel (' + h.degerlendirme_gun_sayisi + ' g\u00fcn)') : ('Tek Seferlik (' + (h.hedef_bitis_tarihi || '-') + ')');\r\n        var odulGosterim = h.odul_tipi === 'indirim' ? ('%' + temizSayi(h.odul_degeri) + ' indirim') : (temizSayi(h.odul_degeri) + ' TL hediye \u00e7eki');\r\n        \/\/ \ud83c\udff7\ufe0f Hedef kitle s\u00fctununda sadece Kullan\u0131c\u0131 Tipi g\u00f6sterilir \u2014 kampanyalar\/hedefler\r\n        \/\/ pratikte hep m\u00fc\u015fteri tipi baz\u0131nda kurulur, rol\/\u00f6zel-ki\u015fi bilgisi burada i\u015fe yaram\u0131yor.\r\n        \/\/ \ud83c\udfaf Ciro hedefleri hem Kullan\u0131c\u0131 Tipi baz\u0131nda hem de belirli m\u00fc\u015fteriye \u00f6zel (kapasitesine\r\n        \/\/ g\u00f6re) kurulabilir \u2014 bu y\u00fczden Kampanyalar'dan farkl\u0131 olarak burada ikisi de g\u00f6sterilir.\r\n        var hedefParcalari = [];\r\n        var tipGosterimi = (h.hedef_isletme_tipleri || '').split(',').map(function(s) { return s.trim(); }).filter(Boolean).join(', ');\r\n        if (tipGosterimi) hedefParcalari.push(tipGosterimi);\r\n        if (h.hedef_kullanicilar) {\r\n          var isimler = h.hedef_kullanicilar.split(',').map(function(kadi) {\r\n            var musteri = hamKampanyaMusterileri.find(function(m) { return m.kullanici_adi === kadi.trim(); });\r\n            return musteri ? musteri.gercek_isim : kadi.trim();\r\n          });\r\n          hedefParcalari.push(isimler.join(', '));\r\n        }\r\n        var hedefGosterim = hedefParcalari.join(' | ') || '-';\r\n        var durumRengi = h.aktif == 1 ? '#28a745' : '#999';\r\n        var durumMetin = h.aktif == 1 ? 'Aktif' : 'Pasif';\r\n        var suAdminMi2 = aktifKullanici.rol.toLowerCase() === 'super admin';\r\n        var islemHucresi2 = suAdminMi2 ? `<td style=\"padding:8px; text-align:center;\"><div style=\"display:flex; gap:4px; justify-content:center;\"><button type=\"button\" onclick=\"ciroHedefiDurumDegistir(${h.id}, ${h.aktif == 1 ? 0 : 1})\" style=\"background:#f1ede0; border:none; padding:5px 8px; border-radius:4px; cursor:pointer; font-size:11px;\">${h.aktif == 1 ? 'Pasifle\u015ftir' : 'Aktifle\u015ftir'}<\/button><button type=\"button\" onclick=\"ciroHedefiSilTikla(${h.id})\" style=\"background:#dc3545; color:#fff; border:none; padding:5px 8px; border-radius:4px; cursor:pointer; font-size:11px;\">Sil<\/button><\/div><\/td>` : '<td><\/td>';\r\n        html += `<tr style=\"border-bottom:1px solid #eee; ${h.aktif == 1 ? '' : 'opacity:0.55;'}\"><td style=\"padding:8px; font-weight:bold;\">${h.ad}<\/td><td style=\"padding:8px; font-size:12px;\">${tipGosterim}<\/td><td style=\"padding:8px;\">${sayiyiMetneCevir(h.hedef_ciro)} TL<\/td><td style=\"padding:8px;\">${odulGosterim}<\/td><td style=\"padding:8px; font-size:12px; color:#666;\">${hedefGosterim}<\/td><td style=\"padding:8px; text-align:center;\"><span style=\"color:${durumRengi}; font-weight:bold;\">${durumMetin}<\/span><\/td>${islemHucresi2}<\/tr>`;\r\n      });\r\n      html += '<\/tbody><\/table>';\r\n      alan.innerHTML = html;\r\n    }).catch(function(err) { alan.innerHTML = '<span style=\"color:red;\">Hata: ' + err + '<\/span>'; });\r\n  };\r\n\r\n  window.ciroHedefiDurumDegistir = function(id, yeniDurum) {\r\n    googleAPI({ action: 'ciro_hedefi_durum_degistir', id: id, aktif: yeniDurum }).then(function(data) {\r\n      if (data.durum === 'basarili') ciroHedefleriListele(); else alert(data.mesaj);\r\n    }).catch(function(err) { alert(err); });\r\n  };\r\n\r\n  window.ciroHedefiSilTikla = function(id) {\r\n    if (!confirm('Bu ciro hedefini kal\u0131c\u0131 olarak silmek istedi\u011fine emin misin?')) return;\r\n    googleAPI({ action: 'ciro_hedefi_sil', id: id }).then(function(data) {\r\n      if (data.durum === 'basarili') ciroHedefleriListele(); else alert(data.mesaj);\r\n    }).catch(function(err) { alert(err); });\r\n  };\r\n<\/script>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-823","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kraken B2B - Kraken Bodrum<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/krakenbodrum.com\/tr\/krakenb2b\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kraken B2B - Kraken Bodrum\" \/>\n<meta property=\"og:url\" content=\"https:\/\/krakenbodrum.com\/tr\/krakenb2b\/\" \/>\n<meta property=\"og:site_name\" content=\"Kraken Bodrum\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-15T22:00:18+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/krakenbodrum.com\\\/krakenb2b\\\/\",\"url\":\"https:\\\/\\\/krakenbodrum.com\\\/krakenb2b\\\/\",\"name\":\"Kraken B2B - Kraken Bodrum\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/krakenbodrum.com\\\/#website\"},\"datePublished\":\"2026-07-21T12:01:26+00:00\",\"dateModified\":\"2026-08-15T22:00:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/krakenbodrum.com\\\/krakenb2b\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/krakenbodrum.com\\\/krakenb2b\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/krakenbodrum.com\\\/krakenb2b\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/krakenbodrum.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kraken B2B\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/krakenbodrum.com\\\/#website\",\"url\":\"https:\\\/\\\/krakenbodrum.com\\\/\",\"name\":\"Kraken Bodrum\",\"description\":\"Premium Provisioning\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/krakenbodrum.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kraken B2B - Kraken Bodrum","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/krakenbodrum.com\/tr\/krakenb2b\/","og_locale":"tr_TR","og_type":"article","og_title":"Kraken B2B - Kraken Bodrum","og_url":"https:\/\/krakenbodrum.com\/tr\/krakenb2b\/","og_site_name":"Kraken Bodrum","article_modified_time":"2026-08-15T22:00:18+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/krakenbodrum.com\/krakenb2b\/","url":"https:\/\/krakenbodrum.com\/krakenb2b\/","name":"Kraken B2B - Kraken Bodrum","isPartOf":{"@id":"https:\/\/krakenbodrum.com\/#website"},"datePublished":"2026-07-21T12:01:26+00:00","dateModified":"2026-08-15T22:00:18+00:00","breadcrumb":{"@id":"https:\/\/krakenbodrum.com\/krakenb2b\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/krakenbodrum.com\/krakenb2b\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/krakenbodrum.com\/krakenb2b\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/krakenbodrum.com\/"},{"@type":"ListItem","position":2,"name":"Kraken B2B"}]},{"@type":"WebSite","@id":"https:\/\/krakenbodrum.com\/#website","url":"https:\/\/krakenbodrum.com\/","name":"Kraken Bodrum","description":"Premium Provisioning","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/krakenbodrum.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"}]}},"_links":{"self":[{"href":"https:\/\/krakenbodrum.com\/tr\/wp-json\/wp\/v2\/pages\/823","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/krakenbodrum.com\/tr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/krakenbodrum.com\/tr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/krakenbodrum.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/krakenbodrum.com\/tr\/wp-json\/wp\/v2\/comments?post=823"}],"version-history":[{"count":41,"href":"https:\/\/krakenbodrum.com\/tr\/wp-json\/wp\/v2\/pages\/823\/revisions"}],"predecessor-version":[{"id":891,"href":"https:\/\/krakenbodrum.com\/tr\/wp-json\/wp\/v2\/pages\/823\/revisions\/891"}],"wp:attachment":[{"href":"https:\/\/krakenbodrum.com\/tr\/wp-json\/wp\/v2\/media?parent=823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}