diff --git a/models/stok.js b/models/stok.js new file mode 100644 index 0000000..339cffb --- /dev/null +++ b/models/stok.js @@ -0,0 +1,34 @@ +// Transfer ve stok işleme modeli +const store = require('./store'); + +// Bir lokasyonun stok seviyesini döner (urunId -> miktar) +function stokGetir(lokasyonId) { + const stokKayit = store.oku('stok'); + return stokKayit.filter(s => s.lokasyonId === Number(lokasyonId)); +} + +// Bir lokasyonda belirli ürünün miktarını döner +function urunMiktar(lokasyonId, urunId, stokKayit = null) { + const kayit = (stokKayit || stokGetir(lokasyonId)) + .find(s => s.urunId === Number(urunId)); + return kayit ? kayit.miktar : 0; +} + +// Stok kaydını günceller (yoksa oluşturur, negatife düşerse reddeder) +function stokGuncelle(lokasyonId, urunId, delta) { + const stokKayit = store.oku('stok'); + const mevcut = stokKayit.find(s => s.lokasyonId === Number(lokasyonId) && s.urunId === Number(urunId)); + let yeniMiktar = delta; + if (mevcut) yeniMiktar = mevcut.miktar + delta; + if (yeniMiktar < 0) return { ok: false, hata: 'Yetersiz stok' }; + + if (mevcut) { + mevcut.miktar = yeniMiktar; + } else { + stokKayit.push({ lokasyonId: Number(lokasyonId), urunId: Number(urunId), miktar: yeniMiktar }); + } + store.yaz('stok', stokKayit); + return { ok: true, miktar: yeniMiktar }; +} + +module.exports = { stokGetir, urunMiktar, stokGuncelle };