32: // Ana stok kartı — alt hareketleri dinamik bileşen (ngComponentOutlet) ile render eder 53: @for (o of olculer(); track o.etiket) { 102: 103: @if (altHareketler().length) { 104:
Son Hareketler
106: @for (altKart of altHareketler(); track altKart._id) { 170: // Her kart görüntülendiğinde DB'den CANLI alt hareketler çekilir. Alt kartlar 230: const sahip = (this.FikoYT as any)?.kimlik?.aktifKullaniciJson()?._id; 235: _id: kartKimlik, vt: 'FikoYT.sistem.hareketler', yol: 'FikoYT.sistem.hareketler.kalem', 236: turu: 'KART', gizlilik: 'Herkese Açık', _uid: parentId, sahip, tarih: new Date(), 257: metod: 'POST', komut: 'FikoYT.sistem.DB.hareketler.ekle', 269: // Canlı hesabı tazele (kalan stok + son hareketler anında güncellenir) 280: return h?.kalanStok == null && h?.altHareketler == null; 288: /** Alt hareket kartlarını prepipe'tan al (hesap.altHareketler) */ 289: altHareketler = computed(() => { 290: const raw = this.hesapYerel().altHareketler ?? ([] as any[]); 300: const istek = new FikoYTIstekKok({ metod: 'POST', komut: 'FikoYT.sistem.DB.hareketler.aggregate' }); 303: { $lookup: { from: 'hareketler', let: { pid: '$_id' }, pipeline: [ 305: { $lookup: { from: 'hareketler', localField: 'veri.icerikler', foreignField: '_id', as: 'ic' } }, 327: altHareketler: { $slice: ['$_alt', -5] }, 333: if (hesap && (hesap.kalanStok != null || hesap.altHareketler)) { 334: this._hesapYerel.set({ kalanStok: hesap.kalanStok ?? 0, altHareketler: hesap.altHareketler ?? [] }); 361: // prepipe: kalanStok hesabı + son 5 hareketin ek bilgisini altHareketler'e taşır 377: { $lookup: { from: 'hareketler', let: { pid: '$_id' }, pipeline: [ 379: { $lookup: { from: 'hareketler', localField: 'veri.icerikler', foreignField: '_id', as: 'ic' } }, 391: ], as: '_altHareket' } }, 395: input: '$_altHareket', 404: '_hesap.sonHareketTipi': { $ifNull: [{ $arrayElemAt: ['$_altHareket.tip', -1] }, null] }, 406: '_hesap.altHareketler': { $slice: ['$_altHareket', -5] }, 408: { $project: { _altHareket: 0 } }, 475: @for (t of tipler; track t) {