feat: financial year planning — annual budgets, income tracking, household sharing
- Financial year page (/financial-year): year selector, 3 KPI cards (income, fixed costs, actual expenses), income and budget-items tabs with inline CRUD - Revenue accounts as income source: salary-months toggle (12/13) per account - Household support: create household, invite members by email (existing and new users via PendingHouseholdInvite), accept invitations, set roles - Combined household income view across all active members - FinancialYear, YearlyIncome, YearlyBudgetItem, Household, HouseholdMembership models with migrations; household invite email template - Management command to migrate existing accounts/budgets to financial years - FinancialYearService in Angular with full API integration - Dashboard updated: income/fixed-costs read from financial year data, year dropdown synced with available financial years - Sidebar: financial year nav item added - i18n: all keys in DE/EN/FR/IT
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
{% extends "emails/base.html" %}
|
||||
|
||||
{% block subject %}Armarium – Einladung zum Haushalt{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<p style="margin:0 0 20px;font-size:15px;color:#374151;line-height:1.6;">Hallo {{ invitee_name }},</p>
|
||||
|
||||
<p style="margin:0 0 20px;font-size:15px;color:#374151;line-height:1.6;">
|
||||
<strong>{{ inviter_name }}</strong> hat dich eingeladen, dem Haushalt
|
||||
<strong>{{ household_name }}</strong> auf Armarium beizutreten.
|
||||
</p>
|
||||
|
||||
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="margin:0 0 28px;">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a href="{{ accept_url }}"
|
||||
style="display:inline-block;background-color:#7c3aed;color:#ffffff;font-size:15px;font-weight:600;text-decoration:none;padding:14px 32px;border-radius:8px;letter-spacing:0.1px;">
|
||||
{{ cta_label }}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p style="margin:0 0 8px;font-size:13px;color:#6b7280;line-height:1.6;">
|
||||
Falls der Button nicht funktioniert, kopiere diesen Link in deinen Browser:
|
||||
</p>
|
||||
<p style="margin:0 0 24px;font-size:13px;color:#7c3aed;line-height:1.6;word-break:break-all;">
|
||||
{{ accept_url }}
|
||||
</p>
|
||||
|
||||
<p style="margin:0;font-size:15px;color:#374151;line-height:1.6;">
|
||||
– Das Armarium-Team
|
||||
</p>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,10 @@
|
||||
Hallo {{ invitee_name }},
|
||||
|
||||
{{ inviter_name }} hat dich eingeladen, dem Haushalt "{{ household_name }}" auf Armarium beizutreten.
|
||||
|
||||
{{ cta_label }}:
|
||||
{{ accept_url }}
|
||||
|
||||
Falls du diese Einladung nicht erwartet hast, kannst du sie ignorieren.
|
||||
|
||||
– Das Armarium-Team
|
||||
Reference in New Issue
Block a user