"""Schemata der Auswertungen.""" from datetime import date from pydantic import Field from app.schemas.common import ApiModel, Money class TotalsOut(ApiModel): """Einnahmen, Ausgaben und Saldo einer Sicht.""" income: Money expenses: Money balance: Money class MonthComparisonOut(ApiModel): """Veränderung gegenüber dem Vormonat.""" income: Money expenses: Money balance: Money class MonthReportOut(ApiModel): """Monatsübersicht mit Plan-Ist-Vergleich.""" month: date = Field(description="Immer der Monatserste.") planned: TotalsOut = Field(description="Soll aus Fälligkeiten und Buchungen.") actual: TotalsOut = Field( description="Ist aus bestätigten Fälligkeiten und allen einmaligen Buchungen." ) previous_planned: TotalsOut previous_actual: TotalsOut delta_to_previous: MonthComparisonOut fixed_costs: Money = Field(description="Ausgaben in Kategorien mit `is_fixed_cost`.") variable_costs: Money reserves: Money = Field(description="Summe der monatlichen Rücklagen.") available_after_fixed: Money = Field(description="Einkünfte abzüglich Fixkosten und Rücklagen.") confirmed_count: int open_count: int skipped_count: int