Compare commits

...

39 Commits

Author SHA1 Message Date
Herculino Trotta 64b32316ca fix(accounts): unable to update accounts
due to wrong currency queryset
2025-09-08 09:19:17 -03:00
Herculino Trotta efe020efb3 fix(rules): duplicating transactions when ran outside of test mode 2025-09-07 22:14:40 -03:00
Herculino Trotta 8c133f92ce fix(rules): add .exclude() to transactions() function 2025-09-07 21:30:03 -03:00
Herculino Trotta f3c9d8faea feat(rules): add .exclude() to transactions() function 2025-09-07 21:24:53 -03:00
Herculino Trotta 8f5204a17b feat(rules): add .exclude() to transactions() function 2025-09-07 20:41:09 -03:00
Herculino Trotta 2235bdeabb changes 2025-09-02 23:17:04 -03:00
Herculino Trotta d724300513 changes 2025-09-02 15:54:45 -03:00
Herculino Trotta eacafa1def changes 2025-09-02 09:47:35 -03:00
Herculino Trotta c738f5ee29 changes 2025-09-02 09:47:27 -03:00
Herculino Trotta 72904266bf feat(rules): add optional rules ordering 2025-08-31 09:06:48 -03:00
Herculino Trotta 670bee4325 feat(rules): add rule function to fetch transactions totals and balance 2025-08-30 15:36:07 -03:00
Herculino Trotta 3e2c1184ce Merge pull request #354
fix(yearly-overview): display total for archived accounts
2025-08-30 11:13:05 -03:00
Herculino Trotta 731f351eef fix(yearly-overview): display total for archived accounts 2025-08-30 11:12:47 -03:00
eitchtee b7056e7aa1 chore(locale): update translation files
[skip ci] Automatically generated by Django makemessages workflow
2025-08-30 02:09:21 +00:00
Herculino Trotta accceed630 Merge pull request #353
feat(insights:category-overview): add "No entity" totals
2025-08-29 23:08:34 -03:00
Herculino Trotta 76346cb503 feat(insights:category-overview): add "No entity" totals 2025-08-29 23:08:16 -03:00
eitchtee 3df8952ea2 chore(locale): update translation files
[skip ci] Automatically generated by Django makemessages workflow
2025-08-30 01:48:37 +00:00
Herculino Trotta 9bd067da96 Merge pull request #352
feat(currencies): allow archiving
2025-08-29 22:47:26 -03:00
Herculino Trotta 1abe9e9f62 feat(currencies): allow archiving 2025-08-29 22:47:00 -03:00
eitchtee 1a86b5dea4 chore(locale): update translation files
[skip ci] Automatically generated by Django makemessages workflow
2025-08-28 02:18:45 +00:00
Herculino Trotta 8f2f5a16c2 Merge pull request #349
fix(transactions:quick-transactions): error when saving due to wrong field definition
2025-08-27 23:17:09 -03:00
Herculino Trotta 4565dc770b fix(transactions:quick-transactions): error when saving due to wrong field definition 2025-08-27 23:16:06 -03:00
Herculino Trotta 23673def09 Merge pull request #346
fix(common:tasks): remove_old_jobs always failing
2025-08-24 10:41:48 -03:00
Herculino Trotta dd2b9ead7e fix(common:tasks): remove_old_jobs always failing 2025-08-24 10:41:26 -03:00
Rhesa Daiva Bremana 2078e9f3e4 locale((Indonesian)): added translation using Weblate 2025-08-23 12:43:54 +00:00
eitchtee e6bab57ab4 chore(locale): update translation files
[skip ci] Automatically generated by Django makemessages workflow
2025-08-22 20:36:08 +00:00
Herculino Trotta 38d50a78f4 Merge pull request #344
fix(sidebar): sidebar status not saving properly
2025-08-22 17:34:42 -03:00
Herculino Trotta 0d947f9ba6 fix(sidebar): sidebar status not saving properly 2025-08-22 17:34:12 -03:00
eitchtee 99c85a56bb chore(locale): update translation files
[skip ci] Automatically generated by Django makemessages workflow
2025-08-22 20:16:36 +00:00
Herculino Trotta ab1c074f27 Merge pull request #343
feat(sidebar): add button to keep it open
2025-08-22 17:15:55 -03:00
Herculino Trotta abf3a148cc feat(sidebar): add button to keep it open 2025-08-22 17:15:32 -03:00
Herculino Trotta 2733c92da5 style(sidebar): truncate e-mail if it's too long 2025-08-22 13:14:47 -03:00
eitchtee 9bfbe54ed5 chore(locale): update translation files
[skip ci] Automatically generated by Django makemessages workflow
2025-08-19 17:03:42 +00:00
Herculino Trotta 5b27dea07c Merge pull request #340
feat: turn filter, order and search into a single bar
2025-08-19 14:02:06 -03:00
Herculino Trotta 791e1000a3 feat(all-transactions): turn filter, order and search into a single bar 2025-08-19 14:01:35 -03:00
Herculino Trotta 7301d9f475 feat(monthly): turn filter, order and search into a single bar 2025-08-19 13:39:57 -03:00
sorcierwax 47a44e96f8 locale(French): update translation
Currently translated at 100.0% (685 of 685 strings)

Translation: WYGIWYH/App
Translate-URL: https://translations.herculino.com/projects/wygiwyh/app/fr/
2025-08-18 08:17:42 +00:00
Herculino Trotta 7d247eb737 locale(Portuguese (Brazil)): update translation
Currently translated at 100.0% (685 of 685 strings)

Translation: WYGIWYH/App
Translate-URL: https://translations.herculino.com/projects/wygiwyh/app/pt_BR/
2025-08-17 08:17:42 +00:00
Dimitri Decrock 373616e7bb locale(Dutch): update translation
Currently translated at 100.0% (685 of 685 strings)

Translation: WYGIWYH/App
Translate-URL: https://translations.herculino.com/projects/wygiwyh/app/nl/
2025-08-17 08:17:42 +00:00
61 changed files with 7436 additions and 2363 deletions
+1 -1
View File
@@ -379,7 +379,7 @@ DEBUG_TOOLBAR_PANELS = [
"debug_toolbar.panels.signals.SignalsPanel", "debug_toolbar.panels.signals.SignalsPanel",
"debug_toolbar.panels.redirects.RedirectsPanel", "debug_toolbar.panels.redirects.RedirectsPanel",
"debug_toolbar.panels.profiling.ProfilingPanel", "debug_toolbar.panels.profiling.ProfilingPanel",
"cachalot.panels.CachalotPanel", # "cachalot.panels.CachalotPanel",
] ]
INTERNAL_IPS = [ INTERNAL_IPS = [
"127.0.0.1", "127.0.0.1",
+14
View File
@@ -3,6 +3,7 @@ from crispy_forms.bootstrap import FormActions
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Field, Column, Row from crispy_forms.layout import Layout, Field, Column, Row
from django import forms from django import forms
from django.db.models import Q
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from apps.accounts.models import Account from apps.accounts.models import Account
@@ -15,6 +16,7 @@ from apps.common.widgets.crispy.submit import NoClassSubmit
from apps.common.widgets.tom_select import TomSelect from apps.common.widgets.tom_select import TomSelect
from apps.transactions.models import TransactionCategory, TransactionTag from apps.transactions.models import TransactionCategory, TransactionTag
from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput
from apps.currencies.models import Currency
class AccountGroupForm(forms.ModelForm): class AccountGroupForm(forms.ModelForm):
@@ -79,6 +81,18 @@ class AccountForm(forms.ModelForm):
self.fields["group"].queryset = AccountGroup.objects.all() self.fields["group"].queryset = AccountGroup.objects.all()
if self.instance.id:
qs = Currency.objects.filter(
Q(is_archived=False) | Q(accounts=self.instance.id)
).distinct()
self.fields["currency"].queryset = qs
self.fields["exchange_currency"].queryset = qs
else:
qs = Currency.objects.filter(Q(is_archived=False))
self.fields["currency"].queryset = qs
self.fields["exchange_currency"].queryset = qs
self.helper = FormHelper() self.helper = FormHelper()
self.helper.form_tag = False self.helper.form_tag = False
self.helper.form_method = "post" self.helper.form_method = "post"
+4 -1
View File
@@ -1,3 +1,5 @@
from copy import deepcopy
from rest_framework import viewsets from rest_framework import viewsets
from apps.api.custom.pagination import CustomPageNumberPagination from apps.api.custom.pagination import CustomPageNumberPagination
@@ -30,8 +32,9 @@ class TransactionViewSet(viewsets.ModelViewSet):
transaction_created.send(sender=instance) transaction_created.send(sender=instance)
def perform_update(self, serializer): def perform_update(self, serializer):
old_data = deepcopy(Transaction.objects.get(pk=serializer.data["pk"]))
instance = serializer.save() instance = serializer.save()
transaction_updated.send(sender=instance) transaction_updated.send(sender=instance, old_data=old_data)
def partial_update(self, request, *args, **kwargs): def partial_update(self, request, *args, **kwargs):
kwargs["partial"] = True kwargs["partial"] = True
+3
View File
@@ -9,5 +9,8 @@ def truncate_decimal(value, decimal_places):
:param decimal_places: The number of decimal places to keep :param decimal_places: The number of decimal places to keep
:return: Truncated Decimal value :return: Truncated Decimal value
""" """
if isinstance(value, (int, float)):
value = Decimal(str(value))
multiplier = Decimal(10**decimal_places) multiplier = Decimal(10**decimal_places)
return (value * multiplier).to_integral_value(rounding=ROUND_DOWN) / multiplier return (value * multiplier).to_integral_value(rounding=ROUND_DOWN) / multiplier
+1 -1
View File
@@ -23,7 +23,7 @@ async def remove_old_jobs(context, timestamp):
return await builtin_tasks.remove_old_jobs( return await builtin_tasks.remove_old_jobs(
context, context,
max_hours=744, max_hours=744,
remove_error=True, remove_failed=True,
remove_cancelled=True, remove_cancelled=True,
remove_aborted=True, remove_aborted=True,
) )
+2
View File
@@ -26,6 +26,7 @@ class CurrencyForm(forms.ModelForm):
"suffix", "suffix",
"code", "code",
"exchange_currency", "exchange_currency",
"is_archived",
] ]
widgets = { widgets = {
"exchange_currency": TomSelect(), "exchange_currency": TomSelect(),
@@ -40,6 +41,7 @@ class CurrencyForm(forms.ModelForm):
self.helper.layout = Layout( self.helper.layout = Layout(
"code", "code",
"name", "name",
Switch("is_archived"),
"decimal_places", "decimal_places",
"prefix", "prefix",
"suffix", "suffix",
@@ -0,0 +1,18 @@
# Generated by Django 5.2.5 on 2025-08-30 00:47
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('currencies', '0021_alter_exchangerateservice_service_type'),
]
operations = [
migrations.AddField(
model_name='currency',
name='is_archived',
field=models.BooleanField(default=False, verbose_name='Archived'),
),
]
+5
View File
@@ -32,6 +32,11 @@ class Currency(models.Model):
help_text=_("Default currency for exchange calculations"), help_text=_("Default currency for exchange calculations"),
) )
is_archived = models.BooleanField(
default=False,
verbose_name=_("Archived"),
)
def __str__(self): def __str__(self):
return self.name return self.name
-6
View File
@@ -40,12 +40,6 @@ class CurrencyTests(TestCase):
with self.assertRaises(ValidationError): with self.assertRaises(ValidationError):
currency.full_clean() currency.full_clean()
def test_currency_unique_code(self):
"""Test that currency codes must be unique"""
Currency.objects.create(code="USD", name="US Dollar", decimal_places=2)
with self.assertRaises(IntegrityError):
Currency.objects.create(code="USD", name="Another Dollar", decimal_places=2)
def test_currency_unique_name(self): def test_currency_unique_name(self):
"""Test that currency names must be unique""" """Test that currency names must be unique"""
Currency.objects.create(code="USD", name="US Dollar", decimal_places=2) Currency.objects.create(code="USD", name="US Dollar", decimal_places=2)
+22 -12
View File
@@ -12,7 +12,10 @@ from apps.currencies.utils.convert import convert
def get_categories_totals( def get_categories_totals(
transactions_queryset, ignore_empty=False, show_entities=False transactions_queryset, ignore_empty=False, show_entities=False
): ):
# First get the category totals as before # Step 1: Aggregate transaction data by category and currency.
# This query calculates the total current and projected income/expense for each
# category by grouping transactions and summing up their amounts based on their
# type (income/expense) and payment status (paid/unpaid).
category_currency_metrics = ( category_currency_metrics = (
transactions_queryset.values( transactions_queryset.values(
"category", "category",
@@ -76,7 +79,10 @@ def get_categories_totals(
.order_by("category__name") .order_by("category__name")
) )
# Get tag totals within each category with currency details # Step 2: Aggregate transaction data by tag, category, and currency.
# This is similar to the category metrics but adds tags to the grouping,
# allowing for a breakdown of totals by tag within each category. It also
# handles untagged transactions, where the 'tags' field is None.
tag_metrics = transactions_queryset.values( tag_metrics = transactions_queryset.values(
"category", "category",
"tags", "tags",
@@ -131,10 +137,12 @@ def get_categories_totals(
), ),
) )
# Process the results to structure by category # Step 3: Initialize the main dictionary to structure the final results.
# The data will be organized hierarchically: category -> currency -> tags -> entities.
result = {} result = {}
# Process category totals first # Step 4: Process the aggregated category metrics to build the initial result structure.
# This loop iterates through each category's metrics and populates the `result` dict.
for metric in category_currency_metrics: for metric in category_currency_metrics:
# Skip empty categories if ignore_empty is True # Skip empty categories if ignore_empty is True
if ignore_empty and all( if ignore_empty and all(
@@ -185,7 +193,7 @@ def get_categories_totals(
"total_final": total_final, "total_final": total_final,
} }
# Add exchanged values if exchange_currency exists # Step 4a: Handle currency conversion for category totals if an exchange currency is defined.
if metric["account__currency__exchange_currency"]: if metric["account__currency__exchange_currency"]:
from_currency = Currency.objects.get(id=currency_id) from_currency = Currency.objects.get(id=currency_id)
exchange_currency = Currency.objects.get( exchange_currency = Currency.objects.get(
@@ -224,7 +232,7 @@ def get_categories_totals(
result[category_id]["currencies"][currency_id] = currency_data result[category_id]["currencies"][currency_id] = currency_data
# Process tag totals and add them to the result, including untagged # Step 5: Process the aggregated tag metrics and integrate them into the result structure.
for tag_metric in tag_metrics: for tag_metric in tag_metrics:
category_id = tag_metric["category"] category_id = tag_metric["category"]
tag_id = tag_metric["tags"] # Will be None for untagged transactions tag_id = tag_metric["tags"] # Will be None for untagged transactions
@@ -281,7 +289,7 @@ def get_categories_totals(
"total_final": tag_total_final, "total_final": tag_total_final,
} }
# Add exchange currency support for tags # Step 5a: Handle currency conversion for tag totals.
if tag_metric["account__currency__exchange_currency"]: if tag_metric["account__currency__exchange_currency"]:
from_currency = Currency.objects.get(id=currency_id) from_currency = Currency.objects.get(id=currency_id)
exchange_currency = Currency.objects.get( exchange_currency = Currency.objects.get(
@@ -322,6 +330,7 @@ def get_categories_totals(
currency_id currency_id
] = tag_currency_data ] = tag_currency_data
# Step 6: If requested, aggregate and process entity-level data.
if show_entities: if show_entities:
entity_metrics = transactions_queryset.values( entity_metrics = transactions_queryset.values(
"category", "category",
@@ -389,14 +398,15 @@ def get_categories_totals(
tag_id = entity_metric["tags"] tag_id = entity_metric["tags"]
entity_id = entity_metric["entities"] entity_id = entity_metric["entities"]
if not entity_id:
continue
if category_id in result: if category_id in result:
tag_key = tag_id if tag_id is not None else "untagged" tag_key = tag_id if tag_id is not None else "untagged"
if tag_key in result[category_id]["tags"]: if tag_key in result[category_id]["tags"]:
entity_key = entity_id entity_key = entity_id if entity_id is not None else "no_entity"
entity_name = entity_metric["entities__name"] entity_name = (
entity_metric["entities__name"]
if entity_id is not None
else None
)
if "entities" not in result[category_id]["tags"][tag_key]: if "entities" not in result[category_id]["tags"][tag_key]:
result[category_id]["tags"][tag_key]["entities"] = {} result[category_id]["tags"][tag_key]["entities"] = {}
+2
View File
@@ -102,4 +102,6 @@ def get_transactions(
account__in=request.user.untracked_accounts.all() account__in=request.user.untracked_accounts.all()
) )
transactions = transactions.exclude(account__currency__is_archived=True)
return transactions return transactions
@@ -30,6 +30,7 @@ def calculate_historical_currency_net_worth(queryset):
| Q(accounts__visibility="private", accounts__owner=None), | Q(accounts__visibility="private", accounts__owner=None),
accounts__is_archived=False, accounts__is_archived=False,
accounts__isnull=False, accounts__isnull=False,
is_archived=False,
) )
.values_list("name", flat=True) .values_list("name", flat=True)
.distinct() .distinct()
+137 -3
View File
@@ -1,15 +1,19 @@
from crispy_bootstrap5.bootstrap5 import Switch, BS5Accordion from crispy_bootstrap5.bootstrap5 import Switch, BS5Accordion
from crispy_forms.bootstrap import FormActions, AccordionGroup from crispy_forms.bootstrap import FormActions, AccordionGroup
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Field, Row, Column from crispy_forms.layout import Layout, Field, Row, Column, HTML
from django import forms from django import forms
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from apps.common.widgets.crispy.submit import NoClassSubmit from apps.common.widgets.crispy.submit import NoClassSubmit
from apps.common.widgets.tom_select import TomSelect from apps.common.widgets.crispy.submit import NoClassSubmit
from apps.common.widgets.tom_select import TomSelect, TransactionSelect
from apps.rules.models import TransactionRule, UpdateOrCreateTransactionRuleAction from apps.rules.models import TransactionRule, UpdateOrCreateTransactionRuleAction
from apps.rules.models import TransactionRuleAction from apps.rules.models import TransactionRuleAction
from apps.common.fields.forms.dynamic_select import DynamicModelChoiceField
from apps.transactions.forms import BulkEditTransactionForm
from apps.transactions.models import Transaction
class TransactionRuleForm(forms.ModelForm): class TransactionRuleForm(forms.ModelForm):
@@ -40,6 +44,8 @@ class TransactionRuleForm(forms.ModelForm):
Column(Switch("on_create")), Column(Switch("on_create")),
Column(Switch("on_delete")), Column(Switch("on_delete")),
), ),
"order",
Switch("sequenced"),
"description", "description",
"trigger", "trigger",
) )
@@ -65,10 +71,11 @@ class TransactionRuleForm(forms.ModelForm):
class TransactionRuleActionForm(forms.ModelForm): class TransactionRuleActionForm(forms.ModelForm):
class Meta: class Meta:
model = TransactionRuleAction model = TransactionRuleAction
fields = ("value", "field") fields = ("value", "field", "order")
labels = { labels = {
"field": _("Set field"), "field": _("Set field"),
"value": _("To"), "value": _("To"),
"order": _("Order"),
} }
widgets = {"field": TomSelect(clear_button=False)} widgets = {"field": TomSelect(clear_button=False)}
@@ -82,6 +89,7 @@ class TransactionRuleActionForm(forms.ModelForm):
self.helper.form_method = "post" self.helper.form_method = "post"
# TO-DO: Add helper with available commands # TO-DO: Add helper with available commands
self.helper.layout = Layout( self.helper.layout = Layout(
"order",
"field", "field",
"value", "value",
) )
@@ -147,9 +155,11 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
"search_category_operator": TomSelect(clear_button=False), "search_category_operator": TomSelect(clear_button=False),
"search_internal_note_operator": TomSelect(clear_button=False), "search_internal_note_operator": TomSelect(clear_button=False),
"search_internal_id_operator": TomSelect(clear_button=False), "search_internal_id_operator": TomSelect(clear_button=False),
"search_mute_operator": TomSelect(clear_button=False),
} }
labels = { labels = {
"order": _("Order"),
"search_account_operator": _("Operator"), "search_account_operator": _("Operator"),
"search_type_operator": _("Operator"), "search_type_operator": _("Operator"),
"search_is_paid_operator": _("Operator"), "search_is_paid_operator": _("Operator"),
@@ -163,6 +173,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
"search_internal_id_operator": _("Operator"), "search_internal_id_operator": _("Operator"),
"search_tags_operator": _("Operator"), "search_tags_operator": _("Operator"),
"search_entities_operator": _("Operator"), "search_entities_operator": _("Operator"),
"search_mute_operator": _("Operator"),
"search_account": _("Account"), "search_account": _("Account"),
"search_type": _("Type"), "search_type": _("Type"),
"search_is_paid": _("Paid"), "search_is_paid": _("Paid"),
@@ -176,6 +187,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
"search_internal_id": _("Internal ID"), "search_internal_id": _("Internal ID"),
"search_tags": _("Tags"), "search_tags": _("Tags"),
"search_entities": _("Entities"), "search_entities": _("Entities"),
"search_mute": _("Mute"),
"set_account": _("Account"), "set_account": _("Account"),
"set_type": _("Type"), "set_type": _("Type"),
"set_is_paid": _("Paid"), "set_is_paid": _("Paid"),
@@ -189,6 +201,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
"set_category": _("Category"), "set_category": _("Category"),
"set_internal_note": _("Internal Note"), "set_internal_note": _("Internal Note"),
"set_internal_id": _("Internal ID"), "set_internal_id": _("Internal ID"),
"set_mute": _("Mute"),
} }
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
@@ -200,6 +213,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
self.helper.form_method = "post" self.helper.form_method = "post"
self.helper.layout = Layout( self.helper.layout = Layout(
"order",
BS5Accordion( BS5Accordion(
AccordionGroup( AccordionGroup(
_("Search Criteria"), _("Search Criteria"),
@@ -224,6 +238,16 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
css_class="form-group col-md-8", css_class="form-group col-md-8",
), ),
), ),
Row(
Column(
Field("search_mute_operator"),
css_class="form-group col-md-4",
),
Column(
Field("search_mute", rows=1),
css_class="form-group col-md-8",
),
),
Row( Row(
Column( Column(
Field("search_account_operator"), Field("search_account_operator"),
@@ -340,6 +364,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
_("Set Values"), _("Set Values"),
Field("set_type", rows=1), Field("set_type", rows=1),
Field("set_is_paid", rows=1), Field("set_is_paid", rows=1),
Field("set_mute", rows=1),
Field("set_account", rows=1), Field("set_account", rows=1),
Field("set_entities", rows=1), Field("set_entities", rows=1),
Field("set_date", rows=1), Field("set_date", rows=1),
@@ -381,3 +406,112 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
if commit: if commit:
instance.save() instance.save()
return instance return instance
class DryRunCreatedTransacion(forms.Form):
transaction = DynamicModelChoiceField(
model=Transaction,
to_field_name="id",
label=_("Transaction"),
required=True,
queryset=Transaction.objects.none(),
widget=TransactionSelect(clear_button=False, income=True, expense=True),
help_text=_("Type to search for a transaction"),
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_tag = False
self.helper.layout = Layout(
"transaction",
FormActions(
NoClassSubmit(
"submit", _("Test"), css_class="btn btn-outline-primary w-100"
),
),
)
if self.data.get("transaction"):
try:
transaction = Transaction.objects.get(id=self.data.get("transaction"))
except Transaction.DoesNotExist:
transaction = None
if transaction:
self.fields["transaction"].queryset = Transaction.objects.filter(
id=transaction.id
)
class DryRunDeletedTransacion(forms.Form):
transaction = DynamicModelChoiceField(
model=Transaction,
to_field_name="id",
label=_("Transaction"),
required=True,
queryset=Transaction.objects.none(),
widget=TransactionSelect(clear_button=False, income=True, expense=True),
help_text=_("Type to search for a transaction"),
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_tag = False
self.helper.layout = Layout(
"transaction",
FormActions(
NoClassSubmit(
"submit", _("Test"), css_class="btn btn-outline-primary w-100"
),
),
)
if self.data.get("transaction"):
try:
transaction = Transaction.objects.get(id=self.data.get("transaction"))
except Transaction.DoesNotExist:
transaction = None
if transaction:
self.fields["transaction"].queryset = Transaction.objects.filter(
id=transaction.id
)
class DryRunUpdatedTransactionForm(BulkEditTransactionForm):
transaction = DynamicModelChoiceField(
model=Transaction,
to_field_name="id",
label=_("Transaction"),
required=True,
queryset=Transaction.objects.none(),
widget=TransactionSelect(clear_button=False, income=True, expense=True),
help_text=_("Type to search for a transaction"),
)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper.layout.insert(0, "transaction")
self.helper.layout.insert(1, HTML("<hr/>"))
# Change submit button
self.helper.layout[-1] = FormActions(
NoClassSubmit(
"submit", _("Test"), css_class="btn btn-outline-primary w-100"
)
)
if self.data.get("transaction"):
try:
transaction = Transaction.objects.get(id=self.data.get("transaction"))
except Transaction.DoesNotExist:
transaction = None
if transaction:
self.fields["transaction"].queryset = Transaction.objects.filter(
id=transaction.id
)
@@ -0,0 +1,39 @@
# Generated by Django 5.2 on 2025-08-30 18:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("rules", "0014_alter_transactionrule_owner_and_more"),
]
operations = [
migrations.AlterModelOptions(
name="transactionruleaction",
options={
"ordering": ["order"],
"verbose_name": "Edit transaction action",
"verbose_name_plural": "Edit transaction actions",
},
),
migrations.AlterModelOptions(
name="updateorcreatetransactionruleaction",
options={
"ordering": ["order"],
"verbose_name": "Update or create transaction action",
"verbose_name_plural": "Update or create transaction actions",
},
),
migrations.AddField(
model_name="transactionruleaction",
name="order",
field=models.PositiveIntegerField(default=0, verbose_name="Order"),
),
migrations.AddField(
model_name="updateorcreatetransactionruleaction",
name="order",
field=models.PositiveIntegerField(default=0, verbose_name="Order"),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 5.2.5 on 2025-08-31 18:42
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rules', '0015_alter_transactionruleaction_options_and_more'),
]
operations = [
migrations.AddField(
model_name='transactionrule',
name='sequenced',
field=models.BooleanField(default=False, verbose_name='Sequenced'),
),
]
@@ -0,0 +1,33 @@
# Generated by Django 5.2.5 on 2025-08-31 19:09
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rules', '0016_transactionrule_sequenced'),
]
operations = [
migrations.AddField(
model_name='updateorcreatetransactionruleaction',
name='search_mute',
field=models.TextField(blank=True, verbose_name='Search Mute'),
),
migrations.AddField(
model_name='updateorcreatetransactionruleaction',
name='search_mute_operator',
field=models.CharField(choices=[('exact', 'is exactly'), ('contains', 'contains'), ('startswith', 'starts with'), ('endswith', 'ends with'), ('eq', 'equals'), ('gt', 'greater than'), ('lt', 'less than'), ('gte', 'greater than or equal'), ('lte', 'less than or equal')], default='exact', max_length=10, verbose_name='Mute Operator'),
),
migrations.AddField(
model_name='updateorcreatetransactionruleaction',
name='set_mute',
field=models.TextField(blank=True, verbose_name='Mute'),
),
migrations.AlterField(
model_name='transactionruleaction',
name='field',
field=models.CharField(choices=[('account', 'Account'), ('type', 'Type'), ('is_paid', 'Paid'), ('date', 'Date'), ('reference_date', 'Reference Date'), ('mute', 'Mute'), ('amount', 'Amount'), ('description', 'Description'), ('notes', 'Notes'), ('category', 'Category'), ('tags', 'Tags'), ('entities', 'Entities'), ('internal_nome', 'Internal Note'), ('internal_id', 'Internal ID')], max_length=50, verbose_name='Field'),
),
]
@@ -0,0 +1,18 @@
# Generated by Django 5.2.5 on 2025-09-02 14:52
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('rules', '0017_updateorcreatetransactionruleaction_search_mute_and_more'),
]
operations = [
migrations.AddField(
model_name='transactionrule',
name='order',
field=models.PositiveIntegerField(default=0, verbose_name='Order'),
),
]
+40
View File
@@ -13,6 +13,11 @@ class TransactionRule(SharedObject):
name = models.CharField(max_length=100, verbose_name=_("Name")) name = models.CharField(max_length=100, verbose_name=_("Name"))
description = models.TextField(blank=True, null=True, verbose_name=_("Description")) description = models.TextField(blank=True, null=True, verbose_name=_("Description"))
trigger = models.TextField(verbose_name=_("Trigger")) trigger = models.TextField(verbose_name=_("Trigger"))
sequenced = models.BooleanField(
verbose_name=_("Sequenced"),
default=False,
)
order = models.PositiveIntegerField(default=0, verbose_name=_("Order"))
objects = SharedObjectManager() objects = SharedObjectManager()
all_objects = models.Manager() # Unfiltered manager all_objects = models.Manager() # Unfiltered manager
@@ -32,12 +37,15 @@ class TransactionRuleAction(models.Model):
is_paid = "is_paid", _("Paid") is_paid = "is_paid", _("Paid")
date = "date", _("Date") date = "date", _("Date")
reference_date = "reference_date", _("Reference Date") reference_date = "reference_date", _("Reference Date")
mute = "mute", _("Mute")
amount = "amount", _("Amount") amount = "amount", _("Amount")
description = "description", _("Description") description = "description", _("Description")
notes = "notes", _("Notes") notes = "notes", _("Notes")
category = "category", _("Category") category = "category", _("Category")
tags = "tags", _("Tags") tags = "tags", _("Tags")
entities = "entities", _("Entities") entities = "entities", _("Entities")
internal_note = "internal_nome", _("Internal Note")
internal_id = "internal_id", _("Internal ID")
rule = models.ForeignKey( rule = models.ForeignKey(
TransactionRule, TransactionRule,
@@ -51,6 +59,7 @@ class TransactionRuleAction(models.Model):
verbose_name=_("Field"), verbose_name=_("Field"),
) )
value = models.TextField(verbose_name=_("Value")) value = models.TextField(verbose_name=_("Value"))
order = models.PositiveIntegerField(default=0, verbose_name=_("Order"))
def __str__(self): def __str__(self):
return f"{self.rule} - {self.field} - {self.value}" return f"{self.rule} - {self.field} - {self.value}"
@@ -59,6 +68,11 @@ class TransactionRuleAction(models.Model):
verbose_name = _("Edit transaction action") verbose_name = _("Edit transaction action")
verbose_name_plural = _("Edit transaction actions") verbose_name_plural = _("Edit transaction actions")
unique_together = (("rule", "field"),) unique_together = (("rule", "field"),)
ordering = ["order"]
@property
def action_type(self):
return "edit_transaction"
class UpdateOrCreateTransactionRuleAction(models.Model): class UpdateOrCreateTransactionRuleAction(models.Model):
@@ -237,6 +251,17 @@ class UpdateOrCreateTransactionRuleAction(models.Model):
verbose_name="Internal ID Operator", verbose_name="Internal ID Operator",
) )
search_mute = models.TextField(
verbose_name="Search Mute",
blank=True,
)
search_mute_operator = models.CharField(
max_length=10,
choices=SearchOperator.choices,
default=SearchOperator.EXACT,
verbose_name="Mute Operator",
)
# Set fields # Set fields
set_account = models.TextField( set_account = models.TextField(
verbose_name=_("Account"), verbose_name=_("Account"),
@@ -290,10 +315,21 @@ class UpdateOrCreateTransactionRuleAction(models.Model):
verbose_name=_("Tags"), verbose_name=_("Tags"),
blank=True, blank=True,
) )
set_mute = models.TextField(
verbose_name=_("Mute"),
blank=True,
)
order = models.PositiveIntegerField(default=0, verbose_name=_("Order"))
class Meta: class Meta:
verbose_name = _("Update or create transaction action") verbose_name = _("Update or create transaction action")
verbose_name_plural = _("Update or create transaction actions") verbose_name_plural = _("Update or create transaction actions")
ordering = ["order"]
@property
def action_type(self):
return "update_or_create_transaction"
def __str__(self): def __str__(self):
return f"Update or create transaction action for {self.rule}" return f"Update or create transaction action for {self.rule}"
@@ -325,6 +361,10 @@ class UpdateOrCreateTransactionRuleAction(models.Model):
value = simple.eval(self.search_is_paid) value = simple.eval(self.search_is_paid)
search_query &= add_to_query("is_paid", value, self.search_is_paid_operator) search_query &= add_to_query("is_paid", value, self.search_is_paid_operator)
if self.search_mute:
value = simple.eval(self.search_mute)
search_query &= add_to_query("mute", value, self.search_mute_operator)
if self.search_date: if self.search_date:
value = simple.eval(self.search_date) value = simple.eval(self.search_date)
search_query &= add_to_query("date", value, self.search_date_operator) search_query &= add_to_query("date", value, self.search_date_operator)
+7 -26
View File
@@ -9,40 +9,17 @@ from apps.transactions.models import (
) )
from apps.rules.tasks import check_for_transaction_rules from apps.rules.tasks import check_for_transaction_rules
from apps.common.middleware.thread_local import get_current_user from apps.common.middleware.thread_local import get_current_user
from apps.rules.utils.transactions import serialize_transaction
@receiver(transaction_created) @receiver(transaction_created)
@receiver(transaction_updated) @receiver(transaction_updated)
@receiver(transaction_deleted) @receiver(transaction_deleted)
def transaction_changed_receiver(sender: Transaction, signal, **kwargs): def transaction_changed_receiver(sender: Transaction, signal, **kwargs):
old_data = kwargs.get("old_data")
if signal is transaction_deleted: if signal is transaction_deleted:
# Serialize transaction data for processing # Serialize transaction data for processing
transaction_data = { transaction_data = serialize_transaction(sender, deleted=True)
"id": sender.id,
"account": (sender.account.id, sender.account.name),
"account_group": (
sender.account.group.id if sender.account.group else None,
sender.account.group.name if sender.account.group else None,
),
"type": str(sender.type),
"is_paid": sender.is_paid,
"is_asset": sender.account.is_asset,
"is_archived": sender.account.is_archived,
"category": (
sender.category.id if sender.category else None,
sender.category.name if sender.category else None,
),
"date": sender.date.isoformat(),
"reference_date": sender.reference_date.isoformat(),
"amount": str(sender.amount),
"description": sender.description,
"notes": sender.notes,
"tags": list(sender.tags.values_list("id", "name")),
"entities": list(sender.entities.values_list("id", "name")),
"deleted": True,
"internal_note": sender.internal_note,
"internal_id": sender.internal_id,
}
check_for_transaction_rules.defer( check_for_transaction_rules.defer(
transaction_data=transaction_data, transaction_data=transaction_data,
@@ -59,6 +36,9 @@ def transaction_changed_receiver(sender: Transaction, signal, **kwargs):
dca_entry.amount_received = sender.amount dca_entry.amount_received = sender.amount
dca_entry.save() dca_entry.save()
if signal is transaction_updated and old_data:
old_data = serialize_transaction(old_data, deleted=False)
check_for_transaction_rules.defer( check_for_transaction_rules.defer(
instance_id=sender.id, instance_id=sender.id,
user_id=get_current_user().id, user_id=get_current_user().id,
@@ -67,4 +47,5 @@ def transaction_changed_receiver(sender: Transaction, signal, **kwargs):
if signal is transaction_created if signal is transaction_created
else "transaction_updated" else "transaction_updated"
), ),
old_data=old_data,
) )
+657 -331
View File
File diff suppressed because it is too large Load Diff
+15
View File
@@ -42,6 +42,21 @@ urlpatterns = [
views.transaction_rule_take_ownership, views.transaction_rule_take_ownership,
name="transaction_rule_take_ownership", name="transaction_rule_take_ownership",
), ),
path(
"rules/transaction/<int:pk>/dry-run/created/",
views.dry_run_rule_created,
name="transaction_rule_dry_run_created",
),
path(
"rules/transaction/<int:pk>/dry-run/deleted/",
views.dry_run_rule_deleted,
name="transaction_rule_dry_run_deleted",
),
path(
"rules/transaction/<int:pk>/dry-run/updated/",
views.dry_run_rule_updated,
name="transaction_rule_dry_run_updated",
),
path( path(
"rules/transaction/<int:pk>/share/", "rules/transaction/<int:pk>/share/",
views.transaction_rule_share, views.transaction_rule_share,
View File
+93
View File
@@ -0,0 +1,93 @@
import logging
from decimal import Decimal
from django.db.models import Sum, Value, DecimalField, Case, When, F
from django.db.models.functions import Coalesce
from apps.transactions.models import (
Transaction,
)
logger = logging.getLogger(__name__)
class TransactionsGetter:
def __init__(self, **filters):
self.__queryset = Transaction.objects.filter(**filters)
def exclude(self, **exclude_filters):
self.__queryset = self.__queryset.exclude(**exclude_filters)
return self
@property
def sum(self):
return self.__queryset.aggregate(
total=Coalesce(
Sum("amount"), Value(Decimal("0")), output_field=DecimalField()
)
)["total"]
@property
def balance(self):
return abs(
self.__queryset.aggregate(
balance=Coalesce(
Sum(
Case(
When(type=Transaction.Type.EXPENSE, then=-F("amount")),
default=F("amount"),
output_field=DecimalField(),
)
),
Value(Decimal("0")),
output_field=DecimalField(),
)
)["balance"]
)
@property
def raw_balance(self):
return self.__queryset.aggregate(
balance=Coalesce(
Sum(
Case(
When(type=Transaction.Type.EXPENSE, then=-F("amount")),
default=F("amount"),
output_field=DecimalField(),
)
),
Value(Decimal("0")),
output_field=DecimalField(),
)
)["balance"]
def serialize_transaction(sender: Transaction, deleted: bool):
return {
"id": sender.id,
"account": (sender.account.id, sender.account.name),
"account_group": (
sender.account.group.id if sender.account.group else None,
sender.account.group.name if sender.account.group else None,
),
"type": str(sender.type),
"is_paid": sender.is_paid,
"is_asset": sender.account.is_asset,
"is_archived": sender.account.is_archived,
"category": (
sender.category.id if sender.category else None,
sender.category.name if sender.category else None,
),
"date": sender.date.isoformat(),
"reference_date": sender.reference_date.isoformat(),
"amount": str(sender.amount),
"description": sender.description,
"notes": sender.notes,
"tags": list(sender.tags.values_list("id", "name")),
"entities": list(sender.entities.values_list("id", "name")),
"deleted": deleted,
"internal_note": sender.internal_note,
"internal_id": sender.internal_id,
"mute": sender.mute,
}
+178 -2
View File
@@ -1,5 +1,10 @@
from itertools import chain
from copy import deepcopy
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.db import transaction
from django.http import HttpResponse from django.http import HttpResponse
from django.shortcuts import render, get_object_or_404, redirect from django.shortcuts import render, get_object_or_404, redirect
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@@ -10,6 +15,9 @@ from apps.rules.forms import (
TransactionRuleForm, TransactionRuleForm,
TransactionRuleActionForm, TransactionRuleActionForm,
UpdateOrCreateTransactionRuleActionForm, UpdateOrCreateTransactionRuleActionForm,
DryRunCreatedTransacion,
DryRunDeletedTransacion,
DryRunUpdatedTransactionForm,
) )
from apps.rules.models import ( from apps.rules.models import (
TransactionRule, TransactionRule,
@@ -19,6 +27,11 @@ from apps.rules.models import (
from apps.common.models import SharedObject from apps.common.models import SharedObject
from apps.common.forms import SharedObjectForm from apps.common.forms import SharedObjectForm
from apps.common.decorators.demo import disabled_on_demo from apps.common.decorators.demo import disabled_on_demo
from apps.rules.tasks import check_for_transaction_rules
from apps.common.middleware.thread_local import get_current_user
from apps.rules.signals import transaction_created, transaction_updated
from apps.rules.utils.transactions import serialize_transaction
from apps.transactions.models import Transaction
@login_required @login_required
@@ -36,7 +49,7 @@ def rules_index(request):
@disabled_on_demo @disabled_on_demo
@require_http_methods(["GET"]) @require_http_methods(["GET"])
def rules_list(request): def rules_list(request):
transaction_rules = TransactionRule.objects.all().order_by("id") transaction_rules = TransactionRule.objects.all().order_by("order", "id")
return render( return render(
request, request,
"rules/fragments/list.html", "rules/fragments/list.html",
@@ -140,10 +153,20 @@ def transaction_rule_edit(request, transaction_rule_id):
def transaction_rule_view(request, transaction_rule_id): def transaction_rule_view(request, transaction_rule_id):
transaction_rule = get_object_or_404(TransactionRule, id=transaction_rule_id) transaction_rule = get_object_or_404(TransactionRule, id=transaction_rule_id)
edit_actions = transaction_rule.transaction_actions.all()
update_or_create_actions = (
transaction_rule.update_or_create_transaction_actions.all()
)
all_actions = sorted(
chain(edit_actions, update_or_create_actions),
key=lambda a: a.order,
)
return render( return render(
request, request,
"rules/fragments/transaction_rule/view.html", "rules/fragments/transaction_rule/view.html",
{"transaction_rule": transaction_rule}, {"transaction_rule": transaction_rule, "all_actions": all_actions},
) )
@@ -406,3 +429,156 @@ def update_or_create_transaction_rule_action_delete(request, pk):
"HX-Trigger": "updated, hide_offcanvas", "HX-Trigger": "updated, hide_offcanvas",
}, },
) )
@only_htmx
@login_required
@disabled_on_demo
@require_http_methods(["GET", "POST"])
def dry_run_rule_created(request, pk):
rule = get_object_or_404(TransactionRule, id=pk)
logs = None
results = None
if request.method == "POST":
form = DryRunCreatedTransacion(request.POST)
if form.is_valid():
try:
with transaction.atomic():
logs, results = check_for_transaction_rules(
instance_id=form.cleaned_data["transaction"].id,
signal="transaction_created",
dry_run=True,
rule_id=rule.id,
user_id=get_current_user().id,
)
logs = "\n".join(logs)
response = render(
request,
"rules/fragments/transaction_rule/dry_run/created.html",
{"form": form, "rule": rule, "logs": logs, "results": results},
)
raise Exception("ROLLBACK")
except Exception:
pass
return response
else:
form = DryRunCreatedTransacion()
return render(
request,
"rules/fragments/transaction_rule/dry_run/created.html",
{"form": form, "rule": rule, "logs": logs, "results": results},
)
@only_htmx
@login_required
@disabled_on_demo
@require_http_methods(["GET", "POST"])
def dry_run_rule_deleted(request, pk):
rule = get_object_or_404(TransactionRule, id=pk)
logs = None
results = None
if request.method == "POST":
form = DryRunDeletedTransacion(request.POST)
if form.is_valid():
try:
with transaction.atomic():
logs, results = check_for_transaction_rules(
instance_id=form.cleaned_data["transaction"].id,
signal="transaction_deleted",
dry_run=True,
rule_id=rule.id,
user_id=get_current_user().id,
)
logs = "\n".join(logs)
response = render(
request,
"rules/fragments/transaction_rule/dry_run/created.html",
{"form": form, "rule": rule, "logs": logs, "results": results},
)
raise Exception("ROLLBACK")
except Exception:
pass
return response
else:
form = DryRunDeletedTransacion()
return render(
request,
"rules/fragments/transaction_rule/dry_run/deleted.html",
{"form": form, "rule": rule, "logs": logs, "results": results},
)
@only_htmx
@login_required
@disabled_on_demo
@require_http_methods(["GET", "POST"])
def dry_run_rule_updated(request, pk):
rule = get_object_or_404(TransactionRule, id=pk)
logs = None
results = None
if request.method == "POST":
form = DryRunUpdatedTransactionForm(request.POST)
if form.is_valid():
base_transaction = Transaction.objects.get(
id=request.POST.get("transaction")
)
old_data = deepcopy(base_transaction)
try:
with transaction.atomic():
for field_name, value in form.cleaned_data.items():
if value or isinstance(
value, bool
): # Only update fields that have been filled in the form
if field_name == "tags":
base_transaction.tags.set(value)
elif field_name == "entities":
base_transaction.entities.set(value)
else:
setattr(base_transaction, field_name, value)
base_transaction.save()
logs, results = check_for_transaction_rules(
instance_id=base_transaction.id,
signal="transaction_updated",
dry_run=True,
rule_id=rule.id,
user_id=get_current_user().id,
old_data=old_data,
)
logs = "\n".join(logs) if logs else ""
response = render(
request,
"rules/fragments/transaction_rule/dry_run/created.html",
{"form": form, "rule": rule, "logs": logs, "results": results},
)
# This will rollback the transaction
raise Exception("ROLLBACK")
except Exception:
pass
return response
else:
form = DryRunUpdatedTransactionForm(initial={"is_paid": None, "type": None})
return render(
request,
"rules/fragments/transaction_rule/dry_run/updated.html",
{"form": form, "rule": rule, "logs": logs, "results": results},
)
+107 -22
View File
@@ -1,3 +1,5 @@
from copy import deepcopy
from crispy_bootstrap5.bootstrap5 import Switch, BS5Accordion from crispy_bootstrap5.bootstrap5 import Switch, BS5Accordion
from crispy_forms.bootstrap import FormActions, AccordionGroup, AppendedText from crispy_forms.bootstrap import FormActions, AccordionGroup, AppendedText
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
@@ -239,11 +241,16 @@ class TransactionForm(forms.ModelForm):
def save(self, **kwargs): def save(self, **kwargs):
is_new = not self.instance.id is_new = not self.instance.id
if not is_new:
old_data = deepcopy(Transaction.objects.get(pk=self.instance.id))
else:
old_data = None
instance = super().save(**kwargs) instance = super().save(**kwargs)
if is_new: if is_new:
transaction_created.send(sender=instance) transaction_created.send(sender=instance)
else: else:
transaction_updated.send(sender=instance) transaction_updated.send(sender=instance, old_data=old_data)
return instance return instance
@@ -347,11 +354,6 @@ class QuickTransactionForm(forms.ModelForm):
Column("entities", css_class="form-group col-md-6 mb-0"), Column("entities", css_class="form-group col-md-6 mb-0"),
css_class="form-row", css_class="form-row",
), ),
Row(
Column(Field("date"), css_class="form-group col-md-6 mb-0"),
Column(Field("reference_date"), css_class="form-group col-md-6 mb-0"),
css_class="form-row",
),
"description", "description",
Field("amount", inputmode="decimal"), Field("amount", inputmode="decimal"),
Row( Row(
@@ -387,35 +389,115 @@ class QuickTransactionForm(forms.ModelForm):
) )
class BulkEditTransactionForm(TransactionForm): class BulkEditTransactionForm(forms.Form):
is_paid = forms.NullBooleanField(required=False) type = forms.ChoiceField(
choices=(Transaction.Type.choices),
required=False,
label=_("Type"),
)
is_paid = forms.NullBooleanField(
required=False,
label=_("Paid"),
)
account = DynamicModelChoiceField(
model=Account,
required=False,
label=_("Account"),
queryset=Account.objects.filter(is_archived=False),
widget=TomSelect(clear_button=False, group_by="group"),
)
date = forms.DateField(
label=_("Date"),
required=False,
widget=AirDatePickerInput(clear_button=False),
)
reference_date = forms.DateField(
widget=AirMonthYearPickerInput(),
label=_("Reference Date"),
required=False,
)
amount = forms.DecimalField(
max_digits=42,
decimal_places=30,
required=False,
label=_("Amount"),
widget=ArbitraryDecimalDisplayNumberInput(),
)
description = forms.CharField(
max_length=500, required=False, label=_("Description")
)
notes = forms.CharField(
required=False,
widget=forms.Textarea(attrs={"rows": 3}),
label=_("Notes"),
)
category = DynamicModelChoiceField(
create_field="name",
model=TransactionCategory,
required=False,
label=_("Category"),
queryset=TransactionCategory.objects.filter(active=True),
)
tags = DynamicModelMultipleChoiceField(
model=TransactionTag,
to_field_name="name",
create_field="name",
required=False,
label=_("Tags"),
queryset=TransactionTag.objects.filter(active=True),
)
entities = DynamicModelMultipleChoiceField(
model=TransactionEntity,
to_field_name="name",
create_field="name",
required=False,
label=_("Entities"),
queryset=TransactionEntity.objects.all(),
)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
# Make all fields optional
for field_name, field in self.fields.items():
field.required = False
del self.helper.layout[-1] # Remove button self.fields["account"].queryset = Account.objects.filter(
del self.helper.layout[0:2] # Remove type, is_paid field is_archived=False,
)
self.helper.layout.insert( self.fields["category"].queryset = TransactionCategory.objects.filter(
0, active=True
)
self.fields["tags"].queryset = TransactionTag.objects.filter(active=True)
self.fields["entities"].queryset = TransactionEntity.objects.all()
self.helper = FormHelper()
self.helper.form_tag = False
self.helper.form_method = "post"
self.helper.layout = Layout(
Field( Field(
"type", "type",
template="transactions/widgets/unselectable_income_expense_toggle_buttons.html", template="transactions/widgets/unselectable_income_expense_toggle_buttons.html",
), ),
)
self.helper.layout.insert(
1,
Field( Field(
"is_paid", "is_paid",
template="transactions/widgets/unselectable_paid_toggle_button.html", template="transactions/widgets/unselectable_paid_toggle_button.html",
), ),
) Row(
Column("account", css_class="form-group col-md-6 mb-0"),
self.helper.layout.append( Column("entities", css_class="form-group col-md-6 mb-0"),
css_class="form-row",
),
Row(
Column(Field("date"), css_class="form-group col-md-6 mb-0"),
Column(Field("reference_date"), css_class="form-group col-md-6 mb-0"),
css_class="form-row",
),
"description",
Field("amount", inputmode="decimal"),
Row(
Column("category", css_class="form-group col-md-6 mb-0"),
Column("tags", css_class="form-group col-md-6 mb-0"),
css_class="form-row",
),
"notes",
FormActions( FormActions(
NoClassSubmit( NoClassSubmit(
"submit", _("Update"), css_class="btn btn-outline-primary w-100" "submit", _("Update"), css_class="btn btn-outline-primary w-100"
@@ -423,6 +505,9 @@ class BulkEditTransactionForm(TransactionForm):
), ),
) )
self.fields["amount"].widget = ArbitraryDecimalDisplayNumberInput()
self.fields["date"].widget = AirDatePickerInput(clear_button=False)
class TransferForm(forms.Form): class TransferForm(forms.Form):
from_account = forms.ModelChoiceField( from_account = forms.ModelChoiceField(
+62 -7
View File
@@ -1,4 +1,5 @@
import logging import logging
from copy import deepcopy
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
from django.conf import settings from django.conf import settings
@@ -33,13 +34,13 @@ transaction_deleted = Signal()
class SoftDeleteQuerySet(models.QuerySet): class SoftDeleteQuerySet(models.QuerySet):
@staticmethod @staticmethod
def _emit_signals(instances, created=False): def _emit_signals(instances, created=False, old_data=None):
"""Helper to emit signals for multiple instances""" """Helper to emit signals for multiple instances"""
for instance in instances: for i, instance in enumerate(instances):
if created: if created:
transaction_created.send(sender=instance) transaction_created.send(sender=instance)
else: else:
transaction_updated.send(sender=instance) transaction_updated.send(sender=instance, old_data=old_data[i])
def bulk_create(self, objs, emit_signal=True, **kwargs): def bulk_create(self, objs, emit_signal=True, **kwargs):
instances = super().bulk_create(objs, **kwargs) instances = super().bulk_create(objs, **kwargs)
@@ -50,22 +51,25 @@ class SoftDeleteQuerySet(models.QuerySet):
return instances return instances
def bulk_update(self, objs, fields, emit_signal=True, **kwargs): def bulk_update(self, objs, fields, emit_signal=True, **kwargs):
old_data = deepcopy(objs)
result = super().bulk_update(objs, fields, **kwargs) result = super().bulk_update(objs, fields, **kwargs)
if emit_signal: if emit_signal:
self._emit_signals(objs, created=False) self._emit_signals(objs, created=False, old_data=old_data)
return result return result
def update(self, emit_signal=True, **kwargs): def update(self, emit_signal=True, **kwargs):
# Get instances before update # Get instances before update
instances = list(self) instances = list(self)
old_data = deepcopy(instances)
result = super().update(**kwargs) result = super().update(**kwargs)
if emit_signal: if emit_signal:
# Refresh instances to get new values # Refresh instances to get new values
refreshed = self.model.objects.filter(pk__in=[obj.pk for obj in instances]) refreshed = self.model.objects.filter(pk__in=[obj.pk for obj in instances])
self._emit_signals(refreshed, created=False) self._emit_signals(refreshed, created=False, old_data=old_data)
return result return result
@@ -376,7 +380,7 @@ class Transaction(OwnedObject):
db_table = "transactions" db_table = "transactions"
default_manager_name = "objects" default_manager_name = "objects"
def save(self, *args, **kwargs): def clean_fields(self, *args, **kwargs):
self.amount = truncate_decimal( self.amount = truncate_decimal(
value=self.amount, decimal_places=self.account.currency.decimal_places value=self.amount, decimal_places=self.account.currency.decimal_places
) )
@@ -386,6 +390,11 @@ class Transaction(OwnedObject):
elif not self.reference_date and self.date: elif not self.reference_date and self.date:
self.reference_date = self.date.replace(day=1) self.reference_date = self.date.replace(day=1)
super().clean_fields(*args, **kwargs)
def save(self, *args, **kwargs):
# This is not recommended as it will run twice on some cases like form and API saves.
# We only do this here because we forgot to independently call it on multiple places.
self.full_clean() self.full_clean()
super().save(*args, **kwargs) super().save(*args, **kwargs)
@@ -443,12 +452,58 @@ class Transaction(OwnedObject):
type_display = self.get_type_display() type_display = self.get_type_display()
frmt_date = date(self.date, "SHORT_DATE_FORMAT") frmt_date = date(self.date, "SHORT_DATE_FORMAT")
account = self.account account = self.account
tags = ", ".join([x.name for x in self.tags.all()]) or _("No tags") tags = (
", ".join([x.name for x in self.tags.all()])
if self.id
else None or _("No tags")
)
category = self.category or _("No category") category = self.category or _("No category")
amount = localize_number(drop_trailing_zeros(self.amount)) amount = localize_number(drop_trailing_zeros(self.amount))
description = self.description or _("No description") description = self.description or _("No description")
return f"[{frmt_date}][{type_display}][{account}] {description}{category}{tags}{amount}" return f"[{frmt_date}][{type_display}][{account}] {description}{category}{tags}{amount}"
def deepcopy(self, memo=None):
"""
Creates a deep copy of the transaction instance.
This method returns a new, unsaved Transaction instance with the same
values as the original, including its many-to-many relationships.
The primary key and any other unique fields are reset to avoid
database integrity errors upon saving.
"""
if memo is None:
memo = {}
# Create a new instance of the class
new_obj = self.__class__()
memo[id(self)] = new_obj
# Copy all concrete fields from the original to the new object
for field in self._meta.concrete_fields:
# Skip the primary key to allow the database to generate a new one
if field.primary_key:
continue
# Reset any unique fields to None to avoid constraint violations
if field.unique and field.name == "internal_id":
setattr(new_obj, field.name, None)
continue
# Copy the value of the field
setattr(new_obj, field.name, getattr(self, field.name))
# Save the new object to the database to get a primary key
new_obj.save()
# Copy the many-to-many relationships
for field in self._meta.many_to_many:
source_manager = getattr(self, field.name)
destination_manager = getattr(new_obj, field.name)
# Set the M2M relationships for the new object
destination_manager.set(source_manager.all())
return new_obj
class InstallmentPlan(models.Model): class InstallmentPlan(models.Model):
class Recurrence(models.TextChoices): class Recurrence(models.TextChoices):
+1 -1
View File
@@ -175,6 +175,6 @@ class RecurringTransactionTests(TestCase):
recurrence_type=RecurringTransaction.RecurrenceType.MONTH, recurrence_type=RecurringTransaction.RecurrenceType.MONTH,
recurrence_interval=1, recurrence_interval=1,
) )
self.assertFalse(recurring.paused) self.assertFalse(recurring.is_paused)
self.assertEqual(recurring.recurrence_interval, 1) self.assertEqual(recurring.recurrence_interval, 1)
self.assertEqual(recurring.account.currency.code, "USD") self.assertEqual(recurring.account.currency.code, "USD")
+14 -6
View File
@@ -213,6 +213,7 @@ def transactions_bulk_edit(request):
if form.is_valid(): if form.is_valid():
# Apply changes from the form to all selected transactions # Apply changes from the form to all selected transactions
for transaction in transactions: for transaction in transactions:
old_data = deepcopy(transaction)
for field_name, value in form.cleaned_data.items(): for field_name, value in form.cleaned_data.items():
if value or isinstance( if value or isinstance(
value, bool value, bool
@@ -225,7 +226,7 @@ def transactions_bulk_edit(request):
setattr(transaction, field_name, value) setattr(transaction, field_name, value)
transaction.save() transaction.save()
transaction_updated.send(sender=transaction) transaction_updated.send(sender=transaction, old_data=old_data)
messages.success( messages.success(
request, request,
@@ -373,10 +374,13 @@ def transactions_transfer(request):
@require_http_methods(["GET"]) @require_http_methods(["GET"])
def transaction_pay(request, transaction_id): def transaction_pay(request, transaction_id):
transaction = get_object_or_404(Transaction, pk=transaction_id) transaction = get_object_or_404(Transaction, pk=transaction_id)
old_data = deepcopy(transaction)
new_is_paid = False if transaction.is_paid else True new_is_paid = False if transaction.is_paid else True
transaction.is_paid = new_is_paid transaction.is_paid = new_is_paid
transaction.save() transaction.save()
transaction_updated.send(sender=transaction)
transaction_updated.send(sender=transaction, old_data=old_data)
response = render( response = render(
request, request,
@@ -394,11 +398,12 @@ def transaction_pay(request, transaction_id):
@require_http_methods(["GET"]) @require_http_methods(["GET"])
def transaction_mute(request, transaction_id): def transaction_mute(request, transaction_id):
transaction = get_object_or_404(Transaction, pk=transaction_id) transaction = get_object_or_404(Transaction, pk=transaction_id)
old_data = deepcopy(transaction)
new_mute = False if transaction.mute else True new_mute = False if transaction.mute else True
transaction.mute = new_mute transaction.mute = new_mute
transaction.save() transaction.save()
transaction_updated.send(sender=transaction) transaction_updated.send(sender=transaction, old_data=old_data)
response = render( response = render(
request, request,
@@ -414,19 +419,20 @@ def transaction_mute(request, transaction_id):
@require_http_methods(["GET"]) @require_http_methods(["GET"])
def transaction_change_month(request, transaction_id, change_type): def transaction_change_month(request, transaction_id, change_type):
transaction: Transaction = get_object_or_404(Transaction, pk=transaction_id) transaction: Transaction = get_object_or_404(Transaction, pk=transaction_id)
old_data = deepcopy(transaction)
if change_type == "next": if change_type == "next":
transaction.reference_date = transaction.reference_date + relativedelta( transaction.reference_date = transaction.reference_date + relativedelta(
months=1 months=1
) )
transaction.save() transaction.save()
transaction_updated.send(sender=transaction) transaction_updated.send(sender=transaction, old_data=old_data)
elif change_type == "previous": elif change_type == "previous":
transaction.reference_date = transaction.reference_date - relativedelta( transaction.reference_date = transaction.reference_date - relativedelta(
months=1 months=1
) )
transaction.save() transaction.save()
transaction_updated.send(sender=transaction) transaction_updated.send(sender=transaction, old_data=old_data)
return HttpResponse( return HttpResponse(
status=204, status=204,
@@ -440,9 +446,11 @@ def transaction_change_month(request, transaction_id, change_type):
def transaction_move_to_today(request, transaction_id): def transaction_move_to_today(request, transaction_id):
transaction: Transaction = get_object_or_404(Transaction, pk=transaction_id) transaction: Transaction = get_object_or_404(Transaction, pk=transaction_id)
old_data = deepcopy(transaction)
transaction.date = timezone.localdate(timezone.now()) transaction.date = timezone.localdate(timezone.now())
transaction.save() transaction.save()
transaction_updated.send(sender=transaction) transaction_updated.send(sender=transaction, old_data=old_data)
return HttpResponse( return HttpResponse(
status=204, status=204,
+5
View File
@@ -17,6 +17,11 @@ urlpatterns = [
views.toggle_sound_playing, views.toggle_sound_playing,
name="toggle_sound_playing", name="toggle_sound_playing",
), ),
path(
"user/toggle-sidebar/",
views.toggle_sidebar_status,
name="toggle_sidebar_status",
),
path( path(
"user/settings/", "user/settings/",
views.update_settings, views.update_settings,
+18
View File
@@ -116,6 +116,24 @@ def update_settings(request):
return render(request, "users/fragments/user_settings.html", {"form": form}) return render(request, "users/fragments/user_settings.html", {"form": form})
@only_htmx
@htmx_login_required
def toggle_sidebar_status(request):
if not request.session.get("sidebar_status"):
request.session["sidebar_status"] = "floating"
if request.session["sidebar_status"] == "floating":
request.session["sidebar_status"] = "fixed"
elif request.session["sidebar_status"] == "fixed":
request.session["sidebar_status"] = "floating"
else:
request.session["sidebar_status"] = "fixed"
return HttpResponse(
status=204,
)
@htmx_login_required @htmx_login_required
@is_superuser @is_superuser
@require_http_methods(["GET"]) @require_http_methods(["GET"])
+1 -1
View File
@@ -79,7 +79,7 @@ def yearly_overview_by_currency(request, year: int):
currency = request.GET.get("currency") currency = request.GET.get("currency")
# Base query filter # Base query filter
filter_params = {"reference_date__year": year, "account__is_archived": False} filter_params = {"reference_date__year": year}
# Add month filter if provided # Add month filter if provided
if month: if month:
+167 -155
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-08-17 06:55+0000\n" "POT-Creation-Date: 2025-08-30 02:09+0000\n"
"PO-Revision-Date: 2025-07-22 06:17+0000\n" "PO-Revision-Date: 2025-07-22 06:17+0000\n"
"Last-Translator: seraphblade2010 <marc.butenhoff@web.de>\n" "Last-Translator: seraphblade2010 <marc.butenhoff@web.de>\n"
"Language-Team: German <https://translations.herculino.com/projects/wygiwyh/" "Language-Team: German <https://translations.herculino.com/projects/wygiwyh/"
@@ -19,32 +19,32 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.12.2\n" "X-Generator: Weblate 5.12.2\n"
#: apps/accounts/forms.py:24 #: apps/accounts/forms.py:26
msgid "Group name" msgid "Group name"
msgstr "Gruppe Name" msgstr "Gruppe Name"
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98 #: apps/accounts/forms.py:42 apps/accounts/forms.py:118
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91 #: apps/currencies/forms.py:55 apps/currencies/forms.py:93
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224 #: apps/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
#: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93 #: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93
#: apps/rules/forms.py:365 apps/transactions/forms.py:204 #: apps/rules/forms.py:365 apps/transactions/forms.py:204
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421 #: apps/transactions/forms.py:369 apps/transactions/forms.py:416
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836 #: apps/transactions/forms.py:788 apps/transactions/forms.py:831
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903 #: apps/transactions/forms.py:863 apps/transactions/forms.py:898
#: apps/transactions/forms.py:1057 apps/users/forms.py:217 #: apps/transactions/forms.py:1052 apps/users/forms.py:217
#: apps/users/forms.py:379 #: apps/users/forms.py:379
msgid "Update" msgid "Update"
msgstr "Aktualisierung" msgstr "Aktualisierung"
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106 #: apps/accounts/forms.py:50 apps/accounts/forms.py:126
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61 #: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152 #: apps/currencies/forms.py:101 apps/currencies/forms.py:154
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42 #: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
#: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373 #: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373
#: apps/transactions/forms.py:189 apps/transactions/forms.py:213 #: apps/transactions/forms.py:189 apps/transactions/forms.py:213
#: apps/transactions/forms.py:383 apps/transactions/forms.py:801 #: apps/transactions/forms.py:378 apps/transactions/forms.py:796
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876 #: apps/transactions/forms.py:839 apps/transactions/forms.py:871
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065 #: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
#: apps/users/forms.py:225 apps/users/forms.py:387 #: apps/users/forms.py:225 apps/users/forms.py:387
#: templates/account_groups/fragments/list.html:9 #: templates/account_groups/fragments/list.html:9
#: templates/accounts/fragments/list.html:9 #: templates/accounts/fragments/list.html:9
@@ -66,37 +66,37 @@ msgstr "Aktualisierung"
msgid "Add" msgid "Add"
msgstr "Hinzufügen" msgstr "Hinzufügen"
#: apps/accounts/forms.py:57 templates/accounts/fragments/list.html:26 #: apps/accounts/forms.py:59 templates/accounts/fragments/list.html:26
msgid "Group" msgid "Group"
msgstr "Gruppe" msgstr "Gruppe"
#: apps/accounts/forms.py:115 #: apps/accounts/forms.py:135
msgid "New balance" msgid "New balance"
msgstr "Neuer Saldo" msgstr "Neuer Saldo"
#: apps/accounts/forms.py:121 apps/dca/forms.py:85 apps/dca/forms.py:92 #: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
#: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189 #: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189
#: apps/rules/models.py:38 apps/rules/models.py:286 #: apps/rules/models.py:38 apps/rules/models.py:286
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256 #: apps/transactions/forms.py:42 apps/transactions/forms.py:256
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462 #: apps/transactions/forms.py:450 apps/transactions/forms.py:457
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935 #: apps/transactions/forms.py:669 apps/transactions/forms.py:930
#: apps/transactions/models.py:318 apps/transactions/models.py:501 #: apps/transactions/models.py:318 apps/transactions/models.py:501
#: apps/transactions/models.py:701 apps/transactions/models.py:951 #: apps/transactions/models.py:701 apps/transactions/models.py:951
#: templates/insights/fragments/category_overview/index.html:78 #: templates/insights/fragments/category_overview/index.html:78
#: templates/insights/fragments/category_overview/index.html:528 #: templates/insights/fragments/category_overview/index.html:530
msgid "Category" msgid "Category"
msgstr "Kategorie" msgstr "Kategorie"
#: apps/accounts/forms.py:128 apps/dca/forms.py:101 apps/dca/forms.py:109 #: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135 #: apps/export_app/forms.py:44 apps/export_app/forms.py:135
#: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39 #: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39
#: apps/rules/models.py:290 apps/transactions/filters.py:69 #: apps/rules/models.py:290 apps/transactions/filters.py:69
#: apps/transactions/forms.py:50 apps/transactions/forms.py:264 #: apps/transactions/forms.py:50 apps/transactions/forms.py:264
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479 #: apps/transactions/forms.py:466 apps/transactions/forms.py:474
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928 #: apps/transactions/forms.py:662 apps/transactions/forms.py:923
#: apps/transactions/models.py:324 apps/transactions/models.py:503 #: apps/transactions/models.py:324 apps/transactions/models.py:503
#: apps/transactions/models.py:705 apps/transactions/models.py:957 #: apps/transactions/models.py:705 apps/transactions/models.py:957
#: templates/includes/navbar.html:111 templates/includes/sidebar.html:168 #: templates/includes/navbar.html:111 templates/includes/sidebar.html:192
#: templates/insights/fragments/category_overview/index.html:36 #: templates/insights/fragments/category_overview/index.html:36
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4 #: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
msgid "Tags" msgid "Tags"
@@ -128,11 +128,11 @@ msgstr "Kontengruppe"
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5 #: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
#: templates/account_groups/pages/index.html:4 #: templates/account_groups/pages/index.html:4
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:188 #: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
msgid "Account Groups" msgid "Account Groups"
msgstr "Kontengruppen" msgstr "Kontengruppen"
#: apps/accounts/models.py:39 apps/currencies/models.py:39 #: apps/accounts/models.py:39 apps/currencies/models.py:44
#: templates/accounts/fragments/list.html:27 #: templates/accounts/fragments/list.html:27
#: templates/yearly_overview/pages/overview_by_account.html:18 #: templates/yearly_overview/pages/overview_by_account.html:18
#: templates/yearly_overview/pages/overview_by_currency.html:20 #: templates/yearly_overview/pages/overview_by_currency.html:20
@@ -159,8 +159,10 @@ msgstr ""
"Vermögenskonten werden in deinem Nettovermögen berücksichtigt, aber nicht in " "Vermögenskonten werden in deinem Nettovermögen berücksichtigt, aber nicht in "
"deiner Monatsübersicht." "deiner Monatsübersicht."
#: apps/accounts/models.py:62 templates/accounts/fragments/list.html:30 #: apps/accounts/models.py:62 apps/currencies/models.py:37
#: templates/accounts/fragments/list.html:30
#: templates/categories/fragments/list.html:24 #: templates/categories/fragments/list.html:24
#: templates/currencies/fragments/list.html:27
#: templates/entities/fragments/list.html:24 #: templates/entities/fragments/list.html:24
#: templates/tags/fragments/list.html:24 #: templates/tags/fragments/list.html:24
msgid "Archived" msgid "Archived"
@@ -174,7 +176,7 @@ msgstr ""
#: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179 #: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179
#: apps/rules/models.py:30 apps/rules/models.py:242 #: apps/rules/models.py:30 apps/rules/models.py:242
#: apps/transactions/forms.py:62 apps/transactions/forms.py:276 #: apps/transactions/forms.py:62 apps/transactions/forms.py:276
#: apps/transactions/forms.py:659 apps/transactions/forms.py:920 #: apps/transactions/forms.py:654 apps/transactions/forms.py:915
#: apps/transactions/models.py:290 apps/transactions/models.py:461 #: apps/transactions/models.py:290 apps/transactions/models.py:461
#: apps/transactions/models.py:683 apps/transactions/models.py:925 #: apps/transactions/models.py:683 apps/transactions/models.py:925
#: templates/installment_plans/fragments/table.html:17 #: templates/installment_plans/fragments/table.html:17
@@ -189,11 +191,11 @@ msgstr "Konto"
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53 #: apps/export_app/forms.py:132 apps/transactions/filters.py:53
#: templates/accounts/fragments/list.html:5 #: templates/accounts/fragments/list.html:5
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117 #: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180 #: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
#: templates/includes/sidebar.html:182 #: templates/includes/sidebar.html:206
#: templates/monthly_overview/pages/overview.html:94 #: templates/monthly_overview/pages/overview.html:94
#: templates/transactions/fragments/summary.html:12 #: templates/transactions/fragments/summary.html:12
#: templates/transactions/pages/transactions.html:81 #: templates/transactions/pages/transactions.html:137
msgid "Accounts" msgid "Accounts"
msgstr "Konten" msgstr "Konten"
@@ -479,8 +481,10 @@ msgstr "Löschen"
#: apps/common/widgets/tom_select.py:15 #: apps/common/widgets/tom_select.py:15
#: templates/mini_tools/unit_price_calculator.html:174 #: templates/mini_tools/unit_price_calculator.html:174
#: templates/monthly_overview/pages/overview.html:172 #: templates/monthly_overview/pages/overview.html:215
#: templates/transactions/pages/transactions.html:47 #: templates/monthly_overview/pages/overview.html:227
#: templates/transactions/pages/transactions.html:89
#: templates/transactions/pages/transactions.html:101
msgid "Clear" msgid "Clear"
msgstr "Zurücksetzen" msgstr "Zurücksetzen"
@@ -496,9 +500,9 @@ msgstr "Präfix"
msgid "Suffix" msgid "Suffix"
msgstr "Suffix" msgstr "Suffix"
#: apps/currencies/forms.py:69 apps/dca/models.py:158 apps/rules/forms.py:169 #: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:169
#: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254 #: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254
#: apps/transactions/forms.py:66 apps/transactions/forms.py:483 #: apps/transactions/forms.py:66 apps/transactions/forms.py:478
#: apps/transactions/models.py:300 #: apps/transactions/models.py:300
#: templates/dca/fragments/strategy/details.html:52 #: templates/dca/fragments/strategy/details.html:52
#: templates/exchange_rates/fragments/table.html:10 #: templates/exchange_rates/fragments/table.html:10
@@ -518,75 +522,75 @@ msgstr "Währungsname"
msgid "Decimal Places" msgid "Decimal Places"
msgstr "Dezimalstellen" msgstr "Dezimalstellen"
#: apps/currencies/models.py:40 apps/export_app/forms.py:26 #: apps/currencies/models.py:45 apps/export_app/forms.py:26
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60 #: apps/export_app/forms.py:133 apps/transactions/filters.py:60
#: templates/currencies/fragments/list.html:5 #: templates/currencies/fragments/list.html:5
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125 #: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194 #: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
#: templates/includes/sidebar.html:196 #: templates/includes/sidebar.html:220
#: templates/monthly_overview/pages/overview.html:81 #: templates/monthly_overview/pages/overview.html:81
#: templates/transactions/fragments/summary.html:8 #: templates/transactions/fragments/summary.html:8
#: templates/transactions/pages/transactions.html:68 #: templates/transactions/pages/transactions.html:124
msgid "Currencies" msgid "Currencies"
msgstr "Währungen" msgstr "Währungen"
#: apps/currencies/models.py:49 #: apps/currencies/models.py:54
msgid "Currency cannot have itself as exchange currency." msgid "Currency cannot have itself as exchange currency."
msgstr "Die Währung kann nicht ihre eigene Umrechnungswährung sein." msgstr "Die Währung kann nicht ihre eigene Umrechnungswährung sein."
#: apps/currencies/models.py:60 #: apps/currencies/models.py:65
msgid "From Currency" msgid "From Currency"
msgstr "Startwährung" msgstr "Startwährung"
#: apps/currencies/models.py:66 #: apps/currencies/models.py:71
msgid "To Currency" msgid "To Currency"
msgstr "Zielwährung" msgstr "Zielwährung"
#: apps/currencies/models.py:69 apps/currencies/models.py:76 #: apps/currencies/models.py:74 apps/currencies/models.py:81
msgid "Exchange Rate" msgid "Exchange Rate"
msgstr "Umrechnungskurs" msgstr "Umrechnungskurs"
#: apps/currencies/models.py:71 #: apps/currencies/models.py:76
msgid "Date and Time" msgid "Date and Time"
msgstr "Datum und Uhrzeit" msgstr "Datum und Uhrzeit"
#: apps/currencies/models.py:73 apps/users/models.py:12 #: apps/currencies/models.py:78 apps/users/models.py:12
#: apps/users/models.py:497 #: apps/users/models.py:497
msgid "Auto" msgid "Auto"
msgstr "Automatisch" msgstr "Automatisch"
#: apps/currencies/models.py:77 apps/export_app/forms.py:68 #: apps/currencies/models.py:82 apps/export_app/forms.py:68
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6 #: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
#: templates/exchange_rates/pages/index.html:4 #: templates/exchange_rates/pages/index.html:4
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:202 #: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
msgid "Exchange Rates" msgid "Exchange Rates"
msgstr "Umrechnungskurse" msgstr "Umrechnungskurse"
#: apps/currencies/models.py:89 #: apps/currencies/models.py:94
msgid "From and To currencies cannot be the same." msgid "From and To currencies cannot be the same."
msgstr "Start- und Zielwährung dürfen nicht identisch sein." msgstr "Start- und Zielwährung dürfen nicht identisch sein."
#: apps/currencies/models.py:105 #: apps/currencies/models.py:110
msgid "On" msgid "On"
msgstr "An" msgstr "An"
#: apps/currencies/models.py:106 #: apps/currencies/models.py:111
msgid "Every X hours" msgid "Every X hours"
msgstr "Alle X Stunden" msgstr "Alle X Stunden"
#: apps/currencies/models.py:107 #: apps/currencies/models.py:112
msgid "Not on" msgid "Not on"
msgstr "Nicht an" msgstr "Nicht an"
#: apps/currencies/models.py:109 #: apps/currencies/models.py:114
msgid "Service Name" msgid "Service Name"
msgstr "Dienstname" msgstr "Dienstname"
#: apps/currencies/models.py:111 #: apps/currencies/models.py:116
msgid "Service Type" msgid "Service Type"
msgstr "Diensttyp" msgstr "Diensttyp"
#: apps/currencies/models.py:113 apps/transactions/models.py:214 #: apps/currencies/models.py:118 apps/transactions/models.py:214
#: apps/transactions/models.py:238 apps/transactions/models.py:262 #: apps/transactions/models.py:238 apps/transactions/models.py:262
#: templates/categories/fragments/list.html:21 #: templates/categories/fragments/list.html:21
#: templates/entities/fragments/list.html:21 #: templates/entities/fragments/list.html:21
@@ -595,31 +599,31 @@ msgstr "Diensttyp"
msgid "Active" msgid "Active"
msgstr "Aktiv" msgstr "Aktiv"
#: apps/currencies/models.py:118 #: apps/currencies/models.py:123
msgid "API Key" msgid "API Key"
msgstr "API-Schlüssel" msgstr "API-Schlüssel"
#: apps/currencies/models.py:119 #: apps/currencies/models.py:124
msgid "API key for the service (if required)" msgid "API key for the service (if required)"
msgstr "API-Schlüssel für den Dienst (falls benötigt)" msgstr "API-Schlüssel für den Dienst (falls benötigt)"
#: apps/currencies/models.py:124 #: apps/currencies/models.py:129
msgid "Interval Type" msgid "Interval Type"
msgstr "Intervalltyp" msgstr "Intervalltyp"
#: apps/currencies/models.py:128 #: apps/currencies/models.py:133
msgid "Interval" msgid "Interval"
msgstr "Intervall" msgstr "Intervall"
#: apps/currencies/models.py:131 #: apps/currencies/models.py:136
msgid "Last Successful Fetch" msgid "Last Successful Fetch"
msgstr "Letzter erfolgreicher Abruf" msgstr "Letzter erfolgreicher Abruf"
#: apps/currencies/models.py:136 #: apps/currencies/models.py:141
msgid "Target Currencies" msgid "Target Currencies"
msgstr "Zielwährungen" msgstr "Zielwährungen"
#: apps/currencies/models.py:138 #: apps/currencies/models.py:143
msgid "" msgid ""
"Select currencies to fetch exchange rates for. Rates will be fetched for " "Select currencies to fetch exchange rates for. Rates will be fetched for "
"each currency against their set exchange currency." "each currency against their set exchange currency."
@@ -627,11 +631,11 @@ msgstr ""
"Währung auswählen, dessen Umrechnungskurs abgerufen werden sollen. Für jede " "Währung auswählen, dessen Umrechnungskurs abgerufen werden sollen. Für jede "
"Währung wird der Kurs der entsprechenden Umrechnungs-Währung abgerufen." "Währung wird der Kurs der entsprechenden Umrechnungs-Währung abgerufen."
#: apps/currencies/models.py:146 #: apps/currencies/models.py:151
msgid "Target Accounts" msgid "Target Accounts"
msgstr "Zielkonten" msgstr "Zielkonten"
#: apps/currencies/models.py:148 #: apps/currencies/models.py:153
msgid "" msgid ""
"Select accounts to fetch exchange rates for. Rates will be fetched for each " "Select accounts to fetch exchange rates for. Rates will be fetched for each "
"account's currency against their set exchange currency." "account's currency against their set exchange currency."
@@ -639,33 +643,33 @@ msgstr ""
"Konten auswählen, für die Umrechungskurse abgerufen werden solen. Für jedes " "Konten auswählen, für die Umrechungskurse abgerufen werden solen. Für jedes "
"Konto wird der Kurs der entsprechenden Umrechnungs-Währung abgerufen." "Konto wird der Kurs der entsprechenden Umrechnungs-Währung abgerufen."
#: apps/currencies/models.py:155 #: apps/currencies/models.py:160
#, fuzzy #, fuzzy
#| msgid "Edit exchange rate" #| msgid "Edit exchange rate"
msgid "Single exchange rate" msgid "Single exchange rate"
msgstr "Umrechnungskurs bearbeiten" msgstr "Umrechnungskurs bearbeiten"
#: apps/currencies/models.py:158 #: apps/currencies/models.py:163
msgid "Create one exchange rate and keep updating it. Avoids database clutter." msgid "Create one exchange rate and keep updating it. Avoids database clutter."
msgstr "" msgstr ""
#: apps/currencies/models.py:163 #: apps/currencies/models.py:168
msgid "Exchange Rate Service" msgid "Exchange Rate Service"
msgstr "Umrechnungskurs-Dienst" msgstr "Umrechnungskurs-Dienst"
#: apps/currencies/models.py:164 #: apps/currencies/models.py:169
msgid "Exchange Rate Services" msgid "Exchange Rate Services"
msgstr "Umrechnungskurs-Dienste" msgstr "Umrechnungskurs-Dienste"
#: apps/currencies/models.py:216 #: apps/currencies/models.py:221
msgid "'Every X hours' interval type requires a positive integer." msgid "'Every X hours' interval type requires a positive integer."
msgstr "\"Jede X Stunden\"-Intervalltyp benötigt eine positive Ganzzahl." msgstr "\"Jede X Stunden\"-Intervalltyp benötigt eine positive Ganzzahl."
#: apps/currencies/models.py:225 #: apps/currencies/models.py:230
msgid "'Every X hours' interval must be between 1 and 24." msgid "'Every X hours' interval must be between 1 and 24."
msgstr "\"Jede X Stunden\"-Intervall muss zwischen 1 und 24 liegen." msgstr "\"Jede X Stunden\"-Intervall muss zwischen 1 und 24 liegen."
#: apps/currencies/models.py:239 #: apps/currencies/models.py:244
msgid "" msgid ""
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., " "Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
"'1-5,8,10-12')." "'1-5,8,10-12')."
@@ -673,7 +677,7 @@ msgstr ""
"Ungültiges Stundenformat. Nutze kommagetrennte Stunden (0-23) und/oder " "Ungültiges Stundenformat. Nutze kommagetrennte Stunden (0-23) und/oder "
"Zeiträume (z.B. \"1-5,8,10-12\")." "Zeiträume (z.B. \"1-5,8,10-12\")."
#: apps/currencies/models.py:250 #: apps/currencies/models.py:255
msgid "" msgid ""
"Invalid format. Please check the requirements for your selected interval " "Invalid format. Please check the requirements for your selected interval "
"type." "type."
@@ -725,11 +729,11 @@ msgstr "Dienst erfolgreich in die Warteschlange eingereiht"
msgid "Create transaction" msgid "Create transaction"
msgstr "Erstelle Transaktion" msgstr "Erstelle Transaktion"
#: apps/dca/forms.py:70 apps/transactions/forms.py:430 #: apps/dca/forms.py:70 apps/transactions/forms.py:425
msgid "From Account" msgid "From Account"
msgstr "Startkonto" msgstr "Startkonto"
#: apps/dca/forms.py:76 apps/transactions/forms.py:435 #: apps/dca/forms.py:76 apps/transactions/forms.py:430
msgid "To Account" msgid "To Account"
msgstr "Zielkonto" msgstr "Zielkonto"
@@ -756,7 +760,7 @@ msgstr "Verknüpfe Transaktion"
msgid "You must provide an account." msgid "You must provide an account."
msgstr "Du musst ein Konto angeben." msgstr "Du musst ein Konto angeben."
#: apps/dca/forms.py:312 apps/transactions/forms.py:605 #: apps/dca/forms.py:312 apps/transactions/forms.py:600
msgid "From and To accounts must be different." msgid "From and To accounts must be different."
msgstr "Start- und Zielkonten müssen unterschiedlich sein." msgstr "Start- und Zielkonten müssen unterschiedlich sein."
@@ -775,7 +779,7 @@ msgstr "Startwährung"
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173 #: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173
#: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270 #: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270
#: apps/transactions/forms.py:499 apps/transactions/models.py:314 #: apps/transactions/forms.py:494 apps/transactions/models.py:314
#: apps/transactions/models.py:510 apps/transactions/models.py:711 #: apps/transactions/models.py:510 apps/transactions/models.py:711
#: apps/transactions/models.py:947 #: apps/transactions/models.py:947
msgid "Notes" msgid "Notes"
@@ -834,15 +838,15 @@ msgid "Entry deleted successfully"
msgstr "Eintrag erfolgreich gelöscht" msgstr "Eintrag erfolgreich gelöscht"
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131 #: apps/export_app/forms.py:14 apps/export_app/forms.py:131
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:239 #: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4 #: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
msgid "Users" msgid "Users"
msgstr "Nutzer" msgstr "Nutzer"
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137 #: apps/export_app/forms.py:32 apps/export_app/forms.py:137
#: apps/transactions/models.py:375 templates/includes/navbar.html:58 #: apps/transactions/models.py:375 templates/includes/navbar.html:58
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66 #: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
#: templates/includes/sidebar.html:160 #: templates/includes/sidebar.html:184
#: templates/recurring_transactions/fragments/list_transactions.html:5 #: templates/recurring_transactions/fragments/list_transactions.html:5
#: templates/recurring_transactions/fragments/table.html:39 #: templates/recurring_transactions/fragments/table.html:39
#: templates/transactions/pages/transactions.html:5 #: templates/transactions/pages/transactions.html:5
@@ -852,7 +856,7 @@ msgstr "Transaktionen"
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134 #: apps/export_app/forms.py:38 apps/export_app/forms.py:134
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5 #: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109 #: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
#: templates/includes/sidebar.html:162 #: templates/includes/sidebar.html:186
msgid "Categories" msgid "Categories"
msgstr "Kategorien" msgstr "Kategorien"
@@ -860,19 +864,19 @@ msgstr "Kategorien"
#: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40 #: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40
#: apps/rules/models.py:282 apps/transactions/filters.py:74 #: apps/rules/models.py:282 apps/transactions/filters.py:74
#: apps/transactions/forms.py:58 apps/transactions/forms.py:272 #: apps/transactions/forms.py:58 apps/transactions/forms.py:272
#: apps/transactions/forms.py:682 apps/transactions/forms.py:943 #: apps/transactions/forms.py:677 apps/transactions/forms.py:938
#: apps/transactions/models.py:273 apps/transactions/models.py:329 #: apps/transactions/models.py:273 apps/transactions/models.py:329
#: apps/transactions/models.py:506 apps/transactions/models.py:708 #: apps/transactions/models.py:506 apps/transactions/models.py:708
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5 #: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113 #: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
#: templates/includes/sidebar.html:174 #: templates/includes/sidebar.html:198
#: templates/insights/fragments/category_overview/index.html:49 #: templates/insights/fragments/category_overview/index.html:49
msgid "Entities" msgid "Entities"
msgstr "Entitäten" msgstr "Entitäten"
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140 #: apps/export_app/forms.py:56 apps/export_app/forms.py:140
#: apps/transactions/models.py:748 templates/includes/navbar.html:77 #: apps/transactions/models.py:748 templates/includes/navbar.html:77
#: templates/includes/sidebar.html:95 #: templates/includes/sidebar.html:120
#: templates/recurring_transactions/fragments/list.html:5 #: templates/recurring_transactions/fragments/list.html:5
#: templates/recurring_transactions/pages/index.html:4 #: templates/recurring_transactions/pages/index.html:4
msgid "Recurring Transactions" msgid "Recurring Transactions"
@@ -880,7 +884,7 @@ msgstr "Wiederkehrende Transaktionen"
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138 #: apps/export_app/forms.py:62 apps/export_app/forms.py:138
#: apps/transactions/models.py:524 templates/includes/navbar.html:75 #: apps/transactions/models.py:524 templates/includes/navbar.html:75
#: templates/includes/sidebar.html:89 #: templates/includes/sidebar.html:114
#: templates/installment_plans/fragments/list.html:5 #: templates/installment_plans/fragments/list.html:5
#: templates/installment_plans/pages/index.html:4 #: templates/installment_plans/pages/index.html:4
msgid "Installment Plans" msgid "Installment Plans"
@@ -889,12 +893,12 @@ msgstr "Ratenzahlungs-Pläne"
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143 #: apps/export_app/forms.py:74 apps/export_app/forms.py:143
#: templates/exchange_rates_services/fragments/list.html:6 #: templates/exchange_rates_services/fragments/list.html:6
#: templates/exchange_rates_services/pages/index.html:4 #: templates/exchange_rates_services/pages/index.html:4
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:230 #: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
msgid "Automatic Exchange Rates" msgid "Automatic Exchange Rates"
msgstr "Automatische Umrechnungskurse" msgstr "Automatische Umrechnungskurse"
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135 #: apps/export_app/forms.py:80 templates/includes/navbar.html:135
#: templates/includes/sidebar.html:210 templates/rules/fragments/list.html:5 #: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
#: templates/rules/pages/index.html:4 #: templates/rules/pages/index.html:4
msgid "Rules" msgid "Rules"
msgstr "Regeln" msgstr "Regeln"
@@ -966,7 +970,7 @@ msgstr "Datei auswählen"
#: apps/import_app/forms.py:61 #: apps/import_app/forms.py:61
#: templates/import_app/fragments/profiles/list.html:62 #: templates/import_app/fragments/profiles/list.html:62
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:216 #: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
msgid "Import" msgid "Import"
msgstr "Import" msgstr "Import"
@@ -1037,8 +1041,8 @@ msgstr "Vorgang erfolgreich gelöscht"
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36 #: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
#: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189 #: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189
#: templates/insights/fragments/category_overview/index.html:88 #: templates/insights/fragments/category_overview/index.html:88
#: templates/insights/fragments/category_overview/index.html:393 #: templates/insights/fragments/category_overview/index.html:395
#: templates/insights/fragments/category_overview/index.html:422 #: templates/insights/fragments/category_overview/index.html:424
msgid "Uncategorized" msgid "Uncategorized"
msgstr "Unkategorisiert" msgstr "Unkategorisiert"
@@ -1138,7 +1142,7 @@ msgstr "Bezahlt"
#: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34 #: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34
#: apps/rules/models.py:258 apps/transactions/forms.py:70 #: apps/rules/models.py:258 apps/transactions/forms.py:70
#: apps/transactions/forms.py:486 apps/transactions/forms.py:688 #: apps/transactions/forms.py:481 apps/transactions/forms.py:683
#: apps/transactions/models.py:301 apps/transactions/models.py:484 #: apps/transactions/models.py:301 apps/transactions/models.py:484
#: apps/transactions/models.py:713 #: apps/transactions/models.py:713
msgid "Reference Date" msgid "Reference Date"
@@ -1156,7 +1160,7 @@ msgstr "Betrag"
#: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14 #: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14
#: apps/rules/models.py:36 apps/rules/models.py:266 #: apps/rules/models.py:36 apps/rules/models.py:266
#: apps/transactions/forms.py:490 apps/transactions/models.py:312 #: apps/transactions/forms.py:485 apps/transactions/models.py:312
#: apps/transactions/models.py:468 apps/transactions/models.py:697 #: apps/transactions/models.py:468 apps/transactions/models.py:697
#: apps/transactions/models.py:945 #: apps/transactions/models.py:945
msgid "Description" msgid "Description"
@@ -1362,6 +1366,7 @@ msgid "Any entity"
msgstr "Entität hinzufügen" msgstr "Entität hinzufügen"
#: apps/transactions/filters.py:202 #: apps/transactions/filters.py:202
#: templates/insights/fragments/category_overview/index.html:274
#, fuzzy #, fuzzy
#| msgid "No entities" #| msgid "No entities"
msgid "No entity" msgid "No entity"
@@ -1379,56 +1384,56 @@ msgstr "Speichern und ähnliches hinzufügen"
msgid "Save and add another" msgid "Save and add another"
msgstr "Speichern und etwas neu hinzufügen" msgstr "Speichern und etwas neu hinzufügen"
#: apps/transactions/forms.py:300 apps/transactions/forms.py:506 #: apps/transactions/forms.py:300 apps/transactions/forms.py:501
msgid "Muted transactions won't be displayed on monthly summaries" msgid "Muted transactions won't be displayed on monthly summaries"
msgstr "" msgstr ""
"Stummgeschaltete Transaktionen werden nicht in der monatlichen Übersicht " "Stummgeschaltete Transaktionen werden nicht in der monatlichen Übersicht "
"berücksichtigt" "berücksichtigt"
#: apps/transactions/forms.py:442 #: apps/transactions/forms.py:437
msgid "From Amount" msgid "From Amount"
msgstr "Startbetrag" msgstr "Startbetrag"
#: apps/transactions/forms.py:447 #: apps/transactions/forms.py:442
msgid "To Amount" msgid "To Amount"
msgstr "Zielbetrag" msgstr "Zielbetrag"
#: apps/transactions/forms.py:503 apps/transactions/models.py:211 #: apps/transactions/forms.py:498 apps/transactions/models.py:211
#: apps/transactions/models.py:302 apps/transactions/models.py:935 #: apps/transactions/models.py:302 apps/transactions/models.py:935
msgid "Mute" msgid "Mute"
msgstr "Deaktivieren" msgstr "Deaktivieren"
#: apps/transactions/forms.py:572 #: apps/transactions/forms.py:567
#: templates/cotton/ui/quick_transactions_buttons.html:40 #: templates/cotton/ui/quick_transactions_buttons.html:40
#: templates/cotton/ui/transactions_fab.html:44 #: templates/cotton/ui/transactions_fab.html:44
msgid "Transfer" msgid "Transfer"
msgstr "Transfer" msgstr "Transfer"
#: apps/transactions/forms.py:822 #: apps/transactions/forms.py:817
msgid "Tag name" msgid "Tag name"
msgstr "Tagname" msgstr "Tagname"
#: apps/transactions/forms.py:854 #: apps/transactions/forms.py:849
msgid "Entity name" msgid "Entity name"
msgstr "Entitätsname" msgstr "Entitätsname"
#: apps/transactions/forms.py:886 #: apps/transactions/forms.py:881
msgid "Category name" msgid "Category name"
msgstr "Kategoriename" msgstr "Kategoriename"
#: apps/transactions/forms.py:888 #: apps/transactions/forms.py:883
#, fuzzy #, fuzzy
#| msgid "Muted categories won't count towards your monthly total" #| msgid "Muted categories won't count towards your monthly total"
msgid "Muted categories won't be displayed on monthly summaries" msgid "Muted categories won't be displayed on monthly summaries"
msgstr "Ausgeblendete Kategorien zählen nicht zu deiner Monatsübersicht" msgstr "Ausgeblendete Kategorien zählen nicht zu deiner Monatsübersicht"
#: apps/transactions/forms.py:1046 #: apps/transactions/forms.py:1041
#, fuzzy #, fuzzy
#| msgid "Filter transactions" #| msgid "Filter transactions"
msgid "future transactions" msgid "future transactions"
msgstr "Transaktionen filtern" msgstr "Transaktionen filtern"
#: apps/transactions/forms.py:1076 #: apps/transactions/forms.py:1071
msgid "End date should be after the start date" msgid "End date should be after the start date"
msgstr "Enddatum sollte hinter dem Startdatum liegen" msgstr "Enddatum sollte hinter dem Startdatum liegen"
@@ -1526,12 +1531,12 @@ msgstr "Keine Kategorie"
msgid "No description" msgid "No description"
msgstr "Keine Beschreibung" msgstr "Keine Beschreibung"
#: apps/transactions/models.py:455 templates/includes/sidebar.html:42 #: apps/transactions/models.py:455 templates/includes/sidebar.html:67
msgid "Yearly" msgid "Yearly"
msgstr "Jährlich" msgstr "Jährlich"
#: apps/transactions/models.py:456 apps/users/models.py:464 #: apps/transactions/models.py:456 apps/users/models.py:464
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:36 #: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
msgid "Monthly" msgid "Monthly"
msgstr "Monatlich" msgstr "Monatlich"
@@ -1631,7 +1636,7 @@ msgid "Quick Transaction"
msgstr "Schnelle Transaktion" msgstr "Schnelle Transaktion"
#: apps/transactions/models.py:980 templates/includes/navbar.html:73 #: apps/transactions/models.py:980 templates/includes/navbar.html:73
#: templates/includes/sidebar.html:83 #: templates/includes/sidebar.html:108
#: templates/quick_transactions/pages/index.html:5 #: templates/quick_transactions/pages/index.html:5
#: templates/quick_transactions/pages/index.html:11 #: templates/quick_transactions/pages/index.html:11
msgid "Quick Transactions" msgid "Quick Transactions"
@@ -1723,11 +1728,11 @@ msgid "Installment Plan deleted successfully"
msgstr "Ratenzahlungs-Plan erfolgreich gelöscht" msgstr "Ratenzahlungs-Plan erfolgreich gelöscht"
#: apps/transactions/views/quick_transactions.py:45 #: apps/transactions/views/quick_transactions.py:45
#: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:152 #: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:170
msgid "Item added successfully" msgid "Item added successfully"
msgstr "Objekt erfolgreich hinzugefügt" msgstr "Objekt erfolgreich hinzugefügt"
#: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:184 #: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:202
msgid "Item updated successfully" msgid "Item updated successfully"
msgstr "Objekt erfolgreich aktualisiert" msgstr "Objekt erfolgreich aktualisiert"
@@ -1842,8 +1847,10 @@ msgid "This account is deactivated"
msgstr "Dieses Konto ist deaktiviert" msgstr "Dieses Konto ist deaktiviert"
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89 #: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
#: templates/monthly_overview/pages/overview.html:153 #: templates/monthly_overview/pages/overview.html:140
#: templates/transactions/pages/transactions.html:28 #: templates/monthly_overview/pages/overview.html:186
#: templates/transactions/pages/transactions.html:14
#: templates/transactions/pages/transactions.html:60
msgid "Default" msgid "Default"
msgstr "Standard" msgstr "Standard"
@@ -1949,7 +1956,7 @@ msgid "All Transactions"
msgstr "Alle Transaktionen" msgstr "Alle Transaktionen"
#: apps/users/models.py:470 templates/includes/navbar.html:33 #: apps/users/models.py:470 templates/includes/navbar.html:33
#: templates/includes/sidebar.html:48 #: templates/includes/sidebar.html:73
msgid "Calendar" msgid "Calendar"
msgstr "Kalender" msgstr "Kalender"
@@ -2000,7 +2007,7 @@ msgstr "Kontogruppe bearbeiten"
#: templates/account_groups/fragments/list.html:32 #: templates/account_groups/fragments/list.html:32
#: templates/accounts/fragments/list.html:37 #: templates/accounts/fragments/list.html:37
#: templates/categories/fragments/table.html:24 #: templates/categories/fragments/table.html:24
#: templates/currencies/fragments/list.html:33 #: templates/currencies/fragments/list.html:34
#: templates/dca/fragments/strategy/details.html:63 #: templates/dca/fragments/strategy/details.html:63
#: templates/entities/fragments/table.html:23 #: templates/entities/fragments/table.html:23
#: templates/exchange_rates/fragments/table.html:19 #: templates/exchange_rates/fragments/table.html:19
@@ -2021,7 +2028,7 @@ msgstr "Aktionen"
#: templates/categories/fragments/table.html:29 #: templates/categories/fragments/table.html:29
#: templates/cotton/transaction/item.html:129 #: templates/cotton/transaction/item.html:129
#: templates/cotton/ui/transactions_action_bar.html:52 #: templates/cotton/ui/transactions_action_bar.html:52
#: templates/currencies/fragments/list.html:37 #: templates/currencies/fragments/list.html:38
#: templates/dca/fragments/strategy/details.html:67 #: templates/dca/fragments/strategy/details.html:67
#: templates/dca/fragments/strategy/list.html:36 #: templates/dca/fragments/strategy/list.html:36
#: templates/entities/fragments/table.html:28 #: templates/entities/fragments/table.html:28
@@ -2047,7 +2054,7 @@ msgstr "Bearbeiten"
#: templates/cotton/transaction/item.html:192 #: templates/cotton/transaction/item.html:192
#: templates/cotton/ui/deleted_transactions_action_bar.html:55 #: templates/cotton/ui/deleted_transactions_action_bar.html:55
#: templates/cotton/ui/transactions_action_bar.html:90 #: templates/cotton/ui/transactions_action_bar.html:90
#: templates/currencies/fragments/list.html:44 #: templates/currencies/fragments/list.html:45
#: templates/dca/fragments/strategy/details.html:75 #: templates/dca/fragments/strategy/details.html:75
#: templates/dca/fragments/strategy/list.html:44 #: templates/dca/fragments/strategy/list.html:44
#: templates/entities/fragments/table.html:36 #: templates/entities/fragments/table.html:36
@@ -2074,7 +2081,7 @@ msgstr "Löschen"
#: templates/cotton/transaction/item.html:196 #: templates/cotton/transaction/item.html:196
#: templates/cotton/ui/deleted_transactions_action_bar.html:57 #: templates/cotton/ui/deleted_transactions_action_bar.html:57
#: templates/cotton/ui/transactions_action_bar.html:92 #: templates/cotton/ui/transactions_action_bar.html:92
#: templates/currencies/fragments/list.html:48 #: templates/currencies/fragments/list.html:49
#: templates/dca/fragments/strategy/details.html:80 #: templates/dca/fragments/strategy/details.html:80
#: templates/dca/fragments/strategy/list.html:48 #: templates/dca/fragments/strategy/list.html:48
#: templates/entities/fragments/table.html:40 #: templates/entities/fragments/table.html:40
@@ -2104,7 +2111,7 @@ msgstr "Bist du sicher?"
#: templates/cotton/transaction/item.html:197 #: templates/cotton/transaction/item.html:197
#: templates/cotton/ui/deleted_transactions_action_bar.html:58 #: templates/cotton/ui/deleted_transactions_action_bar.html:58
#: templates/cotton/ui/transactions_action_bar.html:93 #: templates/cotton/ui/transactions_action_bar.html:93
#: templates/currencies/fragments/list.html:49 #: templates/currencies/fragments/list.html:50
#: templates/dca/fragments/strategy/details.html:81 #: templates/dca/fragments/strategy/details.html:81
#: templates/dca/fragments/strategy/list.html:49 #: templates/dca/fragments/strategy/list.html:49
#: templates/entities/fragments/table.html:41 #: templates/entities/fragments/table.html:41
@@ -2124,7 +2131,7 @@ msgstr "Dies kann nicht rückgängig gemacht werden!"
#: templates/categories/fragments/table.html:43 #: templates/categories/fragments/table.html:43
#: templates/cotton/transaction/item.html:142 #: templates/cotton/transaction/item.html:142
#: templates/cotton/transaction/item.html:198 #: templates/cotton/transaction/item.html:198
#: templates/currencies/fragments/list.html:50 #: templates/currencies/fragments/list.html:51
#: templates/dca/fragments/strategy/details.html:82 #: templates/dca/fragments/strategy/details.html:82
#: templates/dca/fragments/strategy/list.html:50 #: templates/dca/fragments/strategy/list.html:50
#: templates/entities/fragments/table.html:42 #: templates/entities/fragments/table.html:42
@@ -2270,7 +2277,7 @@ msgid "Muted"
msgstr "Ausgeblendet" msgstr "Ausgeblendet"
#: templates/categories/fragments/table.html:75 #: templates/categories/fragments/table.html:75
#: templates/insights/fragments/category_overview/index.html:538 #: templates/insights/fragments/category_overview/index.html:540
msgid "No categories" msgid "No categories"
msgstr "Keine Kategorien" msgstr "Keine Kategorien"
@@ -2279,13 +2286,14 @@ msgid "Pick a month"
msgstr "Monat auswählen" msgstr "Monat auswählen"
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5 #: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
#: templates/includes/sidebar.html:28 #: templates/includes/sidebar.html:53
msgid "Close" msgid "Close"
msgstr "Schließen" msgstr "Schließen"
#: templates/cotton/config/search.html:6 #: templates/cotton/config/search.html:6
#: templates/import_app/fragments/profiles/list_presets.html:13 #: templates/import_app/fragments/profiles/list_presets.html:13
#: templates/monthly_overview/pages/overview.html:177 #: templates/monthly_overview/pages/overview.html:160
#: templates/transactions/pages/transactions.html:34
msgid "Search" msgid "Search"
msgstr "Suche" msgstr "Suche"
@@ -2472,7 +2480,7 @@ msgstr "Währung bearbeiten"
msgid "Code" msgid "Code"
msgstr "Code" msgstr "Code"
#: templates/currencies/fragments/list.html:61 #: templates/currencies/fragments/list.html:63
msgid "No currencies" msgid "No currencies"
msgstr "Keine Währungen" msgstr "Keine Währungen"
@@ -2510,7 +2518,7 @@ msgstr "Keine Einträge für diesen DCA"
#: templates/dca/fragments/strategy/details.html:125 #: templates/dca/fragments/strategy/details.html:125
#: templates/monthly_overview/fragments/list.html:47 #: templates/monthly_overview/fragments/list.html:47
#: templates/transactions/fragments/list_all.html:40 #: templates/transactions/fragments/list_all.html:47
msgid "Try adding one" msgid "Try adding one"
msgstr "Versuche einen hinzuzufügen" msgstr "Versuche einen hinzuzufügen"
@@ -2613,7 +2621,7 @@ msgid "Edit exchange rate"
msgstr "Umrechnungskurs bearbeiten" msgstr "Umrechnungskurs bearbeiten"
#: templates/exchange_rates/fragments/list.html:25 #: templates/exchange_rates/fragments/list.html:25
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:68 #: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
#: templates/installment_plans/fragments/list.html:21 #: templates/installment_plans/fragments/list.html:21
#: templates/yearly_overview/pages/overview_by_account.html:105 #: templates/yearly_overview/pages/overview_by_account.html:105
#: templates/yearly_overview/pages/overview_by_currency.html:107 #: templates/yearly_overview/pages/overview_by_currency.html:107
@@ -2637,7 +2645,7 @@ msgstr "Kein Umrechnungskurs"
#: templates/exchange_rates/fragments/table.html:58 #: templates/exchange_rates/fragments/table.html:58
#: templates/exchange_rates_services/fragments/table.html:58 #: templates/exchange_rates_services/fragments/table.html:58
#: templates/transactions/fragments/list_all.html:47 #: templates/transactions/fragments/list_all.html:54
msgid "Page navigation" msgid "Page navigation"
msgstr "Seitennavigation" msgstr "Seitennavigation"
@@ -2670,7 +2678,7 @@ msgid "No services configured"
msgstr "Keine Dienste konfiguriert" msgstr "Keine Dienste konfiguriert"
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140 #: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
#: templates/includes/sidebar.html:223 #: templates/includes/sidebar.html:247
msgid "Export and Restore" msgid "Export and Restore"
msgstr "Exportieren und Wiederherstellen" msgstr "Exportieren und Wiederherstellen"
@@ -2768,7 +2776,7 @@ msgstr "Navigation umschalten"
msgid "Overview" msgid "Overview"
msgstr "Übersicht" msgstr "Übersicht"
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:60 #: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
msgid "Net Worth" msgid "Net Worth"
msgstr "Nettovermögen" msgstr "Nettovermögen"
@@ -2778,62 +2786,62 @@ msgstr "Nettovermögen"
msgid "Current" msgid "Current"
msgstr "Aktuell" msgstr "Aktuell"
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:54 #: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
#: templates/insights/pages/index.html:5 #: templates/insights/pages/index.html:5
msgid "Insights" msgid "Insights"
msgstr "Einblicke" msgstr "Einblicke"
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:76 #: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
msgid "Trash Can" msgid "Trash Can"
msgstr "Papierkorb" msgstr "Papierkorb"
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101 #: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
msgid "Tools" msgid "Tools"
msgstr "Tools" msgstr "Tools"
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:103 #: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
msgid "Dollar Cost Average Tracker" msgid "Dollar Cost Average Tracker"
msgstr "\"Dollar Cost Average\"-Tracker" msgstr "\"Dollar Cost Average\"-Tracker"
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:109 #: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
#: templates/mini_tools/unit_price_calculator.html:5 #: templates/mini_tools/unit_price_calculator.html:5
#: templates/mini_tools/unit_price_calculator.html:10 #: templates/mini_tools/unit_price_calculator.html:10
msgid "Unit Price Calculator" msgid "Unit Price Calculator"
msgstr "Einzelpreis-Rechner" msgstr "Einzelpreis-Rechner"
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:115 #: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
#: templates/mini_tools/currency_converter/currency_converter.html:8 #: templates/mini_tools/currency_converter/currency_converter.html:8
#: templates/mini_tools/currency_converter/currency_converter.html:15 #: templates/mini_tools/currency_converter/currency_converter.html:15
msgid "Currency Converter" msgid "Currency Converter"
msgstr "Währungs-Umrechner" msgstr "Währungs-Umrechner"
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134 #: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
#: templates/includes/sidebar.html:147 #: templates/includes/sidebar.html:171
msgid "Management" msgid "Management"
msgstr "Verwaltung" msgstr "Verwaltung"
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208 #: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
msgid "Automation" msgid "Automation"
msgstr "Automatisierung" msgstr "Automatisierung"
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:237 #: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
msgid "Admin" msgid "Admin"
msgstr "Admin" msgstr "Admin"
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:246 #: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
msgid "Only use this if you know what you're doing" msgid "Only use this if you know what you're doing"
msgstr "Nur benutzen, wenn du weißt was du tust" msgstr "Nur benutzen, wenn du weißt was du tust"
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:245 #: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
msgid "Django Admin" msgid "Django Admin"
msgstr "Django Admin" msgstr "Django Admin"
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:260 #: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
msgid "is available" msgid "is available"
msgstr "" msgstr ""
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177 #: templates/includes/navbar.html:174 templates/includes/navbar.html:177
#: templates/includes/sidebar.html:266 #: templates/includes/sidebar.html:290
msgid "Calculator" msgid "Calculator"
msgstr "Rechner" msgstr "Rechner"
@@ -2941,7 +2949,7 @@ msgstr "Gesamtbilanz"
msgid "Total" msgid "Total"
msgstr "Gesamt" msgstr "Gesamt"
#: templates/insights/fragments/category_overview/index.html:515 #: templates/insights/fragments/category_overview/index.html:517
#, fuzzy #, fuzzy
#| msgid "final total" #| msgid "final total"
msgid "Final Total" msgid "Final Total"
@@ -3151,26 +3159,30 @@ msgstr "Verteilung"
msgid "Summary" msgid "Summary"
msgstr "Zusammenfassung" msgstr "Zusammenfassung"
#: templates/monthly_overview/pages/overview.html:142 #: templates/monthly_overview/pages/overview.html:141
#: templates/transactions/pages/transactions.html:17 #: templates/monthly_overview/pages/overview.html:195
msgid "Filter transactions" #: templates/transactions/pages/transactions.html:15
msgstr "Transaktionen filtern" #: templates/transactions/pages/transactions.html:69
#: templates/monthly_overview/pages/overview.html:148
#: templates/transactions/pages/transactions.html:23
msgid "Order by"
msgstr "Sortieren nach"
#: templates/monthly_overview/pages/overview.html:155
#: templates/transactions/pages/transactions.html:30
msgid "Oldest first" msgid "Oldest first"
msgstr "Älteste zuerst" msgstr "Älteste zuerst"
#: templates/monthly_overview/pages/overview.html:157 #: templates/monthly_overview/pages/overview.html:142
#: templates/transactions/pages/transactions.html:32 #: templates/monthly_overview/pages/overview.html:204
#: templates/transactions/pages/transactions.html:16
#: templates/transactions/pages/transactions.html:78
msgid "Newest first" msgid "Newest first"
msgstr "Neueste zuerst" msgstr "Neueste zuerst"
#: templates/monthly_overview/pages/overview.html:151
#: templates/transactions/pages/transactions.html:25
msgid "Filter transactions"
msgstr "Transaktionen filtern"
#: templates/monthly_overview/pages/overview.html:176
#: templates/transactions/pages/transactions.html:50
msgid "Order by"
msgstr "Sortieren nach"
#: templates/net_worth/net_worth.html:40 #: templates/net_worth/net_worth.html:40
#: templates/yearly_overview/pages/overview_by_currency.html:9 #: templates/yearly_overview/pages/overview_by_currency.html:9
msgid "By currency" msgid "By currency"
@@ -3386,7 +3398,7 @@ msgstr "Bearbeitung"
msgid "transactions" msgid "transactions"
msgstr "Transaktionen" msgstr "Transaktionen"
#: templates/transactions/fragments/list_all.html:39 #: templates/transactions/fragments/list_all.html:46
msgid "No transactions found" msgid "No transactions found"
msgstr "Keine Transaktionen gefunden" msgstr "Keine Transaktionen gefunden"
+167 -155
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-08-17 06:55+0000\n" "POT-Creation-Date: 2025-08-30 02:09+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,32 +18,32 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps/accounts/forms.py:24 #: apps/accounts/forms.py:26
msgid "Group name" msgid "Group name"
msgstr "" msgstr ""
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98 #: apps/accounts/forms.py:42 apps/accounts/forms.py:118
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91 #: apps/currencies/forms.py:55 apps/currencies/forms.py:93
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224 #: apps/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
#: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93 #: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93
#: apps/rules/forms.py:365 apps/transactions/forms.py:204 #: apps/rules/forms.py:365 apps/transactions/forms.py:204
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421 #: apps/transactions/forms.py:369 apps/transactions/forms.py:416
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836 #: apps/transactions/forms.py:788 apps/transactions/forms.py:831
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903 #: apps/transactions/forms.py:863 apps/transactions/forms.py:898
#: apps/transactions/forms.py:1057 apps/users/forms.py:217 #: apps/transactions/forms.py:1052 apps/users/forms.py:217
#: apps/users/forms.py:379 #: apps/users/forms.py:379
msgid "Update" msgid "Update"
msgstr "" msgstr ""
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106 #: apps/accounts/forms.py:50 apps/accounts/forms.py:126
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61 #: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152 #: apps/currencies/forms.py:101 apps/currencies/forms.py:154
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42 #: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
#: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373 #: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373
#: apps/transactions/forms.py:189 apps/transactions/forms.py:213 #: apps/transactions/forms.py:189 apps/transactions/forms.py:213
#: apps/transactions/forms.py:383 apps/transactions/forms.py:801 #: apps/transactions/forms.py:378 apps/transactions/forms.py:796
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876 #: apps/transactions/forms.py:839 apps/transactions/forms.py:871
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065 #: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
#: apps/users/forms.py:225 apps/users/forms.py:387 #: apps/users/forms.py:225 apps/users/forms.py:387
#: templates/account_groups/fragments/list.html:9 #: templates/account_groups/fragments/list.html:9
#: templates/accounts/fragments/list.html:9 #: templates/accounts/fragments/list.html:9
@@ -65,37 +65,37 @@ msgstr ""
msgid "Add" msgid "Add"
msgstr "" msgstr ""
#: apps/accounts/forms.py:57 templates/accounts/fragments/list.html:26 #: apps/accounts/forms.py:59 templates/accounts/fragments/list.html:26
msgid "Group" msgid "Group"
msgstr "" msgstr ""
#: apps/accounts/forms.py:115 #: apps/accounts/forms.py:135
msgid "New balance" msgid "New balance"
msgstr "" msgstr ""
#: apps/accounts/forms.py:121 apps/dca/forms.py:85 apps/dca/forms.py:92 #: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
#: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189 #: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189
#: apps/rules/models.py:38 apps/rules/models.py:286 #: apps/rules/models.py:38 apps/rules/models.py:286
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256 #: apps/transactions/forms.py:42 apps/transactions/forms.py:256
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462 #: apps/transactions/forms.py:450 apps/transactions/forms.py:457
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935 #: apps/transactions/forms.py:669 apps/transactions/forms.py:930
#: apps/transactions/models.py:318 apps/transactions/models.py:501 #: apps/transactions/models.py:318 apps/transactions/models.py:501
#: apps/transactions/models.py:701 apps/transactions/models.py:951 #: apps/transactions/models.py:701 apps/transactions/models.py:951
#: templates/insights/fragments/category_overview/index.html:78 #: templates/insights/fragments/category_overview/index.html:78
#: templates/insights/fragments/category_overview/index.html:528 #: templates/insights/fragments/category_overview/index.html:530
msgid "Category" msgid "Category"
msgstr "" msgstr ""
#: apps/accounts/forms.py:128 apps/dca/forms.py:101 apps/dca/forms.py:109 #: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135 #: apps/export_app/forms.py:44 apps/export_app/forms.py:135
#: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39 #: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39
#: apps/rules/models.py:290 apps/transactions/filters.py:69 #: apps/rules/models.py:290 apps/transactions/filters.py:69
#: apps/transactions/forms.py:50 apps/transactions/forms.py:264 #: apps/transactions/forms.py:50 apps/transactions/forms.py:264
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479 #: apps/transactions/forms.py:466 apps/transactions/forms.py:474
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928 #: apps/transactions/forms.py:662 apps/transactions/forms.py:923
#: apps/transactions/models.py:324 apps/transactions/models.py:503 #: apps/transactions/models.py:324 apps/transactions/models.py:503
#: apps/transactions/models.py:705 apps/transactions/models.py:957 #: apps/transactions/models.py:705 apps/transactions/models.py:957
#: templates/includes/navbar.html:111 templates/includes/sidebar.html:168 #: templates/includes/navbar.html:111 templates/includes/sidebar.html:192
#: templates/insights/fragments/category_overview/index.html:36 #: templates/insights/fragments/category_overview/index.html:36
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4 #: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
msgid "Tags" msgid "Tags"
@@ -127,11 +127,11 @@ msgstr ""
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5 #: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
#: templates/account_groups/pages/index.html:4 #: templates/account_groups/pages/index.html:4
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:188 #: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
msgid "Account Groups" msgid "Account Groups"
msgstr "" msgstr ""
#: apps/accounts/models.py:39 apps/currencies/models.py:39 #: apps/accounts/models.py:39 apps/currencies/models.py:44
#: templates/accounts/fragments/list.html:27 #: templates/accounts/fragments/list.html:27
#: templates/yearly_overview/pages/overview_by_account.html:18 #: templates/yearly_overview/pages/overview_by_account.html:18
#: templates/yearly_overview/pages/overview_by_currency.html:20 #: templates/yearly_overview/pages/overview_by_currency.html:20
@@ -156,8 +156,10 @@ msgid ""
"Asset accounts count towards your Net Worth, but not towards your month." "Asset accounts count towards your Net Worth, but not towards your month."
msgstr "" msgstr ""
#: apps/accounts/models.py:62 templates/accounts/fragments/list.html:30 #: apps/accounts/models.py:62 apps/currencies/models.py:37
#: templates/accounts/fragments/list.html:30
#: templates/categories/fragments/list.html:24 #: templates/categories/fragments/list.html:24
#: templates/currencies/fragments/list.html:27
#: templates/entities/fragments/list.html:24 #: templates/entities/fragments/list.html:24
#: templates/tags/fragments/list.html:24 #: templates/tags/fragments/list.html:24
msgid "Archived" msgid "Archived"
@@ -170,7 +172,7 @@ msgstr ""
#: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179 #: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179
#: apps/rules/models.py:30 apps/rules/models.py:242 #: apps/rules/models.py:30 apps/rules/models.py:242
#: apps/transactions/forms.py:62 apps/transactions/forms.py:276 #: apps/transactions/forms.py:62 apps/transactions/forms.py:276
#: apps/transactions/forms.py:659 apps/transactions/forms.py:920 #: apps/transactions/forms.py:654 apps/transactions/forms.py:915
#: apps/transactions/models.py:290 apps/transactions/models.py:461 #: apps/transactions/models.py:290 apps/transactions/models.py:461
#: apps/transactions/models.py:683 apps/transactions/models.py:925 #: apps/transactions/models.py:683 apps/transactions/models.py:925
#: templates/installment_plans/fragments/table.html:17 #: templates/installment_plans/fragments/table.html:17
@@ -185,11 +187,11 @@ msgstr ""
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53 #: apps/export_app/forms.py:132 apps/transactions/filters.py:53
#: templates/accounts/fragments/list.html:5 #: templates/accounts/fragments/list.html:5
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117 #: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180 #: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
#: templates/includes/sidebar.html:182 #: templates/includes/sidebar.html:206
#: templates/monthly_overview/pages/overview.html:94 #: templates/monthly_overview/pages/overview.html:94
#: templates/transactions/fragments/summary.html:12 #: templates/transactions/fragments/summary.html:12
#: templates/transactions/pages/transactions.html:81 #: templates/transactions/pages/transactions.html:137
msgid "Accounts" msgid "Accounts"
msgstr "" msgstr ""
@@ -467,8 +469,10 @@ msgstr ""
#: apps/common/widgets/tom_select.py:15 #: apps/common/widgets/tom_select.py:15
#: templates/mini_tools/unit_price_calculator.html:174 #: templates/mini_tools/unit_price_calculator.html:174
#: templates/monthly_overview/pages/overview.html:172 #: templates/monthly_overview/pages/overview.html:215
#: templates/transactions/pages/transactions.html:47 #: templates/monthly_overview/pages/overview.html:227
#: templates/transactions/pages/transactions.html:89
#: templates/transactions/pages/transactions.html:101
msgid "Clear" msgid "Clear"
msgstr "" msgstr ""
@@ -484,9 +488,9 @@ msgstr ""
msgid "Suffix" msgid "Suffix"
msgstr "" msgstr ""
#: apps/currencies/forms.py:69 apps/dca/models.py:158 apps/rules/forms.py:169 #: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:169
#: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254 #: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254
#: apps/transactions/forms.py:66 apps/transactions/forms.py:483 #: apps/transactions/forms.py:66 apps/transactions/forms.py:478
#: apps/transactions/models.py:300 #: apps/transactions/models.py:300
#: templates/dca/fragments/strategy/details.html:52 #: templates/dca/fragments/strategy/details.html:52
#: templates/exchange_rates/fragments/table.html:10 #: templates/exchange_rates/fragments/table.html:10
@@ -506,75 +510,75 @@ msgstr ""
msgid "Decimal Places" msgid "Decimal Places"
msgstr "" msgstr ""
#: apps/currencies/models.py:40 apps/export_app/forms.py:26 #: apps/currencies/models.py:45 apps/export_app/forms.py:26
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60 #: apps/export_app/forms.py:133 apps/transactions/filters.py:60
#: templates/currencies/fragments/list.html:5 #: templates/currencies/fragments/list.html:5
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125 #: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194 #: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
#: templates/includes/sidebar.html:196 #: templates/includes/sidebar.html:220
#: templates/monthly_overview/pages/overview.html:81 #: templates/monthly_overview/pages/overview.html:81
#: templates/transactions/fragments/summary.html:8 #: templates/transactions/fragments/summary.html:8
#: templates/transactions/pages/transactions.html:68 #: templates/transactions/pages/transactions.html:124
msgid "Currencies" msgid "Currencies"
msgstr "" msgstr ""
#: apps/currencies/models.py:49 #: apps/currencies/models.py:54
msgid "Currency cannot have itself as exchange currency." msgid "Currency cannot have itself as exchange currency."
msgstr "" msgstr ""
#: apps/currencies/models.py:60 #: apps/currencies/models.py:65
msgid "From Currency" msgid "From Currency"
msgstr "" msgstr ""
#: apps/currencies/models.py:66 #: apps/currencies/models.py:71
msgid "To Currency" msgid "To Currency"
msgstr "" msgstr ""
#: apps/currencies/models.py:69 apps/currencies/models.py:76 #: apps/currencies/models.py:74 apps/currencies/models.py:81
msgid "Exchange Rate" msgid "Exchange Rate"
msgstr "" msgstr ""
#: apps/currencies/models.py:71 #: apps/currencies/models.py:76
msgid "Date and Time" msgid "Date and Time"
msgstr "" msgstr ""
#: apps/currencies/models.py:73 apps/users/models.py:12 #: apps/currencies/models.py:78 apps/users/models.py:12
#: apps/users/models.py:497 #: apps/users/models.py:497
msgid "Auto" msgid "Auto"
msgstr "" msgstr ""
#: apps/currencies/models.py:77 apps/export_app/forms.py:68 #: apps/currencies/models.py:82 apps/export_app/forms.py:68
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6 #: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
#: templates/exchange_rates/pages/index.html:4 #: templates/exchange_rates/pages/index.html:4
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:202 #: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
msgid "Exchange Rates" msgid "Exchange Rates"
msgstr "" msgstr ""
#: apps/currencies/models.py:89 #: apps/currencies/models.py:94
msgid "From and To currencies cannot be the same." msgid "From and To currencies cannot be the same."
msgstr "" msgstr ""
#: apps/currencies/models.py:105 #: apps/currencies/models.py:110
msgid "On" msgid "On"
msgstr "" msgstr ""
#: apps/currencies/models.py:106 #: apps/currencies/models.py:111
msgid "Every X hours" msgid "Every X hours"
msgstr "" msgstr ""
#: apps/currencies/models.py:107 #: apps/currencies/models.py:112
msgid "Not on" msgid "Not on"
msgstr "" msgstr ""
#: apps/currencies/models.py:109 #: apps/currencies/models.py:114
msgid "Service Name" msgid "Service Name"
msgstr "" msgstr ""
#: apps/currencies/models.py:111 #: apps/currencies/models.py:116
msgid "Service Type" msgid "Service Type"
msgstr "" msgstr ""
#: apps/currencies/models.py:113 apps/transactions/models.py:214 #: apps/currencies/models.py:118 apps/transactions/models.py:214
#: apps/transactions/models.py:238 apps/transactions/models.py:262 #: apps/transactions/models.py:238 apps/transactions/models.py:262
#: templates/categories/fragments/list.html:21 #: templates/categories/fragments/list.html:21
#: templates/entities/fragments/list.html:21 #: templates/entities/fragments/list.html:21
@@ -583,77 +587,77 @@ msgstr ""
msgid "Active" msgid "Active"
msgstr "" msgstr ""
#: apps/currencies/models.py:118 #: apps/currencies/models.py:123
msgid "API Key" msgid "API Key"
msgstr "" msgstr ""
#: apps/currencies/models.py:119 #: apps/currencies/models.py:124
msgid "API key for the service (if required)" msgid "API key for the service (if required)"
msgstr "" msgstr ""
#: apps/currencies/models.py:124 #: apps/currencies/models.py:129
msgid "Interval Type" msgid "Interval Type"
msgstr "" msgstr ""
#: apps/currencies/models.py:128 #: apps/currencies/models.py:133
msgid "Interval" msgid "Interval"
msgstr "" msgstr ""
#: apps/currencies/models.py:131 #: apps/currencies/models.py:136
msgid "Last Successful Fetch" msgid "Last Successful Fetch"
msgstr "" msgstr ""
#: apps/currencies/models.py:136 #: apps/currencies/models.py:141
msgid "Target Currencies" msgid "Target Currencies"
msgstr "" msgstr ""
#: apps/currencies/models.py:138 #: apps/currencies/models.py:143
msgid "" msgid ""
"Select currencies to fetch exchange rates for. Rates will be fetched for " "Select currencies to fetch exchange rates for. Rates will be fetched for "
"each currency against their set exchange currency." "each currency against their set exchange currency."
msgstr "" msgstr ""
#: apps/currencies/models.py:146 #: apps/currencies/models.py:151
msgid "Target Accounts" msgid "Target Accounts"
msgstr "" msgstr ""
#: apps/currencies/models.py:148 #: apps/currencies/models.py:153
msgid "" msgid ""
"Select accounts to fetch exchange rates for. Rates will be fetched for each " "Select accounts to fetch exchange rates for. Rates will be fetched for each "
"account's currency against their set exchange currency." "account's currency against their set exchange currency."
msgstr "" msgstr ""
#: apps/currencies/models.py:155 #: apps/currencies/models.py:160
msgid "Single exchange rate" msgid "Single exchange rate"
msgstr "" msgstr ""
#: apps/currencies/models.py:158 #: apps/currencies/models.py:163
msgid "Create one exchange rate and keep updating it. Avoids database clutter." msgid "Create one exchange rate and keep updating it. Avoids database clutter."
msgstr "" msgstr ""
#: apps/currencies/models.py:163 #: apps/currencies/models.py:168
msgid "Exchange Rate Service" msgid "Exchange Rate Service"
msgstr "" msgstr ""
#: apps/currencies/models.py:164 #: apps/currencies/models.py:169
msgid "Exchange Rate Services" msgid "Exchange Rate Services"
msgstr "" msgstr ""
#: apps/currencies/models.py:216 #: apps/currencies/models.py:221
msgid "'Every X hours' interval type requires a positive integer." msgid "'Every X hours' interval type requires a positive integer."
msgstr "" msgstr ""
#: apps/currencies/models.py:225 #: apps/currencies/models.py:230
msgid "'Every X hours' interval must be between 1 and 24." msgid "'Every X hours' interval must be between 1 and 24."
msgstr "" msgstr ""
#: apps/currencies/models.py:239 #: apps/currencies/models.py:244
msgid "" msgid ""
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., " "Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
"'1-5,8,10-12')." "'1-5,8,10-12')."
msgstr "" msgstr ""
#: apps/currencies/models.py:250 #: apps/currencies/models.py:255
msgid "" msgid ""
"Invalid format. Please check the requirements for your selected interval " "Invalid format. Please check the requirements for your selected interval "
"type." "type."
@@ -703,11 +707,11 @@ msgstr ""
msgid "Create transaction" msgid "Create transaction"
msgstr "" msgstr ""
#: apps/dca/forms.py:70 apps/transactions/forms.py:430 #: apps/dca/forms.py:70 apps/transactions/forms.py:425
msgid "From Account" msgid "From Account"
msgstr "" msgstr ""
#: apps/dca/forms.py:76 apps/transactions/forms.py:435 #: apps/dca/forms.py:76 apps/transactions/forms.py:430
msgid "To Account" msgid "To Account"
msgstr "" msgstr ""
@@ -732,7 +736,7 @@ msgstr ""
msgid "You must provide an account." msgid "You must provide an account."
msgstr "" msgstr ""
#: apps/dca/forms.py:312 apps/transactions/forms.py:605 #: apps/dca/forms.py:312 apps/transactions/forms.py:600
msgid "From and To accounts must be different." msgid "From and To accounts must be different."
msgstr "" msgstr ""
@@ -751,7 +755,7 @@ msgstr ""
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173 #: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173
#: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270 #: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270
#: apps/transactions/forms.py:499 apps/transactions/models.py:314 #: apps/transactions/forms.py:494 apps/transactions/models.py:314
#: apps/transactions/models.py:510 apps/transactions/models.py:711 #: apps/transactions/models.py:510 apps/transactions/models.py:711
#: apps/transactions/models.py:947 #: apps/transactions/models.py:947
msgid "Notes" msgid "Notes"
@@ -810,15 +814,15 @@ msgid "Entry deleted successfully"
msgstr "" msgstr ""
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131 #: apps/export_app/forms.py:14 apps/export_app/forms.py:131
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:239 #: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4 #: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
msgid "Users" msgid "Users"
msgstr "" msgstr ""
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137 #: apps/export_app/forms.py:32 apps/export_app/forms.py:137
#: apps/transactions/models.py:375 templates/includes/navbar.html:58 #: apps/transactions/models.py:375 templates/includes/navbar.html:58
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66 #: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
#: templates/includes/sidebar.html:160 #: templates/includes/sidebar.html:184
#: templates/recurring_transactions/fragments/list_transactions.html:5 #: templates/recurring_transactions/fragments/list_transactions.html:5
#: templates/recurring_transactions/fragments/table.html:39 #: templates/recurring_transactions/fragments/table.html:39
#: templates/transactions/pages/transactions.html:5 #: templates/transactions/pages/transactions.html:5
@@ -828,7 +832,7 @@ msgstr ""
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134 #: apps/export_app/forms.py:38 apps/export_app/forms.py:134
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5 #: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109 #: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
#: templates/includes/sidebar.html:162 #: templates/includes/sidebar.html:186
msgid "Categories" msgid "Categories"
msgstr "" msgstr ""
@@ -836,19 +840,19 @@ msgstr ""
#: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40 #: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40
#: apps/rules/models.py:282 apps/transactions/filters.py:74 #: apps/rules/models.py:282 apps/transactions/filters.py:74
#: apps/transactions/forms.py:58 apps/transactions/forms.py:272 #: apps/transactions/forms.py:58 apps/transactions/forms.py:272
#: apps/transactions/forms.py:682 apps/transactions/forms.py:943 #: apps/transactions/forms.py:677 apps/transactions/forms.py:938
#: apps/transactions/models.py:273 apps/transactions/models.py:329 #: apps/transactions/models.py:273 apps/transactions/models.py:329
#: apps/transactions/models.py:506 apps/transactions/models.py:708 #: apps/transactions/models.py:506 apps/transactions/models.py:708
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5 #: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113 #: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
#: templates/includes/sidebar.html:174 #: templates/includes/sidebar.html:198
#: templates/insights/fragments/category_overview/index.html:49 #: templates/insights/fragments/category_overview/index.html:49
msgid "Entities" msgid "Entities"
msgstr "" msgstr ""
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140 #: apps/export_app/forms.py:56 apps/export_app/forms.py:140
#: apps/transactions/models.py:748 templates/includes/navbar.html:77 #: apps/transactions/models.py:748 templates/includes/navbar.html:77
#: templates/includes/sidebar.html:95 #: templates/includes/sidebar.html:120
#: templates/recurring_transactions/fragments/list.html:5 #: templates/recurring_transactions/fragments/list.html:5
#: templates/recurring_transactions/pages/index.html:4 #: templates/recurring_transactions/pages/index.html:4
msgid "Recurring Transactions" msgid "Recurring Transactions"
@@ -856,7 +860,7 @@ msgstr ""
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138 #: apps/export_app/forms.py:62 apps/export_app/forms.py:138
#: apps/transactions/models.py:524 templates/includes/navbar.html:75 #: apps/transactions/models.py:524 templates/includes/navbar.html:75
#: templates/includes/sidebar.html:89 #: templates/includes/sidebar.html:114
#: templates/installment_plans/fragments/list.html:5 #: templates/installment_plans/fragments/list.html:5
#: templates/installment_plans/pages/index.html:4 #: templates/installment_plans/pages/index.html:4
msgid "Installment Plans" msgid "Installment Plans"
@@ -865,12 +869,12 @@ msgstr ""
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143 #: apps/export_app/forms.py:74 apps/export_app/forms.py:143
#: templates/exchange_rates_services/fragments/list.html:6 #: templates/exchange_rates_services/fragments/list.html:6
#: templates/exchange_rates_services/pages/index.html:4 #: templates/exchange_rates_services/pages/index.html:4
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:230 #: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
msgid "Automatic Exchange Rates" msgid "Automatic Exchange Rates"
msgstr "" msgstr ""
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135 #: apps/export_app/forms.py:80 templates/includes/navbar.html:135
#: templates/includes/sidebar.html:210 templates/rules/fragments/list.html:5 #: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
#: templates/rules/pages/index.html:4 #: templates/rules/pages/index.html:4
msgid "Rules" msgid "Rules"
msgstr "" msgstr ""
@@ -940,7 +944,7 @@ msgstr ""
#: apps/import_app/forms.py:61 #: apps/import_app/forms.py:61
#: templates/import_app/fragments/profiles/list.html:62 #: templates/import_app/fragments/profiles/list.html:62
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:216 #: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -1011,8 +1015,8 @@ msgstr ""
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36 #: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
#: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189 #: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189
#: templates/insights/fragments/category_overview/index.html:88 #: templates/insights/fragments/category_overview/index.html:88
#: templates/insights/fragments/category_overview/index.html:393 #: templates/insights/fragments/category_overview/index.html:395
#: templates/insights/fragments/category_overview/index.html:422 #: templates/insights/fragments/category_overview/index.html:424
msgid "Uncategorized" msgid "Uncategorized"
msgstr "" msgstr ""
@@ -1112,7 +1116,7 @@ msgstr ""
#: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34 #: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34
#: apps/rules/models.py:258 apps/transactions/forms.py:70 #: apps/rules/models.py:258 apps/transactions/forms.py:70
#: apps/transactions/forms.py:486 apps/transactions/forms.py:688 #: apps/transactions/forms.py:481 apps/transactions/forms.py:683
#: apps/transactions/models.py:301 apps/transactions/models.py:484 #: apps/transactions/models.py:301 apps/transactions/models.py:484
#: apps/transactions/models.py:713 #: apps/transactions/models.py:713
msgid "Reference Date" msgid "Reference Date"
@@ -1130,7 +1134,7 @@ msgstr ""
#: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14 #: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14
#: apps/rules/models.py:36 apps/rules/models.py:266 #: apps/rules/models.py:36 apps/rules/models.py:266
#: apps/transactions/forms.py:490 apps/transactions/models.py:312 #: apps/transactions/forms.py:485 apps/transactions/models.py:312
#: apps/transactions/models.py:468 apps/transactions/models.py:697 #: apps/transactions/models.py:468 apps/transactions/models.py:697
#: apps/transactions/models.py:945 #: apps/transactions/models.py:945
msgid "Description" msgid "Description"
@@ -1323,6 +1327,7 @@ msgid "Any entity"
msgstr "" msgstr ""
#: apps/transactions/filters.py:202 #: apps/transactions/filters.py:202
#: templates/insights/fragments/category_overview/index.html:274
msgid "No entity" msgid "No entity"
msgstr "" msgstr ""
@@ -1338,50 +1343,50 @@ msgstr ""
msgid "Save and add another" msgid "Save and add another"
msgstr "" msgstr ""
#: apps/transactions/forms.py:300 apps/transactions/forms.py:506 #: apps/transactions/forms.py:300 apps/transactions/forms.py:501
msgid "Muted transactions won't be displayed on monthly summaries" msgid "Muted transactions won't be displayed on monthly summaries"
msgstr "" msgstr ""
#: apps/transactions/forms.py:442 #: apps/transactions/forms.py:437
msgid "From Amount" msgid "From Amount"
msgstr "" msgstr ""
#: apps/transactions/forms.py:447 #: apps/transactions/forms.py:442
msgid "To Amount" msgid "To Amount"
msgstr "" msgstr ""
#: apps/transactions/forms.py:503 apps/transactions/models.py:211 #: apps/transactions/forms.py:498 apps/transactions/models.py:211
#: apps/transactions/models.py:302 apps/transactions/models.py:935 #: apps/transactions/models.py:302 apps/transactions/models.py:935
msgid "Mute" msgid "Mute"
msgstr "" msgstr ""
#: apps/transactions/forms.py:572 #: apps/transactions/forms.py:567
#: templates/cotton/ui/quick_transactions_buttons.html:40 #: templates/cotton/ui/quick_transactions_buttons.html:40
#: templates/cotton/ui/transactions_fab.html:44 #: templates/cotton/ui/transactions_fab.html:44
msgid "Transfer" msgid "Transfer"
msgstr "" msgstr ""
#: apps/transactions/forms.py:822 #: apps/transactions/forms.py:817
msgid "Tag name" msgid "Tag name"
msgstr "" msgstr ""
#: apps/transactions/forms.py:854 #: apps/transactions/forms.py:849
msgid "Entity name" msgid "Entity name"
msgstr "" msgstr ""
#: apps/transactions/forms.py:886 #: apps/transactions/forms.py:881
msgid "Category name" msgid "Category name"
msgstr "" msgstr ""
#: apps/transactions/forms.py:888 #: apps/transactions/forms.py:883
msgid "Muted categories won't be displayed on monthly summaries" msgid "Muted categories won't be displayed on monthly summaries"
msgstr "" msgstr ""
#: apps/transactions/forms.py:1046 #: apps/transactions/forms.py:1041
msgid "future transactions" msgid "future transactions"
msgstr "" msgstr ""
#: apps/transactions/forms.py:1076 #: apps/transactions/forms.py:1071
msgid "End date should be after the start date" msgid "End date should be after the start date"
msgstr "" msgstr ""
@@ -1473,12 +1478,12 @@ msgstr ""
msgid "No description" msgid "No description"
msgstr "" msgstr ""
#: apps/transactions/models.py:455 templates/includes/sidebar.html:42 #: apps/transactions/models.py:455 templates/includes/sidebar.html:67
msgid "Yearly" msgid "Yearly"
msgstr "" msgstr ""
#: apps/transactions/models.py:456 apps/users/models.py:464 #: apps/transactions/models.py:456 apps/users/models.py:464
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:36 #: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
msgid "Monthly" msgid "Monthly"
msgstr "" msgstr ""
@@ -1577,7 +1582,7 @@ msgid "Quick Transaction"
msgstr "" msgstr ""
#: apps/transactions/models.py:980 templates/includes/navbar.html:73 #: apps/transactions/models.py:980 templates/includes/navbar.html:73
#: templates/includes/sidebar.html:83 #: templates/includes/sidebar.html:108
#: templates/quick_transactions/pages/index.html:5 #: templates/quick_transactions/pages/index.html:5
#: templates/quick_transactions/pages/index.html:11 #: templates/quick_transactions/pages/index.html:11
msgid "Quick Transactions" msgid "Quick Transactions"
@@ -1669,11 +1674,11 @@ msgid "Installment Plan deleted successfully"
msgstr "" msgstr ""
#: apps/transactions/views/quick_transactions.py:45 #: apps/transactions/views/quick_transactions.py:45
#: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:152 #: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:170
msgid "Item added successfully" msgid "Item added successfully"
msgstr "" msgstr ""
#: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:184 #: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:202
msgid "Item updated successfully" msgid "Item updated successfully"
msgstr "" msgstr ""
@@ -1788,8 +1793,10 @@ msgid "This account is deactivated"
msgstr "" msgstr ""
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89 #: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
#: templates/monthly_overview/pages/overview.html:153 #: templates/monthly_overview/pages/overview.html:140
#: templates/transactions/pages/transactions.html:28 #: templates/monthly_overview/pages/overview.html:186
#: templates/transactions/pages/transactions.html:14
#: templates/transactions/pages/transactions.html:60
msgid "Default" msgid "Default"
msgstr "" msgstr ""
@@ -1890,7 +1897,7 @@ msgid "All Transactions"
msgstr "" msgstr ""
#: apps/users/models.py:470 templates/includes/navbar.html:33 #: apps/users/models.py:470 templates/includes/navbar.html:33
#: templates/includes/sidebar.html:48 #: templates/includes/sidebar.html:73
msgid "Calendar" msgid "Calendar"
msgstr "" msgstr ""
@@ -1941,7 +1948,7 @@ msgstr ""
#: templates/account_groups/fragments/list.html:32 #: templates/account_groups/fragments/list.html:32
#: templates/accounts/fragments/list.html:37 #: templates/accounts/fragments/list.html:37
#: templates/categories/fragments/table.html:24 #: templates/categories/fragments/table.html:24
#: templates/currencies/fragments/list.html:33 #: templates/currencies/fragments/list.html:34
#: templates/dca/fragments/strategy/details.html:63 #: templates/dca/fragments/strategy/details.html:63
#: templates/entities/fragments/table.html:23 #: templates/entities/fragments/table.html:23
#: templates/exchange_rates/fragments/table.html:19 #: templates/exchange_rates/fragments/table.html:19
@@ -1962,7 +1969,7 @@ msgstr ""
#: templates/categories/fragments/table.html:29 #: templates/categories/fragments/table.html:29
#: templates/cotton/transaction/item.html:129 #: templates/cotton/transaction/item.html:129
#: templates/cotton/ui/transactions_action_bar.html:52 #: templates/cotton/ui/transactions_action_bar.html:52
#: templates/currencies/fragments/list.html:37 #: templates/currencies/fragments/list.html:38
#: templates/dca/fragments/strategy/details.html:67 #: templates/dca/fragments/strategy/details.html:67
#: templates/dca/fragments/strategy/list.html:36 #: templates/dca/fragments/strategy/list.html:36
#: templates/entities/fragments/table.html:28 #: templates/entities/fragments/table.html:28
@@ -1988,7 +1995,7 @@ msgstr ""
#: templates/cotton/transaction/item.html:192 #: templates/cotton/transaction/item.html:192
#: templates/cotton/ui/deleted_transactions_action_bar.html:55 #: templates/cotton/ui/deleted_transactions_action_bar.html:55
#: templates/cotton/ui/transactions_action_bar.html:90 #: templates/cotton/ui/transactions_action_bar.html:90
#: templates/currencies/fragments/list.html:44 #: templates/currencies/fragments/list.html:45
#: templates/dca/fragments/strategy/details.html:75 #: templates/dca/fragments/strategy/details.html:75
#: templates/dca/fragments/strategy/list.html:44 #: templates/dca/fragments/strategy/list.html:44
#: templates/entities/fragments/table.html:36 #: templates/entities/fragments/table.html:36
@@ -2015,7 +2022,7 @@ msgstr ""
#: templates/cotton/transaction/item.html:196 #: templates/cotton/transaction/item.html:196
#: templates/cotton/ui/deleted_transactions_action_bar.html:57 #: templates/cotton/ui/deleted_transactions_action_bar.html:57
#: templates/cotton/ui/transactions_action_bar.html:92 #: templates/cotton/ui/transactions_action_bar.html:92
#: templates/currencies/fragments/list.html:48 #: templates/currencies/fragments/list.html:49
#: templates/dca/fragments/strategy/details.html:80 #: templates/dca/fragments/strategy/details.html:80
#: templates/dca/fragments/strategy/list.html:48 #: templates/dca/fragments/strategy/list.html:48
#: templates/entities/fragments/table.html:40 #: templates/entities/fragments/table.html:40
@@ -2045,7 +2052,7 @@ msgstr ""
#: templates/cotton/transaction/item.html:197 #: templates/cotton/transaction/item.html:197
#: templates/cotton/ui/deleted_transactions_action_bar.html:58 #: templates/cotton/ui/deleted_transactions_action_bar.html:58
#: templates/cotton/ui/transactions_action_bar.html:93 #: templates/cotton/ui/transactions_action_bar.html:93
#: templates/currencies/fragments/list.html:49 #: templates/currencies/fragments/list.html:50
#: templates/dca/fragments/strategy/details.html:81 #: templates/dca/fragments/strategy/details.html:81
#: templates/dca/fragments/strategy/list.html:49 #: templates/dca/fragments/strategy/list.html:49
#: templates/entities/fragments/table.html:41 #: templates/entities/fragments/table.html:41
@@ -2065,7 +2072,7 @@ msgstr ""
#: templates/categories/fragments/table.html:43 #: templates/categories/fragments/table.html:43
#: templates/cotton/transaction/item.html:142 #: templates/cotton/transaction/item.html:142
#: templates/cotton/transaction/item.html:198 #: templates/cotton/transaction/item.html:198
#: templates/currencies/fragments/list.html:50 #: templates/currencies/fragments/list.html:51
#: templates/dca/fragments/strategy/details.html:82 #: templates/dca/fragments/strategy/details.html:82
#: templates/dca/fragments/strategy/list.html:50 #: templates/dca/fragments/strategy/list.html:50
#: templates/entities/fragments/table.html:42 #: templates/entities/fragments/table.html:42
@@ -2211,7 +2218,7 @@ msgid "Muted"
msgstr "" msgstr ""
#: templates/categories/fragments/table.html:75 #: templates/categories/fragments/table.html:75
#: templates/insights/fragments/category_overview/index.html:538 #: templates/insights/fragments/category_overview/index.html:540
msgid "No categories" msgid "No categories"
msgstr "" msgstr ""
@@ -2220,13 +2227,14 @@ msgid "Pick a month"
msgstr "" msgstr ""
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5 #: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
#: templates/includes/sidebar.html:28 #: templates/includes/sidebar.html:53
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: templates/cotton/config/search.html:6 #: templates/cotton/config/search.html:6
#: templates/import_app/fragments/profiles/list_presets.html:13 #: templates/import_app/fragments/profiles/list_presets.html:13
#: templates/monthly_overview/pages/overview.html:177 #: templates/monthly_overview/pages/overview.html:160
#: templates/transactions/pages/transactions.html:34
msgid "Search" msgid "Search"
msgstr "" msgstr ""
@@ -2411,7 +2419,7 @@ msgstr ""
msgid "Code" msgid "Code"
msgstr "" msgstr ""
#: templates/currencies/fragments/list.html:61 #: templates/currencies/fragments/list.html:63
msgid "No currencies" msgid "No currencies"
msgstr "" msgstr ""
@@ -2449,7 +2457,7 @@ msgstr ""
#: templates/dca/fragments/strategy/details.html:125 #: templates/dca/fragments/strategy/details.html:125
#: templates/monthly_overview/fragments/list.html:47 #: templates/monthly_overview/fragments/list.html:47
#: templates/transactions/fragments/list_all.html:40 #: templates/transactions/fragments/list_all.html:47
msgid "Try adding one" msgid "Try adding one"
msgstr "" msgstr ""
@@ -2551,7 +2559,7 @@ msgid "Edit exchange rate"
msgstr "" msgstr ""
#: templates/exchange_rates/fragments/list.html:25 #: templates/exchange_rates/fragments/list.html:25
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:68 #: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
#: templates/installment_plans/fragments/list.html:21 #: templates/installment_plans/fragments/list.html:21
#: templates/yearly_overview/pages/overview_by_account.html:105 #: templates/yearly_overview/pages/overview_by_account.html:105
#: templates/yearly_overview/pages/overview_by_currency.html:107 #: templates/yearly_overview/pages/overview_by_currency.html:107
@@ -2575,7 +2583,7 @@ msgstr ""
#: templates/exchange_rates/fragments/table.html:58 #: templates/exchange_rates/fragments/table.html:58
#: templates/exchange_rates_services/fragments/table.html:58 #: templates/exchange_rates_services/fragments/table.html:58
#: templates/transactions/fragments/list_all.html:47 #: templates/transactions/fragments/list_all.html:54
msgid "Page navigation" msgid "Page navigation"
msgstr "" msgstr ""
@@ -2608,7 +2616,7 @@ msgid "No services configured"
msgstr "" msgstr ""
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140 #: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
#: templates/includes/sidebar.html:223 #: templates/includes/sidebar.html:247
msgid "Export and Restore" msgid "Export and Restore"
msgstr "" msgstr ""
@@ -2704,7 +2712,7 @@ msgstr ""
msgid "Overview" msgid "Overview"
msgstr "" msgstr ""
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:60 #: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
msgid "Net Worth" msgid "Net Worth"
msgstr "" msgstr ""
@@ -2714,62 +2722,62 @@ msgstr ""
msgid "Current" msgid "Current"
msgstr "" msgstr ""
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:54 #: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
#: templates/insights/pages/index.html:5 #: templates/insights/pages/index.html:5
msgid "Insights" msgid "Insights"
msgstr "" msgstr ""
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:76 #: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
msgid "Trash Can" msgid "Trash Can"
msgstr "" msgstr ""
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101 #: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
msgid "Tools" msgid "Tools"
msgstr "" msgstr ""
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:103 #: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
msgid "Dollar Cost Average Tracker" msgid "Dollar Cost Average Tracker"
msgstr "" msgstr ""
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:109 #: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
#: templates/mini_tools/unit_price_calculator.html:5 #: templates/mini_tools/unit_price_calculator.html:5
#: templates/mini_tools/unit_price_calculator.html:10 #: templates/mini_tools/unit_price_calculator.html:10
msgid "Unit Price Calculator" msgid "Unit Price Calculator"
msgstr "" msgstr ""
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:115 #: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
#: templates/mini_tools/currency_converter/currency_converter.html:8 #: templates/mini_tools/currency_converter/currency_converter.html:8
#: templates/mini_tools/currency_converter/currency_converter.html:15 #: templates/mini_tools/currency_converter/currency_converter.html:15
msgid "Currency Converter" msgid "Currency Converter"
msgstr "" msgstr ""
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134 #: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
#: templates/includes/sidebar.html:147 #: templates/includes/sidebar.html:171
msgid "Management" msgid "Management"
msgstr "" msgstr ""
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208 #: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
msgid "Automation" msgid "Automation"
msgstr "" msgstr ""
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:237 #: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
msgid "Admin" msgid "Admin"
msgstr "" msgstr ""
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:246 #: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
msgid "Only use this if you know what you're doing" msgid "Only use this if you know what you're doing"
msgstr "" msgstr ""
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:245 #: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
msgid "Django Admin" msgid "Django Admin"
msgstr "" msgstr ""
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:260 #: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
msgid "is available" msgid "is available"
msgstr "" msgstr ""
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177 #: templates/includes/navbar.html:174 templates/includes/navbar.html:177
#: templates/includes/sidebar.html:266 #: templates/includes/sidebar.html:290
msgid "Calculator" msgid "Calculator"
msgstr "" msgstr ""
@@ -2864,7 +2872,7 @@ msgstr ""
msgid "Total" msgid "Total"
msgstr "" msgstr ""
#: templates/insights/fragments/category_overview/index.html:515 #: templates/insights/fragments/category_overview/index.html:517
msgid "Final Total" msgid "Final Total"
msgstr "" msgstr ""
@@ -3069,26 +3077,30 @@ msgstr ""
msgid "Summary" msgid "Summary"
msgstr "" msgstr ""
#: templates/monthly_overview/pages/overview.html:142 #: templates/monthly_overview/pages/overview.html:141
#: templates/transactions/pages/transactions.html:17 #: templates/monthly_overview/pages/overview.html:195
msgid "Filter transactions" #: templates/transactions/pages/transactions.html:15
msgstr "" #: templates/transactions/pages/transactions.html:69
#: templates/monthly_overview/pages/overview.html:148
#: templates/transactions/pages/transactions.html:23
msgid "Order by"
msgstr ""
#: templates/monthly_overview/pages/overview.html:155
#: templates/transactions/pages/transactions.html:30
msgid "Oldest first" msgid "Oldest first"
msgstr "" msgstr ""
#: templates/monthly_overview/pages/overview.html:157 #: templates/monthly_overview/pages/overview.html:142
#: templates/transactions/pages/transactions.html:32 #: templates/monthly_overview/pages/overview.html:204
#: templates/transactions/pages/transactions.html:16
#: templates/transactions/pages/transactions.html:78
msgid "Newest first" msgid "Newest first"
msgstr "" msgstr ""
#: templates/monthly_overview/pages/overview.html:151
#: templates/transactions/pages/transactions.html:25
msgid "Filter transactions"
msgstr ""
#: templates/monthly_overview/pages/overview.html:176
#: templates/transactions/pages/transactions.html:50
msgid "Order by"
msgstr ""
#: templates/net_worth/net_worth.html:40 #: templates/net_worth/net_worth.html:40
#: templates/yearly_overview/pages/overview_by_currency.html:9 #: templates/yearly_overview/pages/overview_by_currency.html:9
msgid "By currency" msgid "By currency"
@@ -3296,7 +3308,7 @@ msgstr ""
msgid "transactions" msgid "transactions"
msgstr "" msgstr ""
#: templates/transactions/fragments/list_all.html:39 #: templates/transactions/fragments/list_all.html:46
msgid "No transactions found" msgid "No transactions found"
msgstr "" msgstr ""
+167 -155
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-08-17 06:55+0000\n" "POT-Creation-Date: 2025-08-30 02:09+0000\n"
"PO-Revision-Date: 2025-07-21 18:17+0000\n" "PO-Revision-Date: 2025-07-21 18:17+0000\n"
"Last-Translator: afermar <adrian.fm@protonmail.com>\n" "Last-Translator: afermar <adrian.fm@protonmail.com>\n"
"Language-Team: Spanish <https://translations.herculino.com/projects/wygiwyh/" "Language-Team: Spanish <https://translations.herculino.com/projects/wygiwyh/"
@@ -19,32 +19,32 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.12.2\n" "X-Generator: Weblate 5.12.2\n"
#: apps/accounts/forms.py:24 #: apps/accounts/forms.py:26
msgid "Group name" msgid "Group name"
msgstr "Nombre del Grupo" msgstr "Nombre del Grupo"
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98 #: apps/accounts/forms.py:42 apps/accounts/forms.py:118
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91 #: apps/currencies/forms.py:55 apps/currencies/forms.py:93
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224 #: apps/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
#: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93 #: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93
#: apps/rules/forms.py:365 apps/transactions/forms.py:204 #: apps/rules/forms.py:365 apps/transactions/forms.py:204
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421 #: apps/transactions/forms.py:369 apps/transactions/forms.py:416
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836 #: apps/transactions/forms.py:788 apps/transactions/forms.py:831
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903 #: apps/transactions/forms.py:863 apps/transactions/forms.py:898
#: apps/transactions/forms.py:1057 apps/users/forms.py:217 #: apps/transactions/forms.py:1052 apps/users/forms.py:217
#: apps/users/forms.py:379 #: apps/users/forms.py:379
msgid "Update" msgid "Update"
msgstr "Actualizar" msgstr "Actualizar"
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106 #: apps/accounts/forms.py:50 apps/accounts/forms.py:126
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61 #: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152 #: apps/currencies/forms.py:101 apps/currencies/forms.py:154
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42 #: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
#: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373 #: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373
#: apps/transactions/forms.py:189 apps/transactions/forms.py:213 #: apps/transactions/forms.py:189 apps/transactions/forms.py:213
#: apps/transactions/forms.py:383 apps/transactions/forms.py:801 #: apps/transactions/forms.py:378 apps/transactions/forms.py:796
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876 #: apps/transactions/forms.py:839 apps/transactions/forms.py:871
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065 #: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
#: apps/users/forms.py:225 apps/users/forms.py:387 #: apps/users/forms.py:225 apps/users/forms.py:387
#: templates/account_groups/fragments/list.html:9 #: templates/account_groups/fragments/list.html:9
#: templates/accounts/fragments/list.html:9 #: templates/accounts/fragments/list.html:9
@@ -66,37 +66,37 @@ msgstr "Actualizar"
msgid "Add" msgid "Add"
msgstr "Agregar" msgstr "Agregar"
#: apps/accounts/forms.py:57 templates/accounts/fragments/list.html:26 #: apps/accounts/forms.py:59 templates/accounts/fragments/list.html:26
msgid "Group" msgid "Group"
msgstr "Grupo" msgstr "Grupo"
#: apps/accounts/forms.py:115 #: apps/accounts/forms.py:135
msgid "New balance" msgid "New balance"
msgstr "Nuevo balance" msgstr "Nuevo balance"
#: apps/accounts/forms.py:121 apps/dca/forms.py:85 apps/dca/forms.py:92 #: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
#: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189 #: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189
#: apps/rules/models.py:38 apps/rules/models.py:286 #: apps/rules/models.py:38 apps/rules/models.py:286
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256 #: apps/transactions/forms.py:42 apps/transactions/forms.py:256
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462 #: apps/transactions/forms.py:450 apps/transactions/forms.py:457
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935 #: apps/transactions/forms.py:669 apps/transactions/forms.py:930
#: apps/transactions/models.py:318 apps/transactions/models.py:501 #: apps/transactions/models.py:318 apps/transactions/models.py:501
#: apps/transactions/models.py:701 apps/transactions/models.py:951 #: apps/transactions/models.py:701 apps/transactions/models.py:951
#: templates/insights/fragments/category_overview/index.html:78 #: templates/insights/fragments/category_overview/index.html:78
#: templates/insights/fragments/category_overview/index.html:528 #: templates/insights/fragments/category_overview/index.html:530
msgid "Category" msgid "Category"
msgstr "Categoría" msgstr "Categoría"
#: apps/accounts/forms.py:128 apps/dca/forms.py:101 apps/dca/forms.py:109 #: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135 #: apps/export_app/forms.py:44 apps/export_app/forms.py:135
#: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39 #: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39
#: apps/rules/models.py:290 apps/transactions/filters.py:69 #: apps/rules/models.py:290 apps/transactions/filters.py:69
#: apps/transactions/forms.py:50 apps/transactions/forms.py:264 #: apps/transactions/forms.py:50 apps/transactions/forms.py:264
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479 #: apps/transactions/forms.py:466 apps/transactions/forms.py:474
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928 #: apps/transactions/forms.py:662 apps/transactions/forms.py:923
#: apps/transactions/models.py:324 apps/transactions/models.py:503 #: apps/transactions/models.py:324 apps/transactions/models.py:503
#: apps/transactions/models.py:705 apps/transactions/models.py:957 #: apps/transactions/models.py:705 apps/transactions/models.py:957
#: templates/includes/navbar.html:111 templates/includes/sidebar.html:168 #: templates/includes/navbar.html:111 templates/includes/sidebar.html:192
#: templates/insights/fragments/category_overview/index.html:36 #: templates/insights/fragments/category_overview/index.html:36
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4 #: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
msgid "Tags" msgid "Tags"
@@ -128,11 +128,11 @@ msgstr "Grupo de Cuenta"
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5 #: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
#: templates/account_groups/pages/index.html:4 #: templates/account_groups/pages/index.html:4
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:188 #: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
msgid "Account Groups" msgid "Account Groups"
msgstr "Grupos de Cuentas" msgstr "Grupos de Cuentas"
#: apps/accounts/models.py:39 apps/currencies/models.py:39 #: apps/accounts/models.py:39 apps/currencies/models.py:44
#: templates/accounts/fragments/list.html:27 #: templates/accounts/fragments/list.html:27
#: templates/yearly_overview/pages/overview_by_account.html:18 #: templates/yearly_overview/pages/overview_by_account.html:18
#: templates/yearly_overview/pages/overview_by_currency.html:20 #: templates/yearly_overview/pages/overview_by_currency.html:20
@@ -158,8 +158,10 @@ msgid ""
msgstr "" msgstr ""
"Las cuentas de activos computan para su patrimonio neto, pero no para su mes." "Las cuentas de activos computan para su patrimonio neto, pero no para su mes."
#: apps/accounts/models.py:62 templates/accounts/fragments/list.html:30 #: apps/accounts/models.py:62 apps/currencies/models.py:37
#: templates/accounts/fragments/list.html:30
#: templates/categories/fragments/list.html:24 #: templates/categories/fragments/list.html:24
#: templates/currencies/fragments/list.html:27
#: templates/entities/fragments/list.html:24 #: templates/entities/fragments/list.html:24
#: templates/tags/fragments/list.html:24 #: templates/tags/fragments/list.html:24
msgid "Archived" msgid "Archived"
@@ -172,7 +174,7 @@ msgstr "Las cuentas archivadas no aparecen ni cuentan para su patrimonio neto"
#: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179 #: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179
#: apps/rules/models.py:30 apps/rules/models.py:242 #: apps/rules/models.py:30 apps/rules/models.py:242
#: apps/transactions/forms.py:62 apps/transactions/forms.py:276 #: apps/transactions/forms.py:62 apps/transactions/forms.py:276
#: apps/transactions/forms.py:659 apps/transactions/forms.py:920 #: apps/transactions/forms.py:654 apps/transactions/forms.py:915
#: apps/transactions/models.py:290 apps/transactions/models.py:461 #: apps/transactions/models.py:290 apps/transactions/models.py:461
#: apps/transactions/models.py:683 apps/transactions/models.py:925 #: apps/transactions/models.py:683 apps/transactions/models.py:925
#: templates/installment_plans/fragments/table.html:17 #: templates/installment_plans/fragments/table.html:17
@@ -187,11 +189,11 @@ msgstr "Cuenta"
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53 #: apps/export_app/forms.py:132 apps/transactions/filters.py:53
#: templates/accounts/fragments/list.html:5 #: templates/accounts/fragments/list.html:5
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117 #: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180 #: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
#: templates/includes/sidebar.html:182 #: templates/includes/sidebar.html:206
#: templates/monthly_overview/pages/overview.html:94 #: templates/monthly_overview/pages/overview.html:94
#: templates/transactions/fragments/summary.html:12 #: templates/transactions/fragments/summary.html:12
#: templates/transactions/pages/transactions.html:81 #: templates/transactions/pages/transactions.html:137
msgid "Accounts" msgid "Accounts"
msgstr "Cuentas" msgstr "Cuentas"
@@ -488,8 +490,10 @@ msgstr "Remover"
#: apps/common/widgets/tom_select.py:15 #: apps/common/widgets/tom_select.py:15
#: templates/mini_tools/unit_price_calculator.html:174 #: templates/mini_tools/unit_price_calculator.html:174
#: templates/monthly_overview/pages/overview.html:172 #: templates/monthly_overview/pages/overview.html:215
#: templates/transactions/pages/transactions.html:47 #: templates/monthly_overview/pages/overview.html:227
#: templates/transactions/pages/transactions.html:89
#: templates/transactions/pages/transactions.html:101
msgid "Clear" msgid "Clear"
msgstr "Limpiar" msgstr "Limpiar"
@@ -505,9 +509,9 @@ msgstr "Prefijo"
msgid "Suffix" msgid "Suffix"
msgstr "Sufijo" msgstr "Sufijo"
#: apps/currencies/forms.py:69 apps/dca/models.py:158 apps/rules/forms.py:169 #: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:169
#: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254 #: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254
#: apps/transactions/forms.py:66 apps/transactions/forms.py:483 #: apps/transactions/forms.py:66 apps/transactions/forms.py:478
#: apps/transactions/models.py:300 #: apps/transactions/models.py:300
#: templates/dca/fragments/strategy/details.html:52 #: templates/dca/fragments/strategy/details.html:52
#: templates/exchange_rates/fragments/table.html:10 #: templates/exchange_rates/fragments/table.html:10
@@ -527,76 +531,76 @@ msgstr "Nombre de la Moneda"
msgid "Decimal Places" msgid "Decimal Places"
msgstr "Cantidad de decimales" msgstr "Cantidad de decimales"
#: apps/currencies/models.py:40 apps/export_app/forms.py:26 #: apps/currencies/models.py:45 apps/export_app/forms.py:26
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60 #: apps/export_app/forms.py:133 apps/transactions/filters.py:60
#: templates/currencies/fragments/list.html:5 #: templates/currencies/fragments/list.html:5
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125 #: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194 #: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
#: templates/includes/sidebar.html:196 #: templates/includes/sidebar.html:220
#: templates/monthly_overview/pages/overview.html:81 #: templates/monthly_overview/pages/overview.html:81
#: templates/transactions/fragments/summary.html:8 #: templates/transactions/fragments/summary.html:8
#: templates/transactions/pages/transactions.html:68 #: templates/transactions/pages/transactions.html:124
msgid "Currencies" msgid "Currencies"
msgstr "Monedas" msgstr "Monedas"
#: apps/currencies/models.py:49 #: apps/currencies/models.py:54
msgid "Currency cannot have itself as exchange currency." msgid "Currency cannot have itself as exchange currency."
msgstr "La moneda no puede tenerse a sí misma como moneda de cambio." msgstr "La moneda no puede tenerse a sí misma como moneda de cambio."
#: apps/currencies/models.py:60 #: apps/currencies/models.py:65
msgid "From Currency" msgid "From Currency"
msgstr "De Moneda" msgstr "De Moneda"
#: apps/currencies/models.py:66 #: apps/currencies/models.py:71
msgid "To Currency" msgid "To Currency"
msgstr "A Moneda" msgstr "A Moneda"
#: apps/currencies/models.py:69 apps/currencies/models.py:76 #: apps/currencies/models.py:74 apps/currencies/models.py:81
msgid "Exchange Rate" msgid "Exchange Rate"
msgstr "Tipo de cambio" msgstr "Tipo de cambio"
#: apps/currencies/models.py:71 #: apps/currencies/models.py:76
msgid "Date and Time" msgid "Date and Time"
msgstr "Fecha y Hora" msgstr "Fecha y Hora"
#: apps/currencies/models.py:73 apps/users/models.py:12 #: apps/currencies/models.py:78 apps/users/models.py:12
#: apps/users/models.py:497 #: apps/users/models.py:497
#, fuzzy #, fuzzy
msgid "Auto" msgid "Auto"
msgstr "Auto" msgstr "Auto"
#: apps/currencies/models.py:77 apps/export_app/forms.py:68 #: apps/currencies/models.py:82 apps/export_app/forms.py:68
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6 #: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
#: templates/exchange_rates/pages/index.html:4 #: templates/exchange_rates/pages/index.html:4
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:202 #: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
msgid "Exchange Rates" msgid "Exchange Rates"
msgstr "Tipos de cambio" msgstr "Tipos de cambio"
#: apps/currencies/models.py:89 #: apps/currencies/models.py:94
msgid "From and To currencies cannot be the same." msgid "From and To currencies cannot be the same."
msgstr "Las monedas de origen y destino no pueden ser la misma." msgstr "Las monedas de origen y destino no pueden ser la misma."
#: apps/currencies/models.py:105 #: apps/currencies/models.py:110
msgid "On" msgid "On"
msgstr "Encendido" msgstr "Encendido"
#: apps/currencies/models.py:106 #: apps/currencies/models.py:111
msgid "Every X hours" msgid "Every X hours"
msgstr "Cada X horas" msgstr "Cada X horas"
#: apps/currencies/models.py:107 #: apps/currencies/models.py:112
msgid "Not on" msgid "Not on"
msgstr "No Encendido" msgstr "No Encendido"
#: apps/currencies/models.py:109 #: apps/currencies/models.py:114
msgid "Service Name" msgid "Service Name"
msgstr "Nombre del Servicio" msgstr "Nombre del Servicio"
#: apps/currencies/models.py:111 #: apps/currencies/models.py:116
msgid "Service Type" msgid "Service Type"
msgstr "Tipo de Servicio" msgstr "Tipo de Servicio"
#: apps/currencies/models.py:113 apps/transactions/models.py:214 #: apps/currencies/models.py:118 apps/transactions/models.py:214
#: apps/transactions/models.py:238 apps/transactions/models.py:262 #: apps/transactions/models.py:238 apps/transactions/models.py:262
#: templates/categories/fragments/list.html:21 #: templates/categories/fragments/list.html:21
#: templates/entities/fragments/list.html:21 #: templates/entities/fragments/list.html:21
@@ -605,37 +609,37 @@ msgstr "Tipo de Servicio"
msgid "Active" msgid "Active"
msgstr "Activo" msgstr "Activo"
#: apps/currencies/models.py:118 #: apps/currencies/models.py:123
#, fuzzy #, fuzzy
msgid "API Key" msgid "API Key"
msgstr "API Key" msgstr "API Key"
#: apps/currencies/models.py:119 #: apps/currencies/models.py:124
#, fuzzy #, fuzzy
msgid "API key for the service (if required)" msgid "API key for the service (if required)"
msgstr "API key for the service (if required)" msgstr "API key for the service (if required)"
#: apps/currencies/models.py:124 #: apps/currencies/models.py:129
#, fuzzy #, fuzzy
msgid "Interval Type" msgid "Interval Type"
msgstr "Interval Type" msgstr "Interval Type"
#: apps/currencies/models.py:128 #: apps/currencies/models.py:133
#, fuzzy #, fuzzy
msgid "Interval" msgid "Interval"
msgstr "Interval" msgstr "Interval"
#: apps/currencies/models.py:131 #: apps/currencies/models.py:136
#, fuzzy #, fuzzy
msgid "Last Successful Fetch" msgid "Last Successful Fetch"
msgstr "Last Successful Fetch" msgstr "Last Successful Fetch"
#: apps/currencies/models.py:136 #: apps/currencies/models.py:141
#, fuzzy #, fuzzy
msgid "Target Currencies" msgid "Target Currencies"
msgstr "Target Currencies" msgstr "Target Currencies"
#: apps/currencies/models.py:138 #: apps/currencies/models.py:143
#, fuzzy #, fuzzy
msgid "" msgid ""
"Select currencies to fetch exchange rates for. Rates will be fetched for " "Select currencies to fetch exchange rates for. Rates will be fetched for "
@@ -644,12 +648,12 @@ msgstr ""
"Select currencies to fetch exchange rates for. Rates will be fetched for " "Select currencies to fetch exchange rates for. Rates will be fetched for "
"each currency against their set exchange currency." "each currency against their set exchange currency."
#: apps/currencies/models.py:146 #: apps/currencies/models.py:151
#, fuzzy #, fuzzy
msgid "Target Accounts" msgid "Target Accounts"
msgstr "Target Accounts" msgstr "Target Accounts"
#: apps/currencies/models.py:148 #: apps/currencies/models.py:153
#, fuzzy #, fuzzy
msgid "" msgid ""
"Select accounts to fetch exchange rates for. Rates will be fetched for each " "Select accounts to fetch exchange rates for. Rates will be fetched for each "
@@ -658,36 +662,36 @@ msgstr ""
"Select accounts to fetch exchange rates for. Rates will be fetched for each " "Select accounts to fetch exchange rates for. Rates will be fetched for each "
"account's currency against their set exchange currency." "account's currency against their set exchange currency."
#: apps/currencies/models.py:155 #: apps/currencies/models.py:160
#, fuzzy #, fuzzy
msgid "Single exchange rate" msgid "Single exchange rate"
msgstr "Edit exchange rate" msgstr "Edit exchange rate"
#: apps/currencies/models.py:158 #: apps/currencies/models.py:163
msgid "Create one exchange rate and keep updating it. Avoids database clutter." msgid "Create one exchange rate and keep updating it. Avoids database clutter."
msgstr "" msgstr ""
#: apps/currencies/models.py:163 #: apps/currencies/models.py:168
#, fuzzy #, fuzzy
msgid "Exchange Rate Service" msgid "Exchange Rate Service"
msgstr "Exchange Rate Service" msgstr "Exchange Rate Service"
#: apps/currencies/models.py:164 #: apps/currencies/models.py:169
#, fuzzy #, fuzzy
msgid "Exchange Rate Services" msgid "Exchange Rate Services"
msgstr "Exchange Rate Services" msgstr "Exchange Rate Services"
#: apps/currencies/models.py:216 #: apps/currencies/models.py:221
#, fuzzy #, fuzzy
msgid "'Every X hours' interval type requires a positive integer." msgid "'Every X hours' interval type requires a positive integer."
msgstr "'Every X hours' interval type requires a positive integer." msgstr "'Every X hours' interval type requires a positive integer."
#: apps/currencies/models.py:225 #: apps/currencies/models.py:230
#, fuzzy #, fuzzy
msgid "'Every X hours' interval must be between 1 and 24." msgid "'Every X hours' interval must be between 1 and 24."
msgstr "'Every X hours' interval must be between 1 and 24." msgstr "'Every X hours' interval must be between 1 and 24."
#: apps/currencies/models.py:239 #: apps/currencies/models.py:244
#, fuzzy #, fuzzy
msgid "" msgid ""
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., " "Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
@@ -696,7 +700,7 @@ msgstr ""
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., " "Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
"'1-5,8,10-12')." "'1-5,8,10-12')."
#: apps/currencies/models.py:250 #: apps/currencies/models.py:255
#, fuzzy #, fuzzy
msgid "" msgid ""
"Invalid format. Please check the requirements for your selected interval " "Invalid format. Please check the requirements for your selected interval "
@@ -760,12 +764,12 @@ msgstr "Services queued successfully"
msgid "Create transaction" msgid "Create transaction"
msgstr "Create transaction" msgstr "Create transaction"
#: apps/dca/forms.py:70 apps/transactions/forms.py:430 #: apps/dca/forms.py:70 apps/transactions/forms.py:425
#, fuzzy #, fuzzy
msgid "From Account" msgid "From Account"
msgstr "From Account" msgstr "From Account"
#: apps/dca/forms.py:76 apps/transactions/forms.py:435 #: apps/dca/forms.py:76 apps/transactions/forms.py:430
#, fuzzy #, fuzzy
msgid "To Account" msgid "To Account"
msgstr "To Account" msgstr "To Account"
@@ -796,7 +800,7 @@ msgstr "Link transaction"
msgid "You must provide an account." msgid "You must provide an account."
msgstr "You must provide an account." msgstr "You must provide an account."
#: apps/dca/forms.py:312 apps/transactions/forms.py:605 #: apps/dca/forms.py:312 apps/transactions/forms.py:600
#, fuzzy #, fuzzy
msgid "From and To accounts must be different." msgid "From and To accounts must be different."
msgstr "From and To accounts must be different." msgstr "From and To accounts must be different."
@@ -818,7 +822,7 @@ msgstr "Payment Currency"
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173 #: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173
#: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270 #: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270
#: apps/transactions/forms.py:499 apps/transactions/models.py:314 #: apps/transactions/forms.py:494 apps/transactions/models.py:314
#: apps/transactions/models.py:510 apps/transactions/models.py:711 #: apps/transactions/models.py:510 apps/transactions/models.py:711
#: apps/transactions/models.py:947 #: apps/transactions/models.py:947
#, fuzzy #, fuzzy
@@ -891,7 +895,7 @@ msgid "Entry deleted successfully"
msgstr "Entry deleted successfully" msgstr "Entry deleted successfully"
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131 #: apps/export_app/forms.py:14 apps/export_app/forms.py:131
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:239 #: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4 #: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
#, fuzzy #, fuzzy
msgid "Users" msgid "Users"
@@ -899,8 +903,8 @@ msgstr "Users"
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137 #: apps/export_app/forms.py:32 apps/export_app/forms.py:137
#: apps/transactions/models.py:375 templates/includes/navbar.html:58 #: apps/transactions/models.py:375 templates/includes/navbar.html:58
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66 #: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
#: templates/includes/sidebar.html:160 #: templates/includes/sidebar.html:184
#: templates/recurring_transactions/fragments/list_transactions.html:5 #: templates/recurring_transactions/fragments/list_transactions.html:5
#: templates/recurring_transactions/fragments/table.html:39 #: templates/recurring_transactions/fragments/table.html:39
#: templates/transactions/pages/transactions.html:5 #: templates/transactions/pages/transactions.html:5
@@ -911,7 +915,7 @@ msgstr "Transactions"
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134 #: apps/export_app/forms.py:38 apps/export_app/forms.py:134
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5 #: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109 #: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
#: templates/includes/sidebar.html:162 #: templates/includes/sidebar.html:186
#, fuzzy #, fuzzy
msgid "Categories" msgid "Categories"
msgstr "Categories" msgstr "Categories"
@@ -920,12 +924,12 @@ msgstr "Categories"
#: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40 #: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40
#: apps/rules/models.py:282 apps/transactions/filters.py:74 #: apps/rules/models.py:282 apps/transactions/filters.py:74
#: apps/transactions/forms.py:58 apps/transactions/forms.py:272 #: apps/transactions/forms.py:58 apps/transactions/forms.py:272
#: apps/transactions/forms.py:682 apps/transactions/forms.py:943 #: apps/transactions/forms.py:677 apps/transactions/forms.py:938
#: apps/transactions/models.py:273 apps/transactions/models.py:329 #: apps/transactions/models.py:273 apps/transactions/models.py:329
#: apps/transactions/models.py:506 apps/transactions/models.py:708 #: apps/transactions/models.py:506 apps/transactions/models.py:708
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5 #: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113 #: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
#: templates/includes/sidebar.html:174 #: templates/includes/sidebar.html:198
#: templates/insights/fragments/category_overview/index.html:49 #: templates/insights/fragments/category_overview/index.html:49
#, fuzzy #, fuzzy
msgid "Entities" msgid "Entities"
@@ -933,7 +937,7 @@ msgstr "Entities"
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140 #: apps/export_app/forms.py:56 apps/export_app/forms.py:140
#: apps/transactions/models.py:748 templates/includes/navbar.html:77 #: apps/transactions/models.py:748 templates/includes/navbar.html:77
#: templates/includes/sidebar.html:95 #: templates/includes/sidebar.html:120
#: templates/recurring_transactions/fragments/list.html:5 #: templates/recurring_transactions/fragments/list.html:5
#: templates/recurring_transactions/pages/index.html:4 #: templates/recurring_transactions/pages/index.html:4
#, fuzzy #, fuzzy
@@ -942,7 +946,7 @@ msgstr "Recurring Transactions"
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138 #: apps/export_app/forms.py:62 apps/export_app/forms.py:138
#: apps/transactions/models.py:524 templates/includes/navbar.html:75 #: apps/transactions/models.py:524 templates/includes/navbar.html:75
#: templates/includes/sidebar.html:89 #: templates/includes/sidebar.html:114
#: templates/installment_plans/fragments/list.html:5 #: templates/installment_plans/fragments/list.html:5
#: templates/installment_plans/pages/index.html:4 #: templates/installment_plans/pages/index.html:4
#, fuzzy #, fuzzy
@@ -952,13 +956,13 @@ msgstr "Installment Plans"
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143 #: apps/export_app/forms.py:74 apps/export_app/forms.py:143
#: templates/exchange_rates_services/fragments/list.html:6 #: templates/exchange_rates_services/fragments/list.html:6
#: templates/exchange_rates_services/pages/index.html:4 #: templates/exchange_rates_services/pages/index.html:4
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:230 #: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
#, fuzzy #, fuzzy
msgid "Automatic Exchange Rates" msgid "Automatic Exchange Rates"
msgstr "Automatic Exchange Rates" msgstr "Automatic Exchange Rates"
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135 #: apps/export_app/forms.py:80 templates/includes/navbar.html:135
#: templates/includes/sidebar.html:210 templates/rules/fragments/list.html:5 #: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
#: templates/rules/pages/index.html:4 #: templates/rules/pages/index.html:4
#, fuzzy #, fuzzy
msgid "Rules" msgid "Rules"
@@ -1044,7 +1048,7 @@ msgstr "Select a file"
#: apps/import_app/forms.py:61 #: apps/import_app/forms.py:61
#: templates/import_app/fragments/profiles/list.html:62 #: templates/import_app/fragments/profiles/list.html:62
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:216 #: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
#, fuzzy #, fuzzy
msgid "Import" msgid "Import"
msgstr "Import" msgstr "Import"
@@ -1130,8 +1134,8 @@ msgstr "Run deleted successfully"
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36 #: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
#: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189 #: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189
#: templates/insights/fragments/category_overview/index.html:88 #: templates/insights/fragments/category_overview/index.html:88
#: templates/insights/fragments/category_overview/index.html:393 #: templates/insights/fragments/category_overview/index.html:395
#: templates/insights/fragments/category_overview/index.html:422 #: templates/insights/fragments/category_overview/index.html:424
#, fuzzy #, fuzzy
msgid "Uncategorized" msgid "Uncategorized"
msgstr "Uncategorized" msgstr "Uncategorized"
@@ -1247,7 +1251,7 @@ msgstr "Paid"
#: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34 #: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34
#: apps/rules/models.py:258 apps/transactions/forms.py:70 #: apps/rules/models.py:258 apps/transactions/forms.py:70
#: apps/transactions/forms.py:486 apps/transactions/forms.py:688 #: apps/transactions/forms.py:481 apps/transactions/forms.py:683
#: apps/transactions/models.py:301 apps/transactions/models.py:484 #: apps/transactions/models.py:301 apps/transactions/models.py:484
#: apps/transactions/models.py:713 #: apps/transactions/models.py:713
#, fuzzy #, fuzzy
@@ -1267,7 +1271,7 @@ msgstr "Amount"
#: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14 #: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14
#: apps/rules/models.py:36 apps/rules/models.py:266 #: apps/rules/models.py:36 apps/rules/models.py:266
#: apps/transactions/forms.py:490 apps/transactions/models.py:312 #: apps/transactions/forms.py:485 apps/transactions/models.py:312
#: apps/transactions/models.py:468 apps/transactions/models.py:697 #: apps/transactions/models.py:468 apps/transactions/models.py:697
#: apps/transactions/models.py:945 #: apps/transactions/models.py:945
#, fuzzy #, fuzzy
@@ -1505,6 +1509,7 @@ msgid "Any entity"
msgstr "Add entity" msgstr "Add entity"
#: apps/transactions/filters.py:202 #: apps/transactions/filters.py:202
#: templates/insights/fragments/category_overview/index.html:274
#, fuzzy #, fuzzy
msgid "No entity" msgid "No entity"
msgstr "No entities" msgstr "No entities"
@@ -1522,61 +1527,61 @@ msgstr "Guardar y añadir similar"
msgid "Save and add another" msgid "Save and add another"
msgstr "Guardar y añadir otro" msgstr "Guardar y añadir otro"
#: apps/transactions/forms.py:300 apps/transactions/forms.py:506 #: apps/transactions/forms.py:300 apps/transactions/forms.py:501
msgid "Muted transactions won't be displayed on monthly summaries" msgid "Muted transactions won't be displayed on monthly summaries"
msgstr "" msgstr ""
"Las transacciones silenciadas no se mostrarán en los resúmenes mensuales" "Las transacciones silenciadas no se mostrarán en los resúmenes mensuales"
#: apps/transactions/forms.py:442 #: apps/transactions/forms.py:437
#, fuzzy #, fuzzy
msgid "From Amount" msgid "From Amount"
msgstr "From Amount" msgstr "From Amount"
#: apps/transactions/forms.py:447 #: apps/transactions/forms.py:442
#, fuzzy #, fuzzy
msgid "To Amount" msgid "To Amount"
msgstr "To Amount" msgstr "To Amount"
#: apps/transactions/forms.py:503 apps/transactions/models.py:211 #: apps/transactions/forms.py:498 apps/transactions/models.py:211
#: apps/transactions/models.py:302 apps/transactions/models.py:935 #: apps/transactions/models.py:302 apps/transactions/models.py:935
#, fuzzy #, fuzzy
msgid "Mute" msgid "Mute"
msgstr "Mute" msgstr "Mute"
#: apps/transactions/forms.py:572 #: apps/transactions/forms.py:567
#: templates/cotton/ui/quick_transactions_buttons.html:40 #: templates/cotton/ui/quick_transactions_buttons.html:40
#: templates/cotton/ui/transactions_fab.html:44 #: templates/cotton/ui/transactions_fab.html:44
#, fuzzy #, fuzzy
msgid "Transfer" msgid "Transfer"
msgstr "Transfer" msgstr "Transfer"
#: apps/transactions/forms.py:822 #: apps/transactions/forms.py:817
#, fuzzy #, fuzzy
msgid "Tag name" msgid "Tag name"
msgstr "Tag name" msgstr "Tag name"
#: apps/transactions/forms.py:854 #: apps/transactions/forms.py:849
#, fuzzy #, fuzzy
msgid "Entity name" msgid "Entity name"
msgstr "Entity name" msgstr "Entity name"
#: apps/transactions/forms.py:886 #: apps/transactions/forms.py:881
#, fuzzy #, fuzzy
msgid "Category name" msgid "Category name"
msgstr "Category name" msgstr "Category name"
#: apps/transactions/forms.py:888 #: apps/transactions/forms.py:883
#, fuzzy #, fuzzy
msgid "Muted categories won't be displayed on monthly summaries" msgid "Muted categories won't be displayed on monthly summaries"
msgstr "Muted categories won't count towards your monthly total" msgstr "Muted categories won't count towards your monthly total"
#: apps/transactions/forms.py:1046 #: apps/transactions/forms.py:1041
#, fuzzy #, fuzzy
#| msgid "Filter transactions" #| msgid "Filter transactions"
msgid "future transactions" msgid "future transactions"
msgstr "Filtrar transacciones" msgstr "Filtrar transacciones"
#: apps/transactions/forms.py:1076 #: apps/transactions/forms.py:1071
#, fuzzy #, fuzzy
msgid "End date should be after the start date" msgid "End date should be after the start date"
msgstr "End date should be after the start date" msgstr "End date should be after the start date"
@@ -1691,13 +1696,13 @@ msgstr "No category"
msgid "No description" msgid "No description"
msgstr "No description" msgstr "No description"
#: apps/transactions/models.py:455 templates/includes/sidebar.html:42 #: apps/transactions/models.py:455 templates/includes/sidebar.html:67
#, fuzzy #, fuzzy
msgid "Yearly" msgid "Yearly"
msgstr "Yearly" msgstr "Yearly"
#: apps/transactions/models.py:456 apps/users/models.py:464 #: apps/transactions/models.py:456 apps/users/models.py:464
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:36 #: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
#, fuzzy #, fuzzy
msgid "Monthly" msgid "Monthly"
msgstr "Monthly" msgstr "Monthly"
@@ -1818,7 +1823,7 @@ msgid "Quick Transaction"
msgstr "Edit Transaction" msgstr "Edit Transaction"
#: apps/transactions/models.py:980 templates/includes/navbar.html:73 #: apps/transactions/models.py:980 templates/includes/navbar.html:73
#: templates/includes/sidebar.html:83 #: templates/includes/sidebar.html:108
#: templates/quick_transactions/pages/index.html:5 #: templates/quick_transactions/pages/index.html:5
#: templates/quick_transactions/pages/index.html:11 #: templates/quick_transactions/pages/index.html:11
#, fuzzy #, fuzzy
@@ -1921,12 +1926,12 @@ msgid "Installment Plan deleted successfully"
msgstr "Installment Plan deleted successfully" msgstr "Installment Plan deleted successfully"
#: apps/transactions/views/quick_transactions.py:45 #: apps/transactions/views/quick_transactions.py:45
#: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:152 #: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:170
#, fuzzy #, fuzzy
msgid "Item added successfully" msgid "Item added successfully"
msgstr "Rule added successfully" msgstr "Rule added successfully"
#: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:184 #: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:202
#, fuzzy #, fuzzy
msgid "Item updated successfully" msgid "Item updated successfully"
msgstr "Rule updated successfully" msgstr "Rule updated successfully"
@@ -2067,8 +2072,10 @@ msgid "This account is deactivated"
msgstr "This account is deactivated" msgstr "This account is deactivated"
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89 #: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
#: templates/monthly_overview/pages/overview.html:153 #: templates/monthly_overview/pages/overview.html:140
#: templates/transactions/pages/transactions.html:28 #: templates/monthly_overview/pages/overview.html:186
#: templates/transactions/pages/transactions.html:14
#: templates/transactions/pages/transactions.html:60
#, fuzzy #, fuzzy
msgid "Default" msgid "Default"
msgstr "Default" msgstr "Default"
@@ -2187,7 +2194,7 @@ msgid "All Transactions"
msgstr "All Transactions" msgstr "All Transactions"
#: apps/users/models.py:470 templates/includes/navbar.html:33 #: apps/users/models.py:470 templates/includes/navbar.html:33
#: templates/includes/sidebar.html:48 #: templates/includes/sidebar.html:73
#, fuzzy #, fuzzy
msgid "Calendar" msgid "Calendar"
msgstr "Calendar" msgstr "Calendar"
@@ -2249,7 +2256,7 @@ msgstr "Edit account group"
#: templates/account_groups/fragments/list.html:32 #: templates/account_groups/fragments/list.html:32
#: templates/accounts/fragments/list.html:37 #: templates/accounts/fragments/list.html:37
#: templates/categories/fragments/table.html:24 #: templates/categories/fragments/table.html:24
#: templates/currencies/fragments/list.html:33 #: templates/currencies/fragments/list.html:34
#: templates/dca/fragments/strategy/details.html:63 #: templates/dca/fragments/strategy/details.html:63
#: templates/entities/fragments/table.html:23 #: templates/entities/fragments/table.html:23
#: templates/exchange_rates/fragments/table.html:19 #: templates/exchange_rates/fragments/table.html:19
@@ -2271,7 +2278,7 @@ msgstr "Actions"
#: templates/categories/fragments/table.html:29 #: templates/categories/fragments/table.html:29
#: templates/cotton/transaction/item.html:129 #: templates/cotton/transaction/item.html:129
#: templates/cotton/ui/transactions_action_bar.html:52 #: templates/cotton/ui/transactions_action_bar.html:52
#: templates/currencies/fragments/list.html:37 #: templates/currencies/fragments/list.html:38
#: templates/dca/fragments/strategy/details.html:67 #: templates/dca/fragments/strategy/details.html:67
#: templates/dca/fragments/strategy/list.html:36 #: templates/dca/fragments/strategy/list.html:36
#: templates/entities/fragments/table.html:28 #: templates/entities/fragments/table.html:28
@@ -2298,7 +2305,7 @@ msgstr "Edit"
#: templates/cotton/transaction/item.html:192 #: templates/cotton/transaction/item.html:192
#: templates/cotton/ui/deleted_transactions_action_bar.html:55 #: templates/cotton/ui/deleted_transactions_action_bar.html:55
#: templates/cotton/ui/transactions_action_bar.html:90 #: templates/cotton/ui/transactions_action_bar.html:90
#: templates/currencies/fragments/list.html:44 #: templates/currencies/fragments/list.html:45
#: templates/dca/fragments/strategy/details.html:75 #: templates/dca/fragments/strategy/details.html:75
#: templates/dca/fragments/strategy/list.html:44 #: templates/dca/fragments/strategy/list.html:44
#: templates/entities/fragments/table.html:36 #: templates/entities/fragments/table.html:36
@@ -2326,7 +2333,7 @@ msgstr "Delete"
#: templates/cotton/transaction/item.html:196 #: templates/cotton/transaction/item.html:196
#: templates/cotton/ui/deleted_transactions_action_bar.html:57 #: templates/cotton/ui/deleted_transactions_action_bar.html:57
#: templates/cotton/ui/transactions_action_bar.html:92 #: templates/cotton/ui/transactions_action_bar.html:92
#: templates/currencies/fragments/list.html:48 #: templates/currencies/fragments/list.html:49
#: templates/dca/fragments/strategy/details.html:80 #: templates/dca/fragments/strategy/details.html:80
#: templates/dca/fragments/strategy/list.html:48 #: templates/dca/fragments/strategy/list.html:48
#: templates/entities/fragments/table.html:40 #: templates/entities/fragments/table.html:40
@@ -2357,7 +2364,7 @@ msgstr "Are you sure?"
#: templates/cotton/transaction/item.html:197 #: templates/cotton/transaction/item.html:197
#: templates/cotton/ui/deleted_transactions_action_bar.html:58 #: templates/cotton/ui/deleted_transactions_action_bar.html:58
#: templates/cotton/ui/transactions_action_bar.html:93 #: templates/cotton/ui/transactions_action_bar.html:93
#: templates/currencies/fragments/list.html:49 #: templates/currencies/fragments/list.html:50
#: templates/dca/fragments/strategy/details.html:81 #: templates/dca/fragments/strategy/details.html:81
#: templates/dca/fragments/strategy/list.html:49 #: templates/dca/fragments/strategy/list.html:49
#: templates/entities/fragments/table.html:41 #: templates/entities/fragments/table.html:41
@@ -2378,7 +2385,7 @@ msgstr "You won't be able to revert this!"
#: templates/categories/fragments/table.html:43 #: templates/categories/fragments/table.html:43
#: templates/cotton/transaction/item.html:142 #: templates/cotton/transaction/item.html:142
#: templates/cotton/transaction/item.html:198 #: templates/cotton/transaction/item.html:198
#: templates/currencies/fragments/list.html:50 #: templates/currencies/fragments/list.html:51
#: templates/dca/fragments/strategy/details.html:82 #: templates/dca/fragments/strategy/details.html:82
#: templates/dca/fragments/strategy/list.html:50 #: templates/dca/fragments/strategy/list.html:50
#: templates/entities/fragments/table.html:42 #: templates/entities/fragments/table.html:42
@@ -2550,7 +2557,7 @@ msgid "Muted"
msgstr "Muted" msgstr "Muted"
#: templates/categories/fragments/table.html:75 #: templates/categories/fragments/table.html:75
#: templates/insights/fragments/category_overview/index.html:538 #: templates/insights/fragments/category_overview/index.html:540
#, fuzzy #, fuzzy
msgid "No categories" msgid "No categories"
msgstr "No categories" msgstr "No categories"
@@ -2561,14 +2568,15 @@ msgid "Pick a month"
msgstr "Pick a month" msgstr "Pick a month"
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5 #: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
#: templates/includes/sidebar.html:28 #: templates/includes/sidebar.html:53
#, fuzzy #, fuzzy
msgid "Close" msgid "Close"
msgstr "Close" msgstr "Close"
#: templates/cotton/config/search.html:6 #: templates/cotton/config/search.html:6
#: templates/import_app/fragments/profiles/list_presets.html:13 #: templates/import_app/fragments/profiles/list_presets.html:13
#: templates/monthly_overview/pages/overview.html:177 #: templates/monthly_overview/pages/overview.html:160
#: templates/transactions/pages/transactions.html:34
#, fuzzy #, fuzzy
msgid "Search" msgid "Search"
msgstr "Search" msgstr "Search"
@@ -2786,7 +2794,7 @@ msgstr "Edit currency"
msgid "Code" msgid "Code"
msgstr "Code" msgstr "Code"
#: templates/currencies/fragments/list.html:61 #: templates/currencies/fragments/list.html:63
#, fuzzy #, fuzzy
msgid "No currencies" msgid "No currencies"
msgstr "No currencies" msgstr "No currencies"
@@ -2833,7 +2841,7 @@ msgstr "No entries for this DCA"
#: templates/dca/fragments/strategy/details.html:125 #: templates/dca/fragments/strategy/details.html:125
#: templates/monthly_overview/fragments/list.html:47 #: templates/monthly_overview/fragments/list.html:47
#: templates/transactions/fragments/list_all.html:40 #: templates/transactions/fragments/list_all.html:47
#, fuzzy #, fuzzy
msgid "Try adding one" msgid "Try adding one"
msgstr "Try adding one" msgstr "Try adding one"
@@ -2958,7 +2966,7 @@ msgid "Edit exchange rate"
msgstr "Edit exchange rate" msgstr "Edit exchange rate"
#: templates/exchange_rates/fragments/list.html:25 #: templates/exchange_rates/fragments/list.html:25
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:68 #: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
#: templates/installment_plans/fragments/list.html:21 #: templates/installment_plans/fragments/list.html:21
#: templates/yearly_overview/pages/overview_by_account.html:105 #: templates/yearly_overview/pages/overview_by_account.html:105
#: templates/yearly_overview/pages/overview_by_currency.html:107 #: templates/yearly_overview/pages/overview_by_currency.html:107
@@ -2986,7 +2994,7 @@ msgstr "No exchange rates"
#: templates/exchange_rates/fragments/table.html:58 #: templates/exchange_rates/fragments/table.html:58
#: templates/exchange_rates_services/fragments/table.html:58 #: templates/exchange_rates_services/fragments/table.html:58
#: templates/transactions/fragments/list_all.html:47 #: templates/transactions/fragments/list_all.html:54
#, fuzzy #, fuzzy
msgid "Page navigation" msgid "Page navigation"
msgstr "Page navigation" msgstr "Page navigation"
@@ -3027,7 +3035,7 @@ msgid "No services configured"
msgstr "No services configured" msgstr "No services configured"
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140 #: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
#: templates/includes/sidebar.html:223 #: templates/includes/sidebar.html:247
#, fuzzy #, fuzzy
msgid "Export and Restore" msgid "Export and Restore"
msgstr "Export and Restore" msgstr "Export and Restore"
@@ -3147,7 +3155,7 @@ msgstr "Toggle navigation"
msgid "Overview" msgid "Overview"
msgstr "Overview" msgstr "Overview"
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:60 #: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
#, fuzzy #, fuzzy
msgid "Net Worth" msgid "Net Worth"
msgstr "Net Worth" msgstr "Net Worth"
@@ -3159,72 +3167,72 @@ msgstr "Net Worth"
msgid "Current" msgid "Current"
msgstr "Current" msgstr "Current"
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:54 #: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
#: templates/insights/pages/index.html:5 #: templates/insights/pages/index.html:5
#, fuzzy #, fuzzy
msgid "Insights" msgid "Insights"
msgstr "Insights" msgstr "Insights"
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:76 #: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
#, fuzzy #, fuzzy
msgid "Trash Can" msgid "Trash Can"
msgstr "Trash Can" msgstr "Trash Can"
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101 #: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
#, fuzzy #, fuzzy
msgid "Tools" msgid "Tools"
msgstr "Tools" msgstr "Tools"
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:103 #: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
#, fuzzy #, fuzzy
msgid "Dollar Cost Average Tracker" msgid "Dollar Cost Average Tracker"
msgstr "Dollar Cost Average Tracker" msgstr "Dollar Cost Average Tracker"
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:109 #: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
#: templates/mini_tools/unit_price_calculator.html:5 #: templates/mini_tools/unit_price_calculator.html:5
#: templates/mini_tools/unit_price_calculator.html:10 #: templates/mini_tools/unit_price_calculator.html:10
#, fuzzy #, fuzzy
msgid "Unit Price Calculator" msgid "Unit Price Calculator"
msgstr "Unit Price Calculator" msgstr "Unit Price Calculator"
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:115 #: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
#: templates/mini_tools/currency_converter/currency_converter.html:8 #: templates/mini_tools/currency_converter/currency_converter.html:8
#: templates/mini_tools/currency_converter/currency_converter.html:15 #: templates/mini_tools/currency_converter/currency_converter.html:15
#, fuzzy #, fuzzy
msgid "Currency Converter" msgid "Currency Converter"
msgstr "Currency Converter" msgstr "Currency Converter"
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134 #: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
#: templates/includes/sidebar.html:147 #: templates/includes/sidebar.html:171
#, fuzzy #, fuzzy
msgid "Management" msgid "Management"
msgstr "Management" msgstr "Management"
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208 #: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
#, fuzzy #, fuzzy
msgid "Automation" msgid "Automation"
msgstr "Automation" msgstr "Automation"
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:237 #: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
msgid "Admin" msgid "Admin"
msgstr "" msgstr ""
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:246 #: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
#, fuzzy #, fuzzy
msgid "Only use this if you know what you're doing" msgid "Only use this if you know what you're doing"
msgstr "Only use this if you know what you're doing" msgstr "Only use this if you know what you're doing"
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:245 #: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
#, fuzzy #, fuzzy
msgid "Django Admin" msgid "Django Admin"
msgstr "Django Admin" msgstr "Django Admin"
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:260 #: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
msgid "is available" msgid "is available"
msgstr "" msgstr ""
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177 #: templates/includes/navbar.html:174 templates/includes/navbar.html:177
#: templates/includes/sidebar.html:266 #: templates/includes/sidebar.html:290
#, fuzzy #, fuzzy
msgid "Calculator" msgid "Calculator"
msgstr "Calculator" msgstr "Calculator"
@@ -3336,7 +3344,7 @@ msgstr "final total"
msgid "Total" msgid "Total"
msgstr "Total" msgstr "Total"
#: templates/insights/fragments/category_overview/index.html:515 #: templates/insights/fragments/category_overview/index.html:517
#, fuzzy #, fuzzy
msgid "Final Total" msgid "Final Total"
msgstr "final total" msgstr "final total"
@@ -3584,26 +3592,30 @@ msgstr "Distribución"
msgid "Summary" msgid "Summary"
msgstr "Resumen" msgstr "Resumen"
#: templates/monthly_overview/pages/overview.html:142 #: templates/monthly_overview/pages/overview.html:141
#: templates/transactions/pages/transactions.html:17 #: templates/monthly_overview/pages/overview.html:195
msgid "Filter transactions" #: templates/transactions/pages/transactions.html:15
msgstr "Filtrar transacciones" #: templates/transactions/pages/transactions.html:69
#: templates/monthly_overview/pages/overview.html:148
#: templates/transactions/pages/transactions.html:23
msgid "Order by"
msgstr "Ordenar por"
#: templates/monthly_overview/pages/overview.html:155
#: templates/transactions/pages/transactions.html:30
msgid "Oldest first" msgid "Oldest first"
msgstr "Lo más antiguo primero" msgstr "Lo más antiguo primero"
#: templates/monthly_overview/pages/overview.html:157 #: templates/monthly_overview/pages/overview.html:142
#: templates/transactions/pages/transactions.html:32 #: templates/monthly_overview/pages/overview.html:204
#: templates/transactions/pages/transactions.html:16
#: templates/transactions/pages/transactions.html:78
msgid "Newest first" msgid "Newest first"
msgstr "Lo más nuevo primero" msgstr "Lo más nuevo primero"
#: templates/monthly_overview/pages/overview.html:151
#: templates/transactions/pages/transactions.html:25
msgid "Filter transactions"
msgstr "Filtrar transacciones"
#: templates/monthly_overview/pages/overview.html:176
#: templates/transactions/pages/transactions.html:50
msgid "Order by"
msgstr "Ordenar por"
#: templates/net_worth/net_worth.html:40 #: templates/net_worth/net_worth.html:40
#: templates/yearly_overview/pages/overview_by_currency.html:9 #: templates/yearly_overview/pages/overview_by_currency.html:9
msgid "By currency" msgid "By currency"
@@ -3833,7 +3845,7 @@ msgstr "Editing"
msgid "transactions" msgid "transactions"
msgstr "transactions" msgstr "transactions"
#: templates/transactions/fragments/list_all.html:39 #: templates/transactions/fragments/list_all.html:46
#, fuzzy #, fuzzy
msgid "No transactions found" msgid "No transactions found"
msgstr "No transactions found" msgstr "No transactions found"
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+170 -162
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-08-17 06:55+0000\n" "POT-Creation-Date: 2025-08-30 02:09+0000\n"
"PO-Revision-Date: 2025-08-16 11:17+0000\n" "PO-Revision-Date: 2025-08-17 08:17+0000\n"
"Last-Translator: Dimitri Decrock <dj.flashpower@gmail.com>\n" "Last-Translator: Dimitri Decrock <dj.flashpower@gmail.com>\n"
"Language-Team: Dutch <https://translations.herculino.com/projects/wygiwyh/" "Language-Team: Dutch <https://translations.herculino.com/projects/wygiwyh/"
"app/nl/>\n" "app/nl/>\n"
@@ -19,32 +19,32 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.12.2\n" "X-Generator: Weblate 5.12.2\n"
#: apps/accounts/forms.py:24 #: apps/accounts/forms.py:26
msgid "Group name" msgid "Group name"
msgstr "Groepsnaam" msgstr "Groepsnaam"
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98 #: apps/accounts/forms.py:42 apps/accounts/forms.py:118
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91 #: apps/currencies/forms.py:55 apps/currencies/forms.py:93
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224 #: apps/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
#: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93 #: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93
#: apps/rules/forms.py:365 apps/transactions/forms.py:204 #: apps/rules/forms.py:365 apps/transactions/forms.py:204
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421 #: apps/transactions/forms.py:369 apps/transactions/forms.py:416
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836 #: apps/transactions/forms.py:788 apps/transactions/forms.py:831
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903 #: apps/transactions/forms.py:863 apps/transactions/forms.py:898
#: apps/transactions/forms.py:1057 apps/users/forms.py:217 #: apps/transactions/forms.py:1052 apps/users/forms.py:217
#: apps/users/forms.py:379 #: apps/users/forms.py:379
msgid "Update" msgid "Update"
msgstr "Bijwerken" msgstr "Bijwerken"
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106 #: apps/accounts/forms.py:50 apps/accounts/forms.py:126
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61 #: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152 #: apps/currencies/forms.py:101 apps/currencies/forms.py:154
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42 #: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
#: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373 #: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373
#: apps/transactions/forms.py:189 apps/transactions/forms.py:213 #: apps/transactions/forms.py:189 apps/transactions/forms.py:213
#: apps/transactions/forms.py:383 apps/transactions/forms.py:801 #: apps/transactions/forms.py:378 apps/transactions/forms.py:796
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876 #: apps/transactions/forms.py:839 apps/transactions/forms.py:871
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065 #: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
#: apps/users/forms.py:225 apps/users/forms.py:387 #: apps/users/forms.py:225 apps/users/forms.py:387
#: templates/account_groups/fragments/list.html:9 #: templates/account_groups/fragments/list.html:9
#: templates/accounts/fragments/list.html:9 #: templates/accounts/fragments/list.html:9
@@ -66,37 +66,37 @@ msgstr "Bijwerken"
msgid "Add" msgid "Add"
msgstr "Toevoegen" msgstr "Toevoegen"
#: apps/accounts/forms.py:57 templates/accounts/fragments/list.html:26 #: apps/accounts/forms.py:59 templates/accounts/fragments/list.html:26
msgid "Group" msgid "Group"
msgstr "Groep" msgstr "Groep"
#: apps/accounts/forms.py:115 #: apps/accounts/forms.py:135
msgid "New balance" msgid "New balance"
msgstr "Nieuw saldo" msgstr "Nieuw saldo"
#: apps/accounts/forms.py:121 apps/dca/forms.py:85 apps/dca/forms.py:92 #: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
#: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189 #: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189
#: apps/rules/models.py:38 apps/rules/models.py:286 #: apps/rules/models.py:38 apps/rules/models.py:286
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256 #: apps/transactions/forms.py:42 apps/transactions/forms.py:256
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462 #: apps/transactions/forms.py:450 apps/transactions/forms.py:457
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935 #: apps/transactions/forms.py:669 apps/transactions/forms.py:930
#: apps/transactions/models.py:318 apps/transactions/models.py:501 #: apps/transactions/models.py:318 apps/transactions/models.py:501
#: apps/transactions/models.py:701 apps/transactions/models.py:951 #: apps/transactions/models.py:701 apps/transactions/models.py:951
#: templates/insights/fragments/category_overview/index.html:78 #: templates/insights/fragments/category_overview/index.html:78
#: templates/insights/fragments/category_overview/index.html:528 #: templates/insights/fragments/category_overview/index.html:530
msgid "Category" msgid "Category"
msgstr "Categorie" msgstr "Categorie"
#: apps/accounts/forms.py:128 apps/dca/forms.py:101 apps/dca/forms.py:109 #: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135 #: apps/export_app/forms.py:44 apps/export_app/forms.py:135
#: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39 #: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39
#: apps/rules/models.py:290 apps/transactions/filters.py:69 #: apps/rules/models.py:290 apps/transactions/filters.py:69
#: apps/transactions/forms.py:50 apps/transactions/forms.py:264 #: apps/transactions/forms.py:50 apps/transactions/forms.py:264
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479 #: apps/transactions/forms.py:466 apps/transactions/forms.py:474
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928 #: apps/transactions/forms.py:662 apps/transactions/forms.py:923
#: apps/transactions/models.py:324 apps/transactions/models.py:503 #: apps/transactions/models.py:324 apps/transactions/models.py:503
#: apps/transactions/models.py:705 apps/transactions/models.py:957 #: apps/transactions/models.py:705 apps/transactions/models.py:957
#: templates/includes/navbar.html:111 templates/includes/sidebar.html:168 #: templates/includes/navbar.html:111 templates/includes/sidebar.html:192
#: templates/insights/fragments/category_overview/index.html:36 #: templates/insights/fragments/category_overview/index.html:36
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4 #: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
msgid "Tags" msgid "Tags"
@@ -128,11 +128,11 @@ msgstr "Accountgroep"
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5 #: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
#: templates/account_groups/pages/index.html:4 #: templates/account_groups/pages/index.html:4
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:188 #: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
msgid "Account Groups" msgid "Account Groups"
msgstr "Accountgroepen" msgstr "Accountgroepen"
#: apps/accounts/models.py:39 apps/currencies/models.py:39 #: apps/accounts/models.py:39 apps/currencies/models.py:44
#: templates/accounts/fragments/list.html:27 #: templates/accounts/fragments/list.html:27
#: templates/yearly_overview/pages/overview_by_account.html:18 #: templates/yearly_overview/pages/overview_by_account.html:18
#: templates/yearly_overview/pages/overview_by_currency.html:20 #: templates/yearly_overview/pages/overview_by_currency.html:20
@@ -159,8 +159,10 @@ msgstr ""
"Vermogensrekeningen tellen mee voor je 'Netto Waarde', maar niet voor je " "Vermogensrekeningen tellen mee voor je 'Netto Waarde', maar niet voor je "
"maand." "maand."
#: apps/accounts/models.py:62 templates/accounts/fragments/list.html:30 #: apps/accounts/models.py:62 apps/currencies/models.py:37
#: templates/accounts/fragments/list.html:30
#: templates/categories/fragments/list.html:24 #: templates/categories/fragments/list.html:24
#: templates/currencies/fragments/list.html:27
#: templates/entities/fragments/list.html:24 #: templates/entities/fragments/list.html:24
#: templates/tags/fragments/list.html:24 #: templates/tags/fragments/list.html:24
msgid "Archived" msgid "Archived"
@@ -175,7 +177,7 @@ msgstr ""
#: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179 #: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179
#: apps/rules/models.py:30 apps/rules/models.py:242 #: apps/rules/models.py:30 apps/rules/models.py:242
#: apps/transactions/forms.py:62 apps/transactions/forms.py:276 #: apps/transactions/forms.py:62 apps/transactions/forms.py:276
#: apps/transactions/forms.py:659 apps/transactions/forms.py:920 #: apps/transactions/forms.py:654 apps/transactions/forms.py:915
#: apps/transactions/models.py:290 apps/transactions/models.py:461 #: apps/transactions/models.py:290 apps/transactions/models.py:461
#: apps/transactions/models.py:683 apps/transactions/models.py:925 #: apps/transactions/models.py:683 apps/transactions/models.py:925
#: templates/installment_plans/fragments/table.html:17 #: templates/installment_plans/fragments/table.html:17
@@ -190,11 +192,11 @@ msgstr "Rekening"
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53 #: apps/export_app/forms.py:132 apps/transactions/filters.py:53
#: templates/accounts/fragments/list.html:5 #: templates/accounts/fragments/list.html:5
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117 #: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180 #: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
#: templates/includes/sidebar.html:182 #: templates/includes/sidebar.html:206
#: templates/monthly_overview/pages/overview.html:94 #: templates/monthly_overview/pages/overview.html:94
#: templates/transactions/fragments/summary.html:12 #: templates/transactions/fragments/summary.html:12
#: templates/transactions/pages/transactions.html:81 #: templates/transactions/pages/transactions.html:137
msgid "Accounts" msgid "Accounts"
msgstr "Rekeningen" msgstr "Rekeningen"
@@ -478,8 +480,10 @@ msgstr "Verwijder"
#: apps/common/widgets/tom_select.py:15 #: apps/common/widgets/tom_select.py:15
#: templates/mini_tools/unit_price_calculator.html:174 #: templates/mini_tools/unit_price_calculator.html:174
#: templates/monthly_overview/pages/overview.html:172 #: templates/monthly_overview/pages/overview.html:215
#: templates/transactions/pages/transactions.html:47 #: templates/monthly_overview/pages/overview.html:227
#: templates/transactions/pages/transactions.html:89
#: templates/transactions/pages/transactions.html:101
msgid "Clear" msgid "Clear"
msgstr "Leegmaken" msgstr "Leegmaken"
@@ -495,9 +499,9 @@ msgstr "Voorvoegsel"
msgid "Suffix" msgid "Suffix"
msgstr "Achtervoegsel" msgstr "Achtervoegsel"
#: apps/currencies/forms.py:69 apps/dca/models.py:158 apps/rules/forms.py:169 #: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:169
#: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254 #: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254
#: apps/transactions/forms.py:66 apps/transactions/forms.py:483 #: apps/transactions/forms.py:66 apps/transactions/forms.py:478
#: apps/transactions/models.py:300 #: apps/transactions/models.py:300
#: templates/dca/fragments/strategy/details.html:52 #: templates/dca/fragments/strategy/details.html:52
#: templates/exchange_rates/fragments/table.html:10 #: templates/exchange_rates/fragments/table.html:10
@@ -517,75 +521,75 @@ msgstr "Munteenheids Naam"
msgid "Decimal Places" msgid "Decimal Places"
msgstr "Cijfers na de komma" msgstr "Cijfers na de komma"
#: apps/currencies/models.py:40 apps/export_app/forms.py:26 #: apps/currencies/models.py:45 apps/export_app/forms.py:26
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60 #: apps/export_app/forms.py:133 apps/transactions/filters.py:60
#: templates/currencies/fragments/list.html:5 #: templates/currencies/fragments/list.html:5
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125 #: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194 #: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
#: templates/includes/sidebar.html:196 #: templates/includes/sidebar.html:220
#: templates/monthly_overview/pages/overview.html:81 #: templates/monthly_overview/pages/overview.html:81
#: templates/transactions/fragments/summary.html:8 #: templates/transactions/fragments/summary.html:8
#: templates/transactions/pages/transactions.html:68 #: templates/transactions/pages/transactions.html:124
msgid "Currencies" msgid "Currencies"
msgstr "Munteenheden" msgstr "Munteenheden"
#: apps/currencies/models.py:49 #: apps/currencies/models.py:54
msgid "Currency cannot have itself as exchange currency." msgid "Currency cannot have itself as exchange currency."
msgstr "Munteenheid kan zichzelf niet als ruilmiddel hebben." msgstr "Munteenheid kan zichzelf niet als ruilmiddel hebben."
#: apps/currencies/models.py:60 #: apps/currencies/models.py:65
msgid "From Currency" msgid "From Currency"
msgstr "Van Munteenheid" msgstr "Van Munteenheid"
#: apps/currencies/models.py:66 #: apps/currencies/models.py:71
msgid "To Currency" msgid "To Currency"
msgstr "Naar Munteenheid" msgstr "Naar Munteenheid"
#: apps/currencies/models.py:69 apps/currencies/models.py:76 #: apps/currencies/models.py:74 apps/currencies/models.py:81
msgid "Exchange Rate" msgid "Exchange Rate"
msgstr "Wisselkoers" msgstr "Wisselkoers"
#: apps/currencies/models.py:71 #: apps/currencies/models.py:76
msgid "Date and Time" msgid "Date and Time"
msgstr "Datum en Tijd" msgstr "Datum en Tijd"
#: apps/currencies/models.py:73 apps/users/models.py:12 #: apps/currencies/models.py:78 apps/users/models.py:12
#: apps/users/models.py:497 #: apps/users/models.py:497
msgid "Auto" msgid "Auto"
msgstr "Automatisch" msgstr "Automatisch"
#: apps/currencies/models.py:77 apps/export_app/forms.py:68 #: apps/currencies/models.py:82 apps/export_app/forms.py:68
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6 #: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
#: templates/exchange_rates/pages/index.html:4 #: templates/exchange_rates/pages/index.html:4
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:202 #: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
msgid "Exchange Rates" msgid "Exchange Rates"
msgstr "Wisselkoersen" msgstr "Wisselkoersen"
#: apps/currencies/models.py:89 #: apps/currencies/models.py:94
msgid "From and To currencies cannot be the same." msgid "From and To currencies cannot be the same."
msgstr "Van en Naar munteenheid kunnen niet dezelfde zijn." msgstr "Van en Naar munteenheid kunnen niet dezelfde zijn."
#: apps/currencies/models.py:105 #: apps/currencies/models.py:110
msgid "On" msgid "On"
msgstr "Op" msgstr "Op"
#: apps/currencies/models.py:106 #: apps/currencies/models.py:111
msgid "Every X hours" msgid "Every X hours"
msgstr "Elke X Uren" msgstr "Elke X Uren"
#: apps/currencies/models.py:107 #: apps/currencies/models.py:112
msgid "Not on" msgid "Not on"
msgstr "Niet op" msgstr "Niet op"
#: apps/currencies/models.py:109 #: apps/currencies/models.py:114
msgid "Service Name" msgid "Service Name"
msgstr "Dienstnaam" msgstr "Dienstnaam"
#: apps/currencies/models.py:111 #: apps/currencies/models.py:116
msgid "Service Type" msgid "Service Type"
msgstr "Soort Dienst" msgstr "Soort Dienst"
#: apps/currencies/models.py:113 apps/transactions/models.py:214 #: apps/currencies/models.py:118 apps/transactions/models.py:214
#: apps/transactions/models.py:238 apps/transactions/models.py:262 #: apps/transactions/models.py:238 apps/transactions/models.py:262
#: templates/categories/fragments/list.html:21 #: templates/categories/fragments/list.html:21
#: templates/entities/fragments/list.html:21 #: templates/entities/fragments/list.html:21
@@ -594,31 +598,31 @@ msgstr "Soort Dienst"
msgid "Active" msgid "Active"
msgstr "Actief" msgstr "Actief"
#: apps/currencies/models.py:118 #: apps/currencies/models.py:123
msgid "API Key" msgid "API Key"
msgstr "API Sleutel" msgstr "API Sleutel"
#: apps/currencies/models.py:119 #: apps/currencies/models.py:124
msgid "API key for the service (if required)" msgid "API key for the service (if required)"
msgstr "API sleutel voor de dienst (indien verplicht)" msgstr "API sleutel voor de dienst (indien verplicht)"
#: apps/currencies/models.py:124 #: apps/currencies/models.py:129
msgid "Interval Type" msgid "Interval Type"
msgstr "Soort Interval" msgstr "Soort Interval"
#: apps/currencies/models.py:128 #: apps/currencies/models.py:133
msgid "Interval" msgid "Interval"
msgstr "Interval" msgstr "Interval"
#: apps/currencies/models.py:131 #: apps/currencies/models.py:136
msgid "Last Successful Fetch" msgid "Last Successful Fetch"
msgstr "Laatste Succesvolle Ophaling" msgstr "Laatste Succesvolle Ophaling"
#: apps/currencies/models.py:136 #: apps/currencies/models.py:141
msgid "Target Currencies" msgid "Target Currencies"
msgstr "Doel Munteenheden" msgstr "Doel Munteenheden"
#: apps/currencies/models.py:138 #: apps/currencies/models.py:143
msgid "" msgid ""
"Select currencies to fetch exchange rates for. Rates will be fetched for " "Select currencies to fetch exchange rates for. Rates will be fetched for "
"each currency against their set exchange currency." "each currency against their set exchange currency."
@@ -626,11 +630,11 @@ msgstr ""
"Selecteer munteenheden om wisselkoersen voor op te halen. De koersen worden " "Selecteer munteenheden om wisselkoersen voor op te halen. De koersen worden "
"voor elke munteenheid opgehaald ten opzichte van de ingestelde wisselkoers." "voor elke munteenheid opgehaald ten opzichte van de ingestelde wisselkoers."
#: apps/currencies/models.py:146 #: apps/currencies/models.py:151
msgid "Target Accounts" msgid "Target Accounts"
msgstr "Naar rekeningen" msgstr "Naar rekeningen"
#: apps/currencies/models.py:148 #: apps/currencies/models.py:153
msgid "" msgid ""
"Select accounts to fetch exchange rates for. Rates will be fetched for each " "Select accounts to fetch exchange rates for. Rates will be fetched for each "
"account's currency against their set exchange currency." "account's currency against their set exchange currency."
@@ -639,33 +643,33 @@ msgstr ""
"opgehaald voor de munteenheid van elke rekening ten opzichte van de " "opgehaald voor de munteenheid van elke rekening ten opzichte van de "
"ingestelde wisselkoers." "ingestelde wisselkoers."
#: apps/currencies/models.py:155 #: apps/currencies/models.py:160
msgid "Single exchange rate" msgid "Single exchange rate"
msgstr "Enkele Wisselkoers" msgstr "Enkele Wisselkoers"
#: apps/currencies/models.py:158 #: apps/currencies/models.py:163
msgid "Create one exchange rate and keep updating it. Avoids database clutter." msgid "Create one exchange rate and keep updating it. Avoids database clutter."
msgstr "" msgstr ""
"Maak één wisselkoers aan en houd deze bijgewerkt. Voorkomt een overvolle " "Maak één wisselkoers aan en houd deze bijgewerkt. Voorkomt een overvolle "
"database." "database."
#: apps/currencies/models.py:163 #: apps/currencies/models.py:168
msgid "Exchange Rate Service" msgid "Exchange Rate Service"
msgstr "Wisselkoersdienst" msgstr "Wisselkoersdienst"
#: apps/currencies/models.py:164 #: apps/currencies/models.py:169
msgid "Exchange Rate Services" msgid "Exchange Rate Services"
msgstr "Wisselkoersdiensten" msgstr "Wisselkoersdiensten"
#: apps/currencies/models.py:216 #: apps/currencies/models.py:221
msgid "'Every X hours' interval type requires a positive integer." msgid "'Every X hours' interval type requires a positive integer."
msgstr "Voor het intervaltype Elke X uur is een positief geheel getal nodig." msgstr "Voor het intervaltype Elke X uur is een positief geheel getal nodig."
#: apps/currencies/models.py:225 #: apps/currencies/models.py:230
msgid "'Every X hours' interval must be between 1 and 24." msgid "'Every X hours' interval must be between 1 and 24."
msgstr "Het interval Elke X uur moet tussen 1 en 24 liggen." msgstr "Het interval Elke X uur moet tussen 1 en 24 liggen."
#: apps/currencies/models.py:239 #: apps/currencies/models.py:244
msgid "" msgid ""
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., " "Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
"'1-5,8,10-12')." "'1-5,8,10-12')."
@@ -673,7 +677,7 @@ msgstr ""
"Ongeldige urennotatie. Gebruik door komma's gescheiden uren (0-23) en/of " "Ongeldige urennotatie. Gebruik door komma's gescheiden uren (0-23) en/of "
"reeksen (bijv. 1-5,8,10-12)." "reeksen (bijv. 1-5,8,10-12)."
#: apps/currencies/models.py:250 #: apps/currencies/models.py:255
msgid "" msgid ""
"Invalid format. Please check the requirements for your selected interval " "Invalid format. Please check the requirements for your selected interval "
"type." "type."
@@ -725,11 +729,11 @@ msgstr "Diensten succesvol in de wachtrij geplaatst"
msgid "Create transaction" msgid "Create transaction"
msgstr "Maak verrichtingen" msgstr "Maak verrichtingen"
#: apps/dca/forms.py:70 apps/transactions/forms.py:430 #: apps/dca/forms.py:70 apps/transactions/forms.py:425
msgid "From Account" msgid "From Account"
msgstr "Van rekening" msgstr "Van rekening"
#: apps/dca/forms.py:76 apps/transactions/forms.py:435 #: apps/dca/forms.py:76 apps/transactions/forms.py:430
msgid "To Account" msgid "To Account"
msgstr "Naar rekening" msgstr "Naar rekening"
@@ -755,7 +759,7 @@ msgstr "Koppel verrichting"
msgid "You must provide an account." msgid "You must provide an account."
msgstr "Je moet een account opgeven." msgstr "Je moet een account opgeven."
#: apps/dca/forms.py:312 apps/transactions/forms.py:605 #: apps/dca/forms.py:312 apps/transactions/forms.py:600
msgid "From and To accounts must be different." msgid "From and To accounts must be different."
msgstr "Van en Naar rekening moeten verschillend zijn." msgstr "Van en Naar rekening moeten verschillend zijn."
@@ -774,7 +778,7 @@ msgstr "Betaal Munteenheid"
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173 #: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173
#: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270 #: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270
#: apps/transactions/forms.py:499 apps/transactions/models.py:314 #: apps/transactions/forms.py:494 apps/transactions/models.py:314
#: apps/transactions/models.py:510 apps/transactions/models.py:711 #: apps/transactions/models.py:510 apps/transactions/models.py:711
#: apps/transactions/models.py:947 #: apps/transactions/models.py:947
msgid "Notes" msgid "Notes"
@@ -833,15 +837,15 @@ msgid "Entry deleted successfully"
msgstr "Invoer succesvol verwijderd" msgstr "Invoer succesvol verwijderd"
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131 #: apps/export_app/forms.py:14 apps/export_app/forms.py:131
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:239 #: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4 #: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
msgid "Users" msgid "Users"
msgstr "Gebruikers" msgstr "Gebruikers"
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137 #: apps/export_app/forms.py:32 apps/export_app/forms.py:137
#: apps/transactions/models.py:375 templates/includes/navbar.html:58 #: apps/transactions/models.py:375 templates/includes/navbar.html:58
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66 #: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
#: templates/includes/sidebar.html:160 #: templates/includes/sidebar.html:184
#: templates/recurring_transactions/fragments/list_transactions.html:5 #: templates/recurring_transactions/fragments/list_transactions.html:5
#: templates/recurring_transactions/fragments/table.html:39 #: templates/recurring_transactions/fragments/table.html:39
#: templates/transactions/pages/transactions.html:5 #: templates/transactions/pages/transactions.html:5
@@ -851,7 +855,7 @@ msgstr "Verrichtingen"
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134 #: apps/export_app/forms.py:38 apps/export_app/forms.py:134
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5 #: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109 #: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
#: templates/includes/sidebar.html:162 #: templates/includes/sidebar.html:186
msgid "Categories" msgid "Categories"
msgstr "Categorieën" msgstr "Categorieën"
@@ -859,19 +863,19 @@ msgstr "Categorieën"
#: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40 #: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40
#: apps/rules/models.py:282 apps/transactions/filters.py:74 #: apps/rules/models.py:282 apps/transactions/filters.py:74
#: apps/transactions/forms.py:58 apps/transactions/forms.py:272 #: apps/transactions/forms.py:58 apps/transactions/forms.py:272
#: apps/transactions/forms.py:682 apps/transactions/forms.py:943 #: apps/transactions/forms.py:677 apps/transactions/forms.py:938
#: apps/transactions/models.py:273 apps/transactions/models.py:329 #: apps/transactions/models.py:273 apps/transactions/models.py:329
#: apps/transactions/models.py:506 apps/transactions/models.py:708 #: apps/transactions/models.py:506 apps/transactions/models.py:708
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5 #: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113 #: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
#: templates/includes/sidebar.html:174 #: templates/includes/sidebar.html:198
#: templates/insights/fragments/category_overview/index.html:49 #: templates/insights/fragments/category_overview/index.html:49
msgid "Entities" msgid "Entities"
msgstr "Bedrijven" msgstr "Bedrijven"
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140 #: apps/export_app/forms.py:56 apps/export_app/forms.py:140
#: apps/transactions/models.py:748 templates/includes/navbar.html:77 #: apps/transactions/models.py:748 templates/includes/navbar.html:77
#: templates/includes/sidebar.html:95 #: templates/includes/sidebar.html:120
#: templates/recurring_transactions/fragments/list.html:5 #: templates/recurring_transactions/fragments/list.html:5
#: templates/recurring_transactions/pages/index.html:4 #: templates/recurring_transactions/pages/index.html:4
msgid "Recurring Transactions" msgid "Recurring Transactions"
@@ -879,7 +883,7 @@ msgstr "Terugkerende Verrichtingen"
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138 #: apps/export_app/forms.py:62 apps/export_app/forms.py:138
#: apps/transactions/models.py:524 templates/includes/navbar.html:75 #: apps/transactions/models.py:524 templates/includes/navbar.html:75
#: templates/includes/sidebar.html:89 #: templates/includes/sidebar.html:114
#: templates/installment_plans/fragments/list.html:5 #: templates/installment_plans/fragments/list.html:5
#: templates/installment_plans/pages/index.html:4 #: templates/installment_plans/pages/index.html:4
msgid "Installment Plans" msgid "Installment Plans"
@@ -888,12 +892,12 @@ msgstr "Afbetalingsplannen"
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143 #: apps/export_app/forms.py:74 apps/export_app/forms.py:143
#: templates/exchange_rates_services/fragments/list.html:6 #: templates/exchange_rates_services/fragments/list.html:6
#: templates/exchange_rates_services/pages/index.html:4 #: templates/exchange_rates_services/pages/index.html:4
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:230 #: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
msgid "Automatic Exchange Rates" msgid "Automatic Exchange Rates"
msgstr "Automatische Wisselkoersen" msgstr "Automatische Wisselkoersen"
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135 #: apps/export_app/forms.py:80 templates/includes/navbar.html:135
#: templates/includes/sidebar.html:210 templates/rules/fragments/list.html:5 #: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
#: templates/rules/pages/index.html:4 #: templates/rules/pages/index.html:4
msgid "Rules" msgid "Rules"
msgstr "Regels" msgstr "Regels"
@@ -965,7 +969,7 @@ msgstr "Selecteer een bestand"
#: apps/import_app/forms.py:61 #: apps/import_app/forms.py:61
#: templates/import_app/fragments/profiles/list.html:62 #: templates/import_app/fragments/profiles/list.html:62
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:216 #: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
msgid "Import" msgid "Import"
msgstr "Importeer" msgstr "Importeer"
@@ -1036,8 +1040,8 @@ msgstr "Run met succes verwijderd"
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36 #: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
#: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189 #: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189
#: templates/insights/fragments/category_overview/index.html:88 #: templates/insights/fragments/category_overview/index.html:88
#: templates/insights/fragments/category_overview/index.html:393 #: templates/insights/fragments/category_overview/index.html:395
#: templates/insights/fragments/category_overview/index.html:422 #: templates/insights/fragments/category_overview/index.html:424
msgid "Uncategorized" msgid "Uncategorized"
msgstr "Ongecategoriseerd" msgstr "Ongecategoriseerd"
@@ -1137,7 +1141,7 @@ msgstr "Betaald"
#: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34 #: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34
#: apps/rules/models.py:258 apps/transactions/forms.py:70 #: apps/rules/models.py:258 apps/transactions/forms.py:70
#: apps/transactions/forms.py:486 apps/transactions/forms.py:688 #: apps/transactions/forms.py:481 apps/transactions/forms.py:683
#: apps/transactions/models.py:301 apps/transactions/models.py:484 #: apps/transactions/models.py:301 apps/transactions/models.py:484
#: apps/transactions/models.py:713 #: apps/transactions/models.py:713
msgid "Reference Date" msgid "Reference Date"
@@ -1155,7 +1159,7 @@ msgstr "Bedrag"
#: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14 #: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14
#: apps/rules/models.py:36 apps/rules/models.py:266 #: apps/rules/models.py:36 apps/rules/models.py:266
#: apps/transactions/forms.py:490 apps/transactions/models.py:312 #: apps/transactions/forms.py:485 apps/transactions/models.py:312
#: apps/transactions/models.py:468 apps/transactions/models.py:697 #: apps/transactions/models.py:468 apps/transactions/models.py:697
#: apps/transactions/models.py:945 #: apps/transactions/models.py:945
msgid "Description" msgid "Description"
@@ -1350,6 +1354,7 @@ msgid "Any entity"
msgstr "Elk bedrijf" msgstr "Elk bedrijf"
#: apps/transactions/filters.py:202 #: apps/transactions/filters.py:202
#: templates/insights/fragments/category_overview/index.html:274
msgid "No entity" msgid "No entity"
msgstr "Geen bedrijf" msgstr "Geen bedrijf"
@@ -1365,50 +1370,50 @@ msgstr "Opslaan en vergelijkbaar toevoegen"
msgid "Save and add another" msgid "Save and add another"
msgstr "Opslaan en een andere toevoegen" msgstr "Opslaan en een andere toevoegen"
#: apps/transactions/forms.py:300 apps/transactions/forms.py:506 #: apps/transactions/forms.py:300 apps/transactions/forms.py:501
msgid "Muted transactions won't be displayed on monthly summaries" msgid "Muted transactions won't be displayed on monthly summaries"
msgstr "Gedempte transacties worden niet weergegeven in maandoverzichten" msgstr "Gedempte transacties worden niet weergegeven in maandoverzichten"
#: apps/transactions/forms.py:442 #: apps/transactions/forms.py:437
msgid "From Amount" msgid "From Amount"
msgstr "Van Bedrag" msgstr "Van Bedrag"
#: apps/transactions/forms.py:447 #: apps/transactions/forms.py:442
msgid "To Amount" msgid "To Amount"
msgstr "Naar Bedrag" msgstr "Naar Bedrag"
#: apps/transactions/forms.py:503 apps/transactions/models.py:211 #: apps/transactions/forms.py:498 apps/transactions/models.py:211
#: apps/transactions/models.py:302 apps/transactions/models.py:935 #: apps/transactions/models.py:302 apps/transactions/models.py:935
msgid "Mute" msgid "Mute"
msgstr "Dempen" msgstr "Dempen"
#: apps/transactions/forms.py:572 #: apps/transactions/forms.py:567
#: templates/cotton/ui/quick_transactions_buttons.html:40 #: templates/cotton/ui/quick_transactions_buttons.html:40
#: templates/cotton/ui/transactions_fab.html:44 #: templates/cotton/ui/transactions_fab.html:44
msgid "Transfer" msgid "Transfer"
msgstr "Overschrijving" msgstr "Overschrijving"
#: apps/transactions/forms.py:822 #: apps/transactions/forms.py:817
msgid "Tag name" msgid "Tag name"
msgstr "Labelnaam" msgstr "Labelnaam"
#: apps/transactions/forms.py:854 #: apps/transactions/forms.py:849
msgid "Entity name" msgid "Entity name"
msgstr "Naam van bedrijf" msgstr "Naam van bedrijf"
#: apps/transactions/forms.py:886 #: apps/transactions/forms.py:881
msgid "Category name" msgid "Category name"
msgstr "Naam van categorie" msgstr "Naam van categorie"
#: apps/transactions/forms.py:888 #: apps/transactions/forms.py:883
msgid "Muted categories won't be displayed on monthly summaries" msgid "Muted categories won't be displayed on monthly summaries"
msgstr "Gedempte categorieën worden niet weergegeven in maandoverzichten" msgstr "Gedempte categorieën worden niet weergegeven in maandoverzichten"
#: apps/transactions/forms.py:1046 #: apps/transactions/forms.py:1041
msgid "future transactions" msgid "future transactions"
msgstr "toekomstige verrichtingen" msgstr "toekomstige verrichtingen"
#: apps/transactions/forms.py:1076 #: apps/transactions/forms.py:1071
msgid "End date should be after the start date" msgid "End date should be after the start date"
msgstr "De einddatum moet na de begindatum vallen" msgstr "De einddatum moet na de begindatum vallen"
@@ -1506,12 +1511,12 @@ msgstr "Geen categorie"
msgid "No description" msgid "No description"
msgstr "Geen Beschrijving" msgstr "Geen Beschrijving"
#: apps/transactions/models.py:455 templates/includes/sidebar.html:42 #: apps/transactions/models.py:455 templates/includes/sidebar.html:67
msgid "Yearly" msgid "Yearly"
msgstr "Jaarlijks" msgstr "Jaarlijks"
#: apps/transactions/models.py:456 apps/users/models.py:464 #: apps/transactions/models.py:456 apps/users/models.py:464
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:36 #: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
msgid "Monthly" msgid "Monthly"
msgstr "Maandelijks" msgstr "Maandelijks"
@@ -1610,7 +1615,7 @@ msgid "Quick Transaction"
msgstr "Snelle verrichting" msgstr "Snelle verrichting"
#: apps/transactions/models.py:980 templates/includes/navbar.html:73 #: apps/transactions/models.py:980 templates/includes/navbar.html:73
#: templates/includes/sidebar.html:83 #: templates/includes/sidebar.html:108
#: templates/quick_transactions/pages/index.html:5 #: templates/quick_transactions/pages/index.html:5
#: templates/quick_transactions/pages/index.html:11 #: templates/quick_transactions/pages/index.html:11
msgid "Quick Transactions" msgid "Quick Transactions"
@@ -1702,11 +1707,11 @@ msgid "Installment Plan deleted successfully"
msgstr "Afbetalingsplan succesvol verwijderd" msgstr "Afbetalingsplan succesvol verwijderd"
#: apps/transactions/views/quick_transactions.py:45 #: apps/transactions/views/quick_transactions.py:45
#: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:152 #: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:170
msgid "Item added successfully" msgid "Item added successfully"
msgstr "Item succesvol toegevoegd" msgstr "Item succesvol toegevoegd"
#: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:184 #: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:202
msgid "Item updated successfully" msgid "Item updated successfully"
msgstr "Item succesvol bijgewerkt" msgstr "Item succesvol bijgewerkt"
@@ -1821,8 +1826,10 @@ msgid "This account is deactivated"
msgstr "Deze gebruiker is gedeactiveerd" msgstr "Deze gebruiker is gedeactiveerd"
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89 #: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
#: templates/monthly_overview/pages/overview.html:153 #: templates/monthly_overview/pages/overview.html:140
#: templates/transactions/pages/transactions.html:28 #: templates/monthly_overview/pages/overview.html:186
#: templates/transactions/pages/transactions.html:14
#: templates/transactions/pages/transactions.html:60
msgid "Default" msgid "Default"
msgstr "Standaard" msgstr "Standaard"
@@ -1930,7 +1937,7 @@ msgid "All Transactions"
msgstr "Alle Verrichtingen" msgstr "Alle Verrichtingen"
#: apps/users/models.py:470 templates/includes/navbar.html:33 #: apps/users/models.py:470 templates/includes/navbar.html:33
#: templates/includes/sidebar.html:48 #: templates/includes/sidebar.html:73
msgid "Calendar" msgid "Calendar"
msgstr "Kalender" msgstr "Kalender"
@@ -1981,7 +1988,7 @@ msgstr "Rekeningsgroep bewerken"
#: templates/account_groups/fragments/list.html:32 #: templates/account_groups/fragments/list.html:32
#: templates/accounts/fragments/list.html:37 #: templates/accounts/fragments/list.html:37
#: templates/categories/fragments/table.html:24 #: templates/categories/fragments/table.html:24
#: templates/currencies/fragments/list.html:33 #: templates/currencies/fragments/list.html:34
#: templates/dca/fragments/strategy/details.html:63 #: templates/dca/fragments/strategy/details.html:63
#: templates/entities/fragments/table.html:23 #: templates/entities/fragments/table.html:23
#: templates/exchange_rates/fragments/table.html:19 #: templates/exchange_rates/fragments/table.html:19
@@ -2002,7 +2009,7 @@ msgstr "Acties"
#: templates/categories/fragments/table.html:29 #: templates/categories/fragments/table.html:29
#: templates/cotton/transaction/item.html:129 #: templates/cotton/transaction/item.html:129
#: templates/cotton/ui/transactions_action_bar.html:52 #: templates/cotton/ui/transactions_action_bar.html:52
#: templates/currencies/fragments/list.html:37 #: templates/currencies/fragments/list.html:38
#: templates/dca/fragments/strategy/details.html:67 #: templates/dca/fragments/strategy/details.html:67
#: templates/dca/fragments/strategy/list.html:36 #: templates/dca/fragments/strategy/list.html:36
#: templates/entities/fragments/table.html:28 #: templates/entities/fragments/table.html:28
@@ -2028,7 +2035,7 @@ msgstr "Bewerken"
#: templates/cotton/transaction/item.html:192 #: templates/cotton/transaction/item.html:192
#: templates/cotton/ui/deleted_transactions_action_bar.html:55 #: templates/cotton/ui/deleted_transactions_action_bar.html:55
#: templates/cotton/ui/transactions_action_bar.html:90 #: templates/cotton/ui/transactions_action_bar.html:90
#: templates/currencies/fragments/list.html:44 #: templates/currencies/fragments/list.html:45
#: templates/dca/fragments/strategy/details.html:75 #: templates/dca/fragments/strategy/details.html:75
#: templates/dca/fragments/strategy/list.html:44 #: templates/dca/fragments/strategy/list.html:44
#: templates/entities/fragments/table.html:36 #: templates/entities/fragments/table.html:36
@@ -2055,7 +2062,7 @@ msgstr "Verwijderen"
#: templates/cotton/transaction/item.html:196 #: templates/cotton/transaction/item.html:196
#: templates/cotton/ui/deleted_transactions_action_bar.html:57 #: templates/cotton/ui/deleted_transactions_action_bar.html:57
#: templates/cotton/ui/transactions_action_bar.html:92 #: templates/cotton/ui/transactions_action_bar.html:92
#: templates/currencies/fragments/list.html:48 #: templates/currencies/fragments/list.html:49
#: templates/dca/fragments/strategy/details.html:80 #: templates/dca/fragments/strategy/details.html:80
#: templates/dca/fragments/strategy/list.html:48 #: templates/dca/fragments/strategy/list.html:48
#: templates/entities/fragments/table.html:40 #: templates/entities/fragments/table.html:40
@@ -2085,7 +2092,7 @@ msgstr "Weet je het zeker?"
#: templates/cotton/transaction/item.html:197 #: templates/cotton/transaction/item.html:197
#: templates/cotton/ui/deleted_transactions_action_bar.html:58 #: templates/cotton/ui/deleted_transactions_action_bar.html:58
#: templates/cotton/ui/transactions_action_bar.html:93 #: templates/cotton/ui/transactions_action_bar.html:93
#: templates/currencies/fragments/list.html:49 #: templates/currencies/fragments/list.html:50
#: templates/dca/fragments/strategy/details.html:81 #: templates/dca/fragments/strategy/details.html:81
#: templates/dca/fragments/strategy/list.html:49 #: templates/dca/fragments/strategy/list.html:49
#: templates/entities/fragments/table.html:41 #: templates/entities/fragments/table.html:41
@@ -2105,7 +2112,7 @@ msgstr "Je kunt dit niet meer terugdraaien!"
#: templates/categories/fragments/table.html:43 #: templates/categories/fragments/table.html:43
#: templates/cotton/transaction/item.html:142 #: templates/cotton/transaction/item.html:142
#: templates/cotton/transaction/item.html:198 #: templates/cotton/transaction/item.html:198
#: templates/currencies/fragments/list.html:50 #: templates/currencies/fragments/list.html:51
#: templates/dca/fragments/strategy/details.html:82 #: templates/dca/fragments/strategy/details.html:82
#: templates/dca/fragments/strategy/list.html:50 #: templates/dca/fragments/strategy/list.html:50
#: templates/entities/fragments/table.html:42 #: templates/entities/fragments/table.html:42
@@ -2251,7 +2258,7 @@ msgid "Muted"
msgstr "Gedempt" msgstr "Gedempt"
#: templates/categories/fragments/table.html:75 #: templates/categories/fragments/table.html:75
#: templates/insights/fragments/category_overview/index.html:538 #: templates/insights/fragments/category_overview/index.html:540
msgid "No categories" msgid "No categories"
msgstr "Geen categorieën" msgstr "Geen categorieën"
@@ -2260,13 +2267,14 @@ msgid "Pick a month"
msgstr "Kies een maand" msgstr "Kies een maand"
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5 #: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
#: templates/includes/sidebar.html:28 #: templates/includes/sidebar.html:53
msgid "Close" msgid "Close"
msgstr "Sluiten" msgstr "Sluiten"
#: templates/cotton/config/search.html:6 #: templates/cotton/config/search.html:6
#: templates/import_app/fragments/profiles/list_presets.html:13 #: templates/import_app/fragments/profiles/list_presets.html:13
#: templates/monthly_overview/pages/overview.html:177 #: templates/monthly_overview/pages/overview.html:160
#: templates/transactions/pages/transactions.html:34
msgid "Search" msgid "Search"
msgstr "Zoeken" msgstr "Zoeken"
@@ -2451,7 +2459,7 @@ msgstr "Munteenheid bewerken"
msgid "Code" msgid "Code"
msgstr "Code" msgstr "Code"
#: templates/currencies/fragments/list.html:61 #: templates/currencies/fragments/list.html:63
msgid "No currencies" msgid "No currencies"
msgstr "Geen munteenheden" msgstr "Geen munteenheden"
@@ -2489,7 +2497,7 @@ msgstr "Geen idems in deze DCA"
#: templates/dca/fragments/strategy/details.html:125 #: templates/dca/fragments/strategy/details.html:125
#: templates/monthly_overview/fragments/list.html:47 #: templates/monthly_overview/fragments/list.html:47
#: templates/transactions/fragments/list_all.html:40 #: templates/transactions/fragments/list_all.html:47
msgid "Try adding one" msgid "Try adding one"
msgstr "Probeer er een toe te voegen" msgstr "Probeer er een toe te voegen"
@@ -2591,7 +2599,7 @@ msgid "Edit exchange rate"
msgstr "Wisselkoers bewerken" msgstr "Wisselkoers bewerken"
#: templates/exchange_rates/fragments/list.html:25 #: templates/exchange_rates/fragments/list.html:25
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:68 #: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
#: templates/installment_plans/fragments/list.html:21 #: templates/installment_plans/fragments/list.html:21
#: templates/yearly_overview/pages/overview_by_account.html:105 #: templates/yearly_overview/pages/overview_by_account.html:105
#: templates/yearly_overview/pages/overview_by_currency.html:107 #: templates/yearly_overview/pages/overview_by_currency.html:107
@@ -2615,7 +2623,7 @@ msgstr "Geen wisselkoersen"
#: templates/exchange_rates/fragments/table.html:58 #: templates/exchange_rates/fragments/table.html:58
#: templates/exchange_rates_services/fragments/table.html:58 #: templates/exchange_rates_services/fragments/table.html:58
#: templates/transactions/fragments/list_all.html:47 #: templates/transactions/fragments/list_all.html:54
msgid "Page navigation" msgid "Page navigation"
msgstr "Paginanavigatie" msgstr "Paginanavigatie"
@@ -2648,7 +2656,7 @@ msgid "No services configured"
msgstr "Geen diensten ingesteld" msgstr "Geen diensten ingesteld"
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140 #: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
#: templates/includes/sidebar.html:223 #: templates/includes/sidebar.html:247
msgid "Export and Restore" msgid "Export and Restore"
msgstr "Exporteren en Herstellen" msgstr "Exporteren en Herstellen"
@@ -2745,7 +2753,7 @@ msgstr "Navigatie Knop"
msgid "Overview" msgid "Overview"
msgstr "Overzicht" msgstr "Overzicht"
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:60 #: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
msgid "Net Worth" msgid "Net Worth"
msgstr "Netto Waarde" msgstr "Netto Waarde"
@@ -2755,62 +2763,62 @@ msgstr "Netto Waarde"
msgid "Current" msgid "Current"
msgstr "Huidige" msgstr "Huidige"
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:54 #: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
#: templates/insights/pages/index.html:5 #: templates/insights/pages/index.html:5
msgid "Insights" msgid "Insights"
msgstr "Inzichten" msgstr "Inzichten"
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:76 #: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
msgid "Trash Can" msgid "Trash Can"
msgstr "Prullenbak" msgstr "Prullenbak"
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101 #: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
msgid "Tools" msgid "Tools"
msgstr "Hulpmiddelen" msgstr "Hulpmiddelen"
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:103 #: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
msgid "Dollar Cost Average Tracker" msgid "Dollar Cost Average Tracker"
msgstr "Dollar Kostgemiddelde Tracker" msgstr "Dollar Kostgemiddelde Tracker"
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:109 #: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
#: templates/mini_tools/unit_price_calculator.html:5 #: templates/mini_tools/unit_price_calculator.html:5
#: templates/mini_tools/unit_price_calculator.html:10 #: templates/mini_tools/unit_price_calculator.html:10
msgid "Unit Price Calculator" msgid "Unit Price Calculator"
msgstr "Eenheidsprijs berekenen" msgstr "Eenheidsprijs berekenen"
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:115 #: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
#: templates/mini_tools/currency_converter/currency_converter.html:8 #: templates/mini_tools/currency_converter/currency_converter.html:8
#: templates/mini_tools/currency_converter/currency_converter.html:15 #: templates/mini_tools/currency_converter/currency_converter.html:15
msgid "Currency Converter" msgid "Currency Converter"
msgstr "Valuta omrekenen" msgstr "Valuta omrekenen"
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134 #: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
#: templates/includes/sidebar.html:147 #: templates/includes/sidebar.html:171
msgid "Management" msgid "Management"
msgstr "Beheer" msgstr "Beheer"
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208 #: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
msgid "Automation" msgid "Automation"
msgstr "Automatisatie" msgstr "Automatisatie"
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:237 #: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
msgid "Admin" msgid "Admin"
msgstr "Admin" msgstr "Admin"
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:246 #: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
msgid "Only use this if you know what you're doing" msgid "Only use this if you know what you're doing"
msgstr "Gebruik dit alleen als je weet wat je doet" msgstr "Gebruik dit alleen als je weet wat je doet"
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:245 #: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
msgid "Django Admin" msgid "Django Admin"
msgstr "Django Beheerder" msgstr "Django Beheerder"
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:260 #: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
msgid "is available" msgid "is available"
msgstr "is beschikbaar" msgstr "is beschikbaar"
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177 #: templates/includes/navbar.html:174 templates/includes/navbar.html:177
#: templates/includes/sidebar.html:266 #: templates/includes/sidebar.html:290
msgid "Calculator" msgid "Calculator"
msgstr "Rekenmachine" msgstr "Rekenmachine"
@@ -2897,16 +2905,12 @@ msgstr ""
"geteld voor elke tag" "geteld voor elke tag"
#: templates/insights/fragments/category_overview/index.html:52 #: templates/insights/fragments/category_overview/index.html:52
#, fuzzy
#| msgid ""
#| "Transaction amounts associated with multiple tags will be counted once "
#| "for each tag"
msgid "" msgid ""
"Transaction amounts associated with multiple tags and entities will be " "Transaction amounts associated with multiple tags and entities will be "
"counted once for each tag" "counted once for each tag"
msgstr "" msgstr ""
"Transactiebedragen die gekoppeld zijn aan meerdere tags worden één keer " "Transactiebedragen die gekoppeld zijn aan meerdere tags en bedrijven worden "
"geteld voor elke tag" "één keer geteld voor elke tag"
#: templates/insights/fragments/category_overview/index.html:69 #: templates/insights/fragments/category_overview/index.html:69
msgid "Final total" msgid "Final total"
@@ -2917,7 +2921,7 @@ msgstr "Eindtotaal"
msgid "Total" msgid "Total"
msgstr "Totaal" msgstr "Totaal"
#: templates/insights/fragments/category_overview/index.html:515 #: templates/insights/fragments/category_overview/index.html:517
msgid "Final Total" msgid "Final Total"
msgstr "Eindtotaal" msgstr "Eindtotaal"
@@ -3125,26 +3129,30 @@ msgstr "Verdeling"
msgid "Summary" msgid "Summary"
msgstr "Samenvatting" msgstr "Samenvatting"
#: templates/monthly_overview/pages/overview.html:142 #: templates/monthly_overview/pages/overview.html:141
#: templates/transactions/pages/transactions.html:17 #: templates/monthly_overview/pages/overview.html:195
msgid "Filter transactions" #: templates/transactions/pages/transactions.html:15
msgstr "Filter verrichtingen" #: templates/transactions/pages/transactions.html:69
#: templates/monthly_overview/pages/overview.html:148
#: templates/transactions/pages/transactions.html:23
msgid "Order by"
msgstr "Sorteer op"
#: templates/monthly_overview/pages/overview.html:155
#: templates/transactions/pages/transactions.html:30
msgid "Oldest first" msgid "Oldest first"
msgstr "Oudste eerst" msgstr "Oudste eerst"
#: templates/monthly_overview/pages/overview.html:157 #: templates/monthly_overview/pages/overview.html:142
#: templates/transactions/pages/transactions.html:32 #: templates/monthly_overview/pages/overview.html:204
#: templates/transactions/pages/transactions.html:16
#: templates/transactions/pages/transactions.html:78
msgid "Newest first" msgid "Newest first"
msgstr "Nieuwste eerst" msgstr "Nieuwste eerst"
#: templates/monthly_overview/pages/overview.html:151
#: templates/transactions/pages/transactions.html:25
msgid "Filter transactions"
msgstr "Filter verrichtingen"
#: templates/monthly_overview/pages/overview.html:176
#: templates/transactions/pages/transactions.html:50
msgid "Order by"
msgstr "Sorteer op"
#: templates/net_worth/net_worth.html:40 #: templates/net_worth/net_worth.html:40
#: templates/yearly_overview/pages/overview_by_currency.html:9 #: templates/yearly_overview/pages/overview_by_currency.html:9
msgid "By currency" msgid "By currency"
@@ -3358,7 +3366,7 @@ msgstr "Bewerking"
msgid "transactions" msgid "transactions"
msgstr "verrichtingen" msgstr "verrichtingen"
#: templates/transactions/fragments/list_all.html:39 #: templates/transactions/fragments/list_all.html:46
msgid "No transactions found" msgid "No transactions found"
msgstr "Geen Verrichtingen gevonden" msgstr "Geen Verrichtingen gevonden"
+167 -155
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-08-17 06:55+0000\n" "POT-Creation-Date: 2025-08-30 02:09+0000\n"
"PO-Revision-Date: 2025-04-13 08:16+0000\n" "PO-Revision-Date: 2025-04-13 08:16+0000\n"
"Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n" "Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n"
"Language-Team: Portuguese <https://translations.herculino.com/projects/" "Language-Team: Portuguese <https://translations.herculino.com/projects/"
@@ -19,32 +19,32 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n" "Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.10.4\n" "X-Generator: Weblate 5.10.4\n"
#: apps/accounts/forms.py:24 #: apps/accounts/forms.py:26
msgid "Group name" msgid "Group name"
msgstr "Nome do grupo" msgstr "Nome do grupo"
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98 #: apps/accounts/forms.py:42 apps/accounts/forms.py:118
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91 #: apps/currencies/forms.py:55 apps/currencies/forms.py:93
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224 #: apps/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
#: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93 #: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93
#: apps/rules/forms.py:365 apps/transactions/forms.py:204 #: apps/rules/forms.py:365 apps/transactions/forms.py:204
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421 #: apps/transactions/forms.py:369 apps/transactions/forms.py:416
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836 #: apps/transactions/forms.py:788 apps/transactions/forms.py:831
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903 #: apps/transactions/forms.py:863 apps/transactions/forms.py:898
#: apps/transactions/forms.py:1057 apps/users/forms.py:217 #: apps/transactions/forms.py:1052 apps/users/forms.py:217
#: apps/users/forms.py:379 #: apps/users/forms.py:379
msgid "Update" msgid "Update"
msgstr "Atualizar" msgstr "Atualizar"
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106 #: apps/accounts/forms.py:50 apps/accounts/forms.py:126
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61 #: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152 #: apps/currencies/forms.py:101 apps/currencies/forms.py:154
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42 #: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
#: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373 #: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373
#: apps/transactions/forms.py:189 apps/transactions/forms.py:213 #: apps/transactions/forms.py:189 apps/transactions/forms.py:213
#: apps/transactions/forms.py:383 apps/transactions/forms.py:801 #: apps/transactions/forms.py:378 apps/transactions/forms.py:796
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876 #: apps/transactions/forms.py:839 apps/transactions/forms.py:871
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065 #: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
#: apps/users/forms.py:225 apps/users/forms.py:387 #: apps/users/forms.py:225 apps/users/forms.py:387
#: templates/account_groups/fragments/list.html:9 #: templates/account_groups/fragments/list.html:9
#: templates/accounts/fragments/list.html:9 #: templates/accounts/fragments/list.html:9
@@ -66,37 +66,37 @@ msgstr "Atualizar"
msgid "Add" msgid "Add"
msgstr "Adicionar" msgstr "Adicionar"
#: apps/accounts/forms.py:57 templates/accounts/fragments/list.html:26 #: apps/accounts/forms.py:59 templates/accounts/fragments/list.html:26
msgid "Group" msgid "Group"
msgstr "Grupo da Conta" msgstr "Grupo da Conta"
#: apps/accounts/forms.py:115 #: apps/accounts/forms.py:135
msgid "New balance" msgid "New balance"
msgstr "Novo saldo" msgstr "Novo saldo"
#: apps/accounts/forms.py:121 apps/dca/forms.py:85 apps/dca/forms.py:92 #: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
#: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189 #: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189
#: apps/rules/models.py:38 apps/rules/models.py:286 #: apps/rules/models.py:38 apps/rules/models.py:286
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256 #: apps/transactions/forms.py:42 apps/transactions/forms.py:256
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462 #: apps/transactions/forms.py:450 apps/transactions/forms.py:457
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935 #: apps/transactions/forms.py:669 apps/transactions/forms.py:930
#: apps/transactions/models.py:318 apps/transactions/models.py:501 #: apps/transactions/models.py:318 apps/transactions/models.py:501
#: apps/transactions/models.py:701 apps/transactions/models.py:951 #: apps/transactions/models.py:701 apps/transactions/models.py:951
#: templates/insights/fragments/category_overview/index.html:78 #: templates/insights/fragments/category_overview/index.html:78
#: templates/insights/fragments/category_overview/index.html:528 #: templates/insights/fragments/category_overview/index.html:530
msgid "Category" msgid "Category"
msgstr "Categoria" msgstr "Categoria"
#: apps/accounts/forms.py:128 apps/dca/forms.py:101 apps/dca/forms.py:109 #: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135 #: apps/export_app/forms.py:44 apps/export_app/forms.py:135
#: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39 #: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39
#: apps/rules/models.py:290 apps/transactions/filters.py:69 #: apps/rules/models.py:290 apps/transactions/filters.py:69
#: apps/transactions/forms.py:50 apps/transactions/forms.py:264 #: apps/transactions/forms.py:50 apps/transactions/forms.py:264
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479 #: apps/transactions/forms.py:466 apps/transactions/forms.py:474
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928 #: apps/transactions/forms.py:662 apps/transactions/forms.py:923
#: apps/transactions/models.py:324 apps/transactions/models.py:503 #: apps/transactions/models.py:324 apps/transactions/models.py:503
#: apps/transactions/models.py:705 apps/transactions/models.py:957 #: apps/transactions/models.py:705 apps/transactions/models.py:957
#: templates/includes/navbar.html:111 templates/includes/sidebar.html:168 #: templates/includes/navbar.html:111 templates/includes/sidebar.html:192
#: templates/insights/fragments/category_overview/index.html:36 #: templates/insights/fragments/category_overview/index.html:36
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4 #: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
msgid "Tags" msgid "Tags"
@@ -128,11 +128,11 @@ msgstr "Grupo da Conta"
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5 #: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
#: templates/account_groups/pages/index.html:4 #: templates/account_groups/pages/index.html:4
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:188 #: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
msgid "Account Groups" msgid "Account Groups"
msgstr "Grupos da Conta" msgstr "Grupos da Conta"
#: apps/accounts/models.py:39 apps/currencies/models.py:39 #: apps/accounts/models.py:39 apps/currencies/models.py:44
#: templates/accounts/fragments/list.html:27 #: templates/accounts/fragments/list.html:27
#: templates/yearly_overview/pages/overview_by_account.html:18 #: templates/yearly_overview/pages/overview_by_account.html:18
#: templates/yearly_overview/pages/overview_by_currency.html:20 #: templates/yearly_overview/pages/overview_by_currency.html:20
@@ -159,8 +159,10 @@ msgstr ""
"As contas de ativos contam para o seu patrimônio líquido, mas não para o seu " "As contas de ativos contam para o seu patrimônio líquido, mas não para o seu "
"mês." "mês."
#: apps/accounts/models.py:62 templates/accounts/fragments/list.html:30 #: apps/accounts/models.py:62 apps/currencies/models.py:37
#: templates/accounts/fragments/list.html:30
#: templates/categories/fragments/list.html:24 #: templates/categories/fragments/list.html:24
#: templates/currencies/fragments/list.html:27
#: templates/entities/fragments/list.html:24 #: templates/entities/fragments/list.html:24
#: templates/tags/fragments/list.html:24 #: templates/tags/fragments/list.html:24
msgid "Archived" msgid "Archived"
@@ -174,7 +176,7 @@ msgstr ""
#: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179 #: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179
#: apps/rules/models.py:30 apps/rules/models.py:242 #: apps/rules/models.py:30 apps/rules/models.py:242
#: apps/transactions/forms.py:62 apps/transactions/forms.py:276 #: apps/transactions/forms.py:62 apps/transactions/forms.py:276
#: apps/transactions/forms.py:659 apps/transactions/forms.py:920 #: apps/transactions/forms.py:654 apps/transactions/forms.py:915
#: apps/transactions/models.py:290 apps/transactions/models.py:461 #: apps/transactions/models.py:290 apps/transactions/models.py:461
#: apps/transactions/models.py:683 apps/transactions/models.py:925 #: apps/transactions/models.py:683 apps/transactions/models.py:925
#: templates/installment_plans/fragments/table.html:17 #: templates/installment_plans/fragments/table.html:17
@@ -189,11 +191,11 @@ msgstr "Conta"
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53 #: apps/export_app/forms.py:132 apps/transactions/filters.py:53
#: templates/accounts/fragments/list.html:5 #: templates/accounts/fragments/list.html:5
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117 #: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180 #: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
#: templates/includes/sidebar.html:182 #: templates/includes/sidebar.html:206
#: templates/monthly_overview/pages/overview.html:94 #: templates/monthly_overview/pages/overview.html:94
#: templates/transactions/fragments/summary.html:12 #: templates/transactions/fragments/summary.html:12
#: templates/transactions/pages/transactions.html:81 #: templates/transactions/pages/transactions.html:137
msgid "Accounts" msgid "Accounts"
msgstr "Contas" msgstr "Contas"
@@ -478,8 +480,10 @@ msgstr "Remover"
#: apps/common/widgets/tom_select.py:15 #: apps/common/widgets/tom_select.py:15
#: templates/mini_tools/unit_price_calculator.html:174 #: templates/mini_tools/unit_price_calculator.html:174
#: templates/monthly_overview/pages/overview.html:172 #: templates/monthly_overview/pages/overview.html:215
#: templates/transactions/pages/transactions.html:47 #: templates/monthly_overview/pages/overview.html:227
#: templates/transactions/pages/transactions.html:89
#: templates/transactions/pages/transactions.html:101
msgid "Clear" msgid "Clear"
msgstr "Limpar" msgstr "Limpar"
@@ -495,9 +499,9 @@ msgstr "Prefixo"
msgid "Suffix" msgid "Suffix"
msgstr "Sufixo" msgstr "Sufixo"
#: apps/currencies/forms.py:69 apps/dca/models.py:158 apps/rules/forms.py:169 #: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:169
#: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254 #: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254
#: apps/transactions/forms.py:66 apps/transactions/forms.py:483 #: apps/transactions/forms.py:66 apps/transactions/forms.py:478
#: apps/transactions/models.py:300 #: apps/transactions/models.py:300
#: templates/dca/fragments/strategy/details.html:52 #: templates/dca/fragments/strategy/details.html:52
#: templates/exchange_rates/fragments/table.html:10 #: templates/exchange_rates/fragments/table.html:10
@@ -517,75 +521,75 @@ msgstr "Nome da Moeda"
msgid "Decimal Places" msgid "Decimal Places"
msgstr "Casas Decimais" msgstr "Casas Decimais"
#: apps/currencies/models.py:40 apps/export_app/forms.py:26 #: apps/currencies/models.py:45 apps/export_app/forms.py:26
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60 #: apps/export_app/forms.py:133 apps/transactions/filters.py:60
#: templates/currencies/fragments/list.html:5 #: templates/currencies/fragments/list.html:5
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125 #: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194 #: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
#: templates/includes/sidebar.html:196 #: templates/includes/sidebar.html:220
#: templates/monthly_overview/pages/overview.html:81 #: templates/monthly_overview/pages/overview.html:81
#: templates/transactions/fragments/summary.html:8 #: templates/transactions/fragments/summary.html:8
#: templates/transactions/pages/transactions.html:68 #: templates/transactions/pages/transactions.html:124
msgid "Currencies" msgid "Currencies"
msgstr "Moedas" msgstr "Moedas"
#: apps/currencies/models.py:49 #: apps/currencies/models.py:54
msgid "Currency cannot have itself as exchange currency." msgid "Currency cannot have itself as exchange currency."
msgstr "A moeda não pode ter a si mesma como moeda de câmbio." msgstr "A moeda não pode ter a si mesma como moeda de câmbio."
#: apps/currencies/models.py:60 #: apps/currencies/models.py:65
msgid "From Currency" msgid "From Currency"
msgstr "Moeda de origem" msgstr "Moeda de origem"
#: apps/currencies/models.py:66 #: apps/currencies/models.py:71
msgid "To Currency" msgid "To Currency"
msgstr "Moeda de destino" msgstr "Moeda de destino"
#: apps/currencies/models.py:69 apps/currencies/models.py:76 #: apps/currencies/models.py:74 apps/currencies/models.py:81
msgid "Exchange Rate" msgid "Exchange Rate"
msgstr "Taxa de Câmbio" msgstr "Taxa de Câmbio"
#: apps/currencies/models.py:71 #: apps/currencies/models.py:76
msgid "Date and Time" msgid "Date and Time"
msgstr "Data e Tempo" msgstr "Data e Tempo"
#: apps/currencies/models.py:73 apps/users/models.py:12 #: apps/currencies/models.py:78 apps/users/models.py:12
#: apps/users/models.py:497 #: apps/users/models.py:497
msgid "Auto" msgid "Auto"
msgstr "Automático" msgstr "Automático"
#: apps/currencies/models.py:77 apps/export_app/forms.py:68 #: apps/currencies/models.py:82 apps/export_app/forms.py:68
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6 #: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
#: templates/exchange_rates/pages/index.html:4 #: templates/exchange_rates/pages/index.html:4
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:202 #: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
msgid "Exchange Rates" msgid "Exchange Rates"
msgstr "Taxas de Câmbio" msgstr "Taxas de Câmbio"
#: apps/currencies/models.py:89 #: apps/currencies/models.py:94
msgid "From and To currencies cannot be the same." msgid "From and To currencies cannot be the same."
msgstr "As moedas De e Para não podem ser as mesmas." msgstr "As moedas De e Para não podem ser as mesmas."
#: apps/currencies/models.py:105 #: apps/currencies/models.py:110
msgid "On" msgid "On"
msgstr "Em" msgstr "Em"
#: apps/currencies/models.py:106 #: apps/currencies/models.py:111
msgid "Every X hours" msgid "Every X hours"
msgstr "A cada X horas" msgstr "A cada X horas"
#: apps/currencies/models.py:107 #: apps/currencies/models.py:112
msgid "Not on" msgid "Not on"
msgstr "Não em" msgstr "Não em"
#: apps/currencies/models.py:109 #: apps/currencies/models.py:114
msgid "Service Name" msgid "Service Name"
msgstr "Nome do Serviço" msgstr "Nome do Serviço"
#: apps/currencies/models.py:111 #: apps/currencies/models.py:116
msgid "Service Type" msgid "Service Type"
msgstr "Tipo de Serviço" msgstr "Tipo de Serviço"
#: apps/currencies/models.py:113 apps/transactions/models.py:214 #: apps/currencies/models.py:118 apps/transactions/models.py:214
#: apps/transactions/models.py:238 apps/transactions/models.py:262 #: apps/transactions/models.py:238 apps/transactions/models.py:262
#: templates/categories/fragments/list.html:21 #: templates/categories/fragments/list.html:21
#: templates/entities/fragments/list.html:21 #: templates/entities/fragments/list.html:21
@@ -594,31 +598,31 @@ msgstr "Tipo de Serviço"
msgid "Active" msgid "Active"
msgstr "Ativo" msgstr "Ativo"
#: apps/currencies/models.py:118 #: apps/currencies/models.py:123
msgid "API Key" msgid "API Key"
msgstr "Chave de API" msgstr "Chave de API"
#: apps/currencies/models.py:119 #: apps/currencies/models.py:124
msgid "API key for the service (if required)" msgid "API key for the service (if required)"
msgstr "Chave de API para o serviço (se necessário)" msgstr "Chave de API para o serviço (se necessário)"
#: apps/currencies/models.py:124 #: apps/currencies/models.py:129
msgid "Interval Type" msgid "Interval Type"
msgstr "Tipo de Intervalo" msgstr "Tipo de Intervalo"
#: apps/currencies/models.py:128 #: apps/currencies/models.py:133
msgid "Interval" msgid "Interval"
msgstr "Intervalo" msgstr "Intervalo"
#: apps/currencies/models.py:131 #: apps/currencies/models.py:136
msgid "Last Successful Fetch" msgid "Last Successful Fetch"
msgstr "Última execução bem-sucedida" msgstr "Última execução bem-sucedida"
#: apps/currencies/models.py:136 #: apps/currencies/models.py:141
msgid "Target Currencies" msgid "Target Currencies"
msgstr "Moedas-alvo" msgstr "Moedas-alvo"
#: apps/currencies/models.py:138 #: apps/currencies/models.py:143
msgid "" msgid ""
"Select currencies to fetch exchange rates for. Rates will be fetched for " "Select currencies to fetch exchange rates for. Rates will be fetched for "
"each currency against their set exchange currency." "each currency against their set exchange currency."
@@ -626,11 +630,11 @@ msgstr ""
"Selecione as moedas para as quais deseja obter as taxas de câmbio. As taxas " "Selecione as moedas para as quais deseja obter as taxas de câmbio. As taxas "
"serão obtidas para cada moeda em relação à moeda de câmbio definida." "serão obtidas para cada moeda em relação à moeda de câmbio definida."
#: apps/currencies/models.py:146 #: apps/currencies/models.py:151
msgid "Target Accounts" msgid "Target Accounts"
msgstr "Contas-alvo" msgstr "Contas-alvo"
#: apps/currencies/models.py:148 #: apps/currencies/models.py:153
msgid "" msgid ""
"Select accounts to fetch exchange rates for. Rates will be fetched for each " "Select accounts to fetch exchange rates for. Rates will be fetched for each "
"account's currency against their set exchange currency." "account's currency against their set exchange currency."
@@ -639,34 +643,34 @@ msgstr ""
"serão obtidas para a moeda de cada conta em relação à moeda de câmbio " "serão obtidas para a moeda de cada conta em relação à moeda de câmbio "
"definida." "definida."
#: apps/currencies/models.py:155 #: apps/currencies/models.py:160
#, fuzzy #, fuzzy
#| msgid "Edit exchange rate" #| msgid "Edit exchange rate"
msgid "Single exchange rate" msgid "Single exchange rate"
msgstr "Editar taxa de câmbio" msgstr "Editar taxa de câmbio"
#: apps/currencies/models.py:158 #: apps/currencies/models.py:163
msgid "Create one exchange rate and keep updating it. Avoids database clutter." msgid "Create one exchange rate and keep updating it. Avoids database clutter."
msgstr "" msgstr ""
#: apps/currencies/models.py:163 #: apps/currencies/models.py:168
msgid "Exchange Rate Service" msgid "Exchange Rate Service"
msgstr "Serviço de Taxa de Câmbio" msgstr "Serviço de Taxa de Câmbio"
#: apps/currencies/models.py:164 #: apps/currencies/models.py:169
msgid "Exchange Rate Services" msgid "Exchange Rate Services"
msgstr "Serviços de Taxa de Câmbio" msgstr "Serviços de Taxa de Câmbio"
#: apps/currencies/models.py:216 #: apps/currencies/models.py:221
msgid "'Every X hours' interval type requires a positive integer." msgid "'Every X hours' interval type requires a positive integer."
msgstr "" msgstr ""
"Intervalo do tipo 'A cada X horas' requerer um número inteiro positivo." "Intervalo do tipo 'A cada X horas' requerer um número inteiro positivo."
#: apps/currencies/models.py:225 #: apps/currencies/models.py:230
msgid "'Every X hours' interval must be between 1 and 24." msgid "'Every X hours' interval must be between 1 and 24."
msgstr "Intervalo do tipo 'A cada X horas' requerer um número entre 1 e 24." msgstr "Intervalo do tipo 'A cada X horas' requerer um número entre 1 e 24."
#: apps/currencies/models.py:239 #: apps/currencies/models.py:244
msgid "" msgid ""
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., " "Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
"'1-5,8,10-12')." "'1-5,8,10-12')."
@@ -674,7 +678,7 @@ msgstr ""
"Formato inválido de hora. Use uma lista de horas separada por vírgulas " "Formato inválido de hora. Use uma lista de horas separada por vírgulas "
"(0-23) e/ou uma faixa (ex.: '1-5,8,10-12')." "(0-23) e/ou uma faixa (ex.: '1-5,8,10-12')."
#: apps/currencies/models.py:250 #: apps/currencies/models.py:255
msgid "" msgid ""
"Invalid format. Please check the requirements for your selected interval " "Invalid format. Please check the requirements for your selected interval "
"type." "type."
@@ -726,11 +730,11 @@ msgstr "Serviços marcados para execução com sucesso"
msgid "Create transaction" msgid "Create transaction"
msgstr "Criar transação" msgstr "Criar transação"
#: apps/dca/forms.py:70 apps/transactions/forms.py:430 #: apps/dca/forms.py:70 apps/transactions/forms.py:425
msgid "From Account" msgid "From Account"
msgstr "Conta de origem" msgstr "Conta de origem"
#: apps/dca/forms.py:76 apps/transactions/forms.py:435 #: apps/dca/forms.py:76 apps/transactions/forms.py:430
msgid "To Account" msgid "To Account"
msgstr "Conta de destino" msgstr "Conta de destino"
@@ -755,7 +759,7 @@ msgstr "Conectar transação"
msgid "You must provide an account." msgid "You must provide an account."
msgstr "Você deve informar uma conta." msgstr "Você deve informar uma conta."
#: apps/dca/forms.py:312 apps/transactions/forms.py:605 #: apps/dca/forms.py:312 apps/transactions/forms.py:600
msgid "From and To accounts must be different." msgid "From and To accounts must be different."
msgstr "As contas De e Para devem ser diferentes." msgstr "As contas De e Para devem ser diferentes."
@@ -774,7 +778,7 @@ msgstr "Moeda de pagamento"
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173 #: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173
#: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270 #: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270
#: apps/transactions/forms.py:499 apps/transactions/models.py:314 #: apps/transactions/forms.py:494 apps/transactions/models.py:314
#: apps/transactions/models.py:510 apps/transactions/models.py:711 #: apps/transactions/models.py:510 apps/transactions/models.py:711
#: apps/transactions/models.py:947 #: apps/transactions/models.py:947
msgid "Notes" msgid "Notes"
@@ -833,15 +837,15 @@ msgid "Entry deleted successfully"
msgstr "Entrada apagada com sucesso" msgstr "Entrada apagada com sucesso"
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131 #: apps/export_app/forms.py:14 apps/export_app/forms.py:131
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:239 #: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4 #: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
msgid "Users" msgid "Users"
msgstr "Usuários" msgstr "Usuários"
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137 #: apps/export_app/forms.py:32 apps/export_app/forms.py:137
#: apps/transactions/models.py:375 templates/includes/navbar.html:58 #: apps/transactions/models.py:375 templates/includes/navbar.html:58
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66 #: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
#: templates/includes/sidebar.html:160 #: templates/includes/sidebar.html:184
#: templates/recurring_transactions/fragments/list_transactions.html:5 #: templates/recurring_transactions/fragments/list_transactions.html:5
#: templates/recurring_transactions/fragments/table.html:39 #: templates/recurring_transactions/fragments/table.html:39
#: templates/transactions/pages/transactions.html:5 #: templates/transactions/pages/transactions.html:5
@@ -851,7 +855,7 @@ msgstr "Transações"
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134 #: apps/export_app/forms.py:38 apps/export_app/forms.py:134
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5 #: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109 #: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
#: templates/includes/sidebar.html:162 #: templates/includes/sidebar.html:186
msgid "Categories" msgid "Categories"
msgstr "Categorias" msgstr "Categorias"
@@ -859,19 +863,19 @@ msgstr "Categorias"
#: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40 #: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40
#: apps/rules/models.py:282 apps/transactions/filters.py:74 #: apps/rules/models.py:282 apps/transactions/filters.py:74
#: apps/transactions/forms.py:58 apps/transactions/forms.py:272 #: apps/transactions/forms.py:58 apps/transactions/forms.py:272
#: apps/transactions/forms.py:682 apps/transactions/forms.py:943 #: apps/transactions/forms.py:677 apps/transactions/forms.py:938
#: apps/transactions/models.py:273 apps/transactions/models.py:329 #: apps/transactions/models.py:273 apps/transactions/models.py:329
#: apps/transactions/models.py:506 apps/transactions/models.py:708 #: apps/transactions/models.py:506 apps/transactions/models.py:708
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5 #: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113 #: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
#: templates/includes/sidebar.html:174 #: templates/includes/sidebar.html:198
#: templates/insights/fragments/category_overview/index.html:49 #: templates/insights/fragments/category_overview/index.html:49
msgid "Entities" msgid "Entities"
msgstr "Entidades" msgstr "Entidades"
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140 #: apps/export_app/forms.py:56 apps/export_app/forms.py:140
#: apps/transactions/models.py:748 templates/includes/navbar.html:77 #: apps/transactions/models.py:748 templates/includes/navbar.html:77
#: templates/includes/sidebar.html:95 #: templates/includes/sidebar.html:120
#: templates/recurring_transactions/fragments/list.html:5 #: templates/recurring_transactions/fragments/list.html:5
#: templates/recurring_transactions/pages/index.html:4 #: templates/recurring_transactions/pages/index.html:4
msgid "Recurring Transactions" msgid "Recurring Transactions"
@@ -879,7 +883,7 @@ msgstr "Transações Recorrentes"
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138 #: apps/export_app/forms.py:62 apps/export_app/forms.py:138
#: apps/transactions/models.py:524 templates/includes/navbar.html:75 #: apps/transactions/models.py:524 templates/includes/navbar.html:75
#: templates/includes/sidebar.html:89 #: templates/includes/sidebar.html:114
#: templates/installment_plans/fragments/list.html:5 #: templates/installment_plans/fragments/list.html:5
#: templates/installment_plans/pages/index.html:4 #: templates/installment_plans/pages/index.html:4
msgid "Installment Plans" msgid "Installment Plans"
@@ -888,12 +892,12 @@ msgstr "Parcelamentos"
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143 #: apps/export_app/forms.py:74 apps/export_app/forms.py:143
#: templates/exchange_rates_services/fragments/list.html:6 #: templates/exchange_rates_services/fragments/list.html:6
#: templates/exchange_rates_services/pages/index.html:4 #: templates/exchange_rates_services/pages/index.html:4
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:230 #: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
msgid "Automatic Exchange Rates" msgid "Automatic Exchange Rates"
msgstr "Taxas de Câmbio Automáticas" msgstr "Taxas de Câmbio Automáticas"
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135 #: apps/export_app/forms.py:80 templates/includes/navbar.html:135
#: templates/includes/sidebar.html:210 templates/rules/fragments/list.html:5 #: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
#: templates/rules/pages/index.html:4 #: templates/rules/pages/index.html:4
msgid "Rules" msgid "Rules"
msgstr "Regras" msgstr "Regras"
@@ -965,7 +969,7 @@ msgstr "Selecione um arquivo"
#: apps/import_app/forms.py:61 #: apps/import_app/forms.py:61
#: templates/import_app/fragments/profiles/list.html:62 #: templates/import_app/fragments/profiles/list.html:62
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:216 #: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
msgid "Import" msgid "Import"
msgstr "Importar" msgstr "Importar"
@@ -1036,8 +1040,8 @@ msgstr "Importação apagada com sucesso"
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36 #: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
#: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189 #: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189
#: templates/insights/fragments/category_overview/index.html:88 #: templates/insights/fragments/category_overview/index.html:88
#: templates/insights/fragments/category_overview/index.html:393 #: templates/insights/fragments/category_overview/index.html:395
#: templates/insights/fragments/category_overview/index.html:422 #: templates/insights/fragments/category_overview/index.html:424
msgid "Uncategorized" msgid "Uncategorized"
msgstr "Sem categoria" msgstr "Sem categoria"
@@ -1137,7 +1141,7 @@ msgstr "Pago"
#: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34 #: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34
#: apps/rules/models.py:258 apps/transactions/forms.py:70 #: apps/rules/models.py:258 apps/transactions/forms.py:70
#: apps/transactions/forms.py:486 apps/transactions/forms.py:688 #: apps/transactions/forms.py:481 apps/transactions/forms.py:683
#: apps/transactions/models.py:301 apps/transactions/models.py:484 #: apps/transactions/models.py:301 apps/transactions/models.py:484
#: apps/transactions/models.py:713 #: apps/transactions/models.py:713
msgid "Reference Date" msgid "Reference Date"
@@ -1155,7 +1159,7 @@ msgstr "Quantia"
#: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14 #: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14
#: apps/rules/models.py:36 apps/rules/models.py:266 #: apps/rules/models.py:36 apps/rules/models.py:266
#: apps/transactions/forms.py:490 apps/transactions/models.py:312 #: apps/transactions/forms.py:485 apps/transactions/models.py:312
#: apps/transactions/models.py:468 apps/transactions/models.py:697 #: apps/transactions/models.py:468 apps/transactions/models.py:697
#: apps/transactions/models.py:945 #: apps/transactions/models.py:945
msgid "Description" msgid "Description"
@@ -1354,6 +1358,7 @@ msgid "Any entity"
msgstr "Adicionar entidade" msgstr "Adicionar entidade"
#: apps/transactions/filters.py:202 #: apps/transactions/filters.py:202
#: templates/insights/fragments/category_overview/index.html:274
#, fuzzy #, fuzzy
#| msgid "No entities" #| msgid "No entities"
msgid "No entity" msgid "No entity"
@@ -1371,54 +1376,54 @@ msgstr ""
msgid "Save and add another" msgid "Save and add another"
msgstr "" msgstr ""
#: apps/transactions/forms.py:300 apps/transactions/forms.py:506 #: apps/transactions/forms.py:300 apps/transactions/forms.py:501
msgid "Muted transactions won't be displayed on monthly summaries" msgid "Muted transactions won't be displayed on monthly summaries"
msgstr "" msgstr ""
#: apps/transactions/forms.py:442 #: apps/transactions/forms.py:437
msgid "From Amount" msgid "From Amount"
msgstr "Quantia de origem" msgstr "Quantia de origem"
#: apps/transactions/forms.py:447 #: apps/transactions/forms.py:442
msgid "To Amount" msgid "To Amount"
msgstr "Quantia de destino" msgstr "Quantia de destino"
#: apps/transactions/forms.py:503 apps/transactions/models.py:211 #: apps/transactions/forms.py:498 apps/transactions/models.py:211
#: apps/transactions/models.py:302 apps/transactions/models.py:935 #: apps/transactions/models.py:302 apps/transactions/models.py:935
msgid "Mute" msgid "Mute"
msgstr "Silenciada" msgstr "Silenciada"
#: apps/transactions/forms.py:572 #: apps/transactions/forms.py:567
#: templates/cotton/ui/quick_transactions_buttons.html:40 #: templates/cotton/ui/quick_transactions_buttons.html:40
#: templates/cotton/ui/transactions_fab.html:44 #: templates/cotton/ui/transactions_fab.html:44
msgid "Transfer" msgid "Transfer"
msgstr "Transferir" msgstr "Transferir"
#: apps/transactions/forms.py:822 #: apps/transactions/forms.py:817
msgid "Tag name" msgid "Tag name"
msgstr "Nome da Tag" msgstr "Nome da Tag"
#: apps/transactions/forms.py:854 #: apps/transactions/forms.py:849
msgid "Entity name" msgid "Entity name"
msgstr "Nome da entidade" msgstr "Nome da entidade"
#: apps/transactions/forms.py:886 #: apps/transactions/forms.py:881
msgid "Category name" msgid "Category name"
msgstr "Nome da Categoria" msgstr "Nome da Categoria"
#: apps/transactions/forms.py:888 #: apps/transactions/forms.py:883
#, fuzzy #, fuzzy
#| msgid "Muted categories won't count towards your monthly total" #| msgid "Muted categories won't count towards your monthly total"
msgid "Muted categories won't be displayed on monthly summaries" msgid "Muted categories won't be displayed on monthly summaries"
msgstr "As categorias silenciadas não serão contabilizadas em seu total mensal" msgstr "As categorias silenciadas não serão contabilizadas em seu total mensal"
#: apps/transactions/forms.py:1046 #: apps/transactions/forms.py:1041
#, fuzzy #, fuzzy
#| msgid "Filter transactions" #| msgid "Filter transactions"
msgid "future transactions" msgid "future transactions"
msgstr "Filtrar transações" msgstr "Filtrar transações"
#: apps/transactions/forms.py:1076 #: apps/transactions/forms.py:1071
msgid "End date should be after the start date" msgid "End date should be after the start date"
msgstr "Data final deve ser após data inicial" msgstr "Data final deve ser após data inicial"
@@ -1515,12 +1520,12 @@ msgstr "Sem categoria"
msgid "No description" msgid "No description"
msgstr "Sem descrição" msgstr "Sem descrição"
#: apps/transactions/models.py:455 templates/includes/sidebar.html:42 #: apps/transactions/models.py:455 templates/includes/sidebar.html:67
msgid "Yearly" msgid "Yearly"
msgstr "Anual" msgstr "Anual"
#: apps/transactions/models.py:456 apps/users/models.py:464 #: apps/transactions/models.py:456 apps/users/models.py:464
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:36 #: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
msgid "Monthly" msgid "Monthly"
msgstr "Mensal" msgstr "Mensal"
@@ -1621,7 +1626,7 @@ msgid "Quick Transaction"
msgstr "Editar Transação" msgstr "Editar Transação"
#: apps/transactions/models.py:980 templates/includes/navbar.html:73 #: apps/transactions/models.py:980 templates/includes/navbar.html:73
#: templates/includes/sidebar.html:83 #: templates/includes/sidebar.html:108
#: templates/quick_transactions/pages/index.html:5 #: templates/quick_transactions/pages/index.html:5
#: templates/quick_transactions/pages/index.html:11 #: templates/quick_transactions/pages/index.html:11
#, fuzzy #, fuzzy
@@ -1715,13 +1720,13 @@ msgid "Installment Plan deleted successfully"
msgstr "Parcelamento apagado com sucesso" msgstr "Parcelamento apagado com sucesso"
#: apps/transactions/views/quick_transactions.py:45 #: apps/transactions/views/quick_transactions.py:45
#: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:152 #: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:170
#, fuzzy #, fuzzy
#| msgid "Rule added successfully" #| msgid "Rule added successfully"
msgid "Item added successfully" msgid "Item added successfully"
msgstr "Regra adicionada com sucesso" msgstr "Regra adicionada com sucesso"
#: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:184 #: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:202
#, fuzzy #, fuzzy
#| msgid "Rule updated successfully" #| msgid "Rule updated successfully"
msgid "Item updated successfully" msgid "Item updated successfully"
@@ -1840,8 +1845,10 @@ msgid "This account is deactivated"
msgstr "Essa conta está desativada" msgstr "Essa conta está desativada"
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89 #: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
#: templates/monthly_overview/pages/overview.html:153 #: templates/monthly_overview/pages/overview.html:140
#: templates/transactions/pages/transactions.html:28 #: templates/monthly_overview/pages/overview.html:186
#: templates/transactions/pages/transactions.html:14
#: templates/transactions/pages/transactions.html:60
msgid "Default" msgid "Default"
msgstr "Padrão" msgstr "Padrão"
@@ -1949,7 +1956,7 @@ msgid "All Transactions"
msgstr "Todas as transações" msgstr "Todas as transações"
#: apps/users/models.py:470 templates/includes/navbar.html:33 #: apps/users/models.py:470 templates/includes/navbar.html:33
#: templates/includes/sidebar.html:48 #: templates/includes/sidebar.html:73
msgid "Calendar" msgid "Calendar"
msgstr "Calendário" msgstr "Calendário"
@@ -2000,7 +2007,7 @@ msgstr "Editar grupo de conta"
#: templates/account_groups/fragments/list.html:32 #: templates/account_groups/fragments/list.html:32
#: templates/accounts/fragments/list.html:37 #: templates/accounts/fragments/list.html:37
#: templates/categories/fragments/table.html:24 #: templates/categories/fragments/table.html:24
#: templates/currencies/fragments/list.html:33 #: templates/currencies/fragments/list.html:34
#: templates/dca/fragments/strategy/details.html:63 #: templates/dca/fragments/strategy/details.html:63
#: templates/entities/fragments/table.html:23 #: templates/entities/fragments/table.html:23
#: templates/exchange_rates/fragments/table.html:19 #: templates/exchange_rates/fragments/table.html:19
@@ -2021,7 +2028,7 @@ msgstr "Ações"
#: templates/categories/fragments/table.html:29 #: templates/categories/fragments/table.html:29
#: templates/cotton/transaction/item.html:129 #: templates/cotton/transaction/item.html:129
#: templates/cotton/ui/transactions_action_bar.html:52 #: templates/cotton/ui/transactions_action_bar.html:52
#: templates/currencies/fragments/list.html:37 #: templates/currencies/fragments/list.html:38
#: templates/dca/fragments/strategy/details.html:67 #: templates/dca/fragments/strategy/details.html:67
#: templates/dca/fragments/strategy/list.html:36 #: templates/dca/fragments/strategy/list.html:36
#: templates/entities/fragments/table.html:28 #: templates/entities/fragments/table.html:28
@@ -2047,7 +2054,7 @@ msgstr "Editar"
#: templates/cotton/transaction/item.html:192 #: templates/cotton/transaction/item.html:192
#: templates/cotton/ui/deleted_transactions_action_bar.html:55 #: templates/cotton/ui/deleted_transactions_action_bar.html:55
#: templates/cotton/ui/transactions_action_bar.html:90 #: templates/cotton/ui/transactions_action_bar.html:90
#: templates/currencies/fragments/list.html:44 #: templates/currencies/fragments/list.html:45
#: templates/dca/fragments/strategy/details.html:75 #: templates/dca/fragments/strategy/details.html:75
#: templates/dca/fragments/strategy/list.html:44 #: templates/dca/fragments/strategy/list.html:44
#: templates/entities/fragments/table.html:36 #: templates/entities/fragments/table.html:36
@@ -2074,7 +2081,7 @@ msgstr "Apagar"
#: templates/cotton/transaction/item.html:196 #: templates/cotton/transaction/item.html:196
#: templates/cotton/ui/deleted_transactions_action_bar.html:57 #: templates/cotton/ui/deleted_transactions_action_bar.html:57
#: templates/cotton/ui/transactions_action_bar.html:92 #: templates/cotton/ui/transactions_action_bar.html:92
#: templates/currencies/fragments/list.html:48 #: templates/currencies/fragments/list.html:49
#: templates/dca/fragments/strategy/details.html:80 #: templates/dca/fragments/strategy/details.html:80
#: templates/dca/fragments/strategy/list.html:48 #: templates/dca/fragments/strategy/list.html:48
#: templates/entities/fragments/table.html:40 #: templates/entities/fragments/table.html:40
@@ -2104,7 +2111,7 @@ msgstr "Tem certeza?"
#: templates/cotton/transaction/item.html:197 #: templates/cotton/transaction/item.html:197
#: templates/cotton/ui/deleted_transactions_action_bar.html:58 #: templates/cotton/ui/deleted_transactions_action_bar.html:58
#: templates/cotton/ui/transactions_action_bar.html:93 #: templates/cotton/ui/transactions_action_bar.html:93
#: templates/currencies/fragments/list.html:49 #: templates/currencies/fragments/list.html:50
#: templates/dca/fragments/strategy/details.html:81 #: templates/dca/fragments/strategy/details.html:81
#: templates/dca/fragments/strategy/list.html:49 #: templates/dca/fragments/strategy/list.html:49
#: templates/entities/fragments/table.html:41 #: templates/entities/fragments/table.html:41
@@ -2124,7 +2131,7 @@ msgstr "Você não será capaz de reverter isso!"
#: templates/categories/fragments/table.html:43 #: templates/categories/fragments/table.html:43
#: templates/cotton/transaction/item.html:142 #: templates/cotton/transaction/item.html:142
#: templates/cotton/transaction/item.html:198 #: templates/cotton/transaction/item.html:198
#: templates/currencies/fragments/list.html:50 #: templates/currencies/fragments/list.html:51
#: templates/dca/fragments/strategy/details.html:82 #: templates/dca/fragments/strategy/details.html:82
#: templates/dca/fragments/strategy/list.html:50 #: templates/dca/fragments/strategy/list.html:50
#: templates/entities/fragments/table.html:42 #: templates/entities/fragments/table.html:42
@@ -2270,7 +2277,7 @@ msgid "Muted"
msgstr "Silenciada" msgstr "Silenciada"
#: templates/categories/fragments/table.html:75 #: templates/categories/fragments/table.html:75
#: templates/insights/fragments/category_overview/index.html:538 #: templates/insights/fragments/category_overview/index.html:540
msgid "No categories" msgid "No categories"
msgstr "Nenhum categoria" msgstr "Nenhum categoria"
@@ -2279,13 +2286,14 @@ msgid "Pick a month"
msgstr "Escolha um mês" msgstr "Escolha um mês"
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5 #: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
#: templates/includes/sidebar.html:28 #: templates/includes/sidebar.html:53
msgid "Close" msgid "Close"
msgstr "Fechar" msgstr "Fechar"
#: templates/cotton/config/search.html:6 #: templates/cotton/config/search.html:6
#: templates/import_app/fragments/profiles/list_presets.html:13 #: templates/import_app/fragments/profiles/list_presets.html:13
#: templates/monthly_overview/pages/overview.html:177 #: templates/monthly_overview/pages/overview.html:160
#: templates/transactions/pages/transactions.html:34
msgid "Search" msgid "Search"
msgstr "Buscar" msgstr "Buscar"
@@ -2476,7 +2484,7 @@ msgstr "Editar moeda"
msgid "Code" msgid "Code"
msgstr "Código" msgstr "Código"
#: templates/currencies/fragments/list.html:61 #: templates/currencies/fragments/list.html:63
msgid "No currencies" msgid "No currencies"
msgstr "Nenhuma moeda" msgstr "Nenhuma moeda"
@@ -2514,7 +2522,7 @@ msgstr "Nenhuma entrada neste CMP"
#: templates/dca/fragments/strategy/details.html:125 #: templates/dca/fragments/strategy/details.html:125
#: templates/monthly_overview/fragments/list.html:47 #: templates/monthly_overview/fragments/list.html:47
#: templates/transactions/fragments/list_all.html:40 #: templates/transactions/fragments/list_all.html:47
msgid "Try adding one" msgid "Try adding one"
msgstr "Tente adicionar uma" msgstr "Tente adicionar uma"
@@ -2617,7 +2625,7 @@ msgid "Edit exchange rate"
msgstr "Editar taxa de câmbio" msgstr "Editar taxa de câmbio"
#: templates/exchange_rates/fragments/list.html:25 #: templates/exchange_rates/fragments/list.html:25
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:68 #: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
#: templates/installment_plans/fragments/list.html:21 #: templates/installment_plans/fragments/list.html:21
#: templates/yearly_overview/pages/overview_by_account.html:105 #: templates/yearly_overview/pages/overview_by_account.html:105
#: templates/yearly_overview/pages/overview_by_currency.html:107 #: templates/yearly_overview/pages/overview_by_currency.html:107
@@ -2641,7 +2649,7 @@ msgstr "Nenhuma taxa de câmbio"
#: templates/exchange_rates/fragments/table.html:58 #: templates/exchange_rates/fragments/table.html:58
#: templates/exchange_rates_services/fragments/table.html:58 #: templates/exchange_rates_services/fragments/table.html:58
#: templates/transactions/fragments/list_all.html:47 #: templates/transactions/fragments/list_all.html:54
msgid "Page navigation" msgid "Page navigation"
msgstr "Navegação por página" msgstr "Navegação por página"
@@ -2674,7 +2682,7 @@ msgid "No services configured"
msgstr "Nenhum serviço configurado" msgstr "Nenhum serviço configurado"
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140 #: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
#: templates/includes/sidebar.html:223 #: templates/includes/sidebar.html:247
msgid "Export and Restore" msgid "Export and Restore"
msgstr "Exportar e Restaurar" msgstr "Exportar e Restaurar"
@@ -2772,7 +2780,7 @@ msgstr "Alternar navegação"
msgid "Overview" msgid "Overview"
msgstr "Visão Geral" msgstr "Visão Geral"
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:60 #: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
msgid "Net Worth" msgid "Net Worth"
msgstr "Patrimônio" msgstr "Patrimônio"
@@ -2782,62 +2790,62 @@ msgstr "Patrimônio"
msgid "Current" msgid "Current"
msgstr "Atual" msgstr "Atual"
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:54 #: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
#: templates/insights/pages/index.html:5 #: templates/insights/pages/index.html:5
msgid "Insights" msgid "Insights"
msgstr "Insights" msgstr "Insights"
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:76 #: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
msgid "Trash Can" msgid "Trash Can"
msgstr "Lixeira" msgstr "Lixeira"
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101 #: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
msgid "Tools" msgid "Tools"
msgstr "Ferramentas" msgstr "Ferramentas"
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:103 #: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
msgid "Dollar Cost Average Tracker" msgid "Dollar Cost Average Tracker"
msgstr "Rastreador de Custo Médio Ponderado" msgstr "Rastreador de Custo Médio Ponderado"
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:109 #: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
#: templates/mini_tools/unit_price_calculator.html:5 #: templates/mini_tools/unit_price_calculator.html:5
#: templates/mini_tools/unit_price_calculator.html:10 #: templates/mini_tools/unit_price_calculator.html:10
msgid "Unit Price Calculator" msgid "Unit Price Calculator"
msgstr "Calculadora de preço unitário" msgstr "Calculadora de preço unitário"
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:115 #: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
#: templates/mini_tools/currency_converter/currency_converter.html:8 #: templates/mini_tools/currency_converter/currency_converter.html:8
#: templates/mini_tools/currency_converter/currency_converter.html:15 #: templates/mini_tools/currency_converter/currency_converter.html:15
msgid "Currency Converter" msgid "Currency Converter"
msgstr "Conversor de Moeda" msgstr "Conversor de Moeda"
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134 #: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
#: templates/includes/sidebar.html:147 #: templates/includes/sidebar.html:171
msgid "Management" msgid "Management"
msgstr "Gerenciar" msgstr "Gerenciar"
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208 #: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
msgid "Automation" msgid "Automation"
msgstr "Automação" msgstr "Automação"
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:237 #: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
msgid "Admin" msgid "Admin"
msgstr "" msgstr ""
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:246 #: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
msgid "Only use this if you know what you're doing" msgid "Only use this if you know what you're doing"
msgstr "Só use isso se você souber o que está fazendo" msgstr "Só use isso se você souber o que está fazendo"
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:245 #: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
msgid "Django Admin" msgid "Django Admin"
msgstr "Django Admin" msgstr "Django Admin"
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:260 #: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
msgid "is available" msgid "is available"
msgstr "" msgstr ""
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177 #: templates/includes/navbar.html:174 templates/includes/navbar.html:177
#: templates/includes/sidebar.html:266 #: templates/includes/sidebar.html:290
msgid "Calculator" msgid "Calculator"
msgstr "Calculadora" msgstr "Calculadora"
@@ -2938,7 +2946,7 @@ msgstr "total final"
msgid "Total" msgid "Total"
msgstr "Total" msgstr "Total"
#: templates/insights/fragments/category_overview/index.html:515 #: templates/insights/fragments/category_overview/index.html:517
msgid "Final Total" msgid "Final Total"
msgstr "Total Final" msgstr "Total Final"
@@ -3146,26 +3154,30 @@ msgstr "Distribuição"
msgid "Summary" msgid "Summary"
msgstr "Resumo" msgstr "Resumo"
#: templates/monthly_overview/pages/overview.html:142 #: templates/monthly_overview/pages/overview.html:141
#: templates/transactions/pages/transactions.html:17 #: templates/monthly_overview/pages/overview.html:195
msgid "Filter transactions" #: templates/transactions/pages/transactions.html:15
msgstr "Filtrar transações" #: templates/transactions/pages/transactions.html:69
#: templates/monthly_overview/pages/overview.html:148
#: templates/transactions/pages/transactions.html:23
msgid "Order by"
msgstr "Ordernar por"
#: templates/monthly_overview/pages/overview.html:155
#: templates/transactions/pages/transactions.html:30
msgid "Oldest first" msgid "Oldest first"
msgstr "Mais antigas primeiro" msgstr "Mais antigas primeiro"
#: templates/monthly_overview/pages/overview.html:157 #: templates/monthly_overview/pages/overview.html:142
#: templates/transactions/pages/transactions.html:32 #: templates/monthly_overview/pages/overview.html:204
#: templates/transactions/pages/transactions.html:16
#: templates/transactions/pages/transactions.html:78
msgid "Newest first" msgid "Newest first"
msgstr "Mais novas primeiro" msgstr "Mais novas primeiro"
#: templates/monthly_overview/pages/overview.html:151
#: templates/transactions/pages/transactions.html:25
msgid "Filter transactions"
msgstr "Filtrar transações"
#: templates/monthly_overview/pages/overview.html:176
#: templates/transactions/pages/transactions.html:50
msgid "Order by"
msgstr "Ordernar por"
#: templates/net_worth/net_worth.html:40 #: templates/net_worth/net_worth.html:40
#: templates/yearly_overview/pages/overview_by_currency.html:9 #: templates/yearly_overview/pages/overview_by_currency.html:9
msgid "By currency" msgid "By currency"
@@ -3382,7 +3394,7 @@ msgstr "Editando"
msgid "transactions" msgid "transactions"
msgstr "transações" msgstr "transações"
#: templates/transactions/fragments/list_all.html:39 #: templates/transactions/fragments/list_all.html:46
msgid "No transactions found" msgid "No transactions found"
msgstr "Nenhuma transação encontrada" msgstr "Nenhuma transação encontrada"
+170 -162
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-08-17 06:55+0000\n" "POT-Creation-Date: 2025-08-30 02:09+0000\n"
"PO-Revision-Date: 2025-08-16 04:17+0000\n" "PO-Revision-Date: 2025-08-17 08:17+0000\n"
"Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n" "Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://translations.herculino.com/" "Language-Team: Portuguese (Brazil) <https://translations.herculino.com/"
"projects/wygiwyh/app/pt_BR/>\n" "projects/wygiwyh/app/pt_BR/>\n"
@@ -19,32 +19,32 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n" "Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.12.2\n" "X-Generator: Weblate 5.12.2\n"
#: apps/accounts/forms.py:24 #: apps/accounts/forms.py:26
msgid "Group name" msgid "Group name"
msgstr "Nome do grupo" msgstr "Nome do grupo"
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98 #: apps/accounts/forms.py:42 apps/accounts/forms.py:118
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91 #: apps/currencies/forms.py:55 apps/currencies/forms.py:93
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224 #: apps/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
#: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93 #: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93
#: apps/rules/forms.py:365 apps/transactions/forms.py:204 #: apps/rules/forms.py:365 apps/transactions/forms.py:204
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421 #: apps/transactions/forms.py:369 apps/transactions/forms.py:416
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836 #: apps/transactions/forms.py:788 apps/transactions/forms.py:831
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903 #: apps/transactions/forms.py:863 apps/transactions/forms.py:898
#: apps/transactions/forms.py:1057 apps/users/forms.py:217 #: apps/transactions/forms.py:1052 apps/users/forms.py:217
#: apps/users/forms.py:379 #: apps/users/forms.py:379
msgid "Update" msgid "Update"
msgstr "Atualizar" msgstr "Atualizar"
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106 #: apps/accounts/forms.py:50 apps/accounts/forms.py:126
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61 #: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152 #: apps/currencies/forms.py:101 apps/currencies/forms.py:154
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42 #: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
#: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373 #: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373
#: apps/transactions/forms.py:189 apps/transactions/forms.py:213 #: apps/transactions/forms.py:189 apps/transactions/forms.py:213
#: apps/transactions/forms.py:383 apps/transactions/forms.py:801 #: apps/transactions/forms.py:378 apps/transactions/forms.py:796
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876 #: apps/transactions/forms.py:839 apps/transactions/forms.py:871
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065 #: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
#: apps/users/forms.py:225 apps/users/forms.py:387 #: apps/users/forms.py:225 apps/users/forms.py:387
#: templates/account_groups/fragments/list.html:9 #: templates/account_groups/fragments/list.html:9
#: templates/accounts/fragments/list.html:9 #: templates/accounts/fragments/list.html:9
@@ -66,37 +66,37 @@ msgstr "Atualizar"
msgid "Add" msgid "Add"
msgstr "Adicionar" msgstr "Adicionar"
#: apps/accounts/forms.py:57 templates/accounts/fragments/list.html:26 #: apps/accounts/forms.py:59 templates/accounts/fragments/list.html:26
msgid "Group" msgid "Group"
msgstr "Grupo" msgstr "Grupo"
#: apps/accounts/forms.py:115 #: apps/accounts/forms.py:135
msgid "New balance" msgid "New balance"
msgstr "Novo saldo" msgstr "Novo saldo"
#: apps/accounts/forms.py:121 apps/dca/forms.py:85 apps/dca/forms.py:92 #: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
#: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189 #: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189
#: apps/rules/models.py:38 apps/rules/models.py:286 #: apps/rules/models.py:38 apps/rules/models.py:286
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256 #: apps/transactions/forms.py:42 apps/transactions/forms.py:256
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462 #: apps/transactions/forms.py:450 apps/transactions/forms.py:457
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935 #: apps/transactions/forms.py:669 apps/transactions/forms.py:930
#: apps/transactions/models.py:318 apps/transactions/models.py:501 #: apps/transactions/models.py:318 apps/transactions/models.py:501
#: apps/transactions/models.py:701 apps/transactions/models.py:951 #: apps/transactions/models.py:701 apps/transactions/models.py:951
#: templates/insights/fragments/category_overview/index.html:78 #: templates/insights/fragments/category_overview/index.html:78
#: templates/insights/fragments/category_overview/index.html:528 #: templates/insights/fragments/category_overview/index.html:530
msgid "Category" msgid "Category"
msgstr "Categoria" msgstr "Categoria"
#: apps/accounts/forms.py:128 apps/dca/forms.py:101 apps/dca/forms.py:109 #: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135 #: apps/export_app/forms.py:44 apps/export_app/forms.py:135
#: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39 #: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39
#: apps/rules/models.py:290 apps/transactions/filters.py:69 #: apps/rules/models.py:290 apps/transactions/filters.py:69
#: apps/transactions/forms.py:50 apps/transactions/forms.py:264 #: apps/transactions/forms.py:50 apps/transactions/forms.py:264
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479 #: apps/transactions/forms.py:466 apps/transactions/forms.py:474
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928 #: apps/transactions/forms.py:662 apps/transactions/forms.py:923
#: apps/transactions/models.py:324 apps/transactions/models.py:503 #: apps/transactions/models.py:324 apps/transactions/models.py:503
#: apps/transactions/models.py:705 apps/transactions/models.py:957 #: apps/transactions/models.py:705 apps/transactions/models.py:957
#: templates/includes/navbar.html:111 templates/includes/sidebar.html:168 #: templates/includes/navbar.html:111 templates/includes/sidebar.html:192
#: templates/insights/fragments/category_overview/index.html:36 #: templates/insights/fragments/category_overview/index.html:36
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4 #: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
msgid "Tags" msgid "Tags"
@@ -128,11 +128,11 @@ msgstr "Grupo da Conta"
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5 #: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
#: templates/account_groups/pages/index.html:4 #: templates/account_groups/pages/index.html:4
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:188 #: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
msgid "Account Groups" msgid "Account Groups"
msgstr "Grupos da Conta" msgstr "Grupos da Conta"
#: apps/accounts/models.py:39 apps/currencies/models.py:39 #: apps/accounts/models.py:39 apps/currencies/models.py:44
#: templates/accounts/fragments/list.html:27 #: templates/accounts/fragments/list.html:27
#: templates/yearly_overview/pages/overview_by_account.html:18 #: templates/yearly_overview/pages/overview_by_account.html:18
#: templates/yearly_overview/pages/overview_by_currency.html:20 #: templates/yearly_overview/pages/overview_by_currency.html:20
@@ -159,8 +159,10 @@ msgstr ""
"As contas de ativos contam para o seu patrimônio líquido, mas não para o seu " "As contas de ativos contam para o seu patrimônio líquido, mas não para o seu "
"mês." "mês."
#: apps/accounts/models.py:62 templates/accounts/fragments/list.html:30 #: apps/accounts/models.py:62 apps/currencies/models.py:37
#: templates/accounts/fragments/list.html:30
#: templates/categories/fragments/list.html:24 #: templates/categories/fragments/list.html:24
#: templates/currencies/fragments/list.html:27
#: templates/entities/fragments/list.html:24 #: templates/entities/fragments/list.html:24
#: templates/tags/fragments/list.html:24 #: templates/tags/fragments/list.html:24
msgid "Archived" msgid "Archived"
@@ -174,7 +176,7 @@ msgstr ""
#: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179 #: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179
#: apps/rules/models.py:30 apps/rules/models.py:242 #: apps/rules/models.py:30 apps/rules/models.py:242
#: apps/transactions/forms.py:62 apps/transactions/forms.py:276 #: apps/transactions/forms.py:62 apps/transactions/forms.py:276
#: apps/transactions/forms.py:659 apps/transactions/forms.py:920 #: apps/transactions/forms.py:654 apps/transactions/forms.py:915
#: apps/transactions/models.py:290 apps/transactions/models.py:461 #: apps/transactions/models.py:290 apps/transactions/models.py:461
#: apps/transactions/models.py:683 apps/transactions/models.py:925 #: apps/transactions/models.py:683 apps/transactions/models.py:925
#: templates/installment_plans/fragments/table.html:17 #: templates/installment_plans/fragments/table.html:17
@@ -189,11 +191,11 @@ msgstr "Conta"
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53 #: apps/export_app/forms.py:132 apps/transactions/filters.py:53
#: templates/accounts/fragments/list.html:5 #: templates/accounts/fragments/list.html:5
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117 #: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180 #: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
#: templates/includes/sidebar.html:182 #: templates/includes/sidebar.html:206
#: templates/monthly_overview/pages/overview.html:94 #: templates/monthly_overview/pages/overview.html:94
#: templates/transactions/fragments/summary.html:12 #: templates/transactions/fragments/summary.html:12
#: templates/transactions/pages/transactions.html:81 #: templates/transactions/pages/transactions.html:137
msgid "Accounts" msgid "Accounts"
msgstr "Contas" msgstr "Contas"
@@ -476,8 +478,10 @@ msgstr "Remover"
#: apps/common/widgets/tom_select.py:15 #: apps/common/widgets/tom_select.py:15
#: templates/mini_tools/unit_price_calculator.html:174 #: templates/mini_tools/unit_price_calculator.html:174
#: templates/monthly_overview/pages/overview.html:172 #: templates/monthly_overview/pages/overview.html:215
#: templates/transactions/pages/transactions.html:47 #: templates/monthly_overview/pages/overview.html:227
#: templates/transactions/pages/transactions.html:89
#: templates/transactions/pages/transactions.html:101
msgid "Clear" msgid "Clear"
msgstr "Limpar" msgstr "Limpar"
@@ -493,9 +497,9 @@ msgstr "Prefixo"
msgid "Suffix" msgid "Suffix"
msgstr "Sufixo" msgstr "Sufixo"
#: apps/currencies/forms.py:69 apps/dca/models.py:158 apps/rules/forms.py:169 #: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:169
#: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254 #: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254
#: apps/transactions/forms.py:66 apps/transactions/forms.py:483 #: apps/transactions/forms.py:66 apps/transactions/forms.py:478
#: apps/transactions/models.py:300 #: apps/transactions/models.py:300
#: templates/dca/fragments/strategy/details.html:52 #: templates/dca/fragments/strategy/details.html:52
#: templates/exchange_rates/fragments/table.html:10 #: templates/exchange_rates/fragments/table.html:10
@@ -515,75 +519,75 @@ msgstr "Nome da Moeda"
msgid "Decimal Places" msgid "Decimal Places"
msgstr "Casas Decimais" msgstr "Casas Decimais"
#: apps/currencies/models.py:40 apps/export_app/forms.py:26 #: apps/currencies/models.py:45 apps/export_app/forms.py:26
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60 #: apps/export_app/forms.py:133 apps/transactions/filters.py:60
#: templates/currencies/fragments/list.html:5 #: templates/currencies/fragments/list.html:5
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125 #: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194 #: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
#: templates/includes/sidebar.html:196 #: templates/includes/sidebar.html:220
#: templates/monthly_overview/pages/overview.html:81 #: templates/monthly_overview/pages/overview.html:81
#: templates/transactions/fragments/summary.html:8 #: templates/transactions/fragments/summary.html:8
#: templates/transactions/pages/transactions.html:68 #: templates/transactions/pages/transactions.html:124
msgid "Currencies" msgid "Currencies"
msgstr "Moedas" msgstr "Moedas"
#: apps/currencies/models.py:49 #: apps/currencies/models.py:54
msgid "Currency cannot have itself as exchange currency." msgid "Currency cannot have itself as exchange currency."
msgstr "A moeda não pode ter a si mesma como moeda de câmbio." msgstr "A moeda não pode ter a si mesma como moeda de câmbio."
#: apps/currencies/models.py:60 #: apps/currencies/models.py:65
msgid "From Currency" msgid "From Currency"
msgstr "Moeda de origem" msgstr "Moeda de origem"
#: apps/currencies/models.py:66 #: apps/currencies/models.py:71
msgid "To Currency" msgid "To Currency"
msgstr "Moeda de destino" msgstr "Moeda de destino"
#: apps/currencies/models.py:69 apps/currencies/models.py:76 #: apps/currencies/models.py:74 apps/currencies/models.py:81
msgid "Exchange Rate" msgid "Exchange Rate"
msgstr "Taxa de Câmbio" msgstr "Taxa de Câmbio"
#: apps/currencies/models.py:71 #: apps/currencies/models.py:76
msgid "Date and Time" msgid "Date and Time"
msgstr "Data e Tempo" msgstr "Data e Tempo"
#: apps/currencies/models.py:73 apps/users/models.py:12 #: apps/currencies/models.py:78 apps/users/models.py:12
#: apps/users/models.py:497 #: apps/users/models.py:497
msgid "Auto" msgid "Auto"
msgstr "Automático" msgstr "Automático"
#: apps/currencies/models.py:77 apps/export_app/forms.py:68 #: apps/currencies/models.py:82 apps/export_app/forms.py:68
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6 #: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
#: templates/exchange_rates/pages/index.html:4 #: templates/exchange_rates/pages/index.html:4
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:202 #: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
msgid "Exchange Rates" msgid "Exchange Rates"
msgstr "Taxas de Câmbio" msgstr "Taxas de Câmbio"
#: apps/currencies/models.py:89 #: apps/currencies/models.py:94
msgid "From and To currencies cannot be the same." msgid "From and To currencies cannot be the same."
msgstr "As moedas De e Para não podem ser as mesmas." msgstr "As moedas De e Para não podem ser as mesmas."
#: apps/currencies/models.py:105 #: apps/currencies/models.py:110
msgid "On" msgid "On"
msgstr "Em" msgstr "Em"
#: apps/currencies/models.py:106 #: apps/currencies/models.py:111
msgid "Every X hours" msgid "Every X hours"
msgstr "A cada X horas" msgstr "A cada X horas"
#: apps/currencies/models.py:107 #: apps/currencies/models.py:112
msgid "Not on" msgid "Not on"
msgstr "Não em" msgstr "Não em"
#: apps/currencies/models.py:109 #: apps/currencies/models.py:114
msgid "Service Name" msgid "Service Name"
msgstr "Nome do Serviço" msgstr "Nome do Serviço"
#: apps/currencies/models.py:111 #: apps/currencies/models.py:116
msgid "Service Type" msgid "Service Type"
msgstr "Tipo de Serviço" msgstr "Tipo de Serviço"
#: apps/currencies/models.py:113 apps/transactions/models.py:214 #: apps/currencies/models.py:118 apps/transactions/models.py:214
#: apps/transactions/models.py:238 apps/transactions/models.py:262 #: apps/transactions/models.py:238 apps/transactions/models.py:262
#: templates/categories/fragments/list.html:21 #: templates/categories/fragments/list.html:21
#: templates/entities/fragments/list.html:21 #: templates/entities/fragments/list.html:21
@@ -592,31 +596,31 @@ msgstr "Tipo de Serviço"
msgid "Active" msgid "Active"
msgstr "Ativo" msgstr "Ativo"
#: apps/currencies/models.py:118 #: apps/currencies/models.py:123
msgid "API Key" msgid "API Key"
msgstr "Chave de API" msgstr "Chave de API"
#: apps/currencies/models.py:119 #: apps/currencies/models.py:124
msgid "API key for the service (if required)" msgid "API key for the service (if required)"
msgstr "Chave de API para o serviço (se necessário)" msgstr "Chave de API para o serviço (se necessário)"
#: apps/currencies/models.py:124 #: apps/currencies/models.py:129
msgid "Interval Type" msgid "Interval Type"
msgstr "Tipo de Intervalo" msgstr "Tipo de Intervalo"
#: apps/currencies/models.py:128 #: apps/currencies/models.py:133
msgid "Interval" msgid "Interval"
msgstr "Intervalo" msgstr "Intervalo"
#: apps/currencies/models.py:131 #: apps/currencies/models.py:136
msgid "Last Successful Fetch" msgid "Last Successful Fetch"
msgstr "Última execução bem-sucedida" msgstr "Última execução bem-sucedida"
#: apps/currencies/models.py:136 #: apps/currencies/models.py:141
msgid "Target Currencies" msgid "Target Currencies"
msgstr "Moedas-alvo" msgstr "Moedas-alvo"
#: apps/currencies/models.py:138 #: apps/currencies/models.py:143
msgid "" msgid ""
"Select currencies to fetch exchange rates for. Rates will be fetched for " "Select currencies to fetch exchange rates for. Rates will be fetched for "
"each currency against their set exchange currency." "each currency against their set exchange currency."
@@ -624,11 +628,11 @@ msgstr ""
"Selecione as moedas para as quais deseja obter as taxas de câmbio. As taxas " "Selecione as moedas para as quais deseja obter as taxas de câmbio. As taxas "
"serão obtidas para cada moeda em relação à moeda de câmbio definida." "serão obtidas para cada moeda em relação à moeda de câmbio definida."
#: apps/currencies/models.py:146 #: apps/currencies/models.py:151
msgid "Target Accounts" msgid "Target Accounts"
msgstr "Contas-alvo" msgstr "Contas-alvo"
#: apps/currencies/models.py:148 #: apps/currencies/models.py:153
msgid "" msgid ""
"Select accounts to fetch exchange rates for. Rates will be fetched for each " "Select accounts to fetch exchange rates for. Rates will be fetched for each "
"account's currency against their set exchange currency." "account's currency against their set exchange currency."
@@ -637,34 +641,34 @@ msgstr ""
"serão obtidas para a moeda de cada conta em relação à moeda de câmbio " "serão obtidas para a moeda de cada conta em relação à moeda de câmbio "
"definida." "definida."
#: apps/currencies/models.py:155 #: apps/currencies/models.py:160
msgid "Single exchange rate" msgid "Single exchange rate"
msgstr "Taxa de câmbio única" msgstr "Taxa de câmbio única"
#: apps/currencies/models.py:158 #: apps/currencies/models.py:163
msgid "Create one exchange rate and keep updating it. Avoids database clutter." msgid "Create one exchange rate and keep updating it. Avoids database clutter."
msgstr "" msgstr ""
"Cria uma taxa de câmbio e mantenha-a atualizada. Evita a poluição do banco " "Cria uma taxa de câmbio e mantenha-a atualizada. Evita a poluição do banco "
"de dados." "de dados."
#: apps/currencies/models.py:163 #: apps/currencies/models.py:168
msgid "Exchange Rate Service" msgid "Exchange Rate Service"
msgstr "Serviço de Taxa de Câmbio" msgstr "Serviço de Taxa de Câmbio"
#: apps/currencies/models.py:164 #: apps/currencies/models.py:169
msgid "Exchange Rate Services" msgid "Exchange Rate Services"
msgstr "Serviços de Taxa de Câmbio" msgstr "Serviços de Taxa de Câmbio"
#: apps/currencies/models.py:216 #: apps/currencies/models.py:221
msgid "'Every X hours' interval type requires a positive integer." msgid "'Every X hours' interval type requires a positive integer."
msgstr "" msgstr ""
"Intervalo do tipo 'A cada X horas' requerer um número inteiro positivo." "Intervalo do tipo 'A cada X horas' requerer um número inteiro positivo."
#: apps/currencies/models.py:225 #: apps/currencies/models.py:230
msgid "'Every X hours' interval must be between 1 and 24." msgid "'Every X hours' interval must be between 1 and 24."
msgstr "Intervalo do tipo 'A cada X horas' requerer um número entre 1 e 24." msgstr "Intervalo do tipo 'A cada X horas' requerer um número entre 1 e 24."
#: apps/currencies/models.py:239 #: apps/currencies/models.py:244
msgid "" msgid ""
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., " "Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
"'1-5,8,10-12')." "'1-5,8,10-12')."
@@ -672,7 +676,7 @@ msgstr ""
"Formato inválido de hora. Use uma lista de horas separada por vírgulas " "Formato inválido de hora. Use uma lista de horas separada por vírgulas "
"(0-23) e/ou uma faixa (ex.: '1-5,8,10-12')." "(0-23) e/ou uma faixa (ex.: '1-5,8,10-12')."
#: apps/currencies/models.py:250 #: apps/currencies/models.py:255
msgid "" msgid ""
"Invalid format. Please check the requirements for your selected interval " "Invalid format. Please check the requirements for your selected interval "
"type." "type."
@@ -724,11 +728,11 @@ msgstr "Serviços marcados para execução com sucesso"
msgid "Create transaction" msgid "Create transaction"
msgstr "Criar transação" msgstr "Criar transação"
#: apps/dca/forms.py:70 apps/transactions/forms.py:430 #: apps/dca/forms.py:70 apps/transactions/forms.py:425
msgid "From Account" msgid "From Account"
msgstr "Conta de origem" msgstr "Conta de origem"
#: apps/dca/forms.py:76 apps/transactions/forms.py:435 #: apps/dca/forms.py:76 apps/transactions/forms.py:430
msgid "To Account" msgid "To Account"
msgstr "Conta de destino" msgstr "Conta de destino"
@@ -753,7 +757,7 @@ msgstr "Conectar transação"
msgid "You must provide an account." msgid "You must provide an account."
msgstr "Você deve informar uma conta." msgstr "Você deve informar uma conta."
#: apps/dca/forms.py:312 apps/transactions/forms.py:605 #: apps/dca/forms.py:312 apps/transactions/forms.py:600
msgid "From and To accounts must be different." msgid "From and To accounts must be different."
msgstr "As contas De e Para devem ser diferentes." msgstr "As contas De e Para devem ser diferentes."
@@ -772,7 +776,7 @@ msgstr "Moeda de pagamento"
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173 #: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173
#: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270 #: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270
#: apps/transactions/forms.py:499 apps/transactions/models.py:314 #: apps/transactions/forms.py:494 apps/transactions/models.py:314
#: apps/transactions/models.py:510 apps/transactions/models.py:711 #: apps/transactions/models.py:510 apps/transactions/models.py:711
#: apps/transactions/models.py:947 #: apps/transactions/models.py:947
msgid "Notes" msgid "Notes"
@@ -831,15 +835,15 @@ msgid "Entry deleted successfully"
msgstr "Entrada apagada com sucesso" msgstr "Entrada apagada com sucesso"
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131 #: apps/export_app/forms.py:14 apps/export_app/forms.py:131
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:239 #: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4 #: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
msgid "Users" msgid "Users"
msgstr "Usuários" msgstr "Usuários"
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137 #: apps/export_app/forms.py:32 apps/export_app/forms.py:137
#: apps/transactions/models.py:375 templates/includes/navbar.html:58 #: apps/transactions/models.py:375 templates/includes/navbar.html:58
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66 #: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
#: templates/includes/sidebar.html:160 #: templates/includes/sidebar.html:184
#: templates/recurring_transactions/fragments/list_transactions.html:5 #: templates/recurring_transactions/fragments/list_transactions.html:5
#: templates/recurring_transactions/fragments/table.html:39 #: templates/recurring_transactions/fragments/table.html:39
#: templates/transactions/pages/transactions.html:5 #: templates/transactions/pages/transactions.html:5
@@ -849,7 +853,7 @@ msgstr "Transações"
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134 #: apps/export_app/forms.py:38 apps/export_app/forms.py:134
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5 #: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109 #: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
#: templates/includes/sidebar.html:162 #: templates/includes/sidebar.html:186
msgid "Categories" msgid "Categories"
msgstr "Categorias" msgstr "Categorias"
@@ -857,19 +861,19 @@ msgstr "Categorias"
#: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40 #: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40
#: apps/rules/models.py:282 apps/transactions/filters.py:74 #: apps/rules/models.py:282 apps/transactions/filters.py:74
#: apps/transactions/forms.py:58 apps/transactions/forms.py:272 #: apps/transactions/forms.py:58 apps/transactions/forms.py:272
#: apps/transactions/forms.py:682 apps/transactions/forms.py:943 #: apps/transactions/forms.py:677 apps/transactions/forms.py:938
#: apps/transactions/models.py:273 apps/transactions/models.py:329 #: apps/transactions/models.py:273 apps/transactions/models.py:329
#: apps/transactions/models.py:506 apps/transactions/models.py:708 #: apps/transactions/models.py:506 apps/transactions/models.py:708
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5 #: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113 #: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
#: templates/includes/sidebar.html:174 #: templates/includes/sidebar.html:198
#: templates/insights/fragments/category_overview/index.html:49 #: templates/insights/fragments/category_overview/index.html:49
msgid "Entities" msgid "Entities"
msgstr "Entidades" msgstr "Entidades"
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140 #: apps/export_app/forms.py:56 apps/export_app/forms.py:140
#: apps/transactions/models.py:748 templates/includes/navbar.html:77 #: apps/transactions/models.py:748 templates/includes/navbar.html:77
#: templates/includes/sidebar.html:95 #: templates/includes/sidebar.html:120
#: templates/recurring_transactions/fragments/list.html:5 #: templates/recurring_transactions/fragments/list.html:5
#: templates/recurring_transactions/pages/index.html:4 #: templates/recurring_transactions/pages/index.html:4
msgid "Recurring Transactions" msgid "Recurring Transactions"
@@ -877,7 +881,7 @@ msgstr "Transações Recorrentes"
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138 #: apps/export_app/forms.py:62 apps/export_app/forms.py:138
#: apps/transactions/models.py:524 templates/includes/navbar.html:75 #: apps/transactions/models.py:524 templates/includes/navbar.html:75
#: templates/includes/sidebar.html:89 #: templates/includes/sidebar.html:114
#: templates/installment_plans/fragments/list.html:5 #: templates/installment_plans/fragments/list.html:5
#: templates/installment_plans/pages/index.html:4 #: templates/installment_plans/pages/index.html:4
msgid "Installment Plans" msgid "Installment Plans"
@@ -886,12 +890,12 @@ msgstr "Parcelamentos"
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143 #: apps/export_app/forms.py:74 apps/export_app/forms.py:143
#: templates/exchange_rates_services/fragments/list.html:6 #: templates/exchange_rates_services/fragments/list.html:6
#: templates/exchange_rates_services/pages/index.html:4 #: templates/exchange_rates_services/pages/index.html:4
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:230 #: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
msgid "Automatic Exchange Rates" msgid "Automatic Exchange Rates"
msgstr "Taxas de Câmbio Automáticas" msgstr "Taxas de Câmbio Automáticas"
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135 #: apps/export_app/forms.py:80 templates/includes/navbar.html:135
#: templates/includes/sidebar.html:210 templates/rules/fragments/list.html:5 #: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
#: templates/rules/pages/index.html:4 #: templates/rules/pages/index.html:4
msgid "Rules" msgid "Rules"
msgstr "Regras" msgstr "Regras"
@@ -963,7 +967,7 @@ msgstr "Selecione um arquivo"
#: apps/import_app/forms.py:61 #: apps/import_app/forms.py:61
#: templates/import_app/fragments/profiles/list.html:62 #: templates/import_app/fragments/profiles/list.html:62
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:216 #: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
msgid "Import" msgid "Import"
msgstr "Importar" msgstr "Importar"
@@ -1034,8 +1038,8 @@ msgstr "Importação apagada com sucesso"
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36 #: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
#: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189 #: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189
#: templates/insights/fragments/category_overview/index.html:88 #: templates/insights/fragments/category_overview/index.html:88
#: templates/insights/fragments/category_overview/index.html:393 #: templates/insights/fragments/category_overview/index.html:395
#: templates/insights/fragments/category_overview/index.html:422 #: templates/insights/fragments/category_overview/index.html:424
msgid "Uncategorized" msgid "Uncategorized"
msgstr "Sem categoria" msgstr "Sem categoria"
@@ -1135,7 +1139,7 @@ msgstr "Pago"
#: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34 #: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34
#: apps/rules/models.py:258 apps/transactions/forms.py:70 #: apps/rules/models.py:258 apps/transactions/forms.py:70
#: apps/transactions/forms.py:486 apps/transactions/forms.py:688 #: apps/transactions/forms.py:481 apps/transactions/forms.py:683
#: apps/transactions/models.py:301 apps/transactions/models.py:484 #: apps/transactions/models.py:301 apps/transactions/models.py:484
#: apps/transactions/models.py:713 #: apps/transactions/models.py:713
msgid "Reference Date" msgid "Reference Date"
@@ -1153,7 +1157,7 @@ msgstr "Quantia"
#: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14 #: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14
#: apps/rules/models.py:36 apps/rules/models.py:266 #: apps/rules/models.py:36 apps/rules/models.py:266
#: apps/transactions/forms.py:490 apps/transactions/models.py:312 #: apps/transactions/forms.py:485 apps/transactions/models.py:312
#: apps/transactions/models.py:468 apps/transactions/models.py:697 #: apps/transactions/models.py:468 apps/transactions/models.py:697
#: apps/transactions/models.py:945 #: apps/transactions/models.py:945
msgid "Description" msgid "Description"
@@ -1348,6 +1352,7 @@ msgid "Any entity"
msgstr "Qualquer entidade" msgstr "Qualquer entidade"
#: apps/transactions/filters.py:202 #: apps/transactions/filters.py:202
#: templates/insights/fragments/category_overview/index.html:274
msgid "No entity" msgid "No entity"
msgstr "Sem entidade" msgstr "Sem entidade"
@@ -1363,50 +1368,50 @@ msgstr "Salvar e adicionar similar"
msgid "Save and add another" msgid "Save and add another"
msgstr "Salvar e adicionar outra" msgstr "Salvar e adicionar outra"
#: apps/transactions/forms.py:300 apps/transactions/forms.py:506 #: apps/transactions/forms.py:300 apps/transactions/forms.py:501
msgid "Muted transactions won't be displayed on monthly summaries" msgid "Muted transactions won't be displayed on monthly summaries"
msgstr "Transações silenciadas não apareceram nos sumários mensais" msgstr "Transações silenciadas não apareceram nos sumários mensais"
#: apps/transactions/forms.py:442 #: apps/transactions/forms.py:437
msgid "From Amount" msgid "From Amount"
msgstr "Quantia de origem" msgstr "Quantia de origem"
#: apps/transactions/forms.py:447 #: apps/transactions/forms.py:442
msgid "To Amount" msgid "To Amount"
msgstr "Quantia de destino" msgstr "Quantia de destino"
#: apps/transactions/forms.py:503 apps/transactions/models.py:211 #: apps/transactions/forms.py:498 apps/transactions/models.py:211
#: apps/transactions/models.py:302 apps/transactions/models.py:935 #: apps/transactions/models.py:302 apps/transactions/models.py:935
msgid "Mute" msgid "Mute"
msgstr "Silenciada" msgstr "Silenciada"
#: apps/transactions/forms.py:572 #: apps/transactions/forms.py:567
#: templates/cotton/ui/quick_transactions_buttons.html:40 #: templates/cotton/ui/quick_transactions_buttons.html:40
#: templates/cotton/ui/transactions_fab.html:44 #: templates/cotton/ui/transactions_fab.html:44
msgid "Transfer" msgid "Transfer"
msgstr "Transferir" msgstr "Transferir"
#: apps/transactions/forms.py:822 #: apps/transactions/forms.py:817
msgid "Tag name" msgid "Tag name"
msgstr "Nome da Tag" msgstr "Nome da Tag"
#: apps/transactions/forms.py:854 #: apps/transactions/forms.py:849
msgid "Entity name" msgid "Entity name"
msgstr "Nome da entidade" msgstr "Nome da entidade"
#: apps/transactions/forms.py:886 #: apps/transactions/forms.py:881
msgid "Category name" msgid "Category name"
msgstr "Nome da Categoria" msgstr "Nome da Categoria"
#: apps/transactions/forms.py:888 #: apps/transactions/forms.py:883
msgid "Muted categories won't be displayed on monthly summaries" msgid "Muted categories won't be displayed on monthly summaries"
msgstr "Categorias silenciadas não apareceram nos sumários mensais" msgstr "Categorias silenciadas não apareceram nos sumários mensais"
#: apps/transactions/forms.py:1046 #: apps/transactions/forms.py:1041
msgid "future transactions" msgid "future transactions"
msgstr "transações futuras" msgstr "transações futuras"
#: apps/transactions/forms.py:1076 #: apps/transactions/forms.py:1071
msgid "End date should be after the start date" msgid "End date should be after the start date"
msgstr "Data final deve ser após data inicial" msgstr "Data final deve ser após data inicial"
@@ -1503,12 +1508,12 @@ msgstr "Sem categoria"
msgid "No description" msgid "No description"
msgstr "Sem descrição" msgstr "Sem descrição"
#: apps/transactions/models.py:455 templates/includes/sidebar.html:42 #: apps/transactions/models.py:455 templates/includes/sidebar.html:67
msgid "Yearly" msgid "Yearly"
msgstr "Anual" msgstr "Anual"
#: apps/transactions/models.py:456 apps/users/models.py:464 #: apps/transactions/models.py:456 apps/users/models.py:464
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:36 #: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
msgid "Monthly" msgid "Monthly"
msgstr "Mensal" msgstr "Mensal"
@@ -1607,7 +1612,7 @@ msgid "Quick Transaction"
msgstr "Transação Rápida" msgstr "Transação Rápida"
#: apps/transactions/models.py:980 templates/includes/navbar.html:73 #: apps/transactions/models.py:980 templates/includes/navbar.html:73
#: templates/includes/sidebar.html:83 #: templates/includes/sidebar.html:108
#: templates/quick_transactions/pages/index.html:5 #: templates/quick_transactions/pages/index.html:5
#: templates/quick_transactions/pages/index.html:11 #: templates/quick_transactions/pages/index.html:11
msgid "Quick Transactions" msgid "Quick Transactions"
@@ -1699,11 +1704,11 @@ msgid "Installment Plan deleted successfully"
msgstr "Parcelamento apagado com sucesso" msgstr "Parcelamento apagado com sucesso"
#: apps/transactions/views/quick_transactions.py:45 #: apps/transactions/views/quick_transactions.py:45
#: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:152 #: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:170
msgid "Item added successfully" msgid "Item added successfully"
msgstr "Item adicionado com sucesso" msgstr "Item adicionado com sucesso"
#: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:184 #: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:202
msgid "Item updated successfully" msgid "Item updated successfully"
msgstr "Item atualizado com sucesso" msgstr "Item atualizado com sucesso"
@@ -1818,8 +1823,10 @@ msgid "This account is deactivated"
msgstr "Essa conta está desativada" msgstr "Essa conta está desativada"
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89 #: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
#: templates/monthly_overview/pages/overview.html:153 #: templates/monthly_overview/pages/overview.html:140
#: templates/transactions/pages/transactions.html:28 #: templates/monthly_overview/pages/overview.html:186
#: templates/transactions/pages/transactions.html:14
#: templates/transactions/pages/transactions.html:60
msgid "Default" msgid "Default"
msgstr "Padrão" msgstr "Padrão"
@@ -1929,7 +1936,7 @@ msgid "All Transactions"
msgstr "Todas as transações" msgstr "Todas as transações"
#: apps/users/models.py:470 templates/includes/navbar.html:33 #: apps/users/models.py:470 templates/includes/navbar.html:33
#: templates/includes/sidebar.html:48 #: templates/includes/sidebar.html:73
msgid "Calendar" msgid "Calendar"
msgstr "Calendário" msgstr "Calendário"
@@ -1980,7 +1987,7 @@ msgstr "Editar grupo de conta"
#: templates/account_groups/fragments/list.html:32 #: templates/account_groups/fragments/list.html:32
#: templates/accounts/fragments/list.html:37 #: templates/accounts/fragments/list.html:37
#: templates/categories/fragments/table.html:24 #: templates/categories/fragments/table.html:24
#: templates/currencies/fragments/list.html:33 #: templates/currencies/fragments/list.html:34
#: templates/dca/fragments/strategy/details.html:63 #: templates/dca/fragments/strategy/details.html:63
#: templates/entities/fragments/table.html:23 #: templates/entities/fragments/table.html:23
#: templates/exchange_rates/fragments/table.html:19 #: templates/exchange_rates/fragments/table.html:19
@@ -2001,7 +2008,7 @@ msgstr "Ações"
#: templates/categories/fragments/table.html:29 #: templates/categories/fragments/table.html:29
#: templates/cotton/transaction/item.html:129 #: templates/cotton/transaction/item.html:129
#: templates/cotton/ui/transactions_action_bar.html:52 #: templates/cotton/ui/transactions_action_bar.html:52
#: templates/currencies/fragments/list.html:37 #: templates/currencies/fragments/list.html:38
#: templates/dca/fragments/strategy/details.html:67 #: templates/dca/fragments/strategy/details.html:67
#: templates/dca/fragments/strategy/list.html:36 #: templates/dca/fragments/strategy/list.html:36
#: templates/entities/fragments/table.html:28 #: templates/entities/fragments/table.html:28
@@ -2027,7 +2034,7 @@ msgstr "Editar"
#: templates/cotton/transaction/item.html:192 #: templates/cotton/transaction/item.html:192
#: templates/cotton/ui/deleted_transactions_action_bar.html:55 #: templates/cotton/ui/deleted_transactions_action_bar.html:55
#: templates/cotton/ui/transactions_action_bar.html:90 #: templates/cotton/ui/transactions_action_bar.html:90
#: templates/currencies/fragments/list.html:44 #: templates/currencies/fragments/list.html:45
#: templates/dca/fragments/strategy/details.html:75 #: templates/dca/fragments/strategy/details.html:75
#: templates/dca/fragments/strategy/list.html:44 #: templates/dca/fragments/strategy/list.html:44
#: templates/entities/fragments/table.html:36 #: templates/entities/fragments/table.html:36
@@ -2054,7 +2061,7 @@ msgstr "Apagar"
#: templates/cotton/transaction/item.html:196 #: templates/cotton/transaction/item.html:196
#: templates/cotton/ui/deleted_transactions_action_bar.html:57 #: templates/cotton/ui/deleted_transactions_action_bar.html:57
#: templates/cotton/ui/transactions_action_bar.html:92 #: templates/cotton/ui/transactions_action_bar.html:92
#: templates/currencies/fragments/list.html:48 #: templates/currencies/fragments/list.html:49
#: templates/dca/fragments/strategy/details.html:80 #: templates/dca/fragments/strategy/details.html:80
#: templates/dca/fragments/strategy/list.html:48 #: templates/dca/fragments/strategy/list.html:48
#: templates/entities/fragments/table.html:40 #: templates/entities/fragments/table.html:40
@@ -2084,7 +2091,7 @@ msgstr "Tem certeza?"
#: templates/cotton/transaction/item.html:197 #: templates/cotton/transaction/item.html:197
#: templates/cotton/ui/deleted_transactions_action_bar.html:58 #: templates/cotton/ui/deleted_transactions_action_bar.html:58
#: templates/cotton/ui/transactions_action_bar.html:93 #: templates/cotton/ui/transactions_action_bar.html:93
#: templates/currencies/fragments/list.html:49 #: templates/currencies/fragments/list.html:50
#: templates/dca/fragments/strategy/details.html:81 #: templates/dca/fragments/strategy/details.html:81
#: templates/dca/fragments/strategy/list.html:49 #: templates/dca/fragments/strategy/list.html:49
#: templates/entities/fragments/table.html:41 #: templates/entities/fragments/table.html:41
@@ -2104,7 +2111,7 @@ msgstr "Você não será capaz de reverter isso!"
#: templates/categories/fragments/table.html:43 #: templates/categories/fragments/table.html:43
#: templates/cotton/transaction/item.html:142 #: templates/cotton/transaction/item.html:142
#: templates/cotton/transaction/item.html:198 #: templates/cotton/transaction/item.html:198
#: templates/currencies/fragments/list.html:50 #: templates/currencies/fragments/list.html:51
#: templates/dca/fragments/strategy/details.html:82 #: templates/dca/fragments/strategy/details.html:82
#: templates/dca/fragments/strategy/list.html:50 #: templates/dca/fragments/strategy/list.html:50
#: templates/entities/fragments/table.html:42 #: templates/entities/fragments/table.html:42
@@ -2250,7 +2257,7 @@ msgid "Muted"
msgstr "Silenciada" msgstr "Silenciada"
#: templates/categories/fragments/table.html:75 #: templates/categories/fragments/table.html:75
#: templates/insights/fragments/category_overview/index.html:538 #: templates/insights/fragments/category_overview/index.html:540
msgid "No categories" msgid "No categories"
msgstr "Nenhum categoria" msgstr "Nenhum categoria"
@@ -2259,13 +2266,14 @@ msgid "Pick a month"
msgstr "Escolha um mês" msgstr "Escolha um mês"
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5 #: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
#: templates/includes/sidebar.html:28 #: templates/includes/sidebar.html:53
msgid "Close" msgid "Close"
msgstr "Fechar" msgstr "Fechar"
#: templates/cotton/config/search.html:6 #: templates/cotton/config/search.html:6
#: templates/import_app/fragments/profiles/list_presets.html:13 #: templates/import_app/fragments/profiles/list_presets.html:13
#: templates/monthly_overview/pages/overview.html:177 #: templates/monthly_overview/pages/overview.html:160
#: templates/transactions/pages/transactions.html:34
msgid "Search" msgid "Search"
msgstr "Buscar" msgstr "Buscar"
@@ -2450,7 +2458,7 @@ msgstr "Editar moeda"
msgid "Code" msgid "Code"
msgstr "Código" msgstr "Código"
#: templates/currencies/fragments/list.html:61 #: templates/currencies/fragments/list.html:63
msgid "No currencies" msgid "No currencies"
msgstr "Nenhuma moeda" msgstr "Nenhuma moeda"
@@ -2488,7 +2496,7 @@ msgstr "Nenhuma entrada neste CMP"
#: templates/dca/fragments/strategy/details.html:125 #: templates/dca/fragments/strategy/details.html:125
#: templates/monthly_overview/fragments/list.html:47 #: templates/monthly_overview/fragments/list.html:47
#: templates/transactions/fragments/list_all.html:40 #: templates/transactions/fragments/list_all.html:47
msgid "Try adding one" msgid "Try adding one"
msgstr "Tente adicionar uma" msgstr "Tente adicionar uma"
@@ -2591,7 +2599,7 @@ msgid "Edit exchange rate"
msgstr "Editar taxa de câmbio" msgstr "Editar taxa de câmbio"
#: templates/exchange_rates/fragments/list.html:25 #: templates/exchange_rates/fragments/list.html:25
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:68 #: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
#: templates/installment_plans/fragments/list.html:21 #: templates/installment_plans/fragments/list.html:21
#: templates/yearly_overview/pages/overview_by_account.html:105 #: templates/yearly_overview/pages/overview_by_account.html:105
#: templates/yearly_overview/pages/overview_by_currency.html:107 #: templates/yearly_overview/pages/overview_by_currency.html:107
@@ -2615,7 +2623,7 @@ msgstr "Nenhuma taxa de câmbio"
#: templates/exchange_rates/fragments/table.html:58 #: templates/exchange_rates/fragments/table.html:58
#: templates/exchange_rates_services/fragments/table.html:58 #: templates/exchange_rates_services/fragments/table.html:58
#: templates/transactions/fragments/list_all.html:47 #: templates/transactions/fragments/list_all.html:54
msgid "Page navigation" msgid "Page navigation"
msgstr "Navegação por página" msgstr "Navegação por página"
@@ -2648,7 +2656,7 @@ msgid "No services configured"
msgstr "Nenhum serviço configurado" msgstr "Nenhum serviço configurado"
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140 #: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
#: templates/includes/sidebar.html:223 #: templates/includes/sidebar.html:247
msgid "Export and Restore" msgid "Export and Restore"
msgstr "Exportar e Restaurar" msgstr "Exportar e Restaurar"
@@ -2746,7 +2754,7 @@ msgstr "Alternar navegação"
msgid "Overview" msgid "Overview"
msgstr "Visão Geral" msgstr "Visão Geral"
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:60 #: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
msgid "Net Worth" msgid "Net Worth"
msgstr "Patrimônio" msgstr "Patrimônio"
@@ -2756,62 +2764,62 @@ msgstr "Patrimônio"
msgid "Current" msgid "Current"
msgstr "Atual" msgstr "Atual"
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:54 #: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
#: templates/insights/pages/index.html:5 #: templates/insights/pages/index.html:5
msgid "Insights" msgid "Insights"
msgstr "Insights" msgstr "Insights"
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:76 #: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
msgid "Trash Can" msgid "Trash Can"
msgstr "Lixeira" msgstr "Lixeira"
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101 #: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
msgid "Tools" msgid "Tools"
msgstr "Ferramentas" msgstr "Ferramentas"
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:103 #: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
msgid "Dollar Cost Average Tracker" msgid "Dollar Cost Average Tracker"
msgstr "Rastreador de Custo Médio Ponderado" msgstr "Rastreador de Custo Médio Ponderado"
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:109 #: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
#: templates/mini_tools/unit_price_calculator.html:5 #: templates/mini_tools/unit_price_calculator.html:5
#: templates/mini_tools/unit_price_calculator.html:10 #: templates/mini_tools/unit_price_calculator.html:10
msgid "Unit Price Calculator" msgid "Unit Price Calculator"
msgstr "Calculadora de preço unitário" msgstr "Calculadora de preço unitário"
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:115 #: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
#: templates/mini_tools/currency_converter/currency_converter.html:8 #: templates/mini_tools/currency_converter/currency_converter.html:8
#: templates/mini_tools/currency_converter/currency_converter.html:15 #: templates/mini_tools/currency_converter/currency_converter.html:15
msgid "Currency Converter" msgid "Currency Converter"
msgstr "Conversor de Moeda" msgstr "Conversor de Moeda"
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134 #: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
#: templates/includes/sidebar.html:147 #: templates/includes/sidebar.html:171
msgid "Management" msgid "Management"
msgstr "Gerenciar" msgstr "Gerenciar"
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208 #: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
msgid "Automation" msgid "Automation"
msgstr "Automação" msgstr "Automação"
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:237 #: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
msgid "Admin" msgid "Admin"
msgstr "Admin" msgstr "Admin"
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:246 #: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
msgid "Only use this if you know what you're doing" msgid "Only use this if you know what you're doing"
msgstr "Só use isso se você souber o que está fazendo" msgstr "Só use isso se você souber o que está fazendo"
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:245 #: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
msgid "Django Admin" msgid "Django Admin"
msgstr "Django Admin" msgstr "Django Admin"
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:260 #: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
msgid "is available" msgid "is available"
msgstr "está disponível" msgstr "está disponível"
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177 #: templates/includes/navbar.html:174 templates/includes/navbar.html:177
#: templates/includes/sidebar.html:266 #: templates/includes/sidebar.html:290
msgid "Calculator" msgid "Calculator"
msgstr "Calculadora" msgstr "Calculadora"
@@ -2896,16 +2904,12 @@ msgstr ""
"para cada tag" "para cada tag"
#: templates/insights/fragments/category_overview/index.html:52 #: templates/insights/fragments/category_overview/index.html:52
#, fuzzy
#| msgid ""
#| "Transaction amounts associated with multiple tags will be counted once "
#| "for each tag"
msgid "" msgid ""
"Transaction amounts associated with multiple tags and entities will be " "Transaction amounts associated with multiple tags and entities will be "
"counted once for each tag" "counted once for each tag"
msgstr "" msgstr ""
"Os valores das transações associadas a várias tags serão contados uma vez " "Os valores das transações associadas a várias tags e entidades serão "
"para cada tag" "contados uma vez para cada tag"
#: templates/insights/fragments/category_overview/index.html:69 #: templates/insights/fragments/category_overview/index.html:69
msgid "Final total" msgid "Final total"
@@ -2916,7 +2920,7 @@ msgstr "Total final"
msgid "Total" msgid "Total"
msgstr "Total" msgstr "Total"
#: templates/insights/fragments/category_overview/index.html:515 #: templates/insights/fragments/category_overview/index.html:517
msgid "Final Total" msgid "Final Total"
msgstr "Total Final" msgstr "Total Final"
@@ -3124,26 +3128,30 @@ msgstr "Distribuição"
msgid "Summary" msgid "Summary"
msgstr "Resumo" msgstr "Resumo"
#: templates/monthly_overview/pages/overview.html:142 #: templates/monthly_overview/pages/overview.html:141
#: templates/transactions/pages/transactions.html:17 #: templates/monthly_overview/pages/overview.html:195
msgid "Filter transactions" #: templates/transactions/pages/transactions.html:15
msgstr "Filtrar transações" #: templates/transactions/pages/transactions.html:69
#: templates/monthly_overview/pages/overview.html:148
#: templates/transactions/pages/transactions.html:23
msgid "Order by"
msgstr "Ordernar por"
#: templates/monthly_overview/pages/overview.html:155
#: templates/transactions/pages/transactions.html:30
msgid "Oldest first" msgid "Oldest first"
msgstr "Mais antigas primeiro" msgstr "Mais antigas primeiro"
#: templates/monthly_overview/pages/overview.html:157 #: templates/monthly_overview/pages/overview.html:142
#: templates/transactions/pages/transactions.html:32 #: templates/monthly_overview/pages/overview.html:204
#: templates/transactions/pages/transactions.html:16
#: templates/transactions/pages/transactions.html:78
msgid "Newest first" msgid "Newest first"
msgstr "Mais novas primeiro" msgstr "Mais novas primeiro"
#: templates/monthly_overview/pages/overview.html:151
#: templates/transactions/pages/transactions.html:25
msgid "Filter transactions"
msgstr "Filtrar transações"
#: templates/monthly_overview/pages/overview.html:176
#: templates/transactions/pages/transactions.html:50
msgid "Order by"
msgstr "Ordernar por"
#: templates/net_worth/net_worth.html:40 #: templates/net_worth/net_worth.html:40
#: templates/yearly_overview/pages/overview_by_currency.html:9 #: templates/yearly_overview/pages/overview_by_currency.html:9
msgid "By currency" msgid "By currency"
@@ -3354,7 +3362,7 @@ msgstr "Editando"
msgid "transactions" msgid "transactions"
msgstr "transações" msgstr "transações"
#: templates/transactions/fragments/list_all.html:39 #: templates/transactions/fragments/list_all.html:46
msgid "No transactions found" msgid "No transactions found"
msgstr "Nenhuma transação encontrada" msgstr "Nenhuma transação encontrada"
+167 -155
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-08-17 06:55+0000\n" "POT-Creation-Date: 2025-08-30 02:09+0000\n"
"PO-Revision-Date: 2025-04-14 06:16+0000\n" "PO-Revision-Date: 2025-04-14 06:16+0000\n"
"Last-Translator: Emil <emil.bjorkroth@gmail.com>\n" "Last-Translator: Emil <emil.bjorkroth@gmail.com>\n"
"Language-Team: Swedish <https://translations.herculino.com/projects/wygiwyh/" "Language-Team: Swedish <https://translations.herculino.com/projects/wygiwyh/"
@@ -19,32 +19,32 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10.4\n" "X-Generator: Weblate 5.10.4\n"
#: apps/accounts/forms.py:24 #: apps/accounts/forms.py:26
msgid "Group name" msgid "Group name"
msgstr "" msgstr ""
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98 #: apps/accounts/forms.py:42 apps/accounts/forms.py:118
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91 #: apps/currencies/forms.py:55 apps/currencies/forms.py:93
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224 #: apps/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
#: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93 #: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93
#: apps/rules/forms.py:365 apps/transactions/forms.py:204 #: apps/rules/forms.py:365 apps/transactions/forms.py:204
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421 #: apps/transactions/forms.py:369 apps/transactions/forms.py:416
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836 #: apps/transactions/forms.py:788 apps/transactions/forms.py:831
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903 #: apps/transactions/forms.py:863 apps/transactions/forms.py:898
#: apps/transactions/forms.py:1057 apps/users/forms.py:217 #: apps/transactions/forms.py:1052 apps/users/forms.py:217
#: apps/users/forms.py:379 #: apps/users/forms.py:379
msgid "Update" msgid "Update"
msgstr "Uppdatera" msgstr "Uppdatera"
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106 #: apps/accounts/forms.py:50 apps/accounts/forms.py:126
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61 #: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152 #: apps/currencies/forms.py:101 apps/currencies/forms.py:154
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42 #: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
#: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373 #: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373
#: apps/transactions/forms.py:189 apps/transactions/forms.py:213 #: apps/transactions/forms.py:189 apps/transactions/forms.py:213
#: apps/transactions/forms.py:383 apps/transactions/forms.py:801 #: apps/transactions/forms.py:378 apps/transactions/forms.py:796
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876 #: apps/transactions/forms.py:839 apps/transactions/forms.py:871
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065 #: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
#: apps/users/forms.py:225 apps/users/forms.py:387 #: apps/users/forms.py:225 apps/users/forms.py:387
#: templates/account_groups/fragments/list.html:9 #: templates/account_groups/fragments/list.html:9
#: templates/accounts/fragments/list.html:9 #: templates/accounts/fragments/list.html:9
@@ -66,37 +66,37 @@ msgstr "Uppdatera"
msgid "Add" msgid "Add"
msgstr "" msgstr ""
#: apps/accounts/forms.py:57 templates/accounts/fragments/list.html:26 #: apps/accounts/forms.py:59 templates/accounts/fragments/list.html:26
msgid "Group" msgid "Group"
msgstr "" msgstr ""
#: apps/accounts/forms.py:115 #: apps/accounts/forms.py:135
msgid "New balance" msgid "New balance"
msgstr "" msgstr ""
#: apps/accounts/forms.py:121 apps/dca/forms.py:85 apps/dca/forms.py:92 #: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
#: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189 #: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189
#: apps/rules/models.py:38 apps/rules/models.py:286 #: apps/rules/models.py:38 apps/rules/models.py:286
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256 #: apps/transactions/forms.py:42 apps/transactions/forms.py:256
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462 #: apps/transactions/forms.py:450 apps/transactions/forms.py:457
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935 #: apps/transactions/forms.py:669 apps/transactions/forms.py:930
#: apps/transactions/models.py:318 apps/transactions/models.py:501 #: apps/transactions/models.py:318 apps/transactions/models.py:501
#: apps/transactions/models.py:701 apps/transactions/models.py:951 #: apps/transactions/models.py:701 apps/transactions/models.py:951
#: templates/insights/fragments/category_overview/index.html:78 #: templates/insights/fragments/category_overview/index.html:78
#: templates/insights/fragments/category_overview/index.html:528 #: templates/insights/fragments/category_overview/index.html:530
msgid "Category" msgid "Category"
msgstr "" msgstr ""
#: apps/accounts/forms.py:128 apps/dca/forms.py:101 apps/dca/forms.py:109 #: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135 #: apps/export_app/forms.py:44 apps/export_app/forms.py:135
#: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39 #: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39
#: apps/rules/models.py:290 apps/transactions/filters.py:69 #: apps/rules/models.py:290 apps/transactions/filters.py:69
#: apps/transactions/forms.py:50 apps/transactions/forms.py:264 #: apps/transactions/forms.py:50 apps/transactions/forms.py:264
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479 #: apps/transactions/forms.py:466 apps/transactions/forms.py:474
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928 #: apps/transactions/forms.py:662 apps/transactions/forms.py:923
#: apps/transactions/models.py:324 apps/transactions/models.py:503 #: apps/transactions/models.py:324 apps/transactions/models.py:503
#: apps/transactions/models.py:705 apps/transactions/models.py:957 #: apps/transactions/models.py:705 apps/transactions/models.py:957
#: templates/includes/navbar.html:111 templates/includes/sidebar.html:168 #: templates/includes/navbar.html:111 templates/includes/sidebar.html:192
#: templates/insights/fragments/category_overview/index.html:36 #: templates/insights/fragments/category_overview/index.html:36
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4 #: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
msgid "Tags" msgid "Tags"
@@ -128,11 +128,11 @@ msgstr ""
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5 #: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
#: templates/account_groups/pages/index.html:4 #: templates/account_groups/pages/index.html:4
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:188 #: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
msgid "Account Groups" msgid "Account Groups"
msgstr "" msgstr ""
#: apps/accounts/models.py:39 apps/currencies/models.py:39 #: apps/accounts/models.py:39 apps/currencies/models.py:44
#: templates/accounts/fragments/list.html:27 #: templates/accounts/fragments/list.html:27
#: templates/yearly_overview/pages/overview_by_account.html:18 #: templates/yearly_overview/pages/overview_by_account.html:18
#: templates/yearly_overview/pages/overview_by_currency.html:20 #: templates/yearly_overview/pages/overview_by_currency.html:20
@@ -157,8 +157,10 @@ msgid ""
"Asset accounts count towards your Net Worth, but not towards your month." "Asset accounts count towards your Net Worth, but not towards your month."
msgstr "" msgstr ""
#: apps/accounts/models.py:62 templates/accounts/fragments/list.html:30 #: apps/accounts/models.py:62 apps/currencies/models.py:37
#: templates/accounts/fragments/list.html:30
#: templates/categories/fragments/list.html:24 #: templates/categories/fragments/list.html:24
#: templates/currencies/fragments/list.html:27
#: templates/entities/fragments/list.html:24 #: templates/entities/fragments/list.html:24
#: templates/tags/fragments/list.html:24 #: templates/tags/fragments/list.html:24
msgid "Archived" msgid "Archived"
@@ -171,7 +173,7 @@ msgstr ""
#: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179 #: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179
#: apps/rules/models.py:30 apps/rules/models.py:242 #: apps/rules/models.py:30 apps/rules/models.py:242
#: apps/transactions/forms.py:62 apps/transactions/forms.py:276 #: apps/transactions/forms.py:62 apps/transactions/forms.py:276
#: apps/transactions/forms.py:659 apps/transactions/forms.py:920 #: apps/transactions/forms.py:654 apps/transactions/forms.py:915
#: apps/transactions/models.py:290 apps/transactions/models.py:461 #: apps/transactions/models.py:290 apps/transactions/models.py:461
#: apps/transactions/models.py:683 apps/transactions/models.py:925 #: apps/transactions/models.py:683 apps/transactions/models.py:925
#: templates/installment_plans/fragments/table.html:17 #: templates/installment_plans/fragments/table.html:17
@@ -186,11 +188,11 @@ msgstr ""
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53 #: apps/export_app/forms.py:132 apps/transactions/filters.py:53
#: templates/accounts/fragments/list.html:5 #: templates/accounts/fragments/list.html:5
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117 #: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180 #: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
#: templates/includes/sidebar.html:182 #: templates/includes/sidebar.html:206
#: templates/monthly_overview/pages/overview.html:94 #: templates/monthly_overview/pages/overview.html:94
#: templates/transactions/fragments/summary.html:12 #: templates/transactions/fragments/summary.html:12
#: templates/transactions/pages/transactions.html:81 #: templates/transactions/pages/transactions.html:137
msgid "Accounts" msgid "Accounts"
msgstr "" msgstr ""
@@ -468,8 +470,10 @@ msgstr ""
#: apps/common/widgets/tom_select.py:15 #: apps/common/widgets/tom_select.py:15
#: templates/mini_tools/unit_price_calculator.html:174 #: templates/mini_tools/unit_price_calculator.html:174
#: templates/monthly_overview/pages/overview.html:172 #: templates/monthly_overview/pages/overview.html:215
#: templates/transactions/pages/transactions.html:47 #: templates/monthly_overview/pages/overview.html:227
#: templates/transactions/pages/transactions.html:89
#: templates/transactions/pages/transactions.html:101
msgid "Clear" msgid "Clear"
msgstr "" msgstr ""
@@ -485,9 +489,9 @@ msgstr ""
msgid "Suffix" msgid "Suffix"
msgstr "" msgstr ""
#: apps/currencies/forms.py:69 apps/dca/models.py:158 apps/rules/forms.py:169 #: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:169
#: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254 #: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254
#: apps/transactions/forms.py:66 apps/transactions/forms.py:483 #: apps/transactions/forms.py:66 apps/transactions/forms.py:478
#: apps/transactions/models.py:300 #: apps/transactions/models.py:300
#: templates/dca/fragments/strategy/details.html:52 #: templates/dca/fragments/strategy/details.html:52
#: templates/exchange_rates/fragments/table.html:10 #: templates/exchange_rates/fragments/table.html:10
@@ -507,75 +511,75 @@ msgstr ""
msgid "Decimal Places" msgid "Decimal Places"
msgstr "" msgstr ""
#: apps/currencies/models.py:40 apps/export_app/forms.py:26 #: apps/currencies/models.py:45 apps/export_app/forms.py:26
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60 #: apps/export_app/forms.py:133 apps/transactions/filters.py:60
#: templates/currencies/fragments/list.html:5 #: templates/currencies/fragments/list.html:5
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125 #: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194 #: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
#: templates/includes/sidebar.html:196 #: templates/includes/sidebar.html:220
#: templates/monthly_overview/pages/overview.html:81 #: templates/monthly_overview/pages/overview.html:81
#: templates/transactions/fragments/summary.html:8 #: templates/transactions/fragments/summary.html:8
#: templates/transactions/pages/transactions.html:68 #: templates/transactions/pages/transactions.html:124
msgid "Currencies" msgid "Currencies"
msgstr "" msgstr ""
#: apps/currencies/models.py:49 #: apps/currencies/models.py:54
msgid "Currency cannot have itself as exchange currency." msgid "Currency cannot have itself as exchange currency."
msgstr "" msgstr ""
#: apps/currencies/models.py:60 #: apps/currencies/models.py:65
msgid "From Currency" msgid "From Currency"
msgstr "" msgstr ""
#: apps/currencies/models.py:66 #: apps/currencies/models.py:71
msgid "To Currency" msgid "To Currency"
msgstr "" msgstr ""
#: apps/currencies/models.py:69 apps/currencies/models.py:76 #: apps/currencies/models.py:74 apps/currencies/models.py:81
msgid "Exchange Rate" msgid "Exchange Rate"
msgstr "" msgstr ""
#: apps/currencies/models.py:71 #: apps/currencies/models.py:76
msgid "Date and Time" msgid "Date and Time"
msgstr "" msgstr ""
#: apps/currencies/models.py:73 apps/users/models.py:12 #: apps/currencies/models.py:78 apps/users/models.py:12
#: apps/users/models.py:497 #: apps/users/models.py:497
msgid "Auto" msgid "Auto"
msgstr "" msgstr ""
#: apps/currencies/models.py:77 apps/export_app/forms.py:68 #: apps/currencies/models.py:82 apps/export_app/forms.py:68
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6 #: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
#: templates/exchange_rates/pages/index.html:4 #: templates/exchange_rates/pages/index.html:4
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:202 #: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
msgid "Exchange Rates" msgid "Exchange Rates"
msgstr "" msgstr ""
#: apps/currencies/models.py:89 #: apps/currencies/models.py:94
msgid "From and To currencies cannot be the same." msgid "From and To currencies cannot be the same."
msgstr "" msgstr ""
#: apps/currencies/models.py:105 #: apps/currencies/models.py:110
msgid "On" msgid "On"
msgstr "" msgstr ""
#: apps/currencies/models.py:106 #: apps/currencies/models.py:111
msgid "Every X hours" msgid "Every X hours"
msgstr "" msgstr ""
#: apps/currencies/models.py:107 #: apps/currencies/models.py:112
msgid "Not on" msgid "Not on"
msgstr "" msgstr ""
#: apps/currencies/models.py:109 #: apps/currencies/models.py:114
msgid "Service Name" msgid "Service Name"
msgstr "" msgstr ""
#: apps/currencies/models.py:111 #: apps/currencies/models.py:116
msgid "Service Type" msgid "Service Type"
msgstr "" msgstr ""
#: apps/currencies/models.py:113 apps/transactions/models.py:214 #: apps/currencies/models.py:118 apps/transactions/models.py:214
#: apps/transactions/models.py:238 apps/transactions/models.py:262 #: apps/transactions/models.py:238 apps/transactions/models.py:262
#: templates/categories/fragments/list.html:21 #: templates/categories/fragments/list.html:21
#: templates/entities/fragments/list.html:21 #: templates/entities/fragments/list.html:21
@@ -584,77 +588,77 @@ msgstr ""
msgid "Active" msgid "Active"
msgstr "" msgstr ""
#: apps/currencies/models.py:118 #: apps/currencies/models.py:123
msgid "API Key" msgid "API Key"
msgstr "" msgstr ""
#: apps/currencies/models.py:119 #: apps/currencies/models.py:124
msgid "API key for the service (if required)" msgid "API key for the service (if required)"
msgstr "" msgstr ""
#: apps/currencies/models.py:124 #: apps/currencies/models.py:129
msgid "Interval Type" msgid "Interval Type"
msgstr "" msgstr ""
#: apps/currencies/models.py:128 #: apps/currencies/models.py:133
msgid "Interval" msgid "Interval"
msgstr "" msgstr ""
#: apps/currencies/models.py:131 #: apps/currencies/models.py:136
msgid "Last Successful Fetch" msgid "Last Successful Fetch"
msgstr "" msgstr ""
#: apps/currencies/models.py:136 #: apps/currencies/models.py:141
msgid "Target Currencies" msgid "Target Currencies"
msgstr "" msgstr ""
#: apps/currencies/models.py:138 #: apps/currencies/models.py:143
msgid "" msgid ""
"Select currencies to fetch exchange rates for. Rates will be fetched for " "Select currencies to fetch exchange rates for. Rates will be fetched for "
"each currency against their set exchange currency." "each currency against their set exchange currency."
msgstr "" msgstr ""
#: apps/currencies/models.py:146 #: apps/currencies/models.py:151
msgid "Target Accounts" msgid "Target Accounts"
msgstr "" msgstr ""
#: apps/currencies/models.py:148 #: apps/currencies/models.py:153
msgid "" msgid ""
"Select accounts to fetch exchange rates for. Rates will be fetched for each " "Select accounts to fetch exchange rates for. Rates will be fetched for each "
"account's currency against their set exchange currency." "account's currency against their set exchange currency."
msgstr "" msgstr ""
#: apps/currencies/models.py:155 #: apps/currencies/models.py:160
msgid "Single exchange rate" msgid "Single exchange rate"
msgstr "" msgstr ""
#: apps/currencies/models.py:158 #: apps/currencies/models.py:163
msgid "Create one exchange rate and keep updating it. Avoids database clutter." msgid "Create one exchange rate and keep updating it. Avoids database clutter."
msgstr "" msgstr ""
#: apps/currencies/models.py:163 #: apps/currencies/models.py:168
msgid "Exchange Rate Service" msgid "Exchange Rate Service"
msgstr "" msgstr ""
#: apps/currencies/models.py:164 #: apps/currencies/models.py:169
msgid "Exchange Rate Services" msgid "Exchange Rate Services"
msgstr "" msgstr ""
#: apps/currencies/models.py:216 #: apps/currencies/models.py:221
msgid "'Every X hours' interval type requires a positive integer." msgid "'Every X hours' interval type requires a positive integer."
msgstr "" msgstr ""
#: apps/currencies/models.py:225 #: apps/currencies/models.py:230
msgid "'Every X hours' interval must be between 1 and 24." msgid "'Every X hours' interval must be between 1 and 24."
msgstr "" msgstr ""
#: apps/currencies/models.py:239 #: apps/currencies/models.py:244
msgid "" msgid ""
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., " "Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
"'1-5,8,10-12')." "'1-5,8,10-12')."
msgstr "" msgstr ""
#: apps/currencies/models.py:250 #: apps/currencies/models.py:255
msgid "" msgid ""
"Invalid format. Please check the requirements for your selected interval " "Invalid format. Please check the requirements for your selected interval "
"type." "type."
@@ -704,11 +708,11 @@ msgstr ""
msgid "Create transaction" msgid "Create transaction"
msgstr "" msgstr ""
#: apps/dca/forms.py:70 apps/transactions/forms.py:430 #: apps/dca/forms.py:70 apps/transactions/forms.py:425
msgid "From Account" msgid "From Account"
msgstr "" msgstr ""
#: apps/dca/forms.py:76 apps/transactions/forms.py:435 #: apps/dca/forms.py:76 apps/transactions/forms.py:430
msgid "To Account" msgid "To Account"
msgstr "" msgstr ""
@@ -733,7 +737,7 @@ msgstr ""
msgid "You must provide an account." msgid "You must provide an account."
msgstr "" msgstr ""
#: apps/dca/forms.py:312 apps/transactions/forms.py:605 #: apps/dca/forms.py:312 apps/transactions/forms.py:600
msgid "From and To accounts must be different." msgid "From and To accounts must be different."
msgstr "" msgstr ""
@@ -752,7 +756,7 @@ msgstr ""
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173 #: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173
#: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270 #: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270
#: apps/transactions/forms.py:499 apps/transactions/models.py:314 #: apps/transactions/forms.py:494 apps/transactions/models.py:314
#: apps/transactions/models.py:510 apps/transactions/models.py:711 #: apps/transactions/models.py:510 apps/transactions/models.py:711
#: apps/transactions/models.py:947 #: apps/transactions/models.py:947
msgid "Notes" msgid "Notes"
@@ -811,15 +815,15 @@ msgid "Entry deleted successfully"
msgstr "" msgstr ""
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131 #: apps/export_app/forms.py:14 apps/export_app/forms.py:131
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:239 #: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4 #: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
msgid "Users" msgid "Users"
msgstr "" msgstr ""
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137 #: apps/export_app/forms.py:32 apps/export_app/forms.py:137
#: apps/transactions/models.py:375 templates/includes/navbar.html:58 #: apps/transactions/models.py:375 templates/includes/navbar.html:58
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66 #: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
#: templates/includes/sidebar.html:160 #: templates/includes/sidebar.html:184
#: templates/recurring_transactions/fragments/list_transactions.html:5 #: templates/recurring_transactions/fragments/list_transactions.html:5
#: templates/recurring_transactions/fragments/table.html:39 #: templates/recurring_transactions/fragments/table.html:39
#: templates/transactions/pages/transactions.html:5 #: templates/transactions/pages/transactions.html:5
@@ -829,7 +833,7 @@ msgstr ""
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134 #: apps/export_app/forms.py:38 apps/export_app/forms.py:134
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5 #: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109 #: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
#: templates/includes/sidebar.html:162 #: templates/includes/sidebar.html:186
msgid "Categories" msgid "Categories"
msgstr "" msgstr ""
@@ -837,19 +841,19 @@ msgstr ""
#: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40 #: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40
#: apps/rules/models.py:282 apps/transactions/filters.py:74 #: apps/rules/models.py:282 apps/transactions/filters.py:74
#: apps/transactions/forms.py:58 apps/transactions/forms.py:272 #: apps/transactions/forms.py:58 apps/transactions/forms.py:272
#: apps/transactions/forms.py:682 apps/transactions/forms.py:943 #: apps/transactions/forms.py:677 apps/transactions/forms.py:938
#: apps/transactions/models.py:273 apps/transactions/models.py:329 #: apps/transactions/models.py:273 apps/transactions/models.py:329
#: apps/transactions/models.py:506 apps/transactions/models.py:708 #: apps/transactions/models.py:506 apps/transactions/models.py:708
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5 #: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113 #: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
#: templates/includes/sidebar.html:174 #: templates/includes/sidebar.html:198
#: templates/insights/fragments/category_overview/index.html:49 #: templates/insights/fragments/category_overview/index.html:49
msgid "Entities" msgid "Entities"
msgstr "" msgstr ""
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140 #: apps/export_app/forms.py:56 apps/export_app/forms.py:140
#: apps/transactions/models.py:748 templates/includes/navbar.html:77 #: apps/transactions/models.py:748 templates/includes/navbar.html:77
#: templates/includes/sidebar.html:95 #: templates/includes/sidebar.html:120
#: templates/recurring_transactions/fragments/list.html:5 #: templates/recurring_transactions/fragments/list.html:5
#: templates/recurring_transactions/pages/index.html:4 #: templates/recurring_transactions/pages/index.html:4
msgid "Recurring Transactions" msgid "Recurring Transactions"
@@ -857,7 +861,7 @@ msgstr ""
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138 #: apps/export_app/forms.py:62 apps/export_app/forms.py:138
#: apps/transactions/models.py:524 templates/includes/navbar.html:75 #: apps/transactions/models.py:524 templates/includes/navbar.html:75
#: templates/includes/sidebar.html:89 #: templates/includes/sidebar.html:114
#: templates/installment_plans/fragments/list.html:5 #: templates/installment_plans/fragments/list.html:5
#: templates/installment_plans/pages/index.html:4 #: templates/installment_plans/pages/index.html:4
msgid "Installment Plans" msgid "Installment Plans"
@@ -866,12 +870,12 @@ msgstr ""
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143 #: apps/export_app/forms.py:74 apps/export_app/forms.py:143
#: templates/exchange_rates_services/fragments/list.html:6 #: templates/exchange_rates_services/fragments/list.html:6
#: templates/exchange_rates_services/pages/index.html:4 #: templates/exchange_rates_services/pages/index.html:4
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:230 #: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
msgid "Automatic Exchange Rates" msgid "Automatic Exchange Rates"
msgstr "" msgstr ""
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135 #: apps/export_app/forms.py:80 templates/includes/navbar.html:135
#: templates/includes/sidebar.html:210 templates/rules/fragments/list.html:5 #: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
#: templates/rules/pages/index.html:4 #: templates/rules/pages/index.html:4
msgid "Rules" msgid "Rules"
msgstr "" msgstr ""
@@ -941,7 +945,7 @@ msgstr ""
#: apps/import_app/forms.py:61 #: apps/import_app/forms.py:61
#: templates/import_app/fragments/profiles/list.html:62 #: templates/import_app/fragments/profiles/list.html:62
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:216 #: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -1012,8 +1016,8 @@ msgstr ""
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36 #: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
#: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189 #: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189
#: templates/insights/fragments/category_overview/index.html:88 #: templates/insights/fragments/category_overview/index.html:88
#: templates/insights/fragments/category_overview/index.html:393 #: templates/insights/fragments/category_overview/index.html:395
#: templates/insights/fragments/category_overview/index.html:422 #: templates/insights/fragments/category_overview/index.html:424
msgid "Uncategorized" msgid "Uncategorized"
msgstr "" msgstr ""
@@ -1113,7 +1117,7 @@ msgstr ""
#: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34 #: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34
#: apps/rules/models.py:258 apps/transactions/forms.py:70 #: apps/rules/models.py:258 apps/transactions/forms.py:70
#: apps/transactions/forms.py:486 apps/transactions/forms.py:688 #: apps/transactions/forms.py:481 apps/transactions/forms.py:683
#: apps/transactions/models.py:301 apps/transactions/models.py:484 #: apps/transactions/models.py:301 apps/transactions/models.py:484
#: apps/transactions/models.py:713 #: apps/transactions/models.py:713
msgid "Reference Date" msgid "Reference Date"
@@ -1131,7 +1135,7 @@ msgstr ""
#: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14 #: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14
#: apps/rules/models.py:36 apps/rules/models.py:266 #: apps/rules/models.py:36 apps/rules/models.py:266
#: apps/transactions/forms.py:490 apps/transactions/models.py:312 #: apps/transactions/forms.py:485 apps/transactions/models.py:312
#: apps/transactions/models.py:468 apps/transactions/models.py:697 #: apps/transactions/models.py:468 apps/transactions/models.py:697
#: apps/transactions/models.py:945 #: apps/transactions/models.py:945
msgid "Description" msgid "Description"
@@ -1324,6 +1328,7 @@ msgid "Any entity"
msgstr "" msgstr ""
#: apps/transactions/filters.py:202 #: apps/transactions/filters.py:202
#: templates/insights/fragments/category_overview/index.html:274
msgid "No entity" msgid "No entity"
msgstr "" msgstr ""
@@ -1339,50 +1344,50 @@ msgstr ""
msgid "Save and add another" msgid "Save and add another"
msgstr "" msgstr ""
#: apps/transactions/forms.py:300 apps/transactions/forms.py:506 #: apps/transactions/forms.py:300 apps/transactions/forms.py:501
msgid "Muted transactions won't be displayed on monthly summaries" msgid "Muted transactions won't be displayed on monthly summaries"
msgstr "" msgstr ""
#: apps/transactions/forms.py:442 #: apps/transactions/forms.py:437
msgid "From Amount" msgid "From Amount"
msgstr "" msgstr ""
#: apps/transactions/forms.py:447 #: apps/transactions/forms.py:442
msgid "To Amount" msgid "To Amount"
msgstr "" msgstr ""
#: apps/transactions/forms.py:503 apps/transactions/models.py:211 #: apps/transactions/forms.py:498 apps/transactions/models.py:211
#: apps/transactions/models.py:302 apps/transactions/models.py:935 #: apps/transactions/models.py:302 apps/transactions/models.py:935
msgid "Mute" msgid "Mute"
msgstr "" msgstr ""
#: apps/transactions/forms.py:572 #: apps/transactions/forms.py:567
#: templates/cotton/ui/quick_transactions_buttons.html:40 #: templates/cotton/ui/quick_transactions_buttons.html:40
#: templates/cotton/ui/transactions_fab.html:44 #: templates/cotton/ui/transactions_fab.html:44
msgid "Transfer" msgid "Transfer"
msgstr "" msgstr ""
#: apps/transactions/forms.py:822 #: apps/transactions/forms.py:817
msgid "Tag name" msgid "Tag name"
msgstr "" msgstr ""
#: apps/transactions/forms.py:854 #: apps/transactions/forms.py:849
msgid "Entity name" msgid "Entity name"
msgstr "" msgstr ""
#: apps/transactions/forms.py:886 #: apps/transactions/forms.py:881
msgid "Category name" msgid "Category name"
msgstr "" msgstr ""
#: apps/transactions/forms.py:888 #: apps/transactions/forms.py:883
msgid "Muted categories won't be displayed on monthly summaries" msgid "Muted categories won't be displayed on monthly summaries"
msgstr "" msgstr ""
#: apps/transactions/forms.py:1046 #: apps/transactions/forms.py:1041
msgid "future transactions" msgid "future transactions"
msgstr "" msgstr ""
#: apps/transactions/forms.py:1076 #: apps/transactions/forms.py:1071
msgid "End date should be after the start date" msgid "End date should be after the start date"
msgstr "" msgstr ""
@@ -1474,12 +1479,12 @@ msgstr ""
msgid "No description" msgid "No description"
msgstr "" msgstr ""
#: apps/transactions/models.py:455 templates/includes/sidebar.html:42 #: apps/transactions/models.py:455 templates/includes/sidebar.html:67
msgid "Yearly" msgid "Yearly"
msgstr "" msgstr ""
#: apps/transactions/models.py:456 apps/users/models.py:464 #: apps/transactions/models.py:456 apps/users/models.py:464
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:36 #: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
msgid "Monthly" msgid "Monthly"
msgstr "" msgstr ""
@@ -1578,7 +1583,7 @@ msgid "Quick Transaction"
msgstr "" msgstr ""
#: apps/transactions/models.py:980 templates/includes/navbar.html:73 #: apps/transactions/models.py:980 templates/includes/navbar.html:73
#: templates/includes/sidebar.html:83 #: templates/includes/sidebar.html:108
#: templates/quick_transactions/pages/index.html:5 #: templates/quick_transactions/pages/index.html:5
#: templates/quick_transactions/pages/index.html:11 #: templates/quick_transactions/pages/index.html:11
msgid "Quick Transactions" msgid "Quick Transactions"
@@ -1670,11 +1675,11 @@ msgid "Installment Plan deleted successfully"
msgstr "" msgstr ""
#: apps/transactions/views/quick_transactions.py:45 #: apps/transactions/views/quick_transactions.py:45
#: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:152 #: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:170
msgid "Item added successfully" msgid "Item added successfully"
msgstr "" msgstr ""
#: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:184 #: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:202
msgid "Item updated successfully" msgid "Item updated successfully"
msgstr "" msgstr ""
@@ -1789,8 +1794,10 @@ msgid "This account is deactivated"
msgstr "" msgstr ""
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89 #: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
#: templates/monthly_overview/pages/overview.html:153 #: templates/monthly_overview/pages/overview.html:140
#: templates/transactions/pages/transactions.html:28 #: templates/monthly_overview/pages/overview.html:186
#: templates/transactions/pages/transactions.html:14
#: templates/transactions/pages/transactions.html:60
msgid "Default" msgid "Default"
msgstr "" msgstr ""
@@ -1891,7 +1898,7 @@ msgid "All Transactions"
msgstr "" msgstr ""
#: apps/users/models.py:470 templates/includes/navbar.html:33 #: apps/users/models.py:470 templates/includes/navbar.html:33
#: templates/includes/sidebar.html:48 #: templates/includes/sidebar.html:73
msgid "Calendar" msgid "Calendar"
msgstr "" msgstr ""
@@ -1942,7 +1949,7 @@ msgstr ""
#: templates/account_groups/fragments/list.html:32 #: templates/account_groups/fragments/list.html:32
#: templates/accounts/fragments/list.html:37 #: templates/accounts/fragments/list.html:37
#: templates/categories/fragments/table.html:24 #: templates/categories/fragments/table.html:24
#: templates/currencies/fragments/list.html:33 #: templates/currencies/fragments/list.html:34
#: templates/dca/fragments/strategy/details.html:63 #: templates/dca/fragments/strategy/details.html:63
#: templates/entities/fragments/table.html:23 #: templates/entities/fragments/table.html:23
#: templates/exchange_rates/fragments/table.html:19 #: templates/exchange_rates/fragments/table.html:19
@@ -1963,7 +1970,7 @@ msgstr ""
#: templates/categories/fragments/table.html:29 #: templates/categories/fragments/table.html:29
#: templates/cotton/transaction/item.html:129 #: templates/cotton/transaction/item.html:129
#: templates/cotton/ui/transactions_action_bar.html:52 #: templates/cotton/ui/transactions_action_bar.html:52
#: templates/currencies/fragments/list.html:37 #: templates/currencies/fragments/list.html:38
#: templates/dca/fragments/strategy/details.html:67 #: templates/dca/fragments/strategy/details.html:67
#: templates/dca/fragments/strategy/list.html:36 #: templates/dca/fragments/strategy/list.html:36
#: templates/entities/fragments/table.html:28 #: templates/entities/fragments/table.html:28
@@ -1989,7 +1996,7 @@ msgstr ""
#: templates/cotton/transaction/item.html:192 #: templates/cotton/transaction/item.html:192
#: templates/cotton/ui/deleted_transactions_action_bar.html:55 #: templates/cotton/ui/deleted_transactions_action_bar.html:55
#: templates/cotton/ui/transactions_action_bar.html:90 #: templates/cotton/ui/transactions_action_bar.html:90
#: templates/currencies/fragments/list.html:44 #: templates/currencies/fragments/list.html:45
#: templates/dca/fragments/strategy/details.html:75 #: templates/dca/fragments/strategy/details.html:75
#: templates/dca/fragments/strategy/list.html:44 #: templates/dca/fragments/strategy/list.html:44
#: templates/entities/fragments/table.html:36 #: templates/entities/fragments/table.html:36
@@ -2016,7 +2023,7 @@ msgstr ""
#: templates/cotton/transaction/item.html:196 #: templates/cotton/transaction/item.html:196
#: templates/cotton/ui/deleted_transactions_action_bar.html:57 #: templates/cotton/ui/deleted_transactions_action_bar.html:57
#: templates/cotton/ui/transactions_action_bar.html:92 #: templates/cotton/ui/transactions_action_bar.html:92
#: templates/currencies/fragments/list.html:48 #: templates/currencies/fragments/list.html:49
#: templates/dca/fragments/strategy/details.html:80 #: templates/dca/fragments/strategy/details.html:80
#: templates/dca/fragments/strategy/list.html:48 #: templates/dca/fragments/strategy/list.html:48
#: templates/entities/fragments/table.html:40 #: templates/entities/fragments/table.html:40
@@ -2046,7 +2053,7 @@ msgstr ""
#: templates/cotton/transaction/item.html:197 #: templates/cotton/transaction/item.html:197
#: templates/cotton/ui/deleted_transactions_action_bar.html:58 #: templates/cotton/ui/deleted_transactions_action_bar.html:58
#: templates/cotton/ui/transactions_action_bar.html:93 #: templates/cotton/ui/transactions_action_bar.html:93
#: templates/currencies/fragments/list.html:49 #: templates/currencies/fragments/list.html:50
#: templates/dca/fragments/strategy/details.html:81 #: templates/dca/fragments/strategy/details.html:81
#: templates/dca/fragments/strategy/list.html:49 #: templates/dca/fragments/strategy/list.html:49
#: templates/entities/fragments/table.html:41 #: templates/entities/fragments/table.html:41
@@ -2066,7 +2073,7 @@ msgstr ""
#: templates/categories/fragments/table.html:43 #: templates/categories/fragments/table.html:43
#: templates/cotton/transaction/item.html:142 #: templates/cotton/transaction/item.html:142
#: templates/cotton/transaction/item.html:198 #: templates/cotton/transaction/item.html:198
#: templates/currencies/fragments/list.html:50 #: templates/currencies/fragments/list.html:51
#: templates/dca/fragments/strategy/details.html:82 #: templates/dca/fragments/strategy/details.html:82
#: templates/dca/fragments/strategy/list.html:50 #: templates/dca/fragments/strategy/list.html:50
#: templates/entities/fragments/table.html:42 #: templates/entities/fragments/table.html:42
@@ -2212,7 +2219,7 @@ msgid "Muted"
msgstr "" msgstr ""
#: templates/categories/fragments/table.html:75 #: templates/categories/fragments/table.html:75
#: templates/insights/fragments/category_overview/index.html:538 #: templates/insights/fragments/category_overview/index.html:540
msgid "No categories" msgid "No categories"
msgstr "" msgstr ""
@@ -2221,13 +2228,14 @@ msgid "Pick a month"
msgstr "" msgstr ""
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5 #: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
#: templates/includes/sidebar.html:28 #: templates/includes/sidebar.html:53
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: templates/cotton/config/search.html:6 #: templates/cotton/config/search.html:6
#: templates/import_app/fragments/profiles/list_presets.html:13 #: templates/import_app/fragments/profiles/list_presets.html:13
#: templates/monthly_overview/pages/overview.html:177 #: templates/monthly_overview/pages/overview.html:160
#: templates/transactions/pages/transactions.html:34
msgid "Search" msgid "Search"
msgstr "" msgstr ""
@@ -2412,7 +2420,7 @@ msgstr ""
msgid "Code" msgid "Code"
msgstr "" msgstr ""
#: templates/currencies/fragments/list.html:61 #: templates/currencies/fragments/list.html:63
msgid "No currencies" msgid "No currencies"
msgstr "" msgstr ""
@@ -2450,7 +2458,7 @@ msgstr ""
#: templates/dca/fragments/strategy/details.html:125 #: templates/dca/fragments/strategy/details.html:125
#: templates/monthly_overview/fragments/list.html:47 #: templates/monthly_overview/fragments/list.html:47
#: templates/transactions/fragments/list_all.html:40 #: templates/transactions/fragments/list_all.html:47
msgid "Try adding one" msgid "Try adding one"
msgstr "" msgstr ""
@@ -2552,7 +2560,7 @@ msgid "Edit exchange rate"
msgstr "" msgstr ""
#: templates/exchange_rates/fragments/list.html:25 #: templates/exchange_rates/fragments/list.html:25
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:68 #: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
#: templates/installment_plans/fragments/list.html:21 #: templates/installment_plans/fragments/list.html:21
#: templates/yearly_overview/pages/overview_by_account.html:105 #: templates/yearly_overview/pages/overview_by_account.html:105
#: templates/yearly_overview/pages/overview_by_currency.html:107 #: templates/yearly_overview/pages/overview_by_currency.html:107
@@ -2576,7 +2584,7 @@ msgstr ""
#: templates/exchange_rates/fragments/table.html:58 #: templates/exchange_rates/fragments/table.html:58
#: templates/exchange_rates_services/fragments/table.html:58 #: templates/exchange_rates_services/fragments/table.html:58
#: templates/transactions/fragments/list_all.html:47 #: templates/transactions/fragments/list_all.html:54
msgid "Page navigation" msgid "Page navigation"
msgstr "" msgstr ""
@@ -2609,7 +2617,7 @@ msgid "No services configured"
msgstr "" msgstr ""
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140 #: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
#: templates/includes/sidebar.html:223 #: templates/includes/sidebar.html:247
msgid "Export and Restore" msgid "Export and Restore"
msgstr "" msgstr ""
@@ -2705,7 +2713,7 @@ msgstr ""
msgid "Overview" msgid "Overview"
msgstr "" msgstr ""
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:60 #: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
msgid "Net Worth" msgid "Net Worth"
msgstr "" msgstr ""
@@ -2715,62 +2723,62 @@ msgstr ""
msgid "Current" msgid "Current"
msgstr "" msgstr ""
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:54 #: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
#: templates/insights/pages/index.html:5 #: templates/insights/pages/index.html:5
msgid "Insights" msgid "Insights"
msgstr "" msgstr ""
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:76 #: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
msgid "Trash Can" msgid "Trash Can"
msgstr "" msgstr ""
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101 #: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
msgid "Tools" msgid "Tools"
msgstr "" msgstr ""
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:103 #: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
msgid "Dollar Cost Average Tracker" msgid "Dollar Cost Average Tracker"
msgstr "" msgstr ""
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:109 #: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
#: templates/mini_tools/unit_price_calculator.html:5 #: templates/mini_tools/unit_price_calculator.html:5
#: templates/mini_tools/unit_price_calculator.html:10 #: templates/mini_tools/unit_price_calculator.html:10
msgid "Unit Price Calculator" msgid "Unit Price Calculator"
msgstr "" msgstr ""
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:115 #: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
#: templates/mini_tools/currency_converter/currency_converter.html:8 #: templates/mini_tools/currency_converter/currency_converter.html:8
#: templates/mini_tools/currency_converter/currency_converter.html:15 #: templates/mini_tools/currency_converter/currency_converter.html:15
msgid "Currency Converter" msgid "Currency Converter"
msgstr "" msgstr ""
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134 #: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
#: templates/includes/sidebar.html:147 #: templates/includes/sidebar.html:171
msgid "Management" msgid "Management"
msgstr "" msgstr ""
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208 #: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
msgid "Automation" msgid "Automation"
msgstr "" msgstr ""
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:237 #: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
msgid "Admin" msgid "Admin"
msgstr "" msgstr ""
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:246 #: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
msgid "Only use this if you know what you're doing" msgid "Only use this if you know what you're doing"
msgstr "" msgstr ""
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:245 #: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
msgid "Django Admin" msgid "Django Admin"
msgstr "" msgstr ""
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:260 #: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
msgid "is available" msgid "is available"
msgstr "" msgstr ""
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177 #: templates/includes/navbar.html:174 templates/includes/navbar.html:177
#: templates/includes/sidebar.html:266 #: templates/includes/sidebar.html:290
msgid "Calculator" msgid "Calculator"
msgstr "" msgstr ""
@@ -2865,7 +2873,7 @@ msgstr ""
msgid "Total" msgid "Total"
msgstr "" msgstr ""
#: templates/insights/fragments/category_overview/index.html:515 #: templates/insights/fragments/category_overview/index.html:517
msgid "Final Total" msgid "Final Total"
msgstr "" msgstr ""
@@ -3070,26 +3078,30 @@ msgstr ""
msgid "Summary" msgid "Summary"
msgstr "" msgstr ""
#: templates/monthly_overview/pages/overview.html:142 #: templates/monthly_overview/pages/overview.html:141
#: templates/transactions/pages/transactions.html:17 #: templates/monthly_overview/pages/overview.html:195
msgid "Filter transactions" #: templates/transactions/pages/transactions.html:15
msgstr "" #: templates/transactions/pages/transactions.html:69
#: templates/monthly_overview/pages/overview.html:148
#: templates/transactions/pages/transactions.html:23
msgid "Order by"
msgstr ""
#: templates/monthly_overview/pages/overview.html:155
#: templates/transactions/pages/transactions.html:30
msgid "Oldest first" msgid "Oldest first"
msgstr "" msgstr ""
#: templates/monthly_overview/pages/overview.html:157 #: templates/monthly_overview/pages/overview.html:142
#: templates/transactions/pages/transactions.html:32 #: templates/monthly_overview/pages/overview.html:204
#: templates/transactions/pages/transactions.html:16
#: templates/transactions/pages/transactions.html:78
msgid "Newest first" msgid "Newest first"
msgstr "" msgstr ""
#: templates/monthly_overview/pages/overview.html:151
#: templates/transactions/pages/transactions.html:25
msgid "Filter transactions"
msgstr ""
#: templates/monthly_overview/pages/overview.html:176
#: templates/transactions/pages/transactions.html:50
msgid "Order by"
msgstr ""
#: templates/net_worth/net_worth.html:40 #: templates/net_worth/net_worth.html:40
#: templates/yearly_overview/pages/overview_by_currency.html:9 #: templates/yearly_overview/pages/overview_by_currency.html:9
msgid "By currency" msgid "By currency"
@@ -3297,7 +3309,7 @@ msgstr ""
msgid "transactions" msgid "transactions"
msgstr "" msgstr ""
#: templates/transactions/fragments/list_all.html:39 #: templates/transactions/fragments/list_all.html:46
msgid "No transactions found" msgid "No transactions found"
msgstr "" msgstr ""
+167 -155
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-08-17 06:55+0000\n" "POT-Creation-Date: 2025-08-30 02:09+0000\n"
"PO-Revision-Date: 2025-05-12 14:16+0000\n" "PO-Revision-Date: 2025-05-12 14:16+0000\n"
"Last-Translator: Felix <xnovaua@gmail.com>\n" "Last-Translator: Felix <xnovaua@gmail.com>\n"
"Language-Team: Ukrainian <https://translations.herculino.com/projects/" "Language-Team: Ukrainian <https://translations.herculino.com/projects/"
@@ -20,32 +20,32 @@ msgstr ""
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.11.3\n" "X-Generator: Weblate 5.11.3\n"
#: apps/accounts/forms.py:24 #: apps/accounts/forms.py:26
msgid "Group name" msgid "Group name"
msgstr "Назва групи" msgstr "Назва групи"
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98 #: apps/accounts/forms.py:42 apps/accounts/forms.py:118
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91 #: apps/currencies/forms.py:55 apps/currencies/forms.py:93
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224 #: apps/currencies/forms.py:146 apps/dca/forms.py:49 apps/dca/forms.py:224
#: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93 #: apps/import_app/forms.py:34 apps/rules/forms.py:51 apps/rules/forms.py:93
#: apps/rules/forms.py:365 apps/transactions/forms.py:204 #: apps/rules/forms.py:365 apps/transactions/forms.py:204
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421 #: apps/transactions/forms.py:369 apps/transactions/forms.py:416
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836 #: apps/transactions/forms.py:788 apps/transactions/forms.py:831
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903 #: apps/transactions/forms.py:863 apps/transactions/forms.py:898
#: apps/transactions/forms.py:1057 apps/users/forms.py:217 #: apps/transactions/forms.py:1052 apps/users/forms.py:217
#: apps/users/forms.py:379 #: apps/users/forms.py:379
msgid "Update" msgid "Update"
msgstr "Оновлення" msgstr "Оновлення"
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106 #: apps/accounts/forms.py:50 apps/accounts/forms.py:126
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61 #: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152 #: apps/currencies/forms.py:101 apps/currencies/forms.py:154
#: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42 #: apps/dca/forms.py:57 apps/dca/forms.py:232 apps/import_app/forms.py:42
#: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373 #: apps/rules/forms.py:59 apps/rules/forms.py:101 apps/rules/forms.py:373
#: apps/transactions/forms.py:189 apps/transactions/forms.py:213 #: apps/transactions/forms.py:189 apps/transactions/forms.py:213
#: apps/transactions/forms.py:383 apps/transactions/forms.py:801 #: apps/transactions/forms.py:378 apps/transactions/forms.py:796
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876 #: apps/transactions/forms.py:839 apps/transactions/forms.py:871
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065 #: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
#: apps/users/forms.py:225 apps/users/forms.py:387 #: apps/users/forms.py:225 apps/users/forms.py:387
#: templates/account_groups/fragments/list.html:9 #: templates/account_groups/fragments/list.html:9
#: templates/accounts/fragments/list.html:9 #: templates/accounts/fragments/list.html:9
@@ -67,37 +67,37 @@ msgstr "Оновлення"
msgid "Add" msgid "Add"
msgstr "Додати" msgstr "Додати"
#: apps/accounts/forms.py:57 templates/accounts/fragments/list.html:26 #: apps/accounts/forms.py:59 templates/accounts/fragments/list.html:26
msgid "Group" msgid "Group"
msgstr "Група" msgstr "Група"
#: apps/accounts/forms.py:115 #: apps/accounts/forms.py:135
msgid "New balance" msgid "New balance"
msgstr "Новий баланс" msgstr "Новий баланс"
#: apps/accounts/forms.py:121 apps/dca/forms.py:85 apps/dca/forms.py:92 #: apps/accounts/forms.py:141 apps/dca/forms.py:85 apps/dca/forms.py:92
#: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189 #: apps/insights/forms.py:118 apps/rules/forms.py:174 apps/rules/forms.py:189
#: apps/rules/models.py:38 apps/rules/models.py:286 #: apps/rules/models.py:38 apps/rules/models.py:286
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256 #: apps/transactions/forms.py:42 apps/transactions/forms.py:256
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462 #: apps/transactions/forms.py:450 apps/transactions/forms.py:457
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935 #: apps/transactions/forms.py:669 apps/transactions/forms.py:930
#: apps/transactions/models.py:318 apps/transactions/models.py:501 #: apps/transactions/models.py:318 apps/transactions/models.py:501
#: apps/transactions/models.py:701 apps/transactions/models.py:951 #: apps/transactions/models.py:701 apps/transactions/models.py:951
#: templates/insights/fragments/category_overview/index.html:78 #: templates/insights/fragments/category_overview/index.html:78
#: templates/insights/fragments/category_overview/index.html:528 #: templates/insights/fragments/category_overview/index.html:530
msgid "Category" msgid "Category"
msgstr "Категорія" msgstr "Категорія"
#: apps/accounts/forms.py:128 apps/dca/forms.py:101 apps/dca/forms.py:109 #: apps/accounts/forms.py:148 apps/dca/forms.py:101 apps/dca/forms.py:109
#: apps/export_app/forms.py:44 apps/export_app/forms.py:135 #: apps/export_app/forms.py:44 apps/export_app/forms.py:135
#: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39 #: apps/rules/forms.py:177 apps/rules/forms.py:186 apps/rules/models.py:39
#: apps/rules/models.py:290 apps/transactions/filters.py:69 #: apps/rules/models.py:290 apps/transactions/filters.py:69
#: apps/transactions/forms.py:50 apps/transactions/forms.py:264 #: apps/transactions/forms.py:50 apps/transactions/forms.py:264
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479 #: apps/transactions/forms.py:466 apps/transactions/forms.py:474
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928 #: apps/transactions/forms.py:662 apps/transactions/forms.py:923
#: apps/transactions/models.py:324 apps/transactions/models.py:503 #: apps/transactions/models.py:324 apps/transactions/models.py:503
#: apps/transactions/models.py:705 apps/transactions/models.py:957 #: apps/transactions/models.py:705 apps/transactions/models.py:957
#: templates/includes/navbar.html:111 templates/includes/sidebar.html:168 #: templates/includes/navbar.html:111 templates/includes/sidebar.html:192
#: templates/insights/fragments/category_overview/index.html:36 #: templates/insights/fragments/category_overview/index.html:36
#: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4 #: templates/tags/fragments/list.html:5 templates/tags/pages/index.html:4
msgid "Tags" msgid "Tags"
@@ -129,11 +129,11 @@ msgstr "Група рахунків"
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5 #: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
#: templates/account_groups/pages/index.html:4 #: templates/account_groups/pages/index.html:4
#: templates/includes/navbar.html:121 templates/includes/sidebar.html:188 #: templates/includes/navbar.html:121 templates/includes/sidebar.html:212
msgid "Account Groups" msgid "Account Groups"
msgstr "Групи рахунків" msgstr "Групи рахунків"
#: apps/accounts/models.py:39 apps/currencies/models.py:39 #: apps/accounts/models.py:39 apps/currencies/models.py:44
#: templates/accounts/fragments/list.html:27 #: templates/accounts/fragments/list.html:27
#: templates/yearly_overview/pages/overview_by_account.html:18 #: templates/yearly_overview/pages/overview_by_account.html:18
#: templates/yearly_overview/pages/overview_by_currency.html:20 #: templates/yearly_overview/pages/overview_by_currency.html:20
@@ -159,8 +159,10 @@ msgid ""
msgstr "" msgstr ""
"Рахунки активів враховуються у вашій чистій вартості, але не у вашому місяці." "Рахунки активів враховуються у вашій чистій вартості, але не у вашому місяці."
#: apps/accounts/models.py:62 templates/accounts/fragments/list.html:30 #: apps/accounts/models.py:62 apps/currencies/models.py:37
#: templates/accounts/fragments/list.html:30
#: templates/categories/fragments/list.html:24 #: templates/categories/fragments/list.html:24
#: templates/currencies/fragments/list.html:27
#: templates/entities/fragments/list.html:24 #: templates/entities/fragments/list.html:24
#: templates/tags/fragments/list.html:24 #: templates/tags/fragments/list.html:24
msgid "Archived" msgid "Archived"
@@ -175,7 +177,7 @@ msgstr ""
#: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179 #: apps/accounts/models.py:75 apps/rules/forms.py:166 apps/rules/forms.py:179
#: apps/rules/models.py:30 apps/rules/models.py:242 #: apps/rules/models.py:30 apps/rules/models.py:242
#: apps/transactions/forms.py:62 apps/transactions/forms.py:276 #: apps/transactions/forms.py:62 apps/transactions/forms.py:276
#: apps/transactions/forms.py:659 apps/transactions/forms.py:920 #: apps/transactions/forms.py:654 apps/transactions/forms.py:915
#: apps/transactions/models.py:290 apps/transactions/models.py:461 #: apps/transactions/models.py:290 apps/transactions/models.py:461
#: apps/transactions/models.py:683 apps/transactions/models.py:925 #: apps/transactions/models.py:683 apps/transactions/models.py:925
#: templates/installment_plans/fragments/table.html:17 #: templates/installment_plans/fragments/table.html:17
@@ -190,11 +192,11 @@ msgstr "Рахунок"
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53 #: apps/export_app/forms.py:132 apps/transactions/filters.py:53
#: templates/accounts/fragments/list.html:5 #: templates/accounts/fragments/list.html:5
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117 #: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180 #: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
#: templates/includes/sidebar.html:182 #: templates/includes/sidebar.html:206
#: templates/monthly_overview/pages/overview.html:94 #: templates/monthly_overview/pages/overview.html:94
#: templates/transactions/fragments/summary.html:12 #: templates/transactions/fragments/summary.html:12
#: templates/transactions/pages/transactions.html:81 #: templates/transactions/pages/transactions.html:137
msgid "Accounts" msgid "Accounts"
msgstr "Рахунки" msgstr "Рахунки"
@@ -483,8 +485,10 @@ msgstr "Видалити"
#: apps/common/widgets/tom_select.py:15 #: apps/common/widgets/tom_select.py:15
#: templates/mini_tools/unit_price_calculator.html:174 #: templates/mini_tools/unit_price_calculator.html:174
#: templates/monthly_overview/pages/overview.html:172 #: templates/monthly_overview/pages/overview.html:215
#: templates/transactions/pages/transactions.html:47 #: templates/monthly_overview/pages/overview.html:227
#: templates/transactions/pages/transactions.html:89
#: templates/transactions/pages/transactions.html:101
msgid "Clear" msgid "Clear"
msgstr "Чисто" msgstr "Чисто"
@@ -500,9 +504,9 @@ msgstr "Префікс"
msgid "Suffix" msgid "Suffix"
msgstr "Суфікс" msgstr "Суфікс"
#: apps/currencies/forms.py:69 apps/dca/models.py:158 apps/rules/forms.py:169 #: apps/currencies/forms.py:71 apps/dca/models.py:158 apps/rules/forms.py:169
#: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254 #: apps/rules/forms.py:182 apps/rules/models.py:33 apps/rules/models.py:254
#: apps/transactions/forms.py:66 apps/transactions/forms.py:483 #: apps/transactions/forms.py:66 apps/transactions/forms.py:478
#: apps/transactions/models.py:300 #: apps/transactions/models.py:300
#: templates/dca/fragments/strategy/details.html:52 #: templates/dca/fragments/strategy/details.html:52
#: templates/exchange_rates/fragments/table.html:10 #: templates/exchange_rates/fragments/table.html:10
@@ -522,75 +526,75 @@ msgstr "Назва валюти"
msgid "Decimal Places" msgid "Decimal Places"
msgstr "Десяткові знаки" msgstr "Десяткові знаки"
#: apps/currencies/models.py:40 apps/export_app/forms.py:26 #: apps/currencies/models.py:45 apps/export_app/forms.py:26
#: apps/export_app/forms.py:133 apps/transactions/filters.py:60 #: apps/export_app/forms.py:133 apps/transactions/filters.py:60
#: templates/currencies/fragments/list.html:5 #: templates/currencies/fragments/list.html:5
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125 #: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194 #: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
#: templates/includes/sidebar.html:196 #: templates/includes/sidebar.html:220
#: templates/monthly_overview/pages/overview.html:81 #: templates/monthly_overview/pages/overview.html:81
#: templates/transactions/fragments/summary.html:8 #: templates/transactions/fragments/summary.html:8
#: templates/transactions/pages/transactions.html:68 #: templates/transactions/pages/transactions.html:124
msgid "Currencies" msgid "Currencies"
msgstr "Валюти" msgstr "Валюти"
#: apps/currencies/models.py:49 #: apps/currencies/models.py:54
msgid "Currency cannot have itself as exchange currency." msgid "Currency cannot have itself as exchange currency."
msgstr "Валюта не може бути валютою обміну." msgstr "Валюта не може бути валютою обміну."
#: apps/currencies/models.py:60 #: apps/currencies/models.py:65
msgid "From Currency" msgid "From Currency"
msgstr "З валюти" msgstr "З валюти"
#: apps/currencies/models.py:66 #: apps/currencies/models.py:71
msgid "To Currency" msgid "To Currency"
msgstr "У валюту" msgstr "У валюту"
#: apps/currencies/models.py:69 apps/currencies/models.py:76 #: apps/currencies/models.py:74 apps/currencies/models.py:81
msgid "Exchange Rate" msgid "Exchange Rate"
msgstr "Обмінний курс" msgstr "Обмінний курс"
#: apps/currencies/models.py:71 #: apps/currencies/models.py:76
msgid "Date and Time" msgid "Date and Time"
msgstr "Дата і час" msgstr "Дата і час"
#: apps/currencies/models.py:73 apps/users/models.py:12 #: apps/currencies/models.py:78 apps/users/models.py:12
#: apps/users/models.py:497 #: apps/users/models.py:497
msgid "Auto" msgid "Auto"
msgstr "" msgstr ""
#: apps/currencies/models.py:77 apps/export_app/forms.py:68 #: apps/currencies/models.py:82 apps/export_app/forms.py:68
#: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6 #: apps/export_app/forms.py:145 templates/exchange_rates/fragments/list.html:6
#: templates/exchange_rates/pages/index.html:4 #: templates/exchange_rates/pages/index.html:4
#: templates/includes/navbar.html:129 templates/includes/sidebar.html:202 #: templates/includes/navbar.html:129 templates/includes/sidebar.html:226
msgid "Exchange Rates" msgid "Exchange Rates"
msgstr "Обмінні курси" msgstr "Обмінні курси"
#: apps/currencies/models.py:89 #: apps/currencies/models.py:94
msgid "From and To currencies cannot be the same." msgid "From and To currencies cannot be the same."
msgstr "Валюти «Від» і «До» не можуть бути однаковими." msgstr "Валюти «Від» і «До» не можуть бути однаковими."
#: apps/currencies/models.py:105 #: apps/currencies/models.py:110
msgid "On" msgid "On"
msgstr "On" msgstr "On"
#: apps/currencies/models.py:106 #: apps/currencies/models.py:111
msgid "Every X hours" msgid "Every X hours"
msgstr "Кожні Х годин" msgstr "Кожні Х годин"
#: apps/currencies/models.py:107 #: apps/currencies/models.py:112
msgid "Not on" msgid "Not on"
msgstr "Not on" msgstr "Not on"
#: apps/currencies/models.py:109 #: apps/currencies/models.py:114
msgid "Service Name" msgid "Service Name"
msgstr "Назва сервісу" msgstr "Назва сервісу"
#: apps/currencies/models.py:111 #: apps/currencies/models.py:116
msgid "Service Type" msgid "Service Type"
msgstr "Тип сервісу" msgstr "Тип сервісу"
#: apps/currencies/models.py:113 apps/transactions/models.py:214 #: apps/currencies/models.py:118 apps/transactions/models.py:214
#: apps/transactions/models.py:238 apps/transactions/models.py:262 #: apps/transactions/models.py:238 apps/transactions/models.py:262
#: templates/categories/fragments/list.html:21 #: templates/categories/fragments/list.html:21
#: templates/entities/fragments/list.html:21 #: templates/entities/fragments/list.html:21
@@ -599,79 +603,79 @@ msgstr "Тип сервісу"
msgid "Active" msgid "Active"
msgstr "Активний" msgstr "Активний"
#: apps/currencies/models.py:118 #: apps/currencies/models.py:123
msgid "API Key" msgid "API Key"
msgstr "Ключ API" msgstr "Ключ API"
#: apps/currencies/models.py:119 #: apps/currencies/models.py:124
msgid "API key for the service (if required)" msgid "API key for the service (if required)"
msgstr "API-ключ для сервісу (якщо потрібно)" msgstr "API-ключ для сервісу (якщо потрібно)"
#: apps/currencies/models.py:124 #: apps/currencies/models.py:129
msgid "Interval Type" msgid "Interval Type"
msgstr "Тип інтервалу" msgstr "Тип інтервалу"
#: apps/currencies/models.py:128 #: apps/currencies/models.py:133
msgid "Interval" msgid "Interval"
msgstr "Інтервал" msgstr "Інтервал"
#: apps/currencies/models.py:131 #: apps/currencies/models.py:136
msgid "Last Successful Fetch" msgid "Last Successful Fetch"
msgstr "Остання успішна вибірка" msgstr "Остання успішна вибірка"
#: apps/currencies/models.py:136 #: apps/currencies/models.py:141
msgid "Target Currencies" msgid "Target Currencies"
msgstr "" msgstr ""
#: apps/currencies/models.py:138 #: apps/currencies/models.py:143
msgid "" msgid ""
"Select currencies to fetch exchange rates for. Rates will be fetched for " "Select currencies to fetch exchange rates for. Rates will be fetched for "
"each currency against their set exchange currency." "each currency against their set exchange currency."
msgstr "" msgstr ""
#: apps/currencies/models.py:146 #: apps/currencies/models.py:151
msgid "Target Accounts" msgid "Target Accounts"
msgstr "" msgstr ""
#: apps/currencies/models.py:148 #: apps/currencies/models.py:153
msgid "" msgid ""
"Select accounts to fetch exchange rates for. Rates will be fetched for each " "Select accounts to fetch exchange rates for. Rates will be fetched for each "
"account's currency against their set exchange currency." "account's currency against their set exchange currency."
msgstr "" msgstr ""
#: apps/currencies/models.py:155 #: apps/currencies/models.py:160
#, fuzzy #, fuzzy
#| msgid "Exchange Rate" #| msgid "Exchange Rate"
msgid "Single exchange rate" msgid "Single exchange rate"
msgstr "Обмінний курс" msgstr "Обмінний курс"
#: apps/currencies/models.py:158 #: apps/currencies/models.py:163
msgid "Create one exchange rate and keep updating it. Avoids database clutter." msgid "Create one exchange rate and keep updating it. Avoids database clutter."
msgstr "" msgstr ""
#: apps/currencies/models.py:163 #: apps/currencies/models.py:168
msgid "Exchange Rate Service" msgid "Exchange Rate Service"
msgstr "" msgstr ""
#: apps/currencies/models.py:164 #: apps/currencies/models.py:169
msgid "Exchange Rate Services" msgid "Exchange Rate Services"
msgstr "" msgstr ""
#: apps/currencies/models.py:216 #: apps/currencies/models.py:221
msgid "'Every X hours' interval type requires a positive integer." msgid "'Every X hours' interval type requires a positive integer."
msgstr "" msgstr ""
#: apps/currencies/models.py:225 #: apps/currencies/models.py:230
msgid "'Every X hours' interval must be between 1 and 24." msgid "'Every X hours' interval must be between 1 and 24."
msgstr "" msgstr ""
#: apps/currencies/models.py:239 #: apps/currencies/models.py:244
msgid "" msgid ""
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., " "Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
"'1-5,8,10-12')." "'1-5,8,10-12')."
msgstr "" msgstr ""
#: apps/currencies/models.py:250 #: apps/currencies/models.py:255
msgid "" msgid ""
"Invalid format. Please check the requirements for your selected interval " "Invalid format. Please check the requirements for your selected interval "
"type." "type."
@@ -721,11 +725,11 @@ msgstr ""
msgid "Create transaction" msgid "Create transaction"
msgstr "" msgstr ""
#: apps/dca/forms.py:70 apps/transactions/forms.py:430 #: apps/dca/forms.py:70 apps/transactions/forms.py:425
msgid "From Account" msgid "From Account"
msgstr "" msgstr ""
#: apps/dca/forms.py:76 apps/transactions/forms.py:435 #: apps/dca/forms.py:76 apps/transactions/forms.py:430
msgid "To Account" msgid "To Account"
msgstr "" msgstr ""
@@ -750,7 +754,7 @@ msgstr ""
msgid "You must provide an account." msgid "You must provide an account."
msgstr "" msgstr ""
#: apps/dca/forms.py:312 apps/transactions/forms.py:605 #: apps/dca/forms.py:312 apps/transactions/forms.py:600
msgid "From and To accounts must be different." msgid "From and To accounts must be different."
msgstr "" msgstr ""
@@ -769,7 +773,7 @@ msgstr ""
#: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173 #: apps/dca/models.py:26 apps/dca/models.py:181 apps/rules/forms.py:173
#: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270 #: apps/rules/forms.py:188 apps/rules/models.py:37 apps/rules/models.py:270
#: apps/transactions/forms.py:499 apps/transactions/models.py:314 #: apps/transactions/forms.py:494 apps/transactions/models.py:314
#: apps/transactions/models.py:510 apps/transactions/models.py:711 #: apps/transactions/models.py:510 apps/transactions/models.py:711
#: apps/transactions/models.py:947 #: apps/transactions/models.py:947
msgid "Notes" msgid "Notes"
@@ -828,15 +832,15 @@ msgid "Entry deleted successfully"
msgstr "" msgstr ""
#: apps/export_app/forms.py:14 apps/export_app/forms.py:131 #: apps/export_app/forms.py:14 apps/export_app/forms.py:131
#: templates/includes/navbar.html:150 templates/includes/sidebar.html:239 #: templates/includes/navbar.html:150 templates/includes/sidebar.html:263
#: templates/users/fragments/list.html:6 templates/users/pages/index.html:4 #: templates/users/fragments/list.html:6 templates/users/pages/index.html:4
msgid "Users" msgid "Users"
msgstr "" msgstr ""
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137 #: apps/export_app/forms.py:32 apps/export_app/forms.py:137
#: apps/transactions/models.py:375 templates/includes/navbar.html:58 #: apps/transactions/models.py:375 templates/includes/navbar.html:58
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66 #: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
#: templates/includes/sidebar.html:160 #: templates/includes/sidebar.html:184
#: templates/recurring_transactions/fragments/list_transactions.html:5 #: templates/recurring_transactions/fragments/list_transactions.html:5
#: templates/recurring_transactions/fragments/table.html:39 #: templates/recurring_transactions/fragments/table.html:39
#: templates/transactions/pages/transactions.html:5 #: templates/transactions/pages/transactions.html:5
@@ -846,7 +850,7 @@ msgstr ""
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134 #: apps/export_app/forms.py:38 apps/export_app/forms.py:134
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5 #: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109 #: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
#: templates/includes/sidebar.html:162 #: templates/includes/sidebar.html:186
msgid "Categories" msgid "Categories"
msgstr "" msgstr ""
@@ -854,19 +858,19 @@ msgstr ""
#: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40 #: apps/rules/forms.py:178 apps/rules/forms.py:187 apps/rules/models.py:40
#: apps/rules/models.py:282 apps/transactions/filters.py:74 #: apps/rules/models.py:282 apps/transactions/filters.py:74
#: apps/transactions/forms.py:58 apps/transactions/forms.py:272 #: apps/transactions/forms.py:58 apps/transactions/forms.py:272
#: apps/transactions/forms.py:682 apps/transactions/forms.py:943 #: apps/transactions/forms.py:677 apps/transactions/forms.py:938
#: apps/transactions/models.py:273 apps/transactions/models.py:329 #: apps/transactions/models.py:273 apps/transactions/models.py:329
#: apps/transactions/models.py:506 apps/transactions/models.py:708 #: apps/transactions/models.py:506 apps/transactions/models.py:708
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5 #: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
#: templates/entities/pages/index.html:4 templates/includes/navbar.html:113 #: templates/entities/pages/index.html:4 templates/includes/navbar.html:113
#: templates/includes/sidebar.html:174 #: templates/includes/sidebar.html:198
#: templates/insights/fragments/category_overview/index.html:49 #: templates/insights/fragments/category_overview/index.html:49
msgid "Entities" msgid "Entities"
msgstr "" msgstr ""
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140 #: apps/export_app/forms.py:56 apps/export_app/forms.py:140
#: apps/transactions/models.py:748 templates/includes/navbar.html:77 #: apps/transactions/models.py:748 templates/includes/navbar.html:77
#: templates/includes/sidebar.html:95 #: templates/includes/sidebar.html:120
#: templates/recurring_transactions/fragments/list.html:5 #: templates/recurring_transactions/fragments/list.html:5
#: templates/recurring_transactions/pages/index.html:4 #: templates/recurring_transactions/pages/index.html:4
msgid "Recurring Transactions" msgid "Recurring Transactions"
@@ -874,7 +878,7 @@ msgstr ""
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138 #: apps/export_app/forms.py:62 apps/export_app/forms.py:138
#: apps/transactions/models.py:524 templates/includes/navbar.html:75 #: apps/transactions/models.py:524 templates/includes/navbar.html:75
#: templates/includes/sidebar.html:89 #: templates/includes/sidebar.html:114
#: templates/installment_plans/fragments/list.html:5 #: templates/installment_plans/fragments/list.html:5
#: templates/installment_plans/pages/index.html:4 #: templates/installment_plans/pages/index.html:4
msgid "Installment Plans" msgid "Installment Plans"
@@ -883,12 +887,12 @@ msgstr ""
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143 #: apps/export_app/forms.py:74 apps/export_app/forms.py:143
#: templates/exchange_rates_services/fragments/list.html:6 #: templates/exchange_rates_services/fragments/list.html:6
#: templates/exchange_rates_services/pages/index.html:4 #: templates/exchange_rates_services/pages/index.html:4
#: templates/includes/navbar.html:143 templates/includes/sidebar.html:230 #: templates/includes/navbar.html:143 templates/includes/sidebar.html:254
msgid "Automatic Exchange Rates" msgid "Automatic Exchange Rates"
msgstr "" msgstr ""
#: apps/export_app/forms.py:80 templates/includes/navbar.html:135 #: apps/export_app/forms.py:80 templates/includes/navbar.html:135
#: templates/includes/sidebar.html:210 templates/rules/fragments/list.html:5 #: templates/includes/sidebar.html:234 templates/rules/fragments/list.html:5
#: templates/rules/pages/index.html:4 #: templates/rules/pages/index.html:4
msgid "Rules" msgid "Rules"
msgstr "" msgstr ""
@@ -958,7 +962,7 @@ msgstr ""
#: apps/import_app/forms.py:61 #: apps/import_app/forms.py:61
#: templates/import_app/fragments/profiles/list.html:62 #: templates/import_app/fragments/profiles/list.html:62
#: templates/includes/navbar.html:137 templates/includes/sidebar.html:216 #: templates/includes/navbar.html:137 templates/includes/sidebar.html:240
msgid "Import" msgid "Import"
msgstr "" msgstr ""
@@ -1029,8 +1033,8 @@ msgstr ""
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36 #: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
#: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189 #: apps/insights/utils/sankey.py:167 apps/transactions/filters.py:189
#: templates/insights/fragments/category_overview/index.html:88 #: templates/insights/fragments/category_overview/index.html:88
#: templates/insights/fragments/category_overview/index.html:393 #: templates/insights/fragments/category_overview/index.html:395
#: templates/insights/fragments/category_overview/index.html:422 #: templates/insights/fragments/category_overview/index.html:424
msgid "Uncategorized" msgid "Uncategorized"
msgstr "" msgstr ""
@@ -1130,7 +1134,7 @@ msgstr ""
#: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34 #: apps/rules/forms.py:170 apps/rules/forms.py:183 apps/rules/models.py:34
#: apps/rules/models.py:258 apps/transactions/forms.py:70 #: apps/rules/models.py:258 apps/transactions/forms.py:70
#: apps/transactions/forms.py:486 apps/transactions/forms.py:688 #: apps/transactions/forms.py:481 apps/transactions/forms.py:683
#: apps/transactions/models.py:301 apps/transactions/models.py:484 #: apps/transactions/models.py:301 apps/transactions/models.py:484
#: apps/transactions/models.py:713 #: apps/transactions/models.py:713
msgid "Reference Date" msgid "Reference Date"
@@ -1148,7 +1152,7 @@ msgstr ""
#: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14 #: apps/rules/forms.py:172 apps/rules/forms.py:185 apps/rules/models.py:14
#: apps/rules/models.py:36 apps/rules/models.py:266 #: apps/rules/models.py:36 apps/rules/models.py:266
#: apps/transactions/forms.py:490 apps/transactions/models.py:312 #: apps/transactions/forms.py:485 apps/transactions/models.py:312
#: apps/transactions/models.py:468 apps/transactions/models.py:697 #: apps/transactions/models.py:468 apps/transactions/models.py:697
#: apps/transactions/models.py:945 #: apps/transactions/models.py:945
msgid "Description" msgid "Description"
@@ -1343,6 +1347,7 @@ msgid "Any entity"
msgstr "" msgstr ""
#: apps/transactions/filters.py:202 #: apps/transactions/filters.py:202
#: templates/insights/fragments/category_overview/index.html:274
msgid "No entity" msgid "No entity"
msgstr "" msgstr ""
@@ -1358,50 +1363,50 @@ msgstr ""
msgid "Save and add another" msgid "Save and add another"
msgstr "" msgstr ""
#: apps/transactions/forms.py:300 apps/transactions/forms.py:506 #: apps/transactions/forms.py:300 apps/transactions/forms.py:501
msgid "Muted transactions won't be displayed on monthly summaries" msgid "Muted transactions won't be displayed on monthly summaries"
msgstr "" msgstr ""
#: apps/transactions/forms.py:442 #: apps/transactions/forms.py:437
msgid "From Amount" msgid "From Amount"
msgstr "" msgstr ""
#: apps/transactions/forms.py:447 #: apps/transactions/forms.py:442
msgid "To Amount" msgid "To Amount"
msgstr "" msgstr ""
#: apps/transactions/forms.py:503 apps/transactions/models.py:211 #: apps/transactions/forms.py:498 apps/transactions/models.py:211
#: apps/transactions/models.py:302 apps/transactions/models.py:935 #: apps/transactions/models.py:302 apps/transactions/models.py:935
msgid "Mute" msgid "Mute"
msgstr "" msgstr ""
#: apps/transactions/forms.py:572 #: apps/transactions/forms.py:567
#: templates/cotton/ui/quick_transactions_buttons.html:40 #: templates/cotton/ui/quick_transactions_buttons.html:40
#: templates/cotton/ui/transactions_fab.html:44 #: templates/cotton/ui/transactions_fab.html:44
msgid "Transfer" msgid "Transfer"
msgstr "" msgstr ""
#: apps/transactions/forms.py:822 #: apps/transactions/forms.py:817
msgid "Tag name" msgid "Tag name"
msgstr "" msgstr ""
#: apps/transactions/forms.py:854 #: apps/transactions/forms.py:849
msgid "Entity name" msgid "Entity name"
msgstr "" msgstr ""
#: apps/transactions/forms.py:886 #: apps/transactions/forms.py:881
msgid "Category name" msgid "Category name"
msgstr "" msgstr ""
#: apps/transactions/forms.py:888 #: apps/transactions/forms.py:883
msgid "Muted categories won't be displayed on monthly summaries" msgid "Muted categories won't be displayed on monthly summaries"
msgstr "" msgstr ""
#: apps/transactions/forms.py:1046 #: apps/transactions/forms.py:1041
msgid "future transactions" msgid "future transactions"
msgstr "" msgstr ""
#: apps/transactions/forms.py:1076 #: apps/transactions/forms.py:1071
msgid "End date should be after the start date" msgid "End date should be after the start date"
msgstr "" msgstr ""
@@ -1493,12 +1498,12 @@ msgstr ""
msgid "No description" msgid "No description"
msgstr "" msgstr ""
#: apps/transactions/models.py:455 templates/includes/sidebar.html:42 #: apps/transactions/models.py:455 templates/includes/sidebar.html:67
msgid "Yearly" msgid "Yearly"
msgstr "" msgstr ""
#: apps/transactions/models.py:456 apps/users/models.py:464 #: apps/transactions/models.py:456 apps/users/models.py:464
#: templates/includes/navbar.html:27 templates/includes/sidebar.html:36 #: templates/includes/navbar.html:27 templates/includes/sidebar.html:61
msgid "Monthly" msgid "Monthly"
msgstr "" msgstr ""
@@ -1597,7 +1602,7 @@ msgid "Quick Transaction"
msgstr "" msgstr ""
#: apps/transactions/models.py:980 templates/includes/navbar.html:73 #: apps/transactions/models.py:980 templates/includes/navbar.html:73
#: templates/includes/sidebar.html:83 #: templates/includes/sidebar.html:108
#: templates/quick_transactions/pages/index.html:5 #: templates/quick_transactions/pages/index.html:5
#: templates/quick_transactions/pages/index.html:11 #: templates/quick_transactions/pages/index.html:11
msgid "Quick Transactions" msgid "Quick Transactions"
@@ -1689,11 +1694,11 @@ msgid "Installment Plan deleted successfully"
msgstr "" msgstr ""
#: apps/transactions/views/quick_transactions.py:45 #: apps/transactions/views/quick_transactions.py:45
#: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:152 #: apps/transactions/views/quick_transactions.py:222 apps/users/views.py:170
msgid "Item added successfully" msgid "Item added successfully"
msgstr "" msgstr ""
#: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:184 #: apps/transactions/views/quick_transactions.py:73 apps/users/views.py:202
msgid "Item updated successfully" msgid "Item updated successfully"
msgstr "" msgstr ""
@@ -1810,8 +1815,10 @@ msgid "This account is deactivated"
msgstr "" msgstr ""
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89 #: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
#: templates/monthly_overview/pages/overview.html:153 #: templates/monthly_overview/pages/overview.html:140
#: templates/transactions/pages/transactions.html:28 #: templates/monthly_overview/pages/overview.html:186
#: templates/transactions/pages/transactions.html:14
#: templates/transactions/pages/transactions.html:60
msgid "Default" msgid "Default"
msgstr "" msgstr ""
@@ -1912,7 +1919,7 @@ msgid "All Transactions"
msgstr "" msgstr ""
#: apps/users/models.py:470 templates/includes/navbar.html:33 #: apps/users/models.py:470 templates/includes/navbar.html:33
#: templates/includes/sidebar.html:48 #: templates/includes/sidebar.html:73
msgid "Calendar" msgid "Calendar"
msgstr "" msgstr ""
@@ -1963,7 +1970,7 @@ msgstr ""
#: templates/account_groups/fragments/list.html:32 #: templates/account_groups/fragments/list.html:32
#: templates/accounts/fragments/list.html:37 #: templates/accounts/fragments/list.html:37
#: templates/categories/fragments/table.html:24 #: templates/categories/fragments/table.html:24
#: templates/currencies/fragments/list.html:33 #: templates/currencies/fragments/list.html:34
#: templates/dca/fragments/strategy/details.html:63 #: templates/dca/fragments/strategy/details.html:63
#: templates/entities/fragments/table.html:23 #: templates/entities/fragments/table.html:23
#: templates/exchange_rates/fragments/table.html:19 #: templates/exchange_rates/fragments/table.html:19
@@ -1984,7 +1991,7 @@ msgstr ""
#: templates/categories/fragments/table.html:29 #: templates/categories/fragments/table.html:29
#: templates/cotton/transaction/item.html:129 #: templates/cotton/transaction/item.html:129
#: templates/cotton/ui/transactions_action_bar.html:52 #: templates/cotton/ui/transactions_action_bar.html:52
#: templates/currencies/fragments/list.html:37 #: templates/currencies/fragments/list.html:38
#: templates/dca/fragments/strategy/details.html:67 #: templates/dca/fragments/strategy/details.html:67
#: templates/dca/fragments/strategy/list.html:36 #: templates/dca/fragments/strategy/list.html:36
#: templates/entities/fragments/table.html:28 #: templates/entities/fragments/table.html:28
@@ -2010,7 +2017,7 @@ msgstr ""
#: templates/cotton/transaction/item.html:192 #: templates/cotton/transaction/item.html:192
#: templates/cotton/ui/deleted_transactions_action_bar.html:55 #: templates/cotton/ui/deleted_transactions_action_bar.html:55
#: templates/cotton/ui/transactions_action_bar.html:90 #: templates/cotton/ui/transactions_action_bar.html:90
#: templates/currencies/fragments/list.html:44 #: templates/currencies/fragments/list.html:45
#: templates/dca/fragments/strategy/details.html:75 #: templates/dca/fragments/strategy/details.html:75
#: templates/dca/fragments/strategy/list.html:44 #: templates/dca/fragments/strategy/list.html:44
#: templates/entities/fragments/table.html:36 #: templates/entities/fragments/table.html:36
@@ -2037,7 +2044,7 @@ msgstr ""
#: templates/cotton/transaction/item.html:196 #: templates/cotton/transaction/item.html:196
#: templates/cotton/ui/deleted_transactions_action_bar.html:57 #: templates/cotton/ui/deleted_transactions_action_bar.html:57
#: templates/cotton/ui/transactions_action_bar.html:92 #: templates/cotton/ui/transactions_action_bar.html:92
#: templates/currencies/fragments/list.html:48 #: templates/currencies/fragments/list.html:49
#: templates/dca/fragments/strategy/details.html:80 #: templates/dca/fragments/strategy/details.html:80
#: templates/dca/fragments/strategy/list.html:48 #: templates/dca/fragments/strategy/list.html:48
#: templates/entities/fragments/table.html:40 #: templates/entities/fragments/table.html:40
@@ -2067,7 +2074,7 @@ msgstr ""
#: templates/cotton/transaction/item.html:197 #: templates/cotton/transaction/item.html:197
#: templates/cotton/ui/deleted_transactions_action_bar.html:58 #: templates/cotton/ui/deleted_transactions_action_bar.html:58
#: templates/cotton/ui/transactions_action_bar.html:93 #: templates/cotton/ui/transactions_action_bar.html:93
#: templates/currencies/fragments/list.html:49 #: templates/currencies/fragments/list.html:50
#: templates/dca/fragments/strategy/details.html:81 #: templates/dca/fragments/strategy/details.html:81
#: templates/dca/fragments/strategy/list.html:49 #: templates/dca/fragments/strategy/list.html:49
#: templates/entities/fragments/table.html:41 #: templates/entities/fragments/table.html:41
@@ -2087,7 +2094,7 @@ msgstr ""
#: templates/categories/fragments/table.html:43 #: templates/categories/fragments/table.html:43
#: templates/cotton/transaction/item.html:142 #: templates/cotton/transaction/item.html:142
#: templates/cotton/transaction/item.html:198 #: templates/cotton/transaction/item.html:198
#: templates/currencies/fragments/list.html:50 #: templates/currencies/fragments/list.html:51
#: templates/dca/fragments/strategy/details.html:82 #: templates/dca/fragments/strategy/details.html:82
#: templates/dca/fragments/strategy/list.html:50 #: templates/dca/fragments/strategy/list.html:50
#: templates/entities/fragments/table.html:42 #: templates/entities/fragments/table.html:42
@@ -2233,7 +2240,7 @@ msgid "Muted"
msgstr "" msgstr ""
#: templates/categories/fragments/table.html:75 #: templates/categories/fragments/table.html:75
#: templates/insights/fragments/category_overview/index.html:538 #: templates/insights/fragments/category_overview/index.html:540
msgid "No categories" msgid "No categories"
msgstr "" msgstr ""
@@ -2242,13 +2249,14 @@ msgid "Pick a month"
msgstr "" msgstr ""
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5 #: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
#: templates/includes/sidebar.html:28 #: templates/includes/sidebar.html:53
msgid "Close" msgid "Close"
msgstr "" msgstr ""
#: templates/cotton/config/search.html:6 #: templates/cotton/config/search.html:6
#: templates/import_app/fragments/profiles/list_presets.html:13 #: templates/import_app/fragments/profiles/list_presets.html:13
#: templates/monthly_overview/pages/overview.html:177 #: templates/monthly_overview/pages/overview.html:160
#: templates/transactions/pages/transactions.html:34
msgid "Search" msgid "Search"
msgstr "" msgstr ""
@@ -2433,7 +2441,7 @@ msgstr ""
msgid "Code" msgid "Code"
msgstr "" msgstr ""
#: templates/currencies/fragments/list.html:61 #: templates/currencies/fragments/list.html:63
msgid "No currencies" msgid "No currencies"
msgstr "" msgstr ""
@@ -2471,7 +2479,7 @@ msgstr ""
#: templates/dca/fragments/strategy/details.html:125 #: templates/dca/fragments/strategy/details.html:125
#: templates/monthly_overview/fragments/list.html:47 #: templates/monthly_overview/fragments/list.html:47
#: templates/transactions/fragments/list_all.html:40 #: templates/transactions/fragments/list_all.html:47
msgid "Try adding one" msgid "Try adding one"
msgstr "" msgstr ""
@@ -2573,7 +2581,7 @@ msgid "Edit exchange rate"
msgstr "" msgstr ""
#: templates/exchange_rates/fragments/list.html:25 #: templates/exchange_rates/fragments/list.html:25
#: templates/includes/navbar.html:62 templates/includes/sidebar.html:68 #: templates/includes/navbar.html:62 templates/includes/sidebar.html:93
#: templates/installment_plans/fragments/list.html:21 #: templates/installment_plans/fragments/list.html:21
#: templates/yearly_overview/pages/overview_by_account.html:105 #: templates/yearly_overview/pages/overview_by_account.html:105
#: templates/yearly_overview/pages/overview_by_currency.html:107 #: templates/yearly_overview/pages/overview_by_currency.html:107
@@ -2597,7 +2605,7 @@ msgstr ""
#: templates/exchange_rates/fragments/table.html:58 #: templates/exchange_rates/fragments/table.html:58
#: templates/exchange_rates_services/fragments/table.html:58 #: templates/exchange_rates_services/fragments/table.html:58
#: templates/transactions/fragments/list_all.html:47 #: templates/transactions/fragments/list_all.html:54
msgid "Page navigation" msgid "Page navigation"
msgstr "" msgstr ""
@@ -2630,7 +2638,7 @@ msgid "No services configured"
msgstr "" msgstr ""
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140 #: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
#: templates/includes/sidebar.html:223 #: templates/includes/sidebar.html:247
msgid "Export and Restore" msgid "Export and Restore"
msgstr "" msgstr ""
@@ -2726,7 +2734,7 @@ msgstr ""
msgid "Overview" msgid "Overview"
msgstr "" msgstr ""
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:60 #: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
msgid "Net Worth" msgid "Net Worth"
msgstr "" msgstr ""
@@ -2736,62 +2744,62 @@ msgstr ""
msgid "Current" msgid "Current"
msgstr "" msgstr ""
#: templates/includes/navbar.html:51 templates/includes/sidebar.html:54 #: templates/includes/navbar.html:51 templates/includes/sidebar.html:79
#: templates/insights/pages/index.html:5 #: templates/insights/pages/index.html:5
msgid "Insights" msgid "Insights"
msgstr "" msgstr ""
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:76 #: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
msgid "Trash Can" msgid "Trash Can"
msgstr "" msgstr ""
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101 #: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
msgid "Tools" msgid "Tools"
msgstr "" msgstr ""
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:103 #: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
msgid "Dollar Cost Average Tracker" msgid "Dollar Cost Average Tracker"
msgstr "" msgstr ""
#: templates/includes/navbar.html:92 templates/includes/sidebar.html:109 #: templates/includes/navbar.html:92 templates/includes/sidebar.html:134
#: templates/mini_tools/unit_price_calculator.html:5 #: templates/mini_tools/unit_price_calculator.html:5
#: templates/mini_tools/unit_price_calculator.html:10 #: templates/mini_tools/unit_price_calculator.html:10
msgid "Unit Price Calculator" msgid "Unit Price Calculator"
msgstr "" msgstr ""
#: templates/includes/navbar.html:95 templates/includes/sidebar.html:115 #: templates/includes/navbar.html:95 templates/includes/sidebar.html:140
#: templates/mini_tools/currency_converter/currency_converter.html:8 #: templates/mini_tools/currency_converter/currency_converter.html:8
#: templates/mini_tools/currency_converter/currency_converter.html:15 #: templates/mini_tools/currency_converter/currency_converter.html:15
msgid "Currency Converter" msgid "Currency Converter"
msgstr "" msgstr ""
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134 #: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
#: templates/includes/sidebar.html:147 #: templates/includes/sidebar.html:171
msgid "Management" msgid "Management"
msgstr "" msgstr ""
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208 #: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
msgid "Automation" msgid "Automation"
msgstr "" msgstr ""
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:237 #: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
msgid "Admin" msgid "Admin"
msgstr "" msgstr ""
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:246 #: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
msgid "Only use this if you know what you're doing" msgid "Only use this if you know what you're doing"
msgstr "" msgstr ""
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:245 #: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
msgid "Django Admin" msgid "Django Admin"
msgstr "" msgstr ""
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:260 #: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
msgid "is available" msgid "is available"
msgstr "" msgstr ""
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177 #: templates/includes/navbar.html:174 templates/includes/navbar.html:177
#: templates/includes/sidebar.html:266 #: templates/includes/sidebar.html:290
msgid "Calculator" msgid "Calculator"
msgstr "" msgstr ""
@@ -2886,7 +2894,7 @@ msgstr ""
msgid "Total" msgid "Total"
msgstr "" msgstr ""
#: templates/insights/fragments/category_overview/index.html:515 #: templates/insights/fragments/category_overview/index.html:517
msgid "Final Total" msgid "Final Total"
msgstr "" msgstr ""
@@ -3091,26 +3099,30 @@ msgstr ""
msgid "Summary" msgid "Summary"
msgstr "" msgstr ""
#: templates/monthly_overview/pages/overview.html:142 #: templates/monthly_overview/pages/overview.html:141
#: templates/transactions/pages/transactions.html:17 #: templates/monthly_overview/pages/overview.html:195
msgid "Filter transactions" #: templates/transactions/pages/transactions.html:15
msgstr "" #: templates/transactions/pages/transactions.html:69
#: templates/monthly_overview/pages/overview.html:148
#: templates/transactions/pages/transactions.html:23
msgid "Order by"
msgstr ""
#: templates/monthly_overview/pages/overview.html:155
#: templates/transactions/pages/transactions.html:30
msgid "Oldest first" msgid "Oldest first"
msgstr "" msgstr ""
#: templates/monthly_overview/pages/overview.html:157 #: templates/monthly_overview/pages/overview.html:142
#: templates/transactions/pages/transactions.html:32 #: templates/monthly_overview/pages/overview.html:204
#: templates/transactions/pages/transactions.html:16
#: templates/transactions/pages/transactions.html:78
msgid "Newest first" msgid "Newest first"
msgstr "" msgstr ""
#: templates/monthly_overview/pages/overview.html:151
#: templates/transactions/pages/transactions.html:25
msgid "Filter transactions"
msgstr ""
#: templates/monthly_overview/pages/overview.html:176
#: templates/transactions/pages/transactions.html:50
msgid "Order by"
msgstr ""
#: templates/net_worth/net_worth.html:40 #: templates/net_worth/net_worth.html:40
#: templates/yearly_overview/pages/overview_by_currency.html:9 #: templates/yearly_overview/pages/overview_by_currency.html:9
msgid "By currency" msgid "By currency"
@@ -3318,7 +3330,7 @@ msgstr ""
msgid "transactions" msgid "transactions"
msgstr "" msgstr ""
#: templates/transactions/fragments/list_all.html:39 #: templates/transactions/fragments/list_all.html:46
msgid "No transactions found" msgid "No transactions found"
msgstr "" msgstr ""
+3
View File
@@ -0,0 +1,3 @@
{#This is here so we can add dynamic Tailwind classes that will be required via JS/hyperscript but Tailwind has no knowledge of#}
<div class="tw:lg:w-[15vw]"></div>
<div class="tw:lg:ml-[16vw]"></div>
@@ -1,6 +1,6 @@
<li> <li>
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<span class="text-muted small fw-bold text-uppercase tw:lg:hidden tw:lg:group-hover:inline me-2">{{ title }}</span> <span class="sidebar-menu-header text-muted small fw-bold text-uppercase me-2">{{ title }}</span>
<hr class="flex-grow-1"/> <hr class="flex-grow-1"/>
</div> </div>
</li> </li>
@@ -1,7 +1,7 @@
{% load active_link %} {% load active_link %}
<li> <li>
<a href="{% url url %}" <a href="{% url url %}"
class="tw:text-wrap tw:lg:text-nowrap tw:lg:text-sm d-flex align-items-center text-decoration-none p-2 rounded-3 sidebar-item {% active_link views=active css_class="sidebar-active" %}" class="tw:lg:text-sm d-flex align-items-center text-decoration-none p-2 rounded-3 sidebar-item {% active_link views=active css_class="sidebar-active" %}"
{% if tooltip %} {% if tooltip %}
data-bs-placement="right" data-bs-placement="right"
data-bs-toggle="tooltip" data-bs-toggle="tooltip"
@@ -9,6 +9,6 @@
{% endif %}> {% endif %}>
<i class="{{ icon }} fa-fw"></i> <i class="{{ icon }} fa-fw"></i>
<span <span
class="ms-3 fw-medium tw:lg:invisible tw:lg:group-hover:visible tw:lg:group-hover:truncate tw:lg:group-focus:truncate tw:lg:group-hover:text-ellipsis tw:lg:group-focus:text-ellipsis">{{ title }}</span> class="ms-3 fw-medium tw:lg:group-hover:truncate tw:lg:group-focus:truncate tw:lg:group-hover:text-ellipsis tw:lg:group-focus:text-ellipsis">{{ title }}</span>
</a> </a>
</li> </li>
@@ -2,7 +2,7 @@
<li> <li>
<a href="{{ url }}" <a href="{{ url }}"
hx-boost="false" hx-boost="false"
class="tw:text-wrap tw:lg:text-nowrap tw:lg:text-sm d-flex align-items-center text-decoration-none p-2 rounded-3 sidebar-item {% active_link views=active css_class="sidebar-active" %}" class="tw:lg:text-sm d-flex align-items-center text-decoration-none p-2 rounded-3 sidebar-item {% active_link views=active css_class="sidebar-active" %}"
{% if tooltip %} {% if tooltip %}
data-bs-placement="right" data-bs-placement="right"
data-bs-toggle="tooltip" data-bs-toggle="tooltip"
@@ -11,6 +11,6 @@
<i class="{{ icon }} fa-fw"></i> <i class="{{ icon }} fa-fw"></i>
<span <span
class="ms-3 fw-medium tw:lg:invisible tw:lg:group-hover:visible tw:lg:group-hover:truncate tw:lg:group-focus:truncate tw:lg:group-hover:text-ellipsis tw:lg:group-focus:text-ellipsis">{{ title }}</span> class="ms-3 fw-medium tw:lg:group-hover:truncate tw:lg:group-focus:truncate tw:lg:group-hover:text-ellipsis tw:lg:group-focus:text-ellipsis">{{ title }}</span>
</a> </a>
</li> </li>
+158 -113
View File
@@ -1,8 +1,9 @@
{% load markdown %} {% load markdown %}
{% load i18n %} {% load i18n %}
<div class="transaction {% if transaction.type == "EX" %}expense{% else %}income{% endif %} tw:group/transaction tw:relative tw:hover:z-10"> <div
class="transaction {% if transaction.type == "EX" %}expense{% else %}income{% endif %} tw:group/transaction tw:relative tw:hover:z-10">
<div class="d-flex my-1"> <div class="d-flex my-1">
{% if not disable_selection %} {% if not disable_selection or not dummy %}
<label class="px-3 d-flex align-items-center justify-content-center"> <label class="px-3 d-flex align-items-center justify-content-center">
<input class="form-check-input" type="checkbox" name="transactions" value="{{ transaction.id }}" <input class="form-check-input" type="checkbox" name="transactions" value="{{ transaction.id }}"
id="check-{{ transaction.id }}" aria-label="{% translate 'Select' %}" hx-preserve> id="check-{{ transaction.id }}" aria-label="{% translate 'Select' %}" hx-preserve>
@@ -19,9 +20,10 @@
<a class="text-decoration-none p-3 tw:text-gray-500!" <a class="text-decoration-none p-3 tw:text-gray-500!"
title="{% if transaction.is_paid %}{% trans 'Paid' %}{% else %}{% trans 'Projected' %}{% endif %}" title="{% if transaction.is_paid %}{% trans 'Paid' %}{% else %}{% trans 'Projected' %}{% endif %}"
role="button" role="button"
{% if not dummy %}
hx-get="{% url 'transaction_pay' transaction_id=transaction.id %}" hx-get="{% url 'transaction_pay' transaction_id=transaction.id %}"
hx-target="closest .transaction" hx-target="closest .transaction"
hx-swap="outerHTML"> hx-swap="outerHTML"{% endif %}>
{% if transaction.is_paid %}<i class="fa-regular fa-circle-check"></i>{% else %}<i {% if transaction.is_paid %}<i class="fa-regular fa-circle-check"></i>{% else %}<i
class="fa-regular fa-circle"></i>{% endif %} class="fa-regular fa-circle"></i>{% endif %}
</a> </a>
@@ -33,7 +35,8 @@
</div> </div>
{% endif %} {% endif %}
</div> </div>
<div class="col-lg col-12 {% if transaction.account.is_untracked_by or transaction.category.mute or transaction.mute %}tw:brightness-80{% endif %}"> <div
class="col-lg col-12 {% if transaction.account.is_untracked_by or transaction.category.mute or transaction.mute %}tw:brightness-80{% endif %}">
{# Date#} {# Date#}
<div class="row mb-2 mb-lg-1 tw:text-gray-400"> <div class="row mb-2 mb-lg-1 tw:text-gray-400">
<div class="col-auto pe-1"><i class="fa-solid fa-calendar fa-fw me-1 fa-xs"></i></div> <div class="col-auto pe-1"><i class="fa-solid fa-calendar fa-fw me-1 fa-xs"></i></div>
@@ -58,14 +61,20 @@
</div> </div>
<div class="tw:text-gray-400 tw:text-sm"> <div class="tw:text-gray-400 tw:text-sm">
{# Entities #} {# Entities #}
{% with transaction.entities.all as entities %} {% comment %} First, check for the highest priority: a valid 'overriden_entities' list. {% endcomment %}
{% if entities %} {% if overriden_entities %}
<div class="row mb-2 mb-lg-1 tw:text-gray-400"> <div class="row mb-2 mb-lg-1 tw:text-gray-400">
<div class="col-auto pe-1"><i class="fa-solid fa-user-group fa-fw me-1 fa-xs"></i></div> <div class="col-auto pe-1"><i class="fa-solid fa-user-group fa-fw me-1 fa-xs"></i></div>
<div class="col ps-0">{{ entities|join:", " }}</div> <div class="col ps-0">{{ overriden_entities|join:", " }}</div>
</div> </div>
{% endif %}
{% endwith %} {% comment %} If no override, fall back to transaction entities, but ONLY if the transaction has an ID. {% endcomment %}
{% elif transaction.id and transaction.entities.all %}
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
<div class="col-auto pe-1"><i class="fa-solid fa-user-group fa-fw me-1 fa-xs"></i></div>
<div class="col ps-0">{{ transaction.entities.all|join:", " }}</div>
</div>
{% endif %}
{# Notes#} {# Notes#}
{% if transaction.notes %} {% if transaction.notes %}
<div class="row mb-2 mb-lg-1 tw:text-gray-400"> <div class="row mb-2 mb-lg-1 tw:text-gray-400">
@@ -81,17 +90,24 @@
</div> </div>
{% endif %} {% endif %}
{# Tags#} {# Tags#}
{% with transaction.tags.all as tags %} {% comment %} First, check for the highest priority: a valid 'overriden_tags' list. {% endcomment %}
{% if tags %} {% if overriden_tags %}
<div class="row mb-2 mb-lg-1 tw:text-gray-400"> <div class="row mb-2 mb-lg-1 tw:text-gray-400">
<div class="col-auto pe-1"><i class="fa-solid fa-hashtag fa-fw me-1 fa-xs"></i></div> <div class="col-auto pe-1"><i class="fa-solid fa-hashtag fa-fw me-1 fa-xs"></i></div>
<div class="col ps-0">{{ tags|join:", " }}</div> <div class="col ps-0">{{ overriden_tags|join:", " }}</div>
</div> </div>
{% endif %}
{% endwith %} {% comment %} If no override, fall back to transaction tags, but ONLY if the transaction has an ID. {% endcomment %}
{% elif transaction.id and transaction.tags.all %}
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
<div class="col-auto pe-1"><i class="fa-solid fa-hashtag fa-fw me-1 fa-xs"></i></div>
<div class="col ps-0">{{ transaction.tags.all|join:", " }}</div>
</div>
{% endif %}
</div> </div>
</div> </div>
<div class="col-lg-auto col-12 text-lg-end align-self-end {% if transaction.account.is_untracked_by or transaction.category.mute or transaction.mute %}tw:brightness-80{% endif %}"> <div
class="col-lg-auto col-12 text-lg-end align-self-end {% if transaction.account.is_untracked_by or transaction.category.mute or transaction.mute %}tw:brightness-80{% endif %}">
<div class="main-amount mb-2 mb-lg-0"> <div class="main-amount mb-2 mb-lg-0">
<c-amount.display <c-amount.display
:amount="transaction.amount" :amount="transaction.amount"
@@ -101,107 +117,136 @@
color="{% if transaction.type == "EX" %}red{% else %}green{% endif %}"></c-amount.display> color="{% if transaction.type == "EX" %}red{% else %}green{% endif %}"></c-amount.display>
</div> </div>
{# Exchange Rate#} {# Exchange Rate#}
{% with exchanged=transaction.exchanged_amount %} {% if not dummy %}
{% if exchanged %} {% with exchanged=transaction.exchanged_amount %}
<div class="exchanged-amount mb-2 mb-lg-0"> {% if exchanged %}
<c-amount.display <div class="exchanged-amount mb-2 mb-lg-0">
:amount="exchanged.amount" <c-amount.display
:prefix="exchanged.prefix" :amount="exchanged.amount"
:suffix="exchanged.suffix" :prefix="exchanged.prefix"
:decimal_places="exchanged.decimal_places" :suffix="exchanged.suffix"
color="grey"></c-amount.display> :decimal_places="exchanged.decimal_places"
</div> color="grey"></c-amount.display>
{% endif %} </div>
{% endwith %} {% endif %}
{% endwith %}
{% endif %}
<div> <div>
{% if transaction.account.group %}{{ transaction.account.group.name }} • {% endif %}{{ transaction.account.name }} {% if transaction.account.group %}{{ transaction.account.group.name }} • {% endif %}{{ transaction.account.name }}
</div> </div>
</div> </div>
<div> {% if not dummy %}
{# Item actions#} <div>
<div {# Item actions#}
class="transaction-actions tw:absolute! tw:left-1/2 tw:top-0 tw:-translate-x-1/2 tw:-translate-y-1/2 tw:invisible tw:group-hover/transaction:visible d-flex flex-row card"> <div
<div class="card-body p-1 shadow-lg d-flex flex-row gap-1"> class="transaction-actions tw:absolute! tw:left-1/2 tw:top-0 tw:-translate-x-1/2 tw:-translate-y-1/2 tw:invisible tw:group-hover/transaction:visible d-flex flex-row card">
{% if not transaction.deleted %} <div class="card-body p-1 shadow-lg d-flex flex-row gap-1">
<a class="btn btn-secondary btn-sm transaction-action" {% if not transaction.deleted %}
role="button" <a class="btn btn-secondary btn-sm transaction-action"
data-bs-toggle="tooltip" role="button"
data-bs-title="{% translate "Edit" %}" data-bs-toggle="tooltip"
hx-get="{% url 'transaction_edit' transaction_id=transaction.id %}" data-bs-title="{% translate "Edit" %}"
hx-target="#generic-offcanvas" hx-swap="innerHTML"> hx-get="{% url 'transaction_edit' transaction_id=transaction.id %}"
<i class="fa-solid fa-pencil fa-fw"></i></a> hx-target="#generic-offcanvas" hx-swap="innerHTML">
<a class="btn btn-secondary btn-sm transaction-action" <i class="fa-solid fa-pencil fa-fw"></i></a>
role="button" <a class="btn btn-secondary btn-sm transaction-action"
data-bs-toggle="tooltip" role="button"
data-bs-title="{% translate "Delete" %}" data-bs-toggle="tooltip"
hx-delete="{% url 'transaction_delete' transaction_id=transaction.id %}" data-bs-title="{% translate "Delete" %}"
hx-trigger='confirmed' hx-delete="{% url 'transaction_delete' transaction_id=transaction.id %}"
data-bypass-on-ctrl="true" hx-trigger='confirmed'
data-title="{% translate "Are you sure?" %}" data-bypass-on-ctrl="true"
data-text="{% translate "You won't be able to revert this!" %}" data-title="{% translate "Are you sure?" %}"
data-confirm-text="{% translate "Yes, delete it!" %}" data-text="{% translate "You won't be able to revert this!" %}"
_="install prompt_swal"><i class="fa-solid fa-trash fa-fw text-danger"></i> data-confirm-text="{% translate "Yes, delete it!" %}"
</a> _="install prompt_swal"><i class="fa-solid fa-trash fa-fw text-danger"></i>
<button class="btn btn-secondary btn-sm transaction-action" type="button" data-bs-toggle="dropdown" aria-expanded="false"> </a>
<i class="fa-solid fa-ellipsis fa-fw"></i> <button class="btn btn-secondary btn-sm transaction-action" type="button" data-bs-toggle="dropdown"
</button> aria-expanded="false">
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-md-start"> <i class="fa-solid fa-ellipsis fa-fw"></i>
{% if transaction.account.is_untracked_by %} </button>
<li> <ul class="dropdown-menu dropdown-menu-end dropdown-menu-md-start">
<a class="dropdown-item disabled d-flex align-items-center" aria-disabled="true"> {% if transaction.account.is_untracked_by %}
<i class="fa-solid fa-eye fa-fw me-2"></i> <li>
<div> <a class="dropdown-item disabled d-flex align-items-center" aria-disabled="true">
{% translate 'Show on summaries' %} <i class="fa-solid fa-eye fa-fw me-2"></i>
<div class="d-block text-body-secondary tw:text-xs tw:font-medium">{% translate 'Controlled by account' %}</div> <div>
</div> {% translate 'Show on summaries' %}
</a> <div
class="d-block text-body-secondary tw:text-xs tw:font-medium">{% translate 'Controlled by account' %}</div>
</div>
</a>
</li>
{% elif transaction.category.mute %}
<li>
<a class="dropdown-item disabled d-flex align-items-center" aria-disabled="true">
<i class="fa-solid fa-eye fa-fw me-2"></i>
<div>
{% translate 'Show on summaries' %}
<div
class="d-block text-body-secondary tw:text-xs tw:font-medium">{% translate 'Controlled by category' %}</div>
</div>
</a>
</li>
{% elif transaction.mute %}
<li><a class="dropdown-item" href="#"
hx-get="{% url 'transaction_mute' transaction_id=transaction.id %}"
hx-target="closest .transaction" hx-swap="outerHTML"><i
class="fa-solid fa-eye fa-fw me-2"></i>{% translate 'Show on summaries' %}</a></li>
{% else %}
<li><a class="dropdown-item" href="#"
hx-get="{% url 'transaction_mute' transaction_id=transaction.id %}"
hx-target="closest .transaction" hx-swap="outerHTML"><i
class="fa-solid fa-eye-slash fa-fw me-2"></i>{% translate 'Hide from summaries' %}</a></li>
{% endif %}
<li><a class="dropdown-item" href="#"
hx-get="{% url 'quick_transaction_add_as_quick_transaction' transaction_id=transaction.id %}"><i
class="fa-solid fa-person-running fa-fw me-2"></i>{% translate 'Add as quick transaction' %}</a>
</li> </li>
{% elif transaction.category.mute %}
<li> <li>
<a class="dropdown-item disabled d-flex align-items-center" aria-disabled="true"> <hr class="dropdown-divider">
<i class="fa-solid fa-eye fa-fw me-2"></i>
<div>
{% translate 'Show on summaries' %}
<div class="d-block text-body-secondary tw:text-xs tw:font-medium">{% translate 'Controlled by category' %}</div>
</div>
</a>
</li> </li>
{% elif transaction.mute %} <li><a class="dropdown-item" href="#"
<li><a class="dropdown-item" href="#" hx-get="{% url 'transaction_mute' transaction_id=transaction.id %}" hx-target="closest .transaction" hx-swap="outerHTML"><i class="fa-solid fa-eye fa-fw me-2"></i>{% translate 'Show on summaries' %}</a></li> hx-get="{% url 'transaction_change_month' transaction_id=transaction.id change_type='previous' %}"><i
{% else %} class="fa-solid fa-calendar-minus fa-fw me-2"></i>{% translate 'Move to previous month' %}</a>
<li><a class="dropdown-item" href="#" hx-get="{% url 'transaction_mute' transaction_id=transaction.id %}" hx-target="closest .transaction" hx-swap="outerHTML"><i class="fa-solid fa-eye-slash fa-fw me-2"></i>{% translate 'Hide from summaries' %}</a></li> </li>
{% endif %} <li><a class="dropdown-item" href="#"
<li><a class="dropdown-item" href="#" hx-get="{% url 'quick_transaction_add_as_quick_transaction' transaction_id=transaction.id %}"><i class="fa-solid fa-person-running fa-fw me-2"></i>{% translate 'Add as quick transaction' %}</a></li> hx-get="{% url 'transaction_change_month' transaction_id=transaction.id change_type='next' %}"><i
<li><hr class="dropdown-divider"></li> class="fa-solid fa-calendar-plus fa-fw me-2"></i>{% translate 'Move to next month' %}</a></li>
<li><a class="dropdown-item" href="#" hx-get="{% url 'transaction_change_month' transaction_id=transaction.id change_type='previous' %}"><i class="fa-solid fa-calendar-minus fa-fw me-2"></i>{% translate 'Move to previous month' %}</a></li> <li><a class="dropdown-item" href="#"
<li><a class="dropdown-item" href="#" hx-get="{% url 'transaction_change_month' transaction_id=transaction.id change_type='next' %}"><i class="fa-solid fa-calendar-plus fa-fw me-2"></i>{% translate 'Move to next month' %}</a></li> hx-get="{% url 'transaction_move_to_today' transaction_id=transaction.id %}"><i
<li><a class="dropdown-item" href="#" hx-get="{% url 'transaction_move_to_today' transaction_id=transaction.id %}"><i class="fa-solid fa-calendar-day fa-fw me-2"></i>{% translate 'Move to today' %}</a></li> class="fa-solid fa-calendar-day fa-fw me-2"></i>{% translate 'Move to today' %}</a></li>
<li><hr class="dropdown-divider"></li> <li>
<li><a class="dropdown-item" href="#" hx-get="{% url 'transaction_clone' transaction_id=transaction.id %}"><i class="fa-solid fa-clone fa-fw me-2"></i>{% translate 'Duplicate' %}</a></li> <hr class="dropdown-divider">
</ul> </li>
{% else %} <li><a class="dropdown-item" href="#"
<a class="btn btn-secondary btn-sm transaction-action" hx-get="{% url 'transaction_clone' transaction_id=transaction.id %}"><i
role="button" class="fa-solid fa-clone fa-fw me-2"></i>{% translate 'Duplicate' %}</a></li>
data-bs-toggle="tooltip" </ul>
data-bs-title="{% translate "Restore" %}" {% else %}
hx-get="{% url 'transaction_undelete' transaction_id=transaction.id %}"><i <a class="btn btn-secondary btn-sm transaction-action"
class="fa-solid fa-trash-arrow-up"></i></a> role="button"
<a class="btn btn-secondary btn-sm transaction-action" data-bs-toggle="tooltip"
role="button" data-bs-title="{% translate "Restore" %}"
data-bs-toggle="tooltip" hx-get="{% url 'transaction_undelete' transaction_id=transaction.id %}"><i
data-bs-title="{% translate "Delete" %}" class="fa-solid fa-trash-arrow-up"></i></a>
hx-delete="{% url 'transaction_delete' transaction_id=transaction.id %}" <a class="btn btn-secondary btn-sm transaction-action"
hx-trigger='confirmed' role="button"
data-bypass-on-ctrl="true" data-bs-toggle="tooltip"
data-title="{% translate "Are you sure?" %}" data-bs-title="{% translate "Delete" %}"
data-text="{% translate "You won't be able to revert this!" %}" hx-delete="{% url 'transaction_delete' transaction_id=transaction.id %}"
data-confirm-text="{% translate "Yes, delete it!" %}" hx-trigger='confirmed'
_="install prompt_swal"><i class="fa-solid fa-trash fa-fw text-danger"></i> data-bypass-on-ctrl="true"
</a> data-title="{% translate "Are you sure?" %}"
{% endif %} data-text="{% translate "You won't be able to revert this!" %}"
data-confirm-text="{% translate "Yes, delete it!" %}"
_="install prompt_swal"><i class="fa-solid fa-trash fa-fw text-danger"></i>
</a>
{% endif %}
</div>
</div> </div>
</div> </div>
</div> {% endif %}
</div> </div>
</div> </div>
</div> </div>
@@ -24,6 +24,7 @@
<th scope="col" class="col-auto"></th> <th scope="col" class="col-auto"></th>
<th scope="col" class="col-auto">{% translate 'Code' %}</th> <th scope="col" class="col-auto">{% translate 'Code' %}</th>
<th scope="col" class="col">{% translate 'Name' %}</th> <th scope="col" class="col">{% translate 'Name' %}</th>
<th scope="col" class="col">{% translate 'Archived' %}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -53,6 +54,7 @@
</td> </td>
<td class="col-auto">{{ currency.code }}</td> <td class="col-auto">{{ currency.code }}</td>
<td class="col">{{ currency.name }}</td> <td class="col">{{ currency.name }}</td>
<td class="col">{% if currency.is_archived %}<i class="fa-solid fa-solid fa-check text-success"></i>{% endif %}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>
+53 -22
View File
@@ -5,31 +5,56 @@
{% load static %} {% load static %}
<div <div
class="tw:group tw:lg:w-16 tw:lg:hover:w-112 tw:transition-all tw:duration-100 tw:fixed tw:top-0 tw:start-0 tw:h-full tw:z-1020"> class="sidebar {% if request.session.sidebar_status == 'floating' %}tw:group sidebar-floating{% elif request.session.sidebar_status == 'fixed' %}sidebar-fixed{% else %}tw:group sidebar-floating{% endif %}"
id="sidebar-container">
<nav <nav
id="sidebar" id="sidebar"
hx-boost="true" hx-boost="true"
data-bs-scroll="true" data-bs-scroll="true"
class="offcanvas-lg offcanvas-start d-lg-flex flex-column position-fixed top-0 start-0 h-100 bg-body-tertiary shadow-sm tw:z-1020 tw:lg:w-16 tw:lg:group-hover:w-104 tw:transition-all tw:duration-100 tw:overflow-hidden"> class="offcanvas-lg offcanvas-start d-lg-flex flex-column position-fixed top-0 start-0 h-100 bg-body-tertiary shadow-sm tw:z-1020">
<div
class="tw:hidden tw:lg:group-hover:block tw:absolute tw:top-0 tw:left-104 tw:w-8 tw:h-full tw:bg-transparent tw:pointer-events-auto tw:z-10"></div>
<a href="{% url 'index' %}" class="d-none d-lg-flex tw:justify-start p-3 text-decoration-none"> {# <div>#}
<img src="{% static 'img/logo-icon.svg' %}" alt="WYGIWYH Logo" height="30" width="30" title="WYGIWYH"/> {# <a href="{% url 'index' %}" class="d-none d-lg-flex tw:justify-start p-3 text-decoration-none sidebar-title">#}
<span class="fs-4 fw-bold ms-3 tw:lg:invisible tw:lg:group-hover:visible">WYGIWYH</span> {# <img src="{% static 'img/logo-icon.svg' %}" alt="WYGIWYH Logo" height="30" width="30" title="WYGIWYH"/>#}
</a> {# <span class="fs-4 fw-bold ms-3">WYGIWYH</span>#}
{# </a>#}
{##}
{##}
{# </div>#}
<div class="d-none d-lg-flex tw:justify-between tw:items-center tw:border-b tw:border-gray-600 tw:lg:flex">
<a href="{% url 'index' %}" class="m-0 d-none d-lg-flex tw:justify-start p-3 text-decoration-none sidebar-title">
<img src="{% static 'img/logo-icon.svg' %}" alt="WYGIWYH Logo" height="30" width="30" title="WYGIWYH"/>
<span class="fs-4 fw-bold ms-3">WYGIWYH</span>
</a>
<button
id="sidebar-toggle-btn"
class="text-secondary-emphasis tw:rounded-full tw:w-12 tw:h-12 tw:flex tw:items-center tw:justify-center tw:transition-all tw:duration-300"
hx-get="{% url 'toggle_sidebar_status' %}"
_="on click
toggle .sidebar-floating on #sidebar-container
toggle .tw\:group on #sidebar-container
toggle .sidebar-fixed on #sidebar-container
end
"
>
<i class="fa-solid fa-thumbtack fa-sm"></i>
<i class="fa-solid fa-thumbtack-slash fa-sm"></i>
</button>
</div>
<div class="offcanvas-header"> <div class="offcanvas-header">
<a href="{% url 'index' %}" class="offcanvas-title d-flex tw:justify-start text-decoration-none"> <a href="{% url 'index' %}" class="offcanvas-title d-flex tw:justify-start text-decoration-none">
<img src="{% static 'img/logo-icon.svg' %}" alt="WYGIWYH Logo" height="30" width="30" title="WYGIWYH"/> <img src="{% static 'img/logo-icon.svg' %}" alt="WYGIWYH Logo" height="30" width="30" title="WYGIWYH"/>
<span class="fs-4 fw-bold ms-3 tw:lg:invisible tw:lg:group-hover:visible">WYGIWYH</span> <span class="fs-4 fw-bold ms-3">WYGIWYH</span>
</a> </a>
<button type="button" class="btn-close" data-bs-target="#sidebar" data-bs-dismiss="offcanvas" <button type="button" class="btn-close" data-bs-target="#sidebar" data-bs-dismiss="offcanvas"
aria-label={% translate 'Close' %}></button> aria-label={% translate 'Close' %}></button>
</div> </div>
<hr class="m-0"> <hr class="m-0">
<ul class="list-unstyled p-3 d-flex flex-column gap-0 tw:group-hover:lg:overflow-y-auto tw:lg:overflow-y-hidden tw:overflow-y-auto tw:overflow-x-hidden tw:text-nowrap tw:lg:group-hover:animate-[disable-pointer-events]" <ul class="list-unstyled p-3 d-flex flex-column gap-0 tw:text-nowrap tw:lg:group-hover:animate-[disable-pointer-events]"
style="animation-duration: 100ms"> style="animation-duration: 100ms">
<c-components.sidebar-menu-item <c-components.sidebar-menu-item
@@ -127,10 +152,10 @@
data-bs-target="#collapsible-panel" data-bs-target="#collapsible-panel"
aria-expanded="false" aria-expanded="false"
aria-controls="collapsible-panel" aria-controls="collapsible-panel"
class="tw:text-wrap tw:lg:text-nowrap tw:lg:text-sm d-flex align-items-center text-decoration-none p-2 rounded-3 sidebar-item {% active_link views='tags_index||entities_index||categories_index||accounts_index||account_groups_index||currencies_index||exchange_rates_index||rules_index||import_profiles_index||automatic_exchange_rates_index||export_index||users_index' css_class="sidebar-active" %}"> class="sidebar-menu-item tw:text-wrap tw:lg:text-nowrap tw:lg:text-sm d-flex align-items-center text-decoration-none p-2 rounded-3 sidebar-item {% active_link views='tags_index||entities_index||categories_index||accounts_index||account_groups_index||currencies_index||exchange_rates_index||rules_index||import_profiles_index||automatic_exchange_rates_index||export_index||users_index' css_class="sidebar-active" %}">
<i class="fa-solid fa-toolbox fa-fw"></i> <i class="fa-solid fa-toolbox fa-fw"></i>
<span <span
class="ms-3 fw-medium tw:lg:invisible tw:lg:group-hover:visible tw:lg:group-hover:truncate tw:lg:group-focus:truncate tw:lg:group-hover:text-ellipsis tw:lg:group-focus:text-ellipsis"> class="ms-3 fw-medium tw:lg:group-hover:truncate tw:lg:group-focus:truncate tw:lg:group-hover:text-ellipsis tw:lg:group-focus:text-ellipsis">
{% translate 'Management' %} {% translate 'Management' %}
</span> </span>
</div> </div>
@@ -140,14 +165,13 @@
<div id="collapsible-panel" <div id="collapsible-panel"
class="p-0 collapse tw:absolute tw:bottom-0 tw:left-0 tw:w-full tw:z-30 tw:max-h-dvh"> class="p-0 collapse tw:absolute tw:bottom-0 tw:left-0 tw:w-full tw:z-30 tw:max-h-dvh">
<div class="tw:h-dvh tw:backdrop-blur-3xl tw:flex tw:flex-col"> <div class="tw:h-dvh tw:backdrop-blur-3xl tw:flex tw:flex-col">
<!-- Header -->
<div <div
class="tw:flex tw:justify-between tw:items-center tw:p-4 tw:border-b tw:border-gray-600 tw:lg:hidden tw:lg:group-hover:flex"> class="tw:justify-between tw:items-center tw:p-4 tw:border-b tw:border-gray-600 sidebar-submenu-header">
<h5 class="tw:text-lg tw:font-semibold tw:text-gray-800 tw:lg:invisible tw:lg:group-hover:visible"> <h5 class="tw:text-lg tw:font-semibold tw:text-gray-800 m-0">
{% trans 'Management' %} {% trans 'Management' %}
</h5> </h5>
<button type="button" class="btn-close tw:lg:hidden tw:lg:group-hover:inline" aria-label="Close" <button type="button" class="btn-close" aria-label="Close"
data-bs-toggle="collapse" data-bs-toggle="collapse"
data-bs-target="#collapsible-panel" data-bs-target="#collapsible-panel"
aria-expanded="true" aria-expanded="true"
@@ -155,7 +179,7 @@
</button> </button>
</div> </div>
<ul class="list-unstyled p-3 d-flex flex-column gap-1 tw:group-hover:lg:overflow-y-auto tw:lg:overflow-y-hidden tw:overflow-y-auto tw:overflow-x-hidden tw:text-nowrap tw:lg:group-hover:animate-[disable-pointer-events] tw:flex-1" <ul class="list-unstyled p-3 d-flex flex-column gap-1 tw:lg:group-hover:animate-[disable-pointer-events] tw:flex-1"
style="animation-duration: 100ms"> style="animation-duration: 100ms">
<c-components.sidebar-menu-header title="{% translate 'Transactions' %}"></c-components.sidebar-menu-header> <c-components.sidebar-menu-header title="{% translate 'Transactions' %}"></c-components.sidebar-menu-header>
<c-components.sidebar-menu-item <c-components.sidebar-menu-item
@@ -273,17 +297,24 @@
<div> <div>
<hr class="my-1"> <hr class="my-1">
<div <div
class="ps-4 pe-2 py-2 d-flex align-items-center text-body-secondary text-decoration-none justify-content-between tw:text-wrap tw:lg:text-nowrap"> class="ps-4 pe-2 py-2 d-flex align-items-center text-decoration-none justify-content-between">
<div>
<i class="fa-solid fa-circle-user"></i> <div class="d-flex align-items-center" style="min-width: 0;">
<strong class="ms-2 tw:lg:invisible tw:lg:group-hover:visible">{{ user.email }}</strong> <i class="fa-solid fa-circle-user text-body-secondary"></i>
<strong class="mx-2 text-body-secondary text-truncate sidebar-invisible">
{{ user.email }}
</strong>
</div> </div>
<div class="tw:lg:invisible tw:lg:group-hover:visible">
<div class="sidebar-invisible">
{% include 'includes/navbar/user_menu.html' %} {% include 'includes/navbar/user_menu.html' %}
</div> </div>
</div> </div>
</div> </div>
</nav> </nav>
<div <div
class="tw:hidden tw:lg:group-hover:block tw:absolute tw:top-0 tw:left-104 tw:w-16 tw:h-full tw:bg-transparent"></div> class="tw:hidden tw:lg:group-hover:block tw:absolute tw:top-0 tw:left-104 tw:w-16 tw:h-full tw:bg-transparent"></div>
</div> </div>
@@ -268,95 +268,97 @@
<!-- Entity rows --> <!-- Entity rows -->
{% if show_entities %} {% if show_entities %}
{% for entity_id, entity in tag.entities.items %} {% for entity_id, entity in tag.entities.items %}
<tr class="table-row-nested-2"> {% if entity.name or not entity.name and tag.entities.values|length > 1 %}
<td class="ps-5"> <tr class="table-row-nested-2">
<i class="fa-solid fa-user-group fa-fw me-2 text-muted"></i>{{ entity.name }} <td class="ps-5">
</td> <i class="fa-solid fa-user-group fa-fw me-2 text-muted"></i>{% if entity.name %}{{ entity.name }}{% else %}{% trans 'No entity' %}{% endif %}
<td> </td>
{% for currency in entity.currencies.values %} <td>
{% if showing == 'current' and currency.income_current != 0 %} {% for currency in entity.currencies.values %}
<c-amount.display {% if showing == 'current' and currency.income_current != 0 %}
:amount="currency.income_current" <c-amount.display
:prefix="currency.currency.prefix" :amount="currency.income_current"
:suffix="currency.currency.suffix" :prefix="currency.currency.prefix"
:decimal_places="currency.currency.decimal_places" :suffix="currency.currency.suffix"
color="green"></c-amount.display> :decimal_places="currency.currency.decimal_places"
{% elif showing == 'projected' and currency.income_projected != 0 %} color="green"></c-amount.display>
<c-amount.display {% elif showing == 'projected' and currency.income_projected != 0 %}
:amount="currency.income_projected" <c-amount.display
:prefix="currency.currency.prefix" :amount="currency.income_projected"
:suffix="currency.currency.suffix" :prefix="currency.currency.prefix"
:decimal_places="currency.currency.decimal_places" :suffix="currency.currency.suffix"
color="green"></c-amount.display> :decimal_places="currency.currency.decimal_places"
{% elif showing == 'final' and currency.total_income != 0 %} color="green"></c-amount.display>
<c-amount.display {% elif showing == 'final' and currency.total_income != 0 %}
:amount="currency.total_income" <c-amount.display
:prefix="currency.currency.prefix" :amount="currency.total_income"
:suffix="currency.currency.suffix" :prefix="currency.currency.prefix"
:decimal_places="currency.currency.decimal_places" :suffix="currency.currency.suffix"
color="green"></c-amount.display> :decimal_places="currency.currency.decimal_places"
{% else %} color="green"></c-amount.display>
<div>-</div> {% else %}
{% endif %} <div>-</div>
{% endfor %} {% endif %}
</td> {% endfor %}
<td> </td>
{% for currency in entity.currencies.values %} <td>
{% if showing == 'current' and currency.expense_current != 0 %} {% for currency in entity.currencies.values %}
<c-amount.display {% if showing == 'current' and currency.expense_current != 0 %}
:amount="currency.expense_current" <c-amount.display
:prefix="currency.currency.prefix" :amount="currency.expense_current"
:suffix="currency.currency.suffix" :prefix="currency.currency.prefix"
:decimal_places="currency.currency.decimal_places" :suffix="currency.currency.suffix"
color="red"></c-amount.display> :decimal_places="currency.currency.decimal_places"
{% elif showing == 'projected' and currency.expense_projected != 0 %} color="red"></c-amount.display>
<c-amount.display {% elif showing == 'projected' and currency.expense_projected != 0 %}
:amount="currency.expense_projected" <c-amount.display
:prefix="currency.currency.prefix" :amount="currency.expense_projected"
:suffix="currency.currency.suffix" :prefix="currency.currency.prefix"
:decimal_places="currency.currency.decimal_places" :suffix="currency.currency.suffix"
color="red"></c-amount.display> :decimal_places="currency.currency.decimal_places"
{% elif showing == 'final' and currency.total_expense != 0 %} color="red"></c-amount.display>
<c-amount.display {% elif showing == 'final' and currency.total_expense != 0 %}
:amount="currency.total_expense" <c-amount.display
:prefix="currency.currency.prefix" :amount="currency.total_expense"
:suffix="currency.currency.suffix" :prefix="currency.currency.prefix"
:decimal_places="currency.currency.decimal_places" :suffix="currency.currency.suffix"
color="red"></c-amount.display> :decimal_places="currency.currency.decimal_places"
{% else %} color="red"></c-amount.display>
<div>-</div> {% else %}
{% endif %} <div>-</div>
{% endfor %} {% endif %}
</td> {% endfor %}
<td> </td>
{% for currency in entity.currencies.values %} <td>
{% if showing == 'current' and currency.total_current != 0 %} {% for currency in entity.currencies.values %}
<c-amount.display {% if showing == 'current' and currency.total_current != 0 %}
:amount="currency.total_current" <c-amount.display
:prefix="currency.currency.prefix" :amount="currency.total_current"
:suffix="currency.currency.suffix" :prefix="currency.currency.prefix"
:decimal_places="currency.currency.decimal_places" :suffix="currency.currency.suffix"
color="{% if currency.total_final < 0 %}red{% else %}green{% endif %}"></c-amount.display> :decimal_places="currency.currency.decimal_places"
{% elif showing == 'projected' and currency.total_projected != 0 %} color="{% if currency.total_final < 0 %}red{% else %}green{% endif %}"></c-amount.display>
<c-amount.display {% elif showing == 'projected' and currency.total_projected != 0 %}
:amount="currency.total_projected" <c-amount.display
:prefix="currency.currency.prefix" :amount="currency.total_projected"
:suffix="currency.currency.suffix" :prefix="currency.currency.prefix"
:decimal_places="currency.currency.decimal_places" :suffix="currency.currency.suffix"
color="{% if currency.total_final < 0 %}red{% else %}green{% endif %}"></c-amount.display> :decimal_places="currency.currency.decimal_places"
{% elif showing == 'final' and currency.total_final != 0 %} color="{% if currency.total_final < 0 %}red{% else %}green{% endif %}"></c-amount.display>
<c-amount.display {% elif showing == 'final' and currency.total_final != 0 %}
:amount="currency.total_final" <c-amount.display
:prefix="currency.currency.prefix" :amount="currency.total_final"
:suffix="currency.currency.suffix" :prefix="currency.currency.prefix"
:decimal_places="currency.currency.decimal_places" :suffix="currency.currency.suffix"
color="{% if currency.total_final < 0 %}red{% else %}green{% endif %}"></c-amount.display> :decimal_places="currency.currency.decimal_places"
{% else %} color="{% if currency.total_final < 0 %}red{% else %}green{% endif %}"></c-amount.display>
<div>-</div> {% else %}
{% endif %} <div>-</div>
{% endfor %} {% endif %}
</td> {% endfor %}
</tr> </td>
</tr>
{% endif %}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% endif %} {% endif %}
+1 -1
View File
@@ -35,7 +35,7 @@
{% include 'includes/mobile_navbar.html' %} {% include 'includes/mobile_navbar.html' %}
{% include 'includes/sidebar.html' %} {% include 'includes/sidebar.html' %}
<main class="tw:p-4 tw:lg:ml-16"> <main class="tw:p-4">
{% settings "DEMO" as demo_mode %} {% settings "DEMO" as demo_mode %}
{% if demo_mode %} {% if demo_mode %}
<div class="px-3 m-0" id="demo-mode-alert" hx-preserve> <div class="px-3 m-0" id="demo-mode-alert" hx-preserve>
@@ -44,12 +44,12 @@
</div> </div>
</div> </div>
{# Action buttons#} {# Action buttons#}
{# <div class="col-12 col-xl-8">#} {# <div class="col-12 col-xl-8">#}
{# <c-ui.quick-transactions-buttons#} {# <c-ui.quick-transactions-buttons#}
{# :year="year"#} {# :year="year"#}
{# :month="month"#} {# :month="month"#}
{# ></c-ui.quick-transactions-buttons>#} {# ></c-ui.quick-transactions-buttons>#}
{# </div>#} {# </div>#}
</div> </div>
{# Monthly summary#} {# Monthly summary#}
<div class="row gx-xl-4 gy-3"> <div class="row gx-xl-4 gy-3">
@@ -133,59 +133,101 @@
</div> </div>
<div class="col-12 col-xl-8 order-2 order-xl-1"> <div class="col-12 col-xl-8 order-2 order-xl-1">
<div class="row mb-1">
<div class="col-sm-6 col-12"> <div class="my-3">
{# Filter transactions button #} {# Hidden select to hold the order value and preserve the original update trigger #}
<button type="button" class="btn btn-sm btn-outline-primary dropdown-toggle" type="button" <select name="order" id="order" class="d-none" _="on change trigger updated on window">
data-bs-toggle="collapse" data-bs-target="#collapse-filter" aria-expanded="false" <option value="default" {% if order == 'default' %}selected{% endif %}>{% translate 'Default' %}</option>
aria-controls="collapse-filter"> <option value="older" {% if order == 'older' %}selected{% endif %}>{% translate 'Oldest first' %}</option>
<i class="fa-solid fa-filter fa-fw me-2"></i>{% translate 'Filter transactions' %} <option value="newer" {% if order == 'newer' %}selected{% endif %}>{% translate 'Newest first' %}</option>
</select>
{# Main control bar with filter, search, and ordering #}
<div class="input-group">
<button class="btn btn-secondary position-relative" type="button"
data-bs-toggle="collapse" data-bs-target="#collapse-filter"
aria-expanded="false" aria-controls="collapse-filter" id="filter-button" hx-preserve
title="{% translate 'Filter transactions' %}">
<i class="fa-solid fa-filter fa-fw"></i>
</button> </button>
</div>
{# Ordering button#} {# Search box #}
<div class="col-sm-6 col-12 tw:content-center my-3 my-sm-0"> <label for="quick-search">
<div class="text-sm-end" _="on change trigger updated on window"> </label>
<label for="order">{% translate "Order by" %}</label> <input type="search"
<select class="form-control"
class="tw:border-0 tw:focus-visible:outline-0 w-full pe-2 tw:leading-normal text-bg-tertiary tw:font-medium rounded bg-body text-body" placeholder="{% translate 'Search' %}"
name="order" id="order"> hx-preserve
<option value="default"
{% if order == 'default' %}selected{% endif %}>{% translate 'Default' %}</option>
<option value="older"
{% if order == 'older' %}selected{% endif %}>{% translate 'Oldest first' %}</option>
<option value="newer"
{% if order == 'newer' %}selected{% endif %}>{% translate 'Newest first' %}</option>
</select>
</div>
</div>
</div>
{# Filter transactions form#}
<div class="collapse" id="collapse-filter" hx-preserve>
<div class="card card-body">
<form _="on change or submit or search trigger updated on window end
install init_tom_select
install init_datepicker"
id="filter">
{% crispy filter.form %}
</form>
<button class="btn btn-outline-danger btn-sm"
_="on click call #filter.reset() then trigger change on #filter">{% translate 'Clear' %}</button>
</div>
</div>
<div id="search" class="my-3">
<label class="w-100">
<input type="search" class="form-control" placeholder="{% translate 'Search' %}" hx-preserve
id="quick-search" id="quick-search"
_="on input or search or htmx:afterSwap from window _="on input or search or htmx:afterSwap from window
if my value is empty if my value is empty
trigger toggle on <.transactions-divider-collapse/> trigger toggle on <.transactions-divider-collapse/>
else else
trigger show on <.transactions-divider-collapse/> trigger show on <.transactions-divider-collapse/>
end end
show <.transactions-divider-title/> when my value is empty show <.transactions-divider-title/> when my value is empty
show <.transaction/> in <#transactions-list/> show <.transaction/> in <#transactions-list/>
when its textContent.toLowerCase() contains my value.toLowerCase()"> when its textContent.toLowerCase() contains my value.toLowerCase()">
</label>
{# Order by icon dropdown #}
<button class="btn btn-secondary dropdown-toggle dropdown-toggle-no-icon" type="button"
data-bs-toggle="dropdown" aria-expanded="false"
title="{% translate 'Order by' %}">
<i class="fa-solid fa-sort fa-fw"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li>
<button class="dropdown-item {% if order == 'default' %}active{% endif %}" type="button"
_="on click remove .active from .dropdown-item in the closest <ul/>
then add .active to me
then set the value of #order to 'default'
then trigger change on #order">
{% translate 'Default' %}
</button>
</li>
<li>
<button class="dropdown-item {% if order == 'older' %}active{% endif %}" type="button"
_="on click remove .active from .dropdown-item in the closest <ul/>
then add .active to me
then set the value of #order to 'older'
then trigger change on #order">
{% translate 'Oldest first' %}
</button>
</li>
<li>
<button class="dropdown-item {% if order == 'newer' %}active{% endif %}" type="button"
_="on click remove .active from .dropdown-item in the closest <ul/>
then add .active to me
then set the value of #order to 'newer'
then trigger change on #order">
{% translate 'Newest first' %}
</button>
</li>
</ul>
</div>
{# Filter transactions form #}
<div class="collapse" id="collapse-filter" hx-preserve>
<div class="card card-body">
<div class="text-end">
<button class="btn btn-outline-danger btn-sm tw:w-fit"
_="on click call #filter.reset() then trigger change on #filter">{% translate 'Clear' %}</button>
</div>
<form _="on change or submit or search trigger updated on window
install init_tom_select
install init_datepicker"
id="filter" class="mt-3">
{% crispy filter.form %}
</form>
<div class="text-end">
<button class="btn btn-outline-danger btn-sm tw:w-fit"
_="on click call #filter.reset() then trigger change on #filter">{% translate 'Clear' %}</button>
</div>
</div>
</div>
</div> </div>
{# Transactions list#} {# Transactions list#}
<div id="transactions" <div id="transactions"
+4
View File
@@ -23,6 +23,7 @@
<tr> <tr>
<th scope="col" class="col-auto"></th> <th scope="col" class="col-auto"></th>
<th scope="col" class="col-auto"></th> <th scope="col" class="col-auto"></th>
<th scope="col" class="col-auto">{% translate 'Order' %}</th>
<th scope="col" class="col">{% translate 'Name' %}</th> <th scope="col" class="col">{% translate 'Name' %}</th>
</tr> </tr>
</thead> </thead>
@@ -80,6 +81,9 @@
<i class="fa-solid fa-toggle-off tw:text-red-400"></i>{% endif %} <i class="fa-solid fa-toggle-off tw:text-red-400"></i>{% endif %}
</a> </a>
</td> </td>
<td class="col text-center">
<div>{{ rule.order }}</div>
</td>
<td class="col"> <td class="col">
<div>{{ rule.name }}</div> <div>{{ rule.name }}</div>
<div class="tw:text-gray-400">{{ rule.description }}</div> <div class="tw:text-gray-400">{{ rule.description }}</div>
@@ -0,0 +1,16 @@
{% extends 'extends/offcanvas.html' %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block title %}{% translate 'Edit transaction rule' %}{% endblock %}
{% block body %}
<form hx-post="{% url 'transaction_rule_dry_run_created' pk=rule.id %}" hx-target="#generic-offcanvas"
hx-indicator="#dry-run-created-result, closest form" class="show-loading" novalidate>
{% crispy form %}
</form>
<hr>
<div id="dry-run-created-result" class="show-loading">
{% include 'rules/fragments/transaction_rule/dry_run/visual.html' with logs=logs results=results %}
</div>
{% endblock %}
@@ -0,0 +1,16 @@
{% extends 'extends/offcanvas.html' %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block title %}{% translate 'Edit transaction rule' %}{% endblock %}
{% block body %}
<form hx-post="{% url 'transaction_rule_dry_run_deleted' pk=rule.id %}" hx-target="#generic-offcanvas"
hx-indicator="#dry-run-deleted-result, closest form" class="show-loading" novalidate>
{% crispy form %}
</form>
<hr>
<div id="dry-run-deleted-result" class="show-loading">
{% include 'rules/fragments/transaction_rule/dry_run/visual.html' with logs=logs results=results %}
</div>
{% endblock %}
@@ -0,0 +1,16 @@
{% extends 'extends/offcanvas.html' %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block title %}{% translate 'Edit transaction rule' %}{% endblock %}
{% block body %}
<form hx-post="{% url 'transaction_rule_dry_run_updated' pk=rule.id %}" hx-target="#generic-offcanvas"
hx-indicator="#dry-run-updated-result, closest form" class="show-loading" novalidate>
{% crispy form %}
</form>
<hr>
<div id="dry-run-updated-result" class="show-loading">
{% include 'rules/fragments/transaction_rule/dry_run/visual.html' with logs=logs results=results %}
</div>
{% endblock %}
@@ -0,0 +1,101 @@
{% load i18n %}
<div class="card tw:max-h-full tw:overflow-auto tw:overflow-x-auto">
<div class="card-header">
<ul class="nav nav-tabs card-header-tabs">
<li class="nav-item">
<button class="nav-link active" id="visual-tab" data-bs-toggle="tab" data-bs-target="#visual-tab-pane"
type="button" role="tab" aria-controls="visual-tab-pane"
aria-selected="true">{% translate 'Visual' %}</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="logs-tab" data-bs-toggle="tab" data-bs-target="#logs-tab-pane" type="button"
role="tab" aria-controls="logs-tab-pane" aria-selected="false">{% translate 'Logs' %}</button>
</li>
</ul>
</div>
<div class="card-body">
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="visual-tab-pane" role="tabpanel" aria-labelledby="home-tab"
tabindex="0">
{% if not results %}
{% translate 'Run a test to see...' %}
{% else %}
{% for result in results %}
{% if result.type == 'header' %}
<div class="my-3">
<h6 class="text-center mb-3">
<span class="badge text-bg-secondary">
{% if result.header_type == "edit_transaction" %}
{% translate 'Edit transaction' %}
{% elif result.header_type == "update_or_create_transaction" %}
{% translate 'Update or create transaction' %}
{% endif %}
</span>
</h6>
</div>
{% endif %}
{% if result.type == 'triggering_transaction' %}
<div class="mt-4">
<h6 class="text-center mb-3"><span class="badge text-bg-secondary">{% translate 'Start' %}</span></h6>
<c-transaction.item :transaction="result.transaction" :dummy="True"
:disable-selection="True"></c-transaction.item>
</div>
{% endif %}
{% if result.type == 'edit_transaction' %}
<div>
<div>
{% translate 'Set' %} <span
class="badge text-bg-secondary">{{ result.field }}</span> {% translate 'to' %}
<span class="badge text-bg-secondary">{{ result.new_value }}</span>
</div>
<c-transaction.item :transaction="result.transaction" :dummy="True"
:disable-selection="True"></c-transaction.item>
</div>
{% endif %}
{% if result.type == 'update_or_create_transaction' %}
<div>
<div class="alert alert-info" role="alert">
{% translate 'Search' %}: {{ result.query }}
</div>
{% if result.start_transaction %}
<c-transaction.item :transaction="result.start_transaction" :dummy="True"
:disable-selection="True"></c-transaction.item>
{% else %}
<div class="alert alert-danger" role="alert">
{% translate 'No transaction found, a new one will be created' %}
</div>
{% endif %}
<div class="text-center h3 my-2"><i class="fa-solid fa-arrow-down"></i></div>
<c-transaction.item :transaction="result.end_transaction" :dummy="True"
:disable-selection="True"></c-transaction.item>
</div>
{% endif %}
{% if result.type == 'error' %}
<div>
<div class="alert alert-{% if result.level == 'error' %}danger{% elif result.level == 'warning' %}warning{% else %}info{% endif %}" role="alert">
{{ result.error }}
</div>
</div>
{% endif %}
{% endfor %}
{% endif %}
</div>
<div class="tab-pane fade" id="logs-tab-pane" role="tabpanel" aria-labelledby="logs-tab" tabindex="0">
{% if not logs %}
{% translate 'Run a test to see...' %}
{% else %}
<pre>
{{ logs|linebreaks }}
</pre>
{% endif %}
</div>
</div>
</div>
</div>
@@ -30,95 +30,128 @@
<div class="my-3"> <div class="my-3">
<div class="tw:text-xl mb-2">{% translate 'Then...' %}</div> <div class="tw:text-xl mb-2">{% translate 'Then...' %}</div>
{% for action in transaction_rule.transaction_actions.all %} {% for action in all_actions %}
<div class="card mb-3"> {% if action.action_type == "edit_transaction" %}
<div class="card-header"> <div class="card mb-3">
<div><span class="badge text-bg-primary">{% trans 'Edit transaction' %}</span></div> <div class="card-header">
<div>
{% if action.order != 0 %}<span class="badge text-bg-secondary">{{ action.order }}</span>{% endif %}
<span class="badge text-bg-primary">{% trans 'Edit transaction' %}</span>
</div>
</div>
<div class="card-body">
<div>
{% translate 'Set' %} <span
class="badge text-bg-secondary">{{ action.get_field_display }}</span> {% translate 'to' %}
</div>
<div class="text-bg-secondary rounded-3 mt-3 p-2">{{ action.value }}</div>
</div>
<div class="card-footer text-end">
<a class="text-decoration-none tw:text-gray-400 p-1"
role="button"
data-bs-toggle="tooltip"
data-bs-title="{% translate 'Edit' %}"
hx-get="{% url 'transaction_rule_action_edit' transaction_rule_action_id=action.id %}"
hx-target="#generic-offcanvas">
<i class="fa-solid fa-pencil fa-fw"></i>
</a>
<a class="text-danger text-decoration-none p-1"
role="button"
data-bs-toggle="tooltip"
data-bs-title="{% translate 'Delete' %}"
hx-delete="{% url 'transaction_rule_action_delete' transaction_rule_action_id=action.id %}"
hx-trigger='confirmed'
data-bypass-on-ctrl="true"
data-title="{% translate 'Are you sure?' %}"
data-text="{% translate "You won't be able to revert this!" %}"
data-confirm-text="{% translate 'Yes, delete it!' %}"
_="install prompt_swal">
<i class="fa-solid fa-trash fa-fw"></i>
</a>
</div>
</div> </div>
<div class="card-body"> {% elif action.action_type == "update_or_create_transaction" %}
<div>{% translate 'Set' %} <span <div class="card mb-3">
class="badge text-bg-secondary">{{ action.get_field_display }}</span> {% translate 'to' %}</div> <div class="card-header">
<div class="text-bg-secondary rounded-3 mt-3 p-2">{{ action.value }}</div> <div>
{% if action.order != 0 %}<span class="badge text-bg-secondary">{{ action.order }}</span>{% endif %}
<span class="badge text-bg-primary">{% trans 'Update or create transaction' %}</span>
</div>
</div>
<div class="card-body">
<div>{% trans 'Edit to view' %}</div>
</div>
<div class="card-footer text-end">
<a class="text-decoration-none tw:text-gray-400 p-1"
role="button"
data-bs-toggle="tooltip"
data-bs-title="{% translate 'Edit' %}"
hx-get="{% url 'update_or_create_transaction_rule_action_edit' pk=action.id %}"
hx-target="#generic-offcanvas">
<i class="fa-solid fa-pencil fa-fw"></i>
</a>
<a class="text-danger text-decoration-none p-1"
role="button"
data-bs-toggle="tooltip"
data-bs-title="{% translate 'Delete' %}"
hx-delete="{% url 'update_or_create_transaction_rule_action_delete' pk=action.id %}"
hx-trigger='confirmed'
data-bypass-on-ctrl="true"
data-title="{% translate 'Are you sure?' %}"
data-text="{% translate "You won't be able to revert this!" %}"
data-confirm-text="{% translate 'Yes, delete it!' %}"
_="install prompt_swal">
<i class="fa-solid fa-trash fa-fw"></i>
</a>
</div>
</div> </div>
<div class="card-footer text-end"> {% endif %}
<a class="text-decoration-none tw:text-gray-400 p-1" {% empty %}
role="button"
data-bs-toggle="tooltip"
data-bs-title="{% translate "Edit" %}"
hx-get="{% url 'transaction_rule_action_edit' transaction_rule_action_id=action.id %}"
hx-target="#generic-offcanvas">
<i class="fa-solid fa-pencil fa-fw"></i>
</a>
<a class="text-danger text-decoration-none p-1"
role="button"
data-bs-toggle="tooltip"
data-bs-title="{% translate "Delete" %}"
hx-delete="{% url 'transaction_rule_action_delete' transaction_rule_action_id=action.id %}"
hx-trigger='confirmed'
data-bypass-on-ctrl="true"
data-title="{% translate "Are you sure?" %}"
data-text="{% translate "You won't be able to revert this!" %}"
data-confirm-text="{% translate "Yes, delete it!" %}"
_="install prompt_swal">
<i class="fa-solid fa-trash fa-fw"></i>
</a>
</div>
</div>
{% endfor %}
{% for action in transaction_rule.update_or_create_transaction_actions.all %}
<div class="card mb-3">
<div class="card-header">
<div><span class="badge text-bg-primary">{% trans 'Update or create transaction' %}</span></div>
</div>
<div class="card-body">
<div>{% trans 'Edit to view' %}</div>
</div>
<div class="card-footer text-end">
<a class="text-decoration-none tw:text-gray-400 p-1"
role="button"
data-bs-toggle="tooltip"
data-bs-title="{% translate "Edit" %}"
hx-get="{% url 'update_or_create_transaction_rule_action_edit' pk=action.id %}"
hx-target="#generic-offcanvas">
<i class="fa-solid fa-pencil fa-fw"></i>
</a>
<a class="text-danger text-decoration-none p-1"
role="button"
data-bs-toggle="tooltip"
data-bs-title="{% translate "Delete" %}"
hx-delete="{% url 'update_or_create_transaction_rule_action_delete' pk=action.id %}"
hx-trigger='confirmed'
data-bypass-on-ctrl="true"
data-title="{% translate "Are you sure?" %}"
data-text="{% translate "You won't be able to revert this!" %}"
data-confirm-text="{% translate "Yes, delete it!" %}"
_="install prompt_swal">
<i class="fa-solid fa-trash fa-fw"></i>
</a>
</div>
</div>
{% endfor %}
{% if not transaction_rule.update_or_create_transaction_actions.all and not transaction_rule.transaction_actions.all %}
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
{% translate 'This rule has no actions' %} {% translate 'This rule has no actions' %}
</div> </div>
</div> </div>
{% endif %} {% endfor %}
<hr> <hr>
<div class="dropdown"> <div class="d-grid d-lg-flex gap-2">
<button class="btn btn-outline-primary text-decoration-none w-100" type="button" data-bs-toggle="dropdown" <div class="dropdown flex-fill">
aria-expanded="false"> <button class="btn btn-outline-primary text-decoration-none w-100" type="button" data-bs-toggle="dropdown"
<i class="fa-solid fa-circle-plus me-2"></i>{% translate 'Add new' %} aria-expanded="false">
</button> <i class="fa-solid fa-flask-vial me-2"></i>{% translate 'Test' %}
<ul class="dropdown-menu dropdown-menu-end w-100"> </button>
<li><a class="dropdown-item" role="link" <ul class="dropdown-menu">
hx-get="{% url 'transaction_rule_action_add' transaction_rule_id=transaction_rule.id %}" {% if transaction_rule.on_create %}
hx-target="#generic-offcanvas">{% trans 'Edit Transaction' %}</a></li> <li><a class="dropdown-item" role="link" href="#"
<li><a class="dropdown-item" role="link" hx-get="{% url 'transaction_rule_dry_run_created' pk=transaction_rule.id %}"
hx-get="{% url 'update_or_create_transaction_rule_action_add' transaction_rule_id=transaction_rule.id %}" hx-target="#generic-offcanvas">{% trans 'Create' %}</a></li>
hx-target="#generic-offcanvas">{% trans 'Update or Create Transaction' %}</a></li> {% endif %}
</ul> {% if transaction_rule.on_update %}
<li><a class="dropdown-item" role="link" href="#"
hx-get="{% url 'transaction_rule_dry_run_updated' pk=transaction_rule.id %}"
hx-target="#generic-offcanvas">{% trans 'Update' %}</a></li>
{% endif %}
{% if transaction_rule.on_delete %}
<li><a class="dropdown-item" role="link" href="#"
hx-get="{% url 'transaction_rule_dry_run_deleted' pk=transaction_rule.id %}"
hx-target="#generic-offcanvas">{% trans 'Delete' %}</a></li>
{% endif %}
</ul>
</div>
<div class="dropdown flex-fill">
<button class="btn btn-outline-primary text-decoration-none w-100" type="button" data-bs-toggle="dropdown"
aria-expanded="false">
<i class="fa-solid fa-circle-plus me-2"></i>{% translate 'Add new' %}
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" role="link" href="#"
hx-get="{% url 'transaction_rule_action_add' transaction_rule_id=transaction_rule.id %}"
hx-target="#generic-offcanvas">{% trans 'Edit Transaction' %}</a></li>
<li><a class="dropdown-item" role="link" href="#"
hx-get="{% url 'update_or_create_transaction_rule_action_add' transaction_rule_id=transaction_rule.id %}"
hx-target="#generic-offcanvas">{% trans 'Update or Create Transaction' %}</a></li>
</ul>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -5,121 +5,128 @@
<div id="transactions-list"> <div id="transactions-list">
{% for x in transactions_by_date %} {% for x in transactions_by_date %}
<div id="{{ x.grouper|slugify }}" <div id="{{ x.grouper|slugify }}" class="transactions-divider"
_="on htmx:afterSettle from #transactions if sessionStorage.getItem(my id) is null then sessionStorage.setItem(my id, 'true')"> _="on htmx:afterSwap from #transactions if sessionStorage.getItem(my id) is null then sessionStorage.setItem(my id, 'true')">
<div class="mt-3 mb-1 w-100 tw:text-base border-bottom bg-body"> <div class="mt-3 mb-1 w-100 tw:text-base border-bottom bg-body transactions-divider-title">
<a class="text-decoration-none d-inline-block w-100" <a class="text-decoration-none d-inline-block w-100"
role="button" role="button"
data-bs-toggle="collapse" data-bs-toggle="collapse"
data-bs-target="#c-{{ x.grouper|slugify }}-collapse" data-bs-target="#c-{{ x.grouper|slugify }}-collapse"
id="c-{{ x.grouper|slugify }}-collapsible" id="c-{{ x.grouper|slugify }}-collapsible"
aria-expanded="true" aria-expanded="false"
aria-controls="c-{{ x.grouper|slugify }}-collapse"> aria-controls="c-{{ x.grouper|slugify }}-collapse">
{{ x.grouper }} {{ x.grouper }}
</a> </a>
</div> </div>
<div class="collapse" id="c-{{ x.grouper|slugify }}-collapse" <div class="collapse transactions-divider-collapse" id="c-{{ x.grouper|slugify }}-collapse"
_="on shown.bs.collapse sessionStorage.setItem(the closest parent @id, 'true') _="on shown.bs.collapse sessionStorage.setItem(the closest parent @id, 'true')
on hidden.bs.collapse sessionStorage.setItem(the closest parent @id, 'false') on hidden.bs.collapse sessionStorage.setItem(the closest parent @id, 'false')
on htmx:afterSettle from #transactions on htmx:afterSettle from #transactions or toggle
set state to sessionStorage.getItem(the closest parent @id) set state to sessionStorage.getItem(the closest parent @id)
if state is 'true' or state is null if state is 'true' or state is null
add .show to me add .show to me
set @aria-expanded of #c-{{ x.grouper|slugify }}-collapsible to true set @aria-expanded of #c-{{ x.grouper|slugify }}-collapsible to true
end"> else
remove .show from me
set @aria-expanded of #c-{{ x.grouper|slugify }}-collapsible to false
end
on show
add .show to me
set @aria-expanded of #c-{{ x.grouper|slugify }}-collapsible to true">
<div class="d-flex flex-column"> <div class="d-flex flex-column">
{% for transaction in x.list %} {% for transaction in x.list %}
<c-transaction.item :transaction="transaction"></c-transaction.item> <c-transaction.item
:transaction="transaction"></c-transaction.item>
{% endfor %} {% endfor %}
</div> </div>
</div> </div>
</div> </div>
{% empty %} {% empty %}
<c-msg.empty <c-msg.empty
title="{% translate "No transactions found" %}" title="{% translate "No transactions found" %}"
subtitle="{% translate "Try adding one" %}"></c-msg.empty> subtitle="{% translate "Try adding one" %}"></c-msg.empty>
{% endfor %} {% endfor %}
{% if page_obj.has_other_pages %} {% if page_obj.has_other_pages %}
<div class="mt-auto"> <div class="mt-auto">
<input value="{{ page_obj.number }}" name="page" type="hidden" id="page"> <input value="{{ page_obj.number }}" name="page" type="hidden" id="page">
<nav aria-label="{% translate 'Page navigation' %}"> <nav aria-label="{% translate 'Page navigation' %}">
<ul class="pagination justify-content-center mt-5"> <ul class="pagination justify-content-center mt-5">
<li class="page-item"> <li class="page-item">
<a class="page-link tw:cursor-pointer {% if not page_obj.has_previous %}disabled{% endif %}" <a class="page-link tw:cursor-pointer {% if not page_obj.has_previous %}disabled{% endif %}"
hx-get="{% if page_obj.has_previous %}{% url 'transactions_all_list' %}{% endif %}" hx-get="{% if page_obj.has_previous %}{% url 'transactions_all_list' %}{% endif %}"
hx-vals='{"page": 1}' hx-vals='{"page": 1}'
hx-include="#filter, #order" hx-include="#filter, #order"
hx-target="#transactions-list" hx-target="#transactions-list"
aria-label="Primeira página" aria-label="Primeira página"
hx-swap="show:top"> hx-swap="show:top">
<span aria-hidden="true">&laquo;</span> <span aria-hidden="true">&laquo;</span>
</a> </a>
</li> </li>
{% for page_number in page_obj.paginator.page_range %} {% for page_number in page_obj.paginator.page_range %}
{% comment %} {% comment %}
This conditional allows us to display up to 3 pages before and after the current page This conditional allows us to display up to 3 pages before and after the current page
If you decide to remove this conditional, all the pages will be displayed If you decide to remove this conditional, all the pages will be displayed
You can change the 3 to any number you want e.g You can change the 3 to any number you want e.g
To display only 5 pagination items, change the 3 to 2 (2 before and 2 after the current page) To display only 5 pagination items, change the 3 to 2 (2 before and 2 after the current page)
{% endcomment %} {% endcomment %}
{% if page_number <= page_obj.number|add:3 and page_number >= page_obj.number|add:-3 %} {% if page_number <= page_obj.number|add:3 and page_number >= page_obj.number|add:-3 %}
{% if page_obj.number == page_number %} {% if page_obj.number == page_number %}
<li class="page-item active"> <li class="page-item active">
<a class="page-link tw:cursor-pointer"> <a class="page-link tw:cursor-pointer">
{{ page_number }} {{ page_number }}
</a> </a>
</li> </li>
{% else %} {% else %}
<li class="page-item"> <li class="page-item">
<a class="page-link tw:cursor-pointer" <a class="page-link tw:cursor-pointer"
hx-get="{% url 'transactions_all_list' %}" hx-get="{% url 'transactions_all_list' %}"
hx-vals='{"page": {{ page_number }}}' hx-vals='{"page": {{ page_number }}}'
hx-include="#filter, #order" hx-include="#filter, #order"
hx-target="#transactions-list" hx-target="#transactions-list"
hx-swap="show:top"> hx-swap="show:top">
{{ page_number }} {{ page_number }}
</a> </a>
</li> </li>
{% endif %}
{% endif %} {% endif %}
{% endfor %} {% endif %}
{% if page_obj.number|add:3 < page_obj.paginator.num_pages %} {% endfor %}
<li class="page-item"> {% if page_obj.number|add:3 < page_obj.paginator.num_pages %}
<a class="page-link disabled" <li class="page-item">
aria-label="..."> <a class="page-link disabled"
<span aria-hidden="true">...</span> aria-label="...">
</a> <span aria-hidden="true">...</span>
</li> </a>
<li class="page-item"> </li>
<a class="page-link tw:cursor-pointer" <li class="page-item">
hx-get="{% url 'transactions_all_list' %}" hx-target="#transactions-list" <a class="page-link tw:cursor-pointer"
hx-vals='{"page": {{ page_obj.paginator.num_pages }}}' hx-get="{% url 'transactions_all_list' %}" hx-target="#transactions-list"
hx-include="#filter, #order" hx-vals='{"page": {{ page_obj.paginator.num_pages }}}'
hx-swap="show:top" hx-include="#filter, #order"
aria-label="Última página"> hx-swap="show:top"
<span aria-hidden="true">{{ page_obj.paginator.num_pages }}</span> aria-label="Última página">
</a> <span aria-hidden="true">{{ page_obj.paginator.num_pages }}</span>
</li> </a>
{% endif %} </li>
<li class="page-item"> {% endif %}
<a class="page-link {% if not page_obj.has_next %}disabled{% endif %} tw:cursor-pointer" <li class="page-item">
hx-get="{% if page_obj.has_next %}{% url 'transactions_all_list' %}{% endif %}" <a class="page-link {% if not page_obj.has_next %}disabled{% endif %} tw:cursor-pointer"
hx-vals='{"page": {{ page_obj.paginator.num_pages }}}' hx-get="{% if page_obj.has_next %}{% url 'transactions_all_list' %}{% endif %}"
hx-include="#filter, #order" hx-vals='{"page": {{ page_obj.paginator.num_pages }}}'
hx-swap="show:top" hx-include="#filter, #order"
hx-target="#transactions-list" hx-swap="show:top"
aria-label="Next"> hx-target="#transactions-list"
<span aria-hidden="true">&raquo;</span> aria-label="Next">
</a> <span aria-hidden="true">&raquo;</span>
</li> </a>
</ul> </li>
</nav> </ul>
</div> </nav>
</div>
{% endif %} {% endif %}
{# Floating bar#} {# Floating bar#}
<c-ui.transactions-action-bar></c-ui.transactions-action-bar> <c-ui.transactions-action-bar></c-ui.transactions-action-bar>
</div> </div>
@@ -8,45 +8,101 @@
<div class="container px-md-3 py-3 column-gap-5"> <div class="container px-md-3 py-3 column-gap-5">
<div class="row gx-xl-4 gy-3"> <div class="row gx-xl-4 gy-3">
<div class="col-12 col-xl-8 order-2 order-xl-1"> <div class="col-12 col-xl-8 order-2 order-xl-1">
<div class="row mb-1"> <div class="mb-3">
<div class="col-sm-6 col-12"> {# Hidden select to hold the order value and preserve the original update trigger #}
{# Filter transactions button #} <select name="order" id="order" class="d-none" _="on change trigger updated on window">
<button type="button" class="btn btn-sm btn-outline-primary dropdown-toggle" type="button" <option value="default" {% if order == 'default' %}selected{% endif %}>{% translate 'Default' %}</option>
data-bs-toggle="collapse" data-bs-target="#collapse-filter" aria-expanded="false" <option value="older" {% if order == 'older' %}selected{% endif %}>{% translate 'Oldest first' %}</option>
aria-controls="collapse-filter"> <option value="newer" {% if order == 'newer' %}selected{% endif %}>{% translate 'Newest first' %}</option>
<i class="fa-solid fa-filter fa-fw me-2"></i>{% translate 'Filter transactions' %} </select>
{# Main control bar with filter, search, and ordering #}
<div class="input-group">
<button class="btn btn-secondary position-relative" type="button"
data-bs-toggle="collapse" data-bs-target="#collapse-filter"
aria-expanded="false" aria-controls="collapse-filter" id="filter-button" hx-preserve
title="{% translate 'Filter transactions' %}">
<i class="fa-solid fa-filter fa-fw"></i>
</button> </button>
{# Search box #}
<label for="quick-search">
</label>
<input type="search"
class="form-control"
placeholder="{% translate 'Search' %}"
hx-preserve
id="quick-search"
_="on input or search or htmx:afterSwap from window
if my value is empty
trigger toggle on <.transactions-divider-collapse/>
else
trigger show on <.transactions-divider-collapse/>
end
show <.transactions-divider-title/> when my value is empty
show <.transaction/> in <#transactions-list/>
when its textContent.toLowerCase() contains my value.toLowerCase()">
{# Order by icon dropdown #}
<button class="btn btn-secondary dropdown-toggle dropdown-toggle-no-icon" type="button"
data-bs-toggle="dropdown" aria-expanded="false"
title="{% translate 'Order by' %}">
<i class="fa-solid fa-sort fa-fw"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li>
<button class="dropdown-item {% if order == 'default' %}active{% endif %}" type="button"
_="on click remove .active from .dropdown-item in the closest <ul/>
then add .active to me
then set the value of #order to 'default'
then trigger change on #order">
{% translate 'Default' %}
</button>
</li>
<li>
<button class="dropdown-item {% if order == 'older' %}active{% endif %}" type="button"
_="on click remove .active from .dropdown-item in the closest <ul/>
then add .active to me
then set the value of #order to 'older'
then trigger change on #order">
{% translate 'Oldest first' %}
</button>
</li>
<li>
<button class="dropdown-item {% if order == 'newer' %}active{% endif %}" type="button"
_="on click remove .active from .dropdown-item in the closest <ul/>
then add .active to me
then set the value of #order to 'newer'
then trigger change on #order">
{% translate 'Newest first' %}
</button>
</li>
</ul>
</div> </div>
{# Ordering button#}
<div class="col-sm-6 col-12 tw:content-center my-3 my-sm-0"> {# Filter transactions form #}
<div class="text-sm-end" _="on change trigger updated on window"> <div class="collapse" id="collapse-filter" hx-preserve>
<label for="order">{% translate "Order by" %}</label> <div class="card card-body">
<select <div class="text-end">
class="tw:border-0 tw:focus-visible:outline-0 w-full pe-2 tw:leading-normal text-bg-tertiary tw:font-medium rounded bg-body text-body" <button class="btn btn-outline-danger btn-sm tw:w-fit"
name="order" id="order"> _="on click call #filter.reset() then trigger change on #filter">{% translate 'Clear' %}</button>
<option value="default" </div>
{% if order == 'default' %}selected{% endif %}>{% translate 'Default' %}</option>
<option value="older" <form _="on change or submit or search trigger updated on window
{% if order == 'older' %}selected{% endif %}>{% translate 'Oldest first' %}</option> install init_tom_select
<option value="newer" install init_datepicker"
{% if order == 'newer' %}selected{% endif %}>{% translate 'Newest first' %}</option> id="filter" class="mt-3">
</select> {% crispy filter.form %}
</form>
<div class="text-end">
<button class="btn btn-outline-danger btn-sm tw:w-fit"
_="on click call #filter.reset() then trigger change on #filter">{% translate 'Clear' %}</button>
</div>
</div> </div>
</div> </div>
</div> </div>
{# Filter transactions form#}
<div class="collapse" id="collapse-filter">
<div class="card card-body">
<form _="on change or submit or search trigger updated on window end
install init_tom_select
install init_datepicker"
id="filter">
{% crispy filter.form %}
</form>
<button class="btn btn-outline-danger btn-sm"
_="on click call #filter.reset() then trigger change on #filter">{% translate 'Clear' %}</button>
</div>
</div>
<div id="transactions" <div id="transactions"
class="show-loading" class="show-loading"
hx-get="{% url 'transactions_all_list' %}" hx-get="{% url 'transactions_all_list' %}"
+4
View File
@@ -49,3 +49,7 @@ $theme-colors: map.merge(
.offcanvas-size-sm { .offcanvas-size-sm {
--#{$prefix}offcanvas-width: min(95vw, 250px) !important; --#{$prefix}offcanvas-width: min(95vw, 250px) !important;
} }
.dropdown-toggle.dropdown-toggle-no-icon::after {
display:none;
}
+131 -1
View File
@@ -3,9 +3,139 @@
@custom-variant hover (&:hover); @custom-variant hover (&:hover);
.sidebar-active { .sidebar-active {
@apply tw:bg-gray-700 tw:text-white; @apply tw:bg-gray-700 tw:text-white;
} }
.sidebar-item:not(.sidebar-active) { .sidebar-item:not(.sidebar-active) {
@apply tw:text-gray-300 tw:hover:text-white; @apply tw:text-gray-300 tw:hover:text-white;
} }
@layer components {
.sidebar {
@apply tw:z-1020 tw:fixed tw:top-0 tw:start-0 tw:h-full tw:transition-all tw:duration-100;
}
.sidebar-floating {
/* Establishes the hover group and sets the collapsed/hover widths for the container */
@apply tw:lg:w-16 tw:lg:hover:w-112;
}
.sidebar-floating #sidebar {
/* Sets the collapsed/hover widths for the inner navigation element */
@apply tw:lg:w-16 tw:lg:group-hover:w-104 tw:transition-all tw:duration-100 tw:overflow-hidden;
}
.sidebar-floating + main {
/* Adjusts the main content margin to account for the collapsed sidebar */
@apply tw:lg:ml-16 tw:transition-all tw:duration-100;
}
.sidebar-floating .sidebar-item span {
/* Hides the text labels and reveals them only on hover */
@apply tw:lg:invisible tw:lg:group-hover:visible;
}
.sidebar-floating .sidebar-invisible {
/* Hides the text labels and reveals them only on hover */
@apply tw:lg:invisible tw:lg:group-hover:visible;
}
.sidebar-floating .sidebar-menu-header {
/* Hides the menu headers and reveals them only on hover */
@apply tw:lg:hidden tw:lg:group-hover:inline;
}
.sidebar-floating #sidebar-toggle-btn .fa-thumbtack-slash {
/* Hides the 'pin' icon in the floating state */
@apply tw:hidden!;
}
.sidebar-floating #sidebar-toggle-btn .fa-thumbtack {
/* Shows the 'expand' icon in the floating state */
@apply tw:inline-block!;
}
.sidebar-floating .sidebar-title span {
@apply tw:lg:invisible tw:lg:group-hover:visible
}
.sidebar-submenu-header {
@apply tw:flex;
}
.sidebar-floating .sidebar-submenu-header {
@apply tw:lg:hidden tw:lg:group-hover:flex;
}
.sidebar-floating .sidebar-submenu-header h5 {
@apply tw:lg:invisible tw:lg:group-hover:visible;
}
.sidebar-floating .sidebar-submenu-header button {
@apply tw:lg:hidden tw:lg:group-hover:inline;
}
.sidebar-floating .list-unstyled {
@apply tw:group-hover:lg:overflow-y-auto tw:lg:overflow-y-hidden tw:overflow-y-auto tw:overflow-x-hidden;
}
.sidebar-floating .sidebar-item {
@apply tw:text-wrap tw:lg:text-nowrap ;
}
/* --- STATE 2: Fixed (Permanently Expanded) --- */
.sidebar-fixed {
/* Sets the fixed, expanded width for the container */
@apply tw:lg:w-[17%] tw:transition-all tw:duration-100;
}
.sidebar-fixed #sidebar {
/* Sets the fixed, expanded width for the inner navigation */
@apply tw:lg:w-[17%] tw:transition-all tw:duration-100;
}
.sidebar-fixed + main {
/* Adjusts the main content margin to account for the expanded sidebar */
@apply tw:lg:ml-[17%] tw:transition-all tw:duration-100;
/* Using 16vw to account for padding/margins */
}
.sidebar-fixed .sidebar-item {
@apply tw:text-wrap;
}
.sidebar-fixed .sidebar-item span {
/* Ensures text labels are always visible */
@apply tw:lg:visible;
}
.sidebar-fixed .sidebar-menu-header {
/* Ensures menu headers are always visible */
@apply tw:lg:inline;
}
.sidebar-fixed #sidebar-toggle-btn .fa-thumbtack-slash {
/* Shows the 'pin' icon in the fixed state */
@apply tw:inline-block!;
}
.sidebar-fixed #sidebar-toggle-btn .fa-thumbtack {
/* Hides the 'expand' icon in the fixed state */
@apply tw:hidden!;
}
.sidebar-fixed .sidebar-title span {
@apply tw:lg:visible;
}
.sidebar-fixed .sidebar-submenu-header {
/* Ensures menu headers are always visible */
@apply tw:lg:flex;
}
.sidebar-fixed .list-unstyled {
@apply tw:overflow-y-auto tw:overflow-x-hidden;
}
}