EMPIRE NEXUS

ONLINE ECONOMY SIMULATOR · ARA KONTROL 31.10.2026
Seviye 1 · 0 XP
Kendi ekonomik imparatorluğunu kur

Bir atölyeyle başla.
Bir imparatorluk kur.

Kaynak üret, fabrikalarını büyüt, pazarda ticaret yap ve şirket değerini yükselt. İlerlemen bu cihazda otomatik kaydedilir.

₺ 25.000
Kullanılabilir sermaye
₺ 25.000
Nakit + varlıklar
0 birim
Satışa hazır
₺ 0
Gerçekleşen net sonuç

İmparatorluğun

Kuruluş günü
⛏️

Demir madeni

Ham demir üretir. Üretim döngüsü başına 5 birim.

Sahip olunan0
🏭

Çelik fabrikası

Demiri çeliğe dönüştürür. Her döngüde 3 demir kullanır.

Sahip olunan0
⚙️

Makine atölyesi

Çelikten makine üretir. Daha yüksek satış değeri.

Sahip olunan0
ℹ️ Bu ilk sürüm yerel oynanabilir prototiptir. Gerçek çok oyunculu sunucu ve hesap sistemi henüz bağlı değildir. Slot bölümü yalnızca sanal oyun kredisi kullanır; gerçek para yatırma veya çekme yoktur.

🏭 Üretim merkezi

Kaynak → ürün → gelir

Otomatik üretim döngüsü

Her tıklama sahip olduğun tesisleri bir tur çalıştırır.

🔩
0
0
0
0

Tesis yönetimi

Varlıklarını genişlet

Üretim geçmişi

Son hareketler

🌾 Tarım ve hayvancılık

Çiftlik yönetimi
🌱

Tarla

Buğday ve mısır ek, süre sonunda hasat et.

Tarla sayısı0
🐔

Kümes

Tavuklar yem tüketerek yumurta üretir.

Tavuk sayısı0

Tohum ve hasat

Bir tarla bir seferde tek ürün yetiştirir. Hasat, depodaki stoklara eklenir.

Buğday tohumu0
Mısır tohumu0

Ekim alanları

Hasat bekleniyor

Hayvancılık

Yumurta üretimi için tavuklara yem gerekir. Yem, buğday stokundan karşılanır.

Yumurta stoku0
Hayvan yemi0
Ürünler genel depoya eklenir. Bu sürümde hasat ve yumurta üretimi oyun içi zaman döngüsüyle çalışır; gerçek zamanlı çok oyunculu ekonomi değildir.

🛒 Küresel pazar

Örnek piyasa fiyatları

Ürünlerini sabit prototip fiyatlarından sat. Pazar, bu sürümde simüle edilmiştir; diğer oyunculara bağlı değildir.

🏬 Toptancı alım masası

Eksik hammaddeni toplu al; miktar arttıkça indirim yükselir. Depo kapasitesi satın alımı sınırlar.

Teklif hesaplanıyor…

📈 Bölgesel piyasa ve satış emirleri

Talep ve arz göstergelerine göre fiyatlar periyodik değişir. Satış emri, seçtiğin miktarı hedef fiyata ulaşınca satar.

🌍 Şehir bazlı ticaret ve ihracat sözleşmeleri

Şehirlerin talep katsayıları farklıdır. Sözleşmeyi kabul ettiğinde ürün depodan ayrılır; teslimat süresi sonunda ödeme ve itibar puanı kazanırsın.

Sözleşme teklifi hesaplanıyor…

Aktif ve tamamlanan sözleşmeler

🏅 Ticaret itibarı0

📊 Piyasa görünümü

Gösterge fiyatları
⛓️

Demir endeksi

₺ 180 / birim

Sanayi hammaddesi

🧱

Çelik endeksi

₺ 420 / birim

İşlenmiş malzeme

⚙️

Makine endeksi

₺ 1.200 / birim

Nihai ürün

🏦 Nexus Bank

Sanal finans araçları
💳

Vadeli hesap

10 tur boyunca paranı kilitle. Vade sonunda %3 simüle getiri.

Vadeli bakiye: ₺ 0
🧾

İşletme kredisi

₺ 5.000 kredi al; geri ödeme ₺ 5.500. Prototipte bir defa kullanılabilir.

Kredi durumuKullanılabilir

📑 Kredi seçenekleri

Vade ve faiz planı

Başlangıç kredisi

₺10.000 anapara · 7 gün vade · %4 sabit faiz

Büyüme kredisi

₺30.000 anapara · 14 gün vade · %8 sabit faiz

Yatırım kredisi

₺75.000 anapara · 30 gün vade · %15 sabit faiz

📊 Borç ve nakit akışı

Şirket bilançosu
₺ 0
₺ 0
₺ 0
₺ 0

Aktif krediler

Aktif kredi yok.

Finans hareketleri

🛡️ Finansal sağlık ve kurtarma

Nakit akışı tahmini
₺ 0
Düşük
₺ 0
% 0

Nakit akışı tahmini

Son dönem faaliyet kârı, sabit giderler ve yaklaşan kredi ödemelerine göre yaklaşık projeksiyon.

Banka özellikleri yalnızca oyun içi ekonomi simülasyonudur; gerçek finansal ürün veya yatırım hizmeti değildir.

📈 Nexus Borsası

Simüle hisse piyasası

NEX Industrial

Sanayi ve üretim şirketleri endeksi

₺ 250
Günlük değişim: +0%
Portföyün: 0 hisseDeğer: ₺ 0
₺ 0
₺ 0
—
0

Şirket performansı

Fiyat; şirket kârı, üretim, satışlar ve piyasa dalgalanmasıyla değişir.

Temettü oranı%0
Borsa fiyatı ve temettüler yalnızca oyun içi simülasyondur; gerçek borsa verisi kullanılmaz.

🎰 Eğlence salonu

Yalnızca sanal kredi
NEXUS ORIGINAL MINI GAME

⚡ Olympus Fortune

Şirket kasandan eğlence cüzdanına aktarım yap. Aktarımda %5 komisyon kesilir; oyun kazançları eğlence cüzdanında kalır.

Ana şirket kasası
₺ 25.000
Eğlence sanal cüzdanı
₺ 1.000

Cüzdana para aktar

Komisyon: %5 · 1.000 aktarımda 50 kesilir, 950 cüzdana geçer.
Ana kasa: ₺ 25.000 · Aktarım komisyonu toplamı: ₺ 0

Kazancı ana kasaya aktar

Geri aktarım komisyonu: %5 · 1.000 aktarımda 50 kesilir, 950 ana kasaya geçer.
Eğlence bakiyesi: ₺ 1.000 · Ana kasaya geçen net tutar: ₺ 25.000
Geri aktarım komisyonu toplamı: ₺ 0

🛡️ Cüzdan kontrolü

Kontrol bekleniyor.

🔄 Cüzdan hareketleri

Her işlemde brüt tutar, %5 komisyon ve net geçen tutar ayrı kaydedilir.
Henüz aktarım yapılmadı.
Bahis miktarı25 kredi
Şansını dene — yalnızca sanal krediyle.
0
₺ 0
₺ 0
₺ 0

🎯 Oyun bazında performans

⚡ Olympus Fortune
Henüz veri yok
🍬 Sweet Cascade
Henüz veri yok
Net sonuç = oyun kazançları − normal bahisler − bonus satın alma bedelleri. Ücretsiz turlar ayrıca bahis yazılmaz.

🏆 Tamamlanan bonus serileri

Henüz bonus tamamlanmadı.

🧾 Bonus satın alma kayıtları

Henüz bonus satın alınmadı.

Son oyun geçmişi

Henüz oyun oynanmadı.
Bonus satın alma bedeli
₺ 2.500
Mevcut bahsin 100 katı · Gates 15 / Sweet 10 ücretsiz tur
Ücretsiz tur
0
6×5 ızgara · 8+ aynı sembol her yerde ödeme yapar · 🌟 joker · scatter ile ücretsiz turlar · çarpan küreleri/bombaları ve zincirleme düşüş. Mekanikler tanıdık cascade slot türünden esinlenir; ödeme ve rastgelelik modeli özgündür ve lisanslı oyunların algoritmasını kopyalamaz.
Yalnızca oyunun sanal şirket nakdi kullanılır. Gerçek para yatırma, çekme, ödül veya gerçek değerli kazanç yoktur. Sonuçlar rastgele simüle edilir.

📊 Ödeme tablosu

Olympus Fortune

Aynı sembolden gelen toplam adet sayılır; semboller bitişik olmak zorunda değildir. 🌟 joker, normal sembol sayısına eklenir. Bu tablo oyunun özgün sanal kredi katsayılarını gösterir.

Çarpan küresi/bombası: Gates ×2–×500 · Sweet ×2–×100. Aynı düşüşte bulunan çarpanlar toplanır ve o düşüşün kazancına uygulanır. Tur başına simülasyon kazanç sınırı: bahis ×5.000.

🌾 Tarım ve hayvancılık

Çiftlik yönetimi

🌱 Tarla

Buğday tohumu: ₺ 120 · Hasat: 4 birim · Süre: 60 sn
Ekili tarlaBoş

🐔 Kümes

Tavuk satın al: ₺ 500 · Yumurta üretimi: 1 adet / 90 sn / tavuk
Tavuk sayısı0
Yumurta stoğu0

📦 Çiftlik deposu

Tarım ürünleri

Tarım ürünleri genel depodan ayrı tutulur. Hasat ve yumurta satışları şirket kasasına işlenir.

🏭 Gıda işleme tesisi

Çiftlikten pazara üretim zinciri
🌾

Değirmen

Buğdayı una dönüştürür. 5 buğday → 4 un.

Değirmen0
🍞

Fırın

Unu ekmek haline getirir. 3 un → 5 ekmek.

Fırın0

İşlenmiş ürün stoğu

Un0
Ekmek0
Üretim geçmişi0 parti

İşlenmiş ürünler genel depoya eklenir ve pazarda satılabilir. Her parti anında tamamlanır; tesis sayısı parti kapasitesini belirler.

🐄

Süt çiftliği

İnek satın al, buğdayla besle ve süt üret.

İnek0
Süt stoğu0
🧀

Peynir imalathanesi

4 sütü işleyerek 2 peynir üretir.

İmalathane0
Peynir stoğu0
Üretim zinciri: Buğday → Un → Ekmek. Hammadde yetersizse işlem yapılmaz; stoklar eksiye düşmez.

🏪 Nexus mağazaları

Perakende işletme yönetimi
🏬

Mahalle mağazası

Ürünlerini müşterilere perakende fiyatla sat.

MağazaYok
🗄️

Raf kapasitesi

Her raf 20 ürünlük teşhir kapasitesi sağlar.

Raf2
🧑‍💼

Çalışanlar

Çalışanlar müşteri kapasitesini artırır. Maaşları her vardiyada ödenir.

Personel0
0
₺ 0
0 / 40
Bekliyor

Mağaza fiyat politikası

Fiyat çarpanı yükseldikçe birim kazanç artar, müşteri talebi azalabilir.

Fiyat çarpanı1.0x
Vardiyada mağaza, depodaki ekmek, peynir, yumurta ve diğer ürünleri raf kapasitesi ve personel sayısına göre satar. Çalışan başına vardiya maaşı ₺ 120.

Son mağaza hareketleri

🏙️ Şehir ve emlak yönetimi

Konum seç · arsa al · kira topla

Faaliyet şehrin

Şehirler farklı kira potansiyeli ve işletme avantajları sunar. Şehir değiştirmek mevcut mülklerini satmaz.

Seçili şehirAdana
Şehir katsayısı1.00x
0
₺ 0
₺ 0
0
🌳

Küçük arsa

Temel kira geliri sağlayan yatırım arsası.

₺ 8.000
🏢

Ticari bina

Daha yüksek kira, daha yüksek yatırım bedeli.

₺ 22.000
🏭

Sanayi tesisi arsası

Sanayi yatırımlarına uygun, yüksek getirili mülk.

₺ 35.000

Biriken kirayı tahsil et

Kira gerçek zamanlı olarak birikir; son tahsilattan itibaren hesaplanır.

Kira, yalnızca oyunun simülasyon geliridir. Şehir katsayısı kira hesabını etkiler; gerçek şehir piyasası verisi değildir.

Tapu ve mülkler

🏆 Görevler ve başarımlar

Hedefleri tamamla, ödül kazan
0/0
0/0
0
0

Günlük görevler

Her gün yenilenir

Kalıcı başarımlar

Bir kez kazanılır
Görev ödülleri oyun içi nakit ve XP'dir. Günlük görevler cihazın yerel tarihine göre yenilenir; ilerleme bu tarayıcıdaki kayıt dosyasında tutulur.

👤 Oyuncu profili

Yerel kayıt

İstatistikler

Son işlemler

🚚 Şehirler arası ticaret ve ihracat

Yükle · sevk et · teslim al
0
0
₺ 0
0%
🚚

Hafif kamyon

Şehir içi ve kısa mesafe sevkiyatları hızlandırır.

₺ 6.000
🚛

Ağır nakliye aracı

Daha büyük yükleri daha kısa sürede taşır.

₺ 14.000

Yeni sevkiyat oluştur

Depodan ürün yüklenir. Teslimat süresince stoktan düşer; varışta ödeme yapılır.

Araç kapasitesi: hafif kamyon 100, ağır araç 300 birim. Sigorta gecikme riskine karşı teslimat primini korur; hızlı teslimat süreyi kısaltır.
0
₺ 0
0
₺ 0

Sevkiyat takibi

Aktif ve tamamlanan teslimatlar

🧪 Araştırma ve teknoloji

Kalıcı şirket geliştirmeleri

Ar-Ge laboratuvarı

Teknoloji yatırımları şirketinin tüm üretim ve ticaret faaliyetlerini geliştirir.

🔬
0
0
Teknolojiler kalıcıdır; satın alındıktan sonra kayıtlı oyunda etkileri devam eder. Etkiler birbirleriyle çarpanlı şekilde birikmez, ilgili bonuslar toplanır.

🏢 Şirket merkezi ve insan kaynakları

Organizasyon yönetimi
0
₺ 0
0%
₺ 0

Çalışan kadrosu

İşe al / işten çıkar

🏛️ Holding ve iştirak yönetimi

Grup şirketleri
₺ 0
0
₺ 0
₺ 0

Holding merkezini kur

Holding kurulduğunda iştirak açabilir, şube ağı oluşturabilir ve grup finansmanını yönetebilirsin.

Kuruluş bedeli₺ 50.000

Yeni iştirak kur

Grup içi finansman

İştirakler ve şube ağı

Yönetim ve değerleme
Henüz holding kurulmadı.

Grup raporu

Konsolide finansal görünüm
Holding kurulduğunda rapor burada görünür.
Maaşlar oyun içi saat üzerinden hesaplanır. Oyundan çıkıldığında geçen süre için de maaş tahakkuk eder. Yönetici kadrosu bakım giderlerini azaltır; mühendisler maden üretimine katkı sağlar.
// Financial resilience v1: forecast, solvency, restructuring and emergency liquidity. function financialSnapshot(){ensureBank();const active=s.bank.loans.filter(l=>!l.paid);const debt=active.reduce((a,l)=>a+l.balance+l.interest+(l.overdueFee||0),0);const overdue=active.filter(l=>Date.now()>l.due).length;const age=Math.max(1,(Date.now()-(s.bank.metricsAt||s.created||Date.now()))/86400000);const avgDaily=Math.max(0,(Number(s.profit)||0)/age);const fixedDaily=(Number(s.shop?.staff)||0)*35+(Number(s.buildings?.mine)||0)*20+(Number(s.buildings?.steel)||0)*45+(Number(s.buildings?.machine)||0)*80;const due7=active.filter(l=>l.duea+l.balance+l.interest+(l.overdueFee||0),0);const forecast=Math.round(s.cash+(avgDaily-fixedDaily)*7-due7);const assets=Math.max(1,s.cash+s.deposit+(s.shares||0)*sharePrice+(s.buildings.mine*4000+s.buildings.steel*8000+s.buildings.machine*15000));const solvency=Math.round((assets/(debt||1))*100);const risk=overdue?'Kritik':forecast<0?'Yüksek':solvency<120?'Orta':'Düşük';return {active,debt,overdue,avgDaily,fixedDaily,due7,forecast,assets,solvency,risk};} function restructureSelectedLoan(){ensureBank();const l=s.bank.loans.find(x=>x.id===s.bank.selected&&!x.paid)||s.bank.loans.find(x=>!x.paid);if(!l)return toast('Yapılandırılacak aktif kredi yok.');if(l.restructured)return toast('Bu kredi daha önce yapılandırıldı.');const fee=Math.ceil((l.balance+l.interest)*.03);if(s.cash=0&&f.risk==='Düşük'){msg='Finansal durum dengeli. Yeni borç yerine nakit rezervini koru.';}else{let recovered=0;const stockKeys=Object.keys(s.stock||{});for(const k of stockKeys){const q=Math.floor((Number(s.stock[k])||0)*.2);if(q>0){const unit=Math.max(1,Math.floor((prices[k]||50)*.55));s.stock[k]-=q;recovered+=q*unit;}}if(recovered){s.cash+=recovered;s.profit+=recovered;log('Acil likidite planı: stokların %20si tasfiye edildi, '+money(recovered)+' tahsil edildi.');msg='Stokların %20si hızlı satışla tasfiye edildi. Tahsilat: '+money(recovered);}else{msg='Tasfiye edilebilir stok bulunamadı. Yeni yatırım ve isteğe bağlı harcamaları durdur.';}}const el=document.getElementById('rescueMessage');if(el)el.textContent=msg;save();renderBank();toast(msg);} const _bankRenderResilience=renderBank;renderBank=function(){_bankRenderResilience();const f=financialSnapshot();const put=(id,v)=>{const e=document.getElementById(id);if(e)e.textContent=v};put('forecastCash',money(f.forecast));put('riskGrade',f.risk);put('dailyDebtLoad',money(Math.ceil(f.debt/Math.max(1,Math.min(30,...f.active.map(l=>Math.max(1,Math.ceil((l.due-Date.now())/86400000))))))));put('solvencyRatio',f.solvency.toLocaleString('tr-TR')+'%');const rows=document.getElementById('cashForecastRows');if(rows)rows.innerHTML=[['Tahmini günlük faaliyet geliri',money(f.avgDaily)],['Günlük sabit işletme gideri',money(f.fixedDaily)],['7 gün içinde vadesi gelen borç',money(f.due7)],['Gecikmiş kredi adedi',String(f.overdue)],['Öngörülen 7 günlük nakit',money(f.forecast)]].map(x=>'
'+x[0]+''+x[1]+'
').join('');}; conomy only */ function ensureTax(){ s.tax=s.tax||{};const t=s.tax; t.periodDays=7;t.rate=Number.isFinite(t.rate)?t.rate:.18;t.periodStart=Number(t.periodStart)||Date.now(); t.periodRevenue=Number(t.periodRevenue)||0;t.periodCosts=Number(t.periodCosts)||0;t.periodPayroll=Number(t.periodPayroll)||0; t.periodPurchases=Number(t.periodPurchases)||0;t.periodTaxPaid=Number(t.periodTaxPaid)||0;t.lossCarry=Number(t.lossCarry)||0; t.liability=Number(t.liability)||0;t.history=Array.isArray(t.history)?t.history:[];t.reserve=Number(t.reserve)||0; t.settings=t.settings||{deductPayroll:true,deductPurchases:true,deductMaintenance:true,smallBusiness:false}; return t; } function taxLedger(kind,amount,note){const t=ensureTax();t.history.unshift({kind,amount:Math.round(amount),note:String(note||''),at:Date.now()});t.history=t.history.slice(0,100);} function taxRate(){const t=ensureTax();return t.settings.smallBusiness?.10:t.rate;} function taxSnapshot(){ const t=ensureTax();const rev=Math.max(0,t.periodRevenue);const deductible=(t.settings.deductPayroll?t.periodPayroll:0)+(t.settings.deductPurchases?t.periodPurchases:0)+(t.settings.deductMaintenance?t.periodCosts:0); const taxable=Math.max(0,rev-deductible-t.lossCarry);const rate=taxRate();const tax=Math.round(taxable*rate); const effective=rev?tax/rev*100:0;const days=Math.max(0,Math.ceil((t.periodStart+7*86400000-Date.now())/86400000)); return {rev,deductible,taxable,rate,tax,effective,days,loss:t.lossCarry,liability:t.liability,reserve:t.reserve}; } function recordTaxableRevenue(amount,kind){const t=ensureTax();amount=Math.max(0,Number(amount)||0);t.periodRevenue+=amount;taxLedger('revenue',amount,kind||'İşletme geliri');save();} function recordTaxDeductible(amount,kind){const t=ensureTax();amount=Math.max(0,Number(amount)||0);if(/maaş|personel/i.test(kind||''))t.periodPayroll+=amount;else if(/alım|tedarik|stok/i.test(kind||''))t.periodPurchases+=amount;else t.periodCosts+=amount;taxLedger('expense',amount,kind||'İşletme gideri');save();} function reserveTaxFunds(){const t=ensureTax(),f=taxSnapshot(),amount=Math.min(Math.max(0,s.cash),Math.max(0,f.tax-t.reserve));if(amount<=0)return toast('Vergi rezervi için ayrılacak tutar yok.');s.cash-=amount;t.reserve+=amount;taxLedger('reserve',amount,'Vergi rezervine ayrıldı');save();render();toast(money(amount)+' vergi rezervine ayrıldı.');} function payVirtualTax(){const t=ensureTax(),due=Math.max(0,t.liability);if(due<=0)return toast('Önce dönemi kapatıp vergi tahakkuku oluştur.');const fromReserve=Math.min(t.reserve,due),remaining=due-fromReserve;if(s.cash

🧾 Vergi ve mali uyum

7 günlük oyun dönemi
${money(f.rev)}
${money(f.deductible)}
${money(f.taxable)}
${money(f.tax)}
Vergi oranı%${(f.rate*100).toFixed(0)}
Önceki dönem borcu${money(f.liability)}
Vergi rezervi${money(f.reserve)}
Dönem bitimine${f.days} gün
Devreden zarar${money(f.loss)}

Gider indirimi ayarları

Bu ayarlar yalnızca oyun ekonomisindeki sanal vergi hesabını etkiler; gerçek vergi mevzuatı değildir.

Vergi hareketleri

${t.history.slice(0,12).map(x=>`
${escapeHtml(x.note||x.kind)}${money(x.amount)}
${new Date(x.at).toLocaleString('tr-TR')}
`).join('')||'
Henüz vergi hareketi yok.
'}
`;} function setTaxSetting(k,v){const t=ensureTax();if(!(k in t.settings))return;t.settings[k]=!!v;save();renderTaxPanel();} function accrueTaxPeriod(){const t=ensureTax();if(Date.now()-t.periodStart>=7*86400000){const f=taxSnapshot();t.liability+=f.tax;if(f.rev0){recordTaxableRevenue(delta,label);const h=ensureTax().history[0];if(h)h.source=source;}else if(delta<0){recordTaxDeductible(-delta,label);const h=ensureTax().history[0];if(h)h.source=source;}return delta;} function taxWrapCashFunction(name,source,label){const original=window[name];if(typeof original!=='function'||original.__taxWrapped)return;const wrapped=function(...args){const before=Number(s.cash)||0;const result=original.apply(this,args);taxRecordDelta(before,source,label);return result;};wrapped.__taxWrapped=true;window[name]=wrapped;} ['sell','farmSellEggs','collectRent','runShopShift','processExportContracts'].forEach((n)=>taxWrapCashFunction(n,({sell:'Sanayi satışları',farmSellEggs:'Çiftlik satışları',collectRent:'Kira gelirleri',runShopShift:'Mağaza vardiyası',processExportContracts:'İhracat tahsilatları'})[n],({sell:'Ürün satış geliri',farmSellEggs:'Yumurta satış geliri',collectRent:'Kira tahsilatı',runShopShift:'Mağaza net vardiya nakdi',processExportContracts:'İhracat teslimat tahsilatı'})[n])); ['buyWholesale','buySeeds','buyShelf','buyProcessor','buyTradeTruck','hireStaff','buyFarm','buyCows','farmBuyChicken'].forEach((n)=>taxWrapCashFunction(n,'Tedarik ve yatırım','Tedarik / yatırım gideri')); function taxExportCSV(){const rows=[['Tarih','Tür','Kaynak','Açıklama','Tutar'],...ensureTax().history.map(x=>[new Date(x.at).toISOString(),x.kind,x.source||'',x.note||'',x.amount])];const csv=rows.map(r=>r.map(v=>'"'+String(v??'').replace(/"/g,'""')+'"').join(';')).join('\n');const blob=new Blob(['\ufeff'+csv],{type:'text/csv;charset=utf-8'});const url=URL.createObjectURL(blob);const a=document.createElement('a');a.href=url;a.download='empire-nexus-vergi-defteri.csv';a.click();setTimeout(()=>URL.revokeObjectURL(url),1000);} function taxAudit(){const t=ensureTax(),f=taxSnapshot();const issues=[];if(t.reserve<0)issues.push('Vergi rezervi negatif');if(t.liability<0)issues.push('Vergi borcu negatif');if(t.periodRevenue<0||t.periodCosts<0||t.periodPayroll<0||t.periodPurchases<0)issues.push('Dönem toplamlarından biri negatif');if(t.history.some(x=>!Number.isFinite(Number(x.amount))||Number(x.amount)<0))issues.push('Geçersiz hareket tutarı');if(t.periodStart>Date.now()+60000)issues.push('Dönem başlangıcı gelecekte');return {ok:issues.length===0,issues,margin:f.effective,coverage:t.liability?Math.min(100,Math.round(t.reserve/t.liability*100)):100};} function renderTaxInsights(){const el=document.getElementById('taxPanel');if(!el)return;const t=ensureTax(),f=taxSnapshot(),tot=taxSourceTotals(),audit=taxAudit();const entries=Object.entries(tot).sort((a,b)=>(b[1].income+b[1].expense)-(a[1].income+a[1].expense));let node=document.getElementById('taxInsights');if(!node){node=document.createElement('div');node.id='taxInsights';el.appendChild(node);}node.innerHTML=`

📚 Otomatik vergi defteri

${entries.length} kaynak
${money(t.periodPayroll)}
${money(t.periodPurchases)}
${money(t.periodCosts)}
%${audit.coverage}
${entries.map(([name,v])=>`
${escapeHtml(name)}${money(v.income-v.expense)}
Gelir ${money(v.income)} · Gider ${money(v.expense)} · Hareket ${v.count}
`).join('')||'
Otomatik kaynak kayıtları henüz oluşmadı.
'}
Defter denetimi${audit.ok?'Sorun bulunmadı':audit.issues.join(' · ')}
Efektif vergi / ciro%${f.effective.toFixed(2)}

Şirket bazında vergi görünümü

${(s.holding?.subsidiaries||[]).map(x=>{const revenue=Math.max(0,Number(x.revenue)||0),expense=Math.max(0,Number(x.expenses)||0),base=Math.max(0,revenue-expense),tax=Math.round(base*taxRate());return `
${escapeHtml(x.name)}${money(tax)}
Tahmini matrah ${money(base)} · Simüle vergi ${money(tax)}
`}).join('')||'
İştirak bulunmuyor.
'}

Şirket bazlı tutarlar bilgilendirme amaçlı tahmindir; iştirak kasalarından ayrıca tahsilat yapmaz.

`;} const _taxRenderPanelV2=renderTaxPanel;renderTaxPanel=function(){_taxRenderPanelV2();renderTaxInsights();}; /* Empire Nexus finance expansion v3: assets, depreciation, stock valuation, period archive and audit */ function ensureTaxV3(){const t=ensureTax();t.assetBook=Array.isArray(t.assetBook)?t.assetBook:[];t.periodArchive=Array.isArray(t.periodArchive)?t.periodArchive:[];t.companyBooks=t.companyBooks||{};t.stockCosts=t.stockCosts||{};t.lastDepreciationAt=Number(t.lastDepreciationAt)||Date.now();t.auditLog=Array.isArray(t.auditLog)?t.auditLog:[];return t;} function taxAuditNote(msg){const t=ensureTaxV3();t.auditLog.unshift({msg:String(msg),at:Date.now()});t.auditLog=t.auditLog.slice(0,100);} function addTaxAsset(){const name=(document.getElementById('taxAssetName')?.value||'').trim();const cost=Math.max(0,Math.round(Number(document.getElementById('taxAssetCost')?.value)||0));const life=Math.max(1,Math.min(120,Math.round(Number(document.getElementById('taxAssetLife')?.value)||12)));if(!name||cost<=0)return toast('Varlık adı ve maliyeti gir.');if(Number(s.cash)0){a.book-=d;a.months+=n;total+=d;if(a.book<=0||a.months>=a.life)a.active=false;}}if(total){t.periodCosts+=total;taxLedger('depreciation',total,'Sabit varlık amortismanı');taxAuditNote('Amortisman kaydı: '+total);}return total;} function taxStockValuation(){const st=s.stock||s.inventory||{};const rows=[];let total=0;for(const [k,v] of Object.entries(st)){const qty=typeof v==='number'?v:Number(v?.qty??v?.amount??0);if(!Number.isFinite(qty)||qty<=0)continue;const unit=Math.max(0,Number(ensureTaxV3().stockCosts[k])||40);rows.push({name:k,qty,value:Math.round(qty*unit),unit});total+=qty*unit;}return {rows,total:Math.round(total)};} function setTaxStockCost(){const k=(document.getElementById('taxStockKey')?.value||'').trim();const v=Math.max(0,Number(document.getElementById('taxStockUnit')?.value)||0);if(!k||!v)return toast('Ürün anahtarı ve birim maliyet gir.');ensureTaxV3().stockCosts[k]=v;taxAuditNote('Stok birim maliyeti güncellendi: '+k);save();renderTaxPanel();} function taxCompanyBook(name,kind,amount){const t=ensureTaxV3();const k=String(name||'Ana şirket');t.companyBooks[k]=t.companyBooks[k]||{income:0,expense:0,tax:0};const n=Math.max(0,Number(amount)||0);if(kind==='revenue')t.companyBooks[k].income+=n;else t.companyBooks[k].expense+=n;} function taxClosePeriodV3(reason){const t=ensureTaxV3(),f=taxSnapshot();const entry={at:Date.now(),reason:reason||'Manuel dönem kapanışı',revenue:f.rev,deductible:f.deductible,taxable:f.taxable,tax:f.tax,rate:f.rate,lossBefore:t.lossCarry};t.liability+=f.tax;if(f.rev=7*86400000&&loops<52){taxClosePeriodV3('Otomatik 7 günlük tahakkuk');loops++;}if(loops)save();} function taxExportFullCSV(){const t=ensureTaxV3();const rows=[['Kayıt','Tarih','Açıklama','Gelir','Gider','Matrah','Vergi'],...t.periodArchive.map(x=>['Dönem',new Date(x.at).toISOString(),x.reason,x.revenue,x.deductible,x.taxable,x.tax]),...t.assetBook.map(x=>['Varlık',new Date(x.at).toISOString(),x.name,0,x.cost-x.book,x.book,0])];const csv=rows.map(r=>r.map(v=>'"'+String(v??'').replace(/"/g,'""')+'"').join(';')).join('\n');const blob=new Blob(['\ufeff'+csv],{type:'text/csv;charset=utf-8'});const url=URL.createObjectURL(blob);const a=document.createElement('a');a.href=url;a.download='empire-nexus-mali-rapor.csv';a.click();setTimeout(()=>URL.revokeObjectURL(url),1000);} function taxAuditV3(){const t=ensureTaxV3(),base=taxAudit(),issues=[...base.issues];for(const a of t.assetBook){if(a.cost<0||a.book<0||a.book>a.cost||a.months<0||a.months>a.life)issues.push('Sabit varlık kaydı tutarsız: '+a.name);}if(t.periodArchive.some(x=>x.tax<0||x.revenue<0||x.deductible<0))issues.push('Arşivde negatif dönem tutarı');return {ok:issues.length===0,issues,stock:taxStockValuation().total,assets:t.assetBook.reduce((n,a)=>n+(Number(a.book)||0),0)};} function renderTaxAssets(){const el=document.getElementById('taxPanel');if(!el)return;let n=document.getElementById('taxAssetsV3');if(!n){n=document.createElement('div');n.id='taxAssetsV3';el.appendChild(n);}const t=ensureTaxV3(),stock=taxStockValuation(),audit=taxAuditV3();n.innerHTML=`

🏭 Sabit varlık ve amortisman

${t.assetBook.slice(0,10).map(a=>`
${escapeHtml(a.name)}${money(a.book)}
İlk maliyet ${money(a.cost)} · Kullanım ${a.months}/${a.life} ay · Aylık ${money(a.monthly)}
`).join('')||'
Henüz sabit varlık kaydı yok.
'}
Amortisman, sanal vergi matrahına gider olarak eklenir. Aylık dönem ilerlemesi oyunun tarih mantığına göre ayrıca işletilecek.

📦 Stok değerleme

Tahmini stok defter değeri${money(stock.total)}
${stock.rows.slice(0,12).map(x=>`
${escapeHtml(x.name)} · ${x.qty} adet${money(x.value)}
`).join('')||'
Stok verisi bulunamadı veya stok boş.
'}

📑 Dönem arşivi ve denetim

Arşivlenmiş dönem${t.periodArchive.length}
Kayıtlı varlık net değeri${money(audit.assets)}
Stok değeri${money(audit.stock)}
Defter denetimi${audit.ok?'Sorun bulunmadı':audit.issues.join(' · ')}
${t.periodArchive.slice(0,8).map(x=>`
${new Date(x.at).toLocaleDateString('tr-TR')} · ${escapeHtml(x.reason)}${money(x.tax)}
Ciro ${money(x.revenue)} · Gider ${money(x.deductible)} · Matrah ${money(x.taxable)}
`).join('')||'
Henüz kapanmış dönem yok.
'}
`;} const _renderTaxPanelV3=renderTaxPanel;renderTaxPanel=function(){_renderTaxPanelV3();renderTaxAssets();}; const _closeTaxPeriodV2=closeTaxPeriod;closeTaxPeriod=function(){taxClosePeriodV3('Manuel 7 günlük dönem kapanışı');render();toast('Dönem arşivlendi ve tahakkuk oluşturuldu.');}; (function initTaxV3(){ensureTaxV3();})();