Finanzen: Vorschau, Steuer und Aufgaben genauer (Fixkosten ohne ESt, verspaetete Auszahlungen, Abos nicht ladbar)
M6: fixkosten30Cents zaehlt nur Fixkosten, die ESt-Vorauszahlung bleibt sicherer Posten. M7: verspaetete Auszahlung (Ankunftstag vorbei, noch nicht bezahlt) kommt heute. M8: ohne Stripe sind Kleinunternehmer-Zaehler und Anteil unbekannt (null), keine Warnung daraus. M12: Verbindungsdokument ohne Sitzung zaehlt als keine Verbindung. M13: Buchungen privat/fixkosten gehen nicht in die Fixkosten-Vorschlaege. M14: Vorjahresumsatz ueber 25.000 EUR ist eine hohe Aufgabe. M15: scheitert das Laden der Abos, meldet abos.fehler statt die ganze Uebersicht zu kippen. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
83ee9d5a25
commit
039fdcaf27
6 files changed
+295
-20
No files matched your search
@@ -3,9 +3,11 @@ import { addDays, berlinDate, daysBetween } from './dates.js'
|
||||
/**
|
||||
* Liquiditaetsvorschau (rein, ohne I/O). Zwei Linien ueber denselben Zeitraum (heute bis heute + horizonDays,
|
||||
* beide Tage eingeschlossen):
|
||||
* - "sicher": Stripe-Auszahlungen, die schon unterwegs sind, Fixkosten und ESt-Vorauszahlungen.
|
||||
* - "sicher": Stripe-Auszahlungen, die schon unterwegs sind (mit Ankunftstag vor heute: heute), Fixkosten und
|
||||
* ESt-Vorauszahlungen.
|
||||
* - "erwartet": offene Rechnungen und Abo-Verlaengerungen; sie kommen zu den sicheren Posten dazu.
|
||||
* Betraege sind ganze Cent mit Vorzeichen (+ Zufluss, - Abfluss), Tage YYYY-MM-DD; "heute" kommt von aussen.
|
||||
* fixkosten30Cents ist die Summe der Fixkosten im Zeitraum (ohne ESt-Vorauszahlungen).
|
||||
*/
|
||||
|
||||
export const FORECAST_ANNAHME =
|
||||
@@ -105,15 +107,23 @@ export function buildForecast({
|
||||
if (payout?.status !== 'pending' && payout?.status !== 'in_transit') continue
|
||||
if (!isCents(payout.amountCents) || payout.amountCents === 0) continue
|
||||
const arrival = validYmd(payout.arrivalDate)
|
||||
if (arrival && inRange(arrival)) add(arrival, 'Stripe-Auszahlung', payout.amountCents, SICHER)
|
||||
if (!arrival) continue
|
||||
// Eine noch nicht angekommene Auszahlung mit Ankunftstag vor heute (Stripe ist verspaetet) kommt frueh, nicht nie: heute
|
||||
const date = arrival < today ? today : arrival
|
||||
if (inRange(date)) add(date, 'Stripe-Auszahlung', payout.amountCents, SICHER)
|
||||
}
|
||||
|
||||
// Nur die Fixkosten zaehlen fuer fixkosten30Cents: die ESt-Vorauszahlung steckt schon in der Steuerruecklage
|
||||
let fixkosten30Cents = 0
|
||||
for (const cost of fixedCosts || []) {
|
||||
if (!cost || cost.active === false) continue
|
||||
const step = INTERVAL_MONTHS[cost.interval]
|
||||
const start = validYmd(cost.nextDate)
|
||||
if (!step || !start || !isCents(cost.amountCents) || cost.amountCents <= 0) continue
|
||||
for (const date of occurrencesIn(start, step, today, end)) add(date, cost.name || 'Fixkosten', -cost.amountCents, SICHER)
|
||||
for (const date of occurrencesIn(start, step, today, end)) {
|
||||
add(date, cost.name || 'Fixkosten', -cost.amountCents, SICHER)
|
||||
fixkosten30Cents += cost.amountCents
|
||||
}
|
||||
}
|
||||
|
||||
const prepayment = settings?.estPrepaymentCents
|
||||
@@ -175,8 +185,6 @@ export function buildForecast({
|
||||
const sicher = line((item) => item.sicherheit === SICHER)
|
||||
const erwartet = line(() => true)
|
||||
|
||||
const fixkosten30Cents = posten.reduce((sum, item) => (item.sicherheit === SICHER && item.amountCents < 0 ? sum - item.amountCents : sum), 0)
|
||||
|
||||
return {
|
||||
posten,
|
||||
minSicher: sicher.min,
|
||||
|
||||
Reference in new issue
Block a user