fix(budget): sabit gider ayrımı ve taban hızlı ay sonu tahmini
$ne ile eksik alan yolu her işlemi sabit sayıyordu; $ifNull ile düzeltildi. Tahmin, bu ayın hızını önceki dönemin değişken hızıyla karıştırır. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -40,13 +40,31 @@ describe("bütçe dönemi", () => {
|
||||
variableMinor: 3_000_00,
|
||||
plannedMinor: 500_00,
|
||||
};
|
||||
// 10/30 gün geçti: değişken 3.000 → 9.000
|
||||
// Geçmiş yok: 10/30 gün geçti, değişken 3.000 → 9.000
|
||||
expect(forecast(a, 10, 30)).toBe(10_500_00);
|
||||
expect(forecast(a, 30, 30)).toBe(4_500_00);
|
||||
expect(forecast(a, 0, 30)).toBe(1_500_00);
|
||||
// Henüz başlamamış dönem: gerçekleşmiş değişken olduğu gibi, tempo yok.
|
||||
expect(forecast(a, 0, 30)).toBe(4_500_00);
|
||||
expect(roundUpLimit(1_234_56)).toBe(1_300_00);
|
||||
expect(roundUpLimit(1_200_00)).toBe(1_200_00);
|
||||
});
|
||||
|
||||
it("taban hız: önceki ayın temposu ay başında ağır basar", () => {
|
||||
// Ayın 2'sinde 6.000'lik tek harcama; önceki ay 30 günde 9.000 (günde 300).
|
||||
const a: CategoryAmounts = {
|
||||
fixedMinor: 0,
|
||||
variableMinor: 6_000_00,
|
||||
plannedMinor: 0,
|
||||
baselineMinor: 9_000_00,
|
||||
};
|
||||
// Yalnızca bu ay: 6.000 × 30/2 = 90.000.
|
||||
expect(forecast(a, 2, 30)).toBe(90_000_00);
|
||||
// Karışım: hız = 2/30 × 3.000 + 28/30 × 300 = 480 → 6.000 + 28 × 480
|
||||
expect(forecast(a, 2, 30, 30)).toBe(6_000_00 + 28 * 480_00);
|
||||
// Gelecek ay: yalnızca taban; geçmiş ay: gerçekleşen.
|
||||
expect(forecast({ ...a, variableMinor: 0 }, 0, 30, 30)).toBe(9_000_00);
|
||||
expect(forecast(a, 30, 30, 30)).toBe(6_000_00);
|
||||
});
|
||||
});
|
||||
|
||||
describe("bütçe toplama", () => {
|
||||
|
||||
Reference in New Issue
Block a user