mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-02-25 17:04:51 +01:00
Compare commits
39 Commits
0.16.0
...
feat/bette
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
64b32316ca | ||
|
|
efe020efb3 | ||
|
|
8c133f92ce | ||
|
|
f3c9d8faea | ||
|
|
8f5204a17b | ||
|
|
2235bdeabb | ||
|
|
d724300513 | ||
|
|
eacafa1def | ||
|
|
c738f5ee29 | ||
|
|
72904266bf | ||
|
|
670bee4325 | ||
|
|
3e2c1184ce | ||
|
|
731f351eef | ||
|
|
b7056e7aa1 | ||
|
|
accceed630 | ||
|
|
76346cb503 | ||
|
|
3df8952ea2 | ||
|
|
9bd067da96 | ||
|
|
1abe9e9f62 | ||
|
|
1a86b5dea4 | ||
|
|
8f2f5a16c2 | ||
|
|
4565dc770b | ||
|
|
23673def09 | ||
|
|
dd2b9ead7e | ||
|
|
2078e9f3e4 | ||
|
|
e6bab57ab4 | ||
|
|
38d50a78f4 | ||
|
|
0d947f9ba6 | ||
|
|
99c85a56bb | ||
|
|
ab1c074f27 | ||
|
|
abf3a148cc | ||
|
|
2733c92da5 | ||
|
|
9bfbe54ed5 | ||
|
|
5b27dea07c | ||
|
|
791e1000a3 | ||
|
|
7301d9f475 | ||
|
|
47a44e96f8 | ||
|
|
7d247eb737 | ||
|
|
373616e7bb |
@@ -379,7 +379,7 @@ DEBUG_TOOLBAR_PANELS = [
|
||||
"debug_toolbar.panels.signals.SignalsPanel",
|
||||
"debug_toolbar.panels.redirects.RedirectsPanel",
|
||||
"debug_toolbar.panels.profiling.ProfilingPanel",
|
||||
"cachalot.panels.CachalotPanel",
|
||||
# "cachalot.panels.CachalotPanel",
|
||||
]
|
||||
INTERNAL_IPS = [
|
||||
"127.0.0.1",
|
||||
|
||||
@@ -3,6 +3,7 @@ from crispy_forms.bootstrap import FormActions
|
||||
from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Layout, Field, Column, Row
|
||||
from django import forms
|
||||
from django.db.models import Q
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
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.transactions.models import TransactionCategory, TransactionTag
|
||||
from apps.common.widgets.decimal import ArbitraryDecimalDisplayNumberInput
|
||||
from apps.currencies.models import Currency
|
||||
|
||||
|
||||
class AccountGroupForm(forms.ModelForm):
|
||||
@@ -79,6 +81,18 @@ class AccountForm(forms.ModelForm):
|
||||
|
||||
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.form_tag = False
|
||||
self.helper.form_method = "post"
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from copy import deepcopy
|
||||
|
||||
from rest_framework import viewsets
|
||||
|
||||
from apps.api.custom.pagination import CustomPageNumberPagination
|
||||
@@ -30,8 +32,9 @@ class TransactionViewSet(viewsets.ModelViewSet):
|
||||
transaction_created.send(sender=instance)
|
||||
|
||||
def perform_update(self, serializer):
|
||||
old_data = deepcopy(Transaction.objects.get(pk=serializer.data["pk"]))
|
||||
instance = serializer.save()
|
||||
transaction_updated.send(sender=instance)
|
||||
transaction_updated.send(sender=instance, old_data=old_data)
|
||||
|
||||
def partial_update(self, request, *args, **kwargs):
|
||||
kwargs["partial"] = True
|
||||
|
||||
@@ -9,5 +9,8 @@ def truncate_decimal(value, decimal_places):
|
||||
:param decimal_places: The number of decimal places to keep
|
||||
:return: Truncated Decimal value
|
||||
"""
|
||||
if isinstance(value, (int, float)):
|
||||
value = Decimal(str(value))
|
||||
|
||||
multiplier = Decimal(10**decimal_places)
|
||||
return (value * multiplier).to_integral_value(rounding=ROUND_DOWN) / multiplier
|
||||
|
||||
@@ -23,7 +23,7 @@ async def remove_old_jobs(context, timestamp):
|
||||
return await builtin_tasks.remove_old_jobs(
|
||||
context,
|
||||
max_hours=744,
|
||||
remove_error=True,
|
||||
remove_failed=True,
|
||||
remove_cancelled=True,
|
||||
remove_aborted=True,
|
||||
)
|
||||
|
||||
@@ -26,6 +26,7 @@ class CurrencyForm(forms.ModelForm):
|
||||
"suffix",
|
||||
"code",
|
||||
"exchange_currency",
|
||||
"is_archived",
|
||||
]
|
||||
widgets = {
|
||||
"exchange_currency": TomSelect(),
|
||||
@@ -40,6 +41,7 @@ class CurrencyForm(forms.ModelForm):
|
||||
self.helper.layout = Layout(
|
||||
"code",
|
||||
"name",
|
||||
Switch("is_archived"),
|
||||
"decimal_places",
|
||||
"prefix",
|
||||
"suffix",
|
||||
|
||||
18
app/apps/currencies/migrations/0022_currency_is_archived.py
Normal file
18
app/apps/currencies/migrations/0022_currency_is_archived.py
Normal file
@@ -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'),
|
||||
),
|
||||
]
|
||||
@@ -32,6 +32,11 @@ class Currency(models.Model):
|
||||
help_text=_("Default currency for exchange calculations"),
|
||||
)
|
||||
|
||||
is_archived = models.BooleanField(
|
||||
default=False,
|
||||
verbose_name=_("Archived"),
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
@@ -40,12 +40,6 @@ class CurrencyTests(TestCase):
|
||||
with self.assertRaises(ValidationError):
|
||||
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):
|
||||
"""Test that currency names must be unique"""
|
||||
Currency.objects.create(code="USD", name="US Dollar", decimal_places=2)
|
||||
|
||||
@@ -12,7 +12,10 @@ from apps.currencies.utils.convert import convert
|
||||
def get_categories_totals(
|
||||
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 = (
|
||||
transactions_queryset.values(
|
||||
"category",
|
||||
@@ -76,7 +79,10 @@ def get_categories_totals(
|
||||
.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(
|
||||
"category",
|
||||
"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 = {}
|
||||
|
||||
# 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:
|
||||
# Skip empty categories if ignore_empty is True
|
||||
if ignore_empty and all(
|
||||
@@ -185,7 +193,7 @@ def get_categories_totals(
|
||||
"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"]:
|
||||
from_currency = Currency.objects.get(id=currency_id)
|
||||
exchange_currency = Currency.objects.get(
|
||||
@@ -224,7 +232,7 @@ def get_categories_totals(
|
||||
|
||||
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:
|
||||
category_id = tag_metric["category"]
|
||||
tag_id = tag_metric["tags"] # Will be None for untagged transactions
|
||||
@@ -281,7 +289,7 @@ def get_categories_totals(
|
||||
"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"]:
|
||||
from_currency = Currency.objects.get(id=currency_id)
|
||||
exchange_currency = Currency.objects.get(
|
||||
@@ -322,6 +330,7 @@ def get_categories_totals(
|
||||
currency_id
|
||||
] = tag_currency_data
|
||||
|
||||
# Step 6: If requested, aggregate and process entity-level data.
|
||||
if show_entities:
|
||||
entity_metrics = transactions_queryset.values(
|
||||
"category",
|
||||
@@ -389,14 +398,15 @@ def get_categories_totals(
|
||||
tag_id = entity_metric["tags"]
|
||||
entity_id = entity_metric["entities"]
|
||||
|
||||
if not entity_id:
|
||||
continue
|
||||
|
||||
if category_id in result:
|
||||
tag_key = tag_id if tag_id is not None else "untagged"
|
||||
if tag_key in result[category_id]["tags"]:
|
||||
entity_key = entity_id
|
||||
entity_name = entity_metric["entities__name"]
|
||||
entity_key = entity_id if entity_id is not None else "no_entity"
|
||||
entity_name = (
|
||||
entity_metric["entities__name"]
|
||||
if entity_id is not None
|
||||
else None
|
||||
)
|
||||
|
||||
if "entities" not in result[category_id]["tags"][tag_key]:
|
||||
result[category_id]["tags"][tag_key]["entities"] = {}
|
||||
|
||||
@@ -102,4 +102,6 @@ def get_transactions(
|
||||
account__in=request.user.untracked_accounts.all()
|
||||
)
|
||||
|
||||
transactions = transactions.exclude(account__currency__is_archived=True)
|
||||
|
||||
return transactions
|
||||
|
||||
@@ -30,6 +30,7 @@ def calculate_historical_currency_net_worth(queryset):
|
||||
| Q(accounts__visibility="private", accounts__owner=None),
|
||||
accounts__is_archived=False,
|
||||
accounts__isnull=False,
|
||||
is_archived=False,
|
||||
)
|
||||
.values_list("name", flat=True)
|
||||
.distinct()
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
from crispy_bootstrap5.bootstrap5 import Switch, BS5Accordion
|
||||
from crispy_forms.bootstrap import FormActions, AccordionGroup
|
||||
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.core.exceptions import ValidationError
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
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 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):
|
||||
@@ -40,6 +44,8 @@ class TransactionRuleForm(forms.ModelForm):
|
||||
Column(Switch("on_create")),
|
||||
Column(Switch("on_delete")),
|
||||
),
|
||||
"order",
|
||||
Switch("sequenced"),
|
||||
"description",
|
||||
"trigger",
|
||||
)
|
||||
@@ -65,10 +71,11 @@ class TransactionRuleForm(forms.ModelForm):
|
||||
class TransactionRuleActionForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = TransactionRuleAction
|
||||
fields = ("value", "field")
|
||||
fields = ("value", "field", "order")
|
||||
labels = {
|
||||
"field": _("Set field"),
|
||||
"value": _("To"),
|
||||
"order": _("Order"),
|
||||
}
|
||||
widgets = {"field": TomSelect(clear_button=False)}
|
||||
|
||||
@@ -82,6 +89,7 @@ class TransactionRuleActionForm(forms.ModelForm):
|
||||
self.helper.form_method = "post"
|
||||
# TO-DO: Add helper with available commands
|
||||
self.helper.layout = Layout(
|
||||
"order",
|
||||
"field",
|
||||
"value",
|
||||
)
|
||||
@@ -147,9 +155,11 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
"search_category_operator": TomSelect(clear_button=False),
|
||||
"search_internal_note_operator": TomSelect(clear_button=False),
|
||||
"search_internal_id_operator": TomSelect(clear_button=False),
|
||||
"search_mute_operator": TomSelect(clear_button=False),
|
||||
}
|
||||
|
||||
labels = {
|
||||
"order": _("Order"),
|
||||
"search_account_operator": _("Operator"),
|
||||
"search_type_operator": _("Operator"),
|
||||
"search_is_paid_operator": _("Operator"),
|
||||
@@ -163,6 +173,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
"search_internal_id_operator": _("Operator"),
|
||||
"search_tags_operator": _("Operator"),
|
||||
"search_entities_operator": _("Operator"),
|
||||
"search_mute_operator": _("Operator"),
|
||||
"search_account": _("Account"),
|
||||
"search_type": _("Type"),
|
||||
"search_is_paid": _("Paid"),
|
||||
@@ -176,6 +187,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
"search_internal_id": _("Internal ID"),
|
||||
"search_tags": _("Tags"),
|
||||
"search_entities": _("Entities"),
|
||||
"search_mute": _("Mute"),
|
||||
"set_account": _("Account"),
|
||||
"set_type": _("Type"),
|
||||
"set_is_paid": _("Paid"),
|
||||
@@ -189,6 +201,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
"set_category": _("Category"),
|
||||
"set_internal_note": _("Internal Note"),
|
||||
"set_internal_id": _("Internal ID"),
|
||||
"set_mute": _("Mute"),
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
@@ -200,6 +213,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
self.helper.form_method = "post"
|
||||
|
||||
self.helper.layout = Layout(
|
||||
"order",
|
||||
BS5Accordion(
|
||||
AccordionGroup(
|
||||
_("Search Criteria"),
|
||||
@@ -224,6 +238,16 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
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(
|
||||
Column(
|
||||
Field("search_account_operator"),
|
||||
@@ -340,6 +364,7 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
_("Set Values"),
|
||||
Field("set_type", rows=1),
|
||||
Field("set_is_paid", rows=1),
|
||||
Field("set_mute", rows=1),
|
||||
Field("set_account", rows=1),
|
||||
Field("set_entities", rows=1),
|
||||
Field("set_date", rows=1),
|
||||
@@ -381,3 +406,112 @@ class UpdateOrCreateTransactionRuleActionForm(forms.ModelForm):
|
||||
if commit:
|
||||
instance.save()
|
||||
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"),
|
||||
),
|
||||
]
|
||||
18
app/apps/rules/migrations/0016_transactionrule_sequenced.py
Normal file
18
app/apps/rules/migrations/0016_transactionrule_sequenced.py
Normal file
@@ -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'),
|
||||
),
|
||||
]
|
||||
18
app/apps/rules/migrations/0018_transactionrule_order.py
Normal file
18
app/apps/rules/migrations/0018_transactionrule_order.py
Normal file
@@ -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'),
|
||||
),
|
||||
]
|
||||
@@ -13,6 +13,11 @@ class TransactionRule(SharedObject):
|
||||
name = models.CharField(max_length=100, verbose_name=_("Name"))
|
||||
description = models.TextField(blank=True, null=True, verbose_name=_("Description"))
|
||||
trigger = models.TextField(verbose_name=_("Trigger"))
|
||||
sequenced = models.BooleanField(
|
||||
verbose_name=_("Sequenced"),
|
||||
default=False,
|
||||
)
|
||||
order = models.PositiveIntegerField(default=0, verbose_name=_("Order"))
|
||||
|
||||
objects = SharedObjectManager()
|
||||
all_objects = models.Manager() # Unfiltered manager
|
||||
@@ -32,12 +37,15 @@ class TransactionRuleAction(models.Model):
|
||||
is_paid = "is_paid", _("Paid")
|
||||
date = "date", _("Date")
|
||||
reference_date = "reference_date", _("Reference Date")
|
||||
mute = "mute", _("Mute")
|
||||
amount = "amount", _("Amount")
|
||||
description = "description", _("Description")
|
||||
notes = "notes", _("Notes")
|
||||
category = "category", _("Category")
|
||||
tags = "tags", _("Tags")
|
||||
entities = "entities", _("Entities")
|
||||
internal_note = "internal_nome", _("Internal Note")
|
||||
internal_id = "internal_id", _("Internal ID")
|
||||
|
||||
rule = models.ForeignKey(
|
||||
TransactionRule,
|
||||
@@ -51,6 +59,7 @@ class TransactionRuleAction(models.Model):
|
||||
verbose_name=_("Field"),
|
||||
)
|
||||
value = models.TextField(verbose_name=_("Value"))
|
||||
order = models.PositiveIntegerField(default=0, verbose_name=_("Order"))
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.rule} - {self.field} - {self.value}"
|
||||
@@ -59,6 +68,11 @@ class TransactionRuleAction(models.Model):
|
||||
verbose_name = _("Edit transaction action")
|
||||
verbose_name_plural = _("Edit transaction actions")
|
||||
unique_together = (("rule", "field"),)
|
||||
ordering = ["order"]
|
||||
|
||||
@property
|
||||
def action_type(self):
|
||||
return "edit_transaction"
|
||||
|
||||
|
||||
class UpdateOrCreateTransactionRuleAction(models.Model):
|
||||
@@ -237,6 +251,17 @@ class UpdateOrCreateTransactionRuleAction(models.Model):
|
||||
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_account = models.TextField(
|
||||
verbose_name=_("Account"),
|
||||
@@ -290,10 +315,21 @@ class UpdateOrCreateTransactionRuleAction(models.Model):
|
||||
verbose_name=_("Tags"),
|
||||
blank=True,
|
||||
)
|
||||
set_mute = models.TextField(
|
||||
verbose_name=_("Mute"),
|
||||
blank=True,
|
||||
)
|
||||
|
||||
order = models.PositiveIntegerField(default=0, verbose_name=_("Order"))
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Update or create transaction action")
|
||||
verbose_name_plural = _("Update or create transaction actions")
|
||||
ordering = ["order"]
|
||||
|
||||
@property
|
||||
def action_type(self):
|
||||
return "update_or_create_transaction"
|
||||
|
||||
def __str__(self):
|
||||
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)
|
||||
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:
|
||||
value = simple.eval(self.search_date)
|
||||
search_query &= add_to_query("date", value, self.search_date_operator)
|
||||
|
||||
@@ -9,40 +9,17 @@ from apps.transactions.models import (
|
||||
)
|
||||
from apps.rules.tasks import check_for_transaction_rules
|
||||
from apps.common.middleware.thread_local import get_current_user
|
||||
from apps.rules.utils.transactions import serialize_transaction
|
||||
|
||||
|
||||
@receiver(transaction_created)
|
||||
@receiver(transaction_updated)
|
||||
@receiver(transaction_deleted)
|
||||
def transaction_changed_receiver(sender: Transaction, signal, **kwargs):
|
||||
old_data = kwargs.get("old_data")
|
||||
if signal is transaction_deleted:
|
||||
# Serialize transaction data for processing
|
||||
transaction_data = {
|
||||
"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,
|
||||
}
|
||||
transaction_data = serialize_transaction(sender, deleted=True)
|
||||
|
||||
check_for_transaction_rules.defer(
|
||||
transaction_data=transaction_data,
|
||||
@@ -59,6 +36,9 @@ def transaction_changed_receiver(sender: Transaction, signal, **kwargs):
|
||||
dca_entry.amount_received = sender.amount
|
||||
dca_entry.save()
|
||||
|
||||
if signal is transaction_updated and old_data:
|
||||
old_data = serialize_transaction(old_data, deleted=False)
|
||||
|
||||
check_for_transaction_rules.defer(
|
||||
instance_id=sender.id,
|
||||
user_id=get_current_user().id,
|
||||
@@ -67,4 +47,5 @@ def transaction_changed_receiver(sender: Transaction, signal, **kwargs):
|
||||
if signal is transaction_created
|
||||
else "transaction_updated"
|
||||
),
|
||||
old_data=old_data,
|
||||
)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -42,6 +42,21 @@ urlpatterns = [
|
||||
views.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(
|
||||
"rules/transaction/<int:pk>/share/",
|
||||
views.transaction_rule_share,
|
||||
|
||||
0
app/apps/rules/utils/__init__.py
Normal file
0
app/apps/rules/utils/__init__.py
Normal file
93
app/apps/rules/utils/transactions.py
Normal file
93
app/apps/rules/utils/transactions.py
Normal 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,
|
||||
}
|
||||
@@ -1,5 +1,10 @@
|
||||
from itertools import chain
|
||||
|
||||
from copy import deepcopy
|
||||
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.db import transaction
|
||||
from django.http import HttpResponse
|
||||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
@@ -10,6 +15,9 @@ from apps.rules.forms import (
|
||||
TransactionRuleForm,
|
||||
TransactionRuleActionForm,
|
||||
UpdateOrCreateTransactionRuleActionForm,
|
||||
DryRunCreatedTransacion,
|
||||
DryRunDeletedTransacion,
|
||||
DryRunUpdatedTransactionForm,
|
||||
)
|
||||
from apps.rules.models import (
|
||||
TransactionRule,
|
||||
@@ -19,6 +27,11 @@ from apps.rules.models import (
|
||||
from apps.common.models import SharedObject
|
||||
from apps.common.forms import SharedObjectForm
|
||||
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
|
||||
@@ -36,7 +49,7 @@ def rules_index(request):
|
||||
@disabled_on_demo
|
||||
@require_http_methods(["GET"])
|
||||
def rules_list(request):
|
||||
transaction_rules = TransactionRule.objects.all().order_by("id")
|
||||
transaction_rules = TransactionRule.objects.all().order_by("order", "id")
|
||||
return render(
|
||||
request,
|
||||
"rules/fragments/list.html",
|
||||
@@ -140,10 +153,20 @@ def transaction_rule_edit(request, transaction_rule_id):
|
||||
def transaction_rule_view(request, 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(
|
||||
request,
|
||||
"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",
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@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},
|
||||
)
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from copy import deepcopy
|
||||
|
||||
from crispy_bootstrap5.bootstrap5 import Switch, BS5Accordion
|
||||
from crispy_forms.bootstrap import FormActions, AccordionGroup, AppendedText
|
||||
from crispy_forms.helper import FormHelper
|
||||
@@ -239,11 +241,16 @@ class TransactionForm(forms.ModelForm):
|
||||
def save(self, **kwargs):
|
||||
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)
|
||||
if is_new:
|
||||
transaction_created.send(sender=instance)
|
||||
else:
|
||||
transaction_updated.send(sender=instance)
|
||||
transaction_updated.send(sender=instance, old_data=old_data)
|
||||
|
||||
return instance
|
||||
|
||||
@@ -347,11 +354,6 @@ class QuickTransactionForm(forms.ModelForm):
|
||||
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(
|
||||
@@ -387,35 +389,115 @@ class QuickTransactionForm(forms.ModelForm):
|
||||
)
|
||||
|
||||
|
||||
class BulkEditTransactionForm(TransactionForm):
|
||||
is_paid = forms.NullBooleanField(required=False)
|
||||
class BulkEditTransactionForm(forms.Form):
|
||||
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):
|
||||
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
|
||||
del self.helper.layout[0:2] # Remove type, is_paid field
|
||||
self.fields["account"].queryset = Account.objects.filter(
|
||||
is_archived=False,
|
||||
)
|
||||
|
||||
self.helper.layout.insert(
|
||||
0,
|
||||
self.fields["category"].queryset = TransactionCategory.objects.filter(
|
||||
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(
|
||||
"type",
|
||||
template="transactions/widgets/unselectable_income_expense_toggle_buttons.html",
|
||||
),
|
||||
)
|
||||
|
||||
self.helper.layout.insert(
|
||||
1,
|
||||
Field(
|
||||
"is_paid",
|
||||
template="transactions/widgets/unselectable_paid_toggle_button.html",
|
||||
),
|
||||
)
|
||||
|
||||
self.helper.layout.append(
|
||||
Row(
|
||||
Column("account", css_class="form-group col-md-6 mb-0"),
|
||||
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(
|
||||
NoClassSubmit(
|
||||
"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):
|
||||
from_account = forms.ModelChoiceField(
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import logging
|
||||
from copy import deepcopy
|
||||
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from django.conf import settings
|
||||
@@ -33,13 +34,13 @@ transaction_deleted = Signal()
|
||||
|
||||
class SoftDeleteQuerySet(models.QuerySet):
|
||||
@staticmethod
|
||||
def _emit_signals(instances, created=False):
|
||||
def _emit_signals(instances, created=False, old_data=None):
|
||||
"""Helper to emit signals for multiple instances"""
|
||||
for instance in instances:
|
||||
for i, instance in enumerate(instances):
|
||||
if created:
|
||||
transaction_created.send(sender=instance)
|
||||
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):
|
||||
instances = super().bulk_create(objs, **kwargs)
|
||||
@@ -50,22 +51,25 @@ class SoftDeleteQuerySet(models.QuerySet):
|
||||
return instances
|
||||
|
||||
def bulk_update(self, objs, fields, emit_signal=True, **kwargs):
|
||||
old_data = deepcopy(objs)
|
||||
result = super().bulk_update(objs, fields, **kwargs)
|
||||
|
||||
if emit_signal:
|
||||
self._emit_signals(objs, created=False)
|
||||
self._emit_signals(objs, created=False, old_data=old_data)
|
||||
|
||||
return result
|
||||
|
||||
def update(self, emit_signal=True, **kwargs):
|
||||
# Get instances before update
|
||||
instances = list(self)
|
||||
old_data = deepcopy(instances)
|
||||
|
||||
result = super().update(**kwargs)
|
||||
|
||||
if emit_signal:
|
||||
# Refresh instances to get new values
|
||||
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
|
||||
|
||||
@@ -376,7 +380,7 @@ class Transaction(OwnedObject):
|
||||
db_table = "transactions"
|
||||
default_manager_name = "objects"
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
def clean_fields(self, *args, **kwargs):
|
||||
self.amount = truncate_decimal(
|
||||
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:
|
||||
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()
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
@@ -443,12 +452,58 @@ class Transaction(OwnedObject):
|
||||
type_display = self.get_type_display()
|
||||
frmt_date = date(self.date, "SHORT_DATE_FORMAT")
|
||||
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")
|
||||
amount = localize_number(drop_trailing_zeros(self.amount))
|
||||
description = self.description or _("No description")
|
||||
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 Recurrence(models.TextChoices):
|
||||
|
||||
@@ -175,6 +175,6 @@ class RecurringTransactionTests(TestCase):
|
||||
recurrence_type=RecurringTransaction.RecurrenceType.MONTH,
|
||||
recurrence_interval=1,
|
||||
)
|
||||
self.assertFalse(recurring.paused)
|
||||
self.assertFalse(recurring.is_paused)
|
||||
self.assertEqual(recurring.recurrence_interval, 1)
|
||||
self.assertEqual(recurring.account.currency.code, "USD")
|
||||
|
||||
@@ -213,6 +213,7 @@ def transactions_bulk_edit(request):
|
||||
if form.is_valid():
|
||||
# Apply changes from the form to all selected transactions
|
||||
for transaction in transactions:
|
||||
old_data = deepcopy(transaction)
|
||||
for field_name, value in form.cleaned_data.items():
|
||||
if value or isinstance(
|
||||
value, bool
|
||||
@@ -225,7 +226,7 @@ def transactions_bulk_edit(request):
|
||||
setattr(transaction, field_name, value)
|
||||
|
||||
transaction.save()
|
||||
transaction_updated.send(sender=transaction)
|
||||
transaction_updated.send(sender=transaction, old_data=old_data)
|
||||
|
||||
messages.success(
|
||||
request,
|
||||
@@ -373,10 +374,13 @@ def transactions_transfer(request):
|
||||
@require_http_methods(["GET"])
|
||||
def transaction_pay(request, 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
|
||||
transaction.is_paid = new_is_paid
|
||||
transaction.save()
|
||||
transaction_updated.send(sender=transaction)
|
||||
|
||||
transaction_updated.send(sender=transaction, old_data=old_data)
|
||||
|
||||
response = render(
|
||||
request,
|
||||
@@ -394,11 +398,12 @@ def transaction_pay(request, transaction_id):
|
||||
@require_http_methods(["GET"])
|
||||
def transaction_mute(request, transaction_id):
|
||||
transaction = get_object_or_404(Transaction, pk=transaction_id)
|
||||
old_data = deepcopy(transaction)
|
||||
|
||||
new_mute = False if transaction.mute else True
|
||||
transaction.mute = new_mute
|
||||
transaction.save()
|
||||
transaction_updated.send(sender=transaction)
|
||||
transaction_updated.send(sender=transaction, old_data=old_data)
|
||||
|
||||
response = render(
|
||||
request,
|
||||
@@ -414,19 +419,20 @@ def transaction_mute(request, transaction_id):
|
||||
@require_http_methods(["GET"])
|
||||
def transaction_change_month(request, transaction_id, change_type):
|
||||
transaction: Transaction = get_object_or_404(Transaction, pk=transaction_id)
|
||||
old_data = deepcopy(transaction)
|
||||
|
||||
if change_type == "next":
|
||||
transaction.reference_date = transaction.reference_date + relativedelta(
|
||||
months=1
|
||||
)
|
||||
transaction.save()
|
||||
transaction_updated.send(sender=transaction)
|
||||
transaction_updated.send(sender=transaction, old_data=old_data)
|
||||
elif change_type == "previous":
|
||||
transaction.reference_date = transaction.reference_date - relativedelta(
|
||||
months=1
|
||||
)
|
||||
transaction.save()
|
||||
transaction_updated.send(sender=transaction)
|
||||
transaction_updated.send(sender=transaction, old_data=old_data)
|
||||
|
||||
return HttpResponse(
|
||||
status=204,
|
||||
@@ -440,9 +446,11 @@ def transaction_change_month(request, transaction_id, change_type):
|
||||
def transaction_move_to_today(request, transaction_id):
|
||||
transaction: Transaction = get_object_or_404(Transaction, pk=transaction_id)
|
||||
|
||||
old_data = deepcopy(transaction)
|
||||
|
||||
transaction.date = timezone.localdate(timezone.now())
|
||||
transaction.save()
|
||||
transaction_updated.send(sender=transaction)
|
||||
transaction_updated.send(sender=transaction, old_data=old_data)
|
||||
|
||||
return HttpResponse(
|
||||
status=204,
|
||||
|
||||
@@ -17,6 +17,11 @@ urlpatterns = [
|
||||
views.toggle_sound_playing,
|
||||
name="toggle_sound_playing",
|
||||
),
|
||||
path(
|
||||
"user/toggle-sidebar/",
|
||||
views.toggle_sidebar_status,
|
||||
name="toggle_sidebar_status",
|
||||
),
|
||||
path(
|
||||
"user/settings/",
|
||||
views.update_settings,
|
||||
|
||||
@@ -116,6 +116,24 @@ def update_settings(request):
|
||||
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
|
||||
@is_superuser
|
||||
@require_http_methods(["GET"])
|
||||
|
||||
@@ -79,7 +79,7 @@ def yearly_overview_by_currency(request, year: int):
|
||||
currency = request.GET.get("currency")
|
||||
|
||||
# Base query filter
|
||||
filter_params = {"reference_date__year": year, "account__is_archived": False}
|
||||
filter_params = {"reference_date__year": year}
|
||||
|
||||
# Add month filter if provided
|
||||
if month:
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \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"
|
||||
"Last-Translator: seraphblade2010 <marc.butenhoff@web.de>\n"
|
||||
"Language-Team: German <https://translations.herculino.com/projects/wygiwyh/"
|
||||
@@ -19,32 +19,32 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#: apps/accounts/forms.py:24
|
||||
#: apps/accounts/forms.py:26
|
||||
msgid "Group name"
|
||||
msgstr "Gruppe Name"
|
||||
|
||||
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91
|
||||
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
||||
#: 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/rules/forms.py:365 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421
|
||||
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836
|
||||
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:1057 apps/users/forms.py:217
|
||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||
#: apps/transactions/forms.py:788 apps/transactions/forms.py:831
|
||||
#: apps/transactions/forms.py:863 apps/transactions/forms.py:898
|
||||
#: apps/transactions/forms.py:1052 apps/users/forms.py:217
|
||||
#: apps/users/forms.py:379
|
||||
msgid "Update"
|
||||
msgstr "Aktualisierung"
|
||||
|
||||
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61
|
||||
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152
|
||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||
#: 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/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:383 apps/transactions/forms.py:801
|
||||
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876
|
||||
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065
|
||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:796
|
||||
#: apps/transactions/forms.py:839 apps/transactions/forms.py:871
|
||||
#: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
|
||||
#: apps/users/forms.py:225 apps/users/forms.py:387
|
||||
#: templates/account_groups/fragments/list.html:9
|
||||
#: templates/accounts/fragments/list.html:9
|
||||
@@ -66,37 +66,37 @@ msgstr "Aktualisierung"
|
||||
msgid "Add"
|
||||
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"
|
||||
msgstr "Gruppe"
|
||||
|
||||
#: apps/accounts/forms.py:115
|
||||
#: apps/accounts/forms.py:135
|
||||
msgid "New balance"
|
||||
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/rules/models.py:38 apps/rules/models.py:286
|
||||
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256
|
||||
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462
|
||||
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935
|
||||
#: apps/transactions/forms.py:450 apps/transactions/forms.py:457
|
||||
#: apps/transactions/forms.py:669 apps/transactions/forms.py:930
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:501
|
||||
#: 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:528
|
||||
#: templates/insights/fragments/category_overview/index.html:530
|
||||
msgid "Category"
|
||||
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/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/transactions/forms.py:50 apps/transactions/forms.py:264
|
||||
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479
|
||||
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928
|
||||
#: apps/transactions/forms.py:466 apps/transactions/forms.py:474
|
||||
#: apps/transactions/forms.py:662 apps/transactions/forms.py:923
|
||||
#: apps/transactions/models.py:324 apps/transactions/models.py:503
|
||||
#: 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/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||
msgid "Tags"
|
||||
@@ -128,11 +128,11 @@ msgstr "Kontengruppe"
|
||||
|
||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||
#: 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"
|
||||
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/yearly_overview/pages/overview_by_account.html:18
|
||||
#: 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 "
|
||||
"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/currencies/fragments/list.html:27
|
||||
#: templates/entities/fragments/list.html:24
|
||||
#: templates/tags/fragments/list.html:24
|
||||
msgid "Archived"
|
||||
@@ -174,7 +176,7 @@ msgstr ""
|
||||
#: 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/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:683 apps/transactions/models.py:925
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -189,11 +191,11 @@ msgstr "Konto"
|
||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||
#: templates/accounts/fragments/list.html:5
|
||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180
|
||||
#: templates/includes/sidebar.html:182
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
||||
#: templates/includes/sidebar.html:206
|
||||
#: templates/monthly_overview/pages/overview.html:94
|
||||
#: templates/transactions/fragments/summary.html:12
|
||||
#: templates/transactions/pages/transactions.html:81
|
||||
#: templates/transactions/pages/transactions.html:137
|
||||
msgid "Accounts"
|
||||
msgstr "Konten"
|
||||
|
||||
@@ -479,8 +481,10 @@ msgstr "Löschen"
|
||||
|
||||
#: apps/common/widgets/tom_select.py:15
|
||||
#: templates/mini_tools/unit_price_calculator.html:174
|
||||
#: templates/monthly_overview/pages/overview.html:172
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
#: templates/monthly_overview/pages/overview.html:215
|
||||
#: templates/monthly_overview/pages/overview.html:227
|
||||
#: templates/transactions/pages/transactions.html:89
|
||||
#: templates/transactions/pages/transactions.html:101
|
||||
msgid "Clear"
|
||||
msgstr "Zurücksetzen"
|
||||
|
||||
@@ -496,9 +500,9 @@ msgstr "Präfix"
|
||||
msgid "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/transactions/forms.py:66 apps/transactions/forms.py:483
|
||||
#: apps/transactions/forms.py:66 apps/transactions/forms.py:478
|
||||
#: apps/transactions/models.py:300
|
||||
#: templates/dca/fragments/strategy/details.html:52
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
@@ -518,75 +522,75 @@ msgstr "Währungsname"
|
||||
msgid "Decimal Places"
|
||||
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
|
||||
#: templates/currencies/fragments/list.html:5
|
||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194
|
||||
#: templates/includes/sidebar.html:196
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
||||
#: templates/includes/sidebar.html:220
|
||||
#: templates/monthly_overview/pages/overview.html:81
|
||||
#: templates/transactions/fragments/summary.html:8
|
||||
#: templates/transactions/pages/transactions.html:68
|
||||
#: templates/transactions/pages/transactions.html:124
|
||||
msgid "Currencies"
|
||||
msgstr "Währungen"
|
||||
|
||||
#: apps/currencies/models.py:49
|
||||
#: apps/currencies/models.py:54
|
||||
msgid "Currency cannot have itself as exchange currency."
|
||||
msgstr "Die Währung kann nicht ihre eigene Umrechnungswährung sein."
|
||||
|
||||
#: apps/currencies/models.py:60
|
||||
#: apps/currencies/models.py:65
|
||||
msgid "From Currency"
|
||||
msgstr "Startwährung"
|
||||
|
||||
#: apps/currencies/models.py:66
|
||||
#: apps/currencies/models.py:71
|
||||
msgid "To Currency"
|
||||
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"
|
||||
msgstr "Umrechnungskurs"
|
||||
|
||||
#: apps/currencies/models.py:71
|
||||
#: apps/currencies/models.py:76
|
||||
msgid "Date and Time"
|
||||
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
|
||||
msgid "Auto"
|
||||
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
|
||||
#: 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"
|
||||
msgstr "Umrechnungskurse"
|
||||
|
||||
#: apps/currencies/models.py:89
|
||||
#: apps/currencies/models.py:94
|
||||
msgid "From and To currencies cannot be the same."
|
||||
msgstr "Start- und Zielwährung dürfen nicht identisch sein."
|
||||
|
||||
#: apps/currencies/models.py:105
|
||||
#: apps/currencies/models.py:110
|
||||
msgid "On"
|
||||
msgstr "An"
|
||||
|
||||
#: apps/currencies/models.py:106
|
||||
#: apps/currencies/models.py:111
|
||||
msgid "Every X hours"
|
||||
msgstr "Alle X Stunden"
|
||||
|
||||
#: apps/currencies/models.py:107
|
||||
#: apps/currencies/models.py:112
|
||||
msgid "Not on"
|
||||
msgstr "Nicht an"
|
||||
|
||||
#: apps/currencies/models.py:109
|
||||
#: apps/currencies/models.py:114
|
||||
msgid "Service Name"
|
||||
msgstr "Dienstname"
|
||||
|
||||
#: apps/currencies/models.py:111
|
||||
#: apps/currencies/models.py:116
|
||||
msgid "Service Type"
|
||||
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
|
||||
#: templates/categories/fragments/list.html:21
|
||||
#: templates/entities/fragments/list.html:21
|
||||
@@ -595,31 +599,31 @@ msgstr "Diensttyp"
|
||||
msgid "Active"
|
||||
msgstr "Aktiv"
|
||||
|
||||
#: apps/currencies/models.py:118
|
||||
#: apps/currencies/models.py:123
|
||||
msgid "API Key"
|
||||
msgstr "API-Schlüssel"
|
||||
|
||||
#: apps/currencies/models.py:119
|
||||
#: apps/currencies/models.py:124
|
||||
msgid "API key for the service (if required)"
|
||||
msgstr "API-Schlüssel für den Dienst (falls benötigt)"
|
||||
|
||||
#: apps/currencies/models.py:124
|
||||
#: apps/currencies/models.py:129
|
||||
msgid "Interval Type"
|
||||
msgstr "Intervalltyp"
|
||||
|
||||
#: apps/currencies/models.py:128
|
||||
#: apps/currencies/models.py:133
|
||||
msgid "Interval"
|
||||
msgstr "Intervall"
|
||||
|
||||
#: apps/currencies/models.py:131
|
||||
#: apps/currencies/models.py:136
|
||||
msgid "Last Successful Fetch"
|
||||
msgstr "Letzter erfolgreicher Abruf"
|
||||
|
||||
#: apps/currencies/models.py:136
|
||||
#: apps/currencies/models.py:141
|
||||
msgid "Target Currencies"
|
||||
msgstr "Zielwährungen"
|
||||
|
||||
#: apps/currencies/models.py:138
|
||||
#: apps/currencies/models.py:143
|
||||
msgid ""
|
||||
"Select currencies to fetch exchange rates for. Rates will be fetched for "
|
||||
"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 wird der Kurs der entsprechenden Umrechnungs-Währung abgerufen."
|
||||
|
||||
#: apps/currencies/models.py:146
|
||||
#: apps/currencies/models.py:151
|
||||
msgid "Target Accounts"
|
||||
msgstr "Zielkonten"
|
||||
|
||||
#: apps/currencies/models.py:148
|
||||
#: apps/currencies/models.py:153
|
||||
msgid ""
|
||||
"Select accounts to fetch exchange rates for. Rates will be fetched for each "
|
||||
"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 "
|
||||
"Konto wird der Kurs der entsprechenden Umrechnungs-Währung abgerufen."
|
||||
|
||||
#: apps/currencies/models.py:155
|
||||
#: apps/currencies/models.py:160
|
||||
#, fuzzy
|
||||
#| msgid "Edit exchange rate"
|
||||
msgid "Single exchange rate"
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:163
|
||||
#: apps/currencies/models.py:168
|
||||
msgid "Exchange Rate Service"
|
||||
msgstr "Umrechnungskurs-Dienst"
|
||||
|
||||
#: apps/currencies/models.py:164
|
||||
#: apps/currencies/models.py:169
|
||||
msgid "Exchange Rate Services"
|
||||
msgstr "Umrechnungskurs-Dienste"
|
||||
|
||||
#: apps/currencies/models.py:216
|
||||
#: apps/currencies/models.py:221
|
||||
msgid "'Every X hours' interval type requires a positive integer."
|
||||
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."
|
||||
msgstr "\"Jede X Stunden\"-Intervall muss zwischen 1 und 24 liegen."
|
||||
|
||||
#: apps/currencies/models.py:239
|
||||
#: apps/currencies/models.py:244
|
||||
msgid ""
|
||||
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
|
||||
"'1-5,8,10-12')."
|
||||
@@ -673,7 +677,7 @@ msgstr ""
|
||||
"Ungültiges Stundenformat. Nutze kommagetrennte Stunden (0-23) und/oder "
|
||||
"Zeiträume (z.B. \"1-5,8,10-12\")."
|
||||
|
||||
#: apps/currencies/models.py:250
|
||||
#: apps/currencies/models.py:255
|
||||
msgid ""
|
||||
"Invalid format. Please check the requirements for your selected interval "
|
||||
"type."
|
||||
@@ -725,11 +729,11 @@ msgstr "Dienst erfolgreich in die Warteschlange eingereiht"
|
||||
msgid "Create transaction"
|
||||
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"
|
||||
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"
|
||||
msgstr "Zielkonto"
|
||||
|
||||
@@ -756,7 +760,7 @@ msgstr "Verknüpfe Transaktion"
|
||||
msgid "You must provide an account."
|
||||
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."
|
||||
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/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:947
|
||||
msgid "Notes"
|
||||
@@ -834,15 +838,15 @@ msgid "Entry deleted successfully"
|
||||
msgstr "Eintrag erfolgreich gelöscht"
|
||||
|
||||
#: 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
|
||||
msgid "Users"
|
||||
msgstr "Nutzer"
|
||||
|
||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||
#: apps/transactions/models.py:375 templates/includes/navbar.html:58
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66
|
||||
#: templates/includes/sidebar.html:160
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
||||
#: templates/includes/sidebar.html:184
|
||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||
#: templates/recurring_transactions/fragments/table.html:39
|
||||
#: 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/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||
#: templates/includes/sidebar.html:162
|
||||
#: templates/includes/sidebar.html:186
|
||||
msgid "Categories"
|
||||
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/models.py:282 apps/transactions/filters.py:74
|
||||
#: 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:506 apps/transactions/models.py:708
|
||||
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
|
||||
#: 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
|
||||
msgid "Entities"
|
||||
msgstr "Entitäten"
|
||||
|
||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Recurring Transactions"
|
||||
@@ -880,7 +884,7 @@ msgstr "Wiederkehrende Transaktionen"
|
||||
|
||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Installment Plans"
|
||||
@@ -889,12 +893,12 @@ msgstr "Ratenzahlungs-Pläne"
|
||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||
#: templates/exchange_rates_services/fragments/list.html:6
|
||||
#: 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"
|
||||
msgstr "Automatische Umrechnungskurse"
|
||||
|
||||
#: 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
|
||||
msgid "Rules"
|
||||
msgstr "Regeln"
|
||||
@@ -966,7 +970,7 @@ msgstr "Datei auswählen"
|
||||
|
||||
#: apps/import_app/forms.py:61
|
||||
#: 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"
|
||||
msgstr "Import"
|
||||
|
||||
@@ -1037,8 +1041,8 @@ msgstr "Vorgang erfolgreich gelöscht"
|
||||
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
|
||||
#: 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:393
|
||||
#: templates/insights/fragments/category_overview/index.html:422
|
||||
#: templates/insights/fragments/category_overview/index.html:395
|
||||
#: templates/insights/fragments/category_overview/index.html:424
|
||||
msgid "Uncategorized"
|
||||
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/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:713
|
||||
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/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:945
|
||||
msgid "Description"
|
||||
@@ -1362,6 +1366,7 @@ msgid "Any entity"
|
||||
msgstr "Entität hinzufügen"
|
||||
|
||||
#: apps/transactions/filters.py:202
|
||||
#: templates/insights/fragments/category_overview/index.html:274
|
||||
#, fuzzy
|
||||
#| msgid "No entities"
|
||||
msgid "No entity"
|
||||
@@ -1379,56 +1384,56 @@ msgstr "Speichern und ähnliches hinzufügen"
|
||||
msgid "Save and add another"
|
||||
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"
|
||||
msgstr ""
|
||||
"Stummgeschaltete Transaktionen werden nicht in der monatlichen Übersicht "
|
||||
"berücksichtigt"
|
||||
|
||||
#: apps/transactions/forms.py:442
|
||||
#: apps/transactions/forms.py:437
|
||||
msgid "From Amount"
|
||||
msgstr "Startbetrag"
|
||||
|
||||
#: apps/transactions/forms.py:447
|
||||
#: apps/transactions/forms.py:442
|
||||
msgid "To Amount"
|
||||
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
|
||||
msgid "Mute"
|
||||
msgstr "Deaktivieren"
|
||||
|
||||
#: apps/transactions/forms.py:572
|
||||
#: apps/transactions/forms.py:567
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr "Transfer"
|
||||
|
||||
#: apps/transactions/forms.py:822
|
||||
#: apps/transactions/forms.py:817
|
||||
msgid "Tag name"
|
||||
msgstr "Tagname"
|
||||
|
||||
#: apps/transactions/forms.py:854
|
||||
#: apps/transactions/forms.py:849
|
||||
msgid "Entity name"
|
||||
msgstr "Entitätsname"
|
||||
|
||||
#: apps/transactions/forms.py:886
|
||||
#: apps/transactions/forms.py:881
|
||||
msgid "Category name"
|
||||
msgstr "Kategoriename"
|
||||
|
||||
#: apps/transactions/forms.py:888
|
||||
#: apps/transactions/forms.py:883
|
||||
#, fuzzy
|
||||
#| msgid "Muted categories won't count towards your monthly total"
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr "Ausgeblendete Kategorien zählen nicht zu deiner Monatsübersicht"
|
||||
|
||||
#: apps/transactions/forms.py:1046
|
||||
#: apps/transactions/forms.py:1041
|
||||
#, fuzzy
|
||||
#| msgid "Filter transactions"
|
||||
msgid "future transactions"
|
||||
msgstr "Transaktionen filtern"
|
||||
|
||||
#: apps/transactions/forms.py:1076
|
||||
#: apps/transactions/forms.py:1071
|
||||
msgid "End date should be after the start date"
|
||||
msgstr "Enddatum sollte hinter dem Startdatum liegen"
|
||||
|
||||
@@ -1526,12 +1531,12 @@ msgstr "Keine Kategorie"
|
||||
msgid "No description"
|
||||
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"
|
||||
msgstr "Jährlich"
|
||||
|
||||
#: 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"
|
||||
msgstr "Monatlich"
|
||||
|
||||
@@ -1631,7 +1636,7 @@ msgid "Quick Transaction"
|
||||
msgstr "Schnelle Transaktion"
|
||||
|
||||
#: 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:11
|
||||
msgid "Quick Transactions"
|
||||
@@ -1723,11 +1728,11 @@ msgid "Installment Plan deleted successfully"
|
||||
msgstr "Ratenzahlungs-Plan erfolgreich gelöscht"
|
||||
|
||||
#: 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"
|
||||
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"
|
||||
msgstr "Objekt erfolgreich aktualisiert"
|
||||
|
||||
@@ -1842,8 +1847,10 @@ msgid "This account is deactivated"
|
||||
msgstr "Dieses Konto ist deaktiviert"
|
||||
|
||||
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
|
||||
#: templates/monthly_overview/pages/overview.html:153
|
||||
#: templates/transactions/pages/transactions.html:28
|
||||
#: templates/monthly_overview/pages/overview.html:140
|
||||
#: templates/monthly_overview/pages/overview.html:186
|
||||
#: templates/transactions/pages/transactions.html:14
|
||||
#: templates/transactions/pages/transactions.html:60
|
||||
msgid "Default"
|
||||
msgstr "Standard"
|
||||
|
||||
@@ -1949,7 +1956,7 @@ msgid "All Transactions"
|
||||
msgstr "Alle Transaktionen"
|
||||
|
||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||
#: templates/includes/sidebar.html:48
|
||||
#: templates/includes/sidebar.html:73
|
||||
msgid "Calendar"
|
||||
msgstr "Kalender"
|
||||
|
||||
@@ -2000,7 +2007,7 @@ msgstr "Kontogruppe bearbeiten"
|
||||
#: templates/account_groups/fragments/list.html:32
|
||||
#: templates/accounts/fragments/list.html:37
|
||||
#: 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/entities/fragments/table.html:23
|
||||
#: templates/exchange_rates/fragments/table.html:19
|
||||
@@ -2021,7 +2028,7 @@ msgstr "Aktionen"
|
||||
#: templates/categories/fragments/table.html:29
|
||||
#: templates/cotton/transaction/item.html:129
|
||||
#: 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/list.html:36
|
||||
#: templates/entities/fragments/table.html:28
|
||||
@@ -2047,7 +2054,7 @@ msgstr "Bearbeiten"
|
||||
#: templates/cotton/transaction/item.html:192
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:55
|
||||
#: 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/list.html:44
|
||||
#: templates/entities/fragments/table.html:36
|
||||
@@ -2074,7 +2081,7 @@ msgstr "Löschen"
|
||||
#: templates/cotton/transaction/item.html:196
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:57
|
||||
#: 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/list.html:48
|
||||
#: templates/entities/fragments/table.html:40
|
||||
@@ -2104,7 +2111,7 @@ msgstr "Bist du sicher?"
|
||||
#: templates/cotton/transaction/item.html:197
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:58
|
||||
#: 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/list.html:49
|
||||
#: 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/cotton/transaction/item.html:142
|
||||
#: 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/list.html:50
|
||||
#: templates/entities/fragments/table.html:42
|
||||
@@ -2270,7 +2277,7 @@ msgid "Muted"
|
||||
msgstr "Ausgeblendet"
|
||||
|
||||
#: 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"
|
||||
msgstr "Keine Kategorien"
|
||||
|
||||
@@ -2279,13 +2286,14 @@ msgid "Pick a month"
|
||||
msgstr "Monat auswählen"
|
||||
|
||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||
#: templates/includes/sidebar.html:28
|
||||
#: templates/includes/sidebar.html:53
|
||||
msgid "Close"
|
||||
msgstr "Schließen"
|
||||
|
||||
#: templates/cotton/config/search.html:6
|
||||
#: 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"
|
||||
msgstr "Suche"
|
||||
|
||||
@@ -2472,7 +2480,7 @@ msgstr "Währung bearbeiten"
|
||||
msgid "Code"
|
||||
msgstr "Code"
|
||||
|
||||
#: templates/currencies/fragments/list.html:61
|
||||
#: templates/currencies/fragments/list.html:63
|
||||
msgid "No currencies"
|
||||
msgstr "Keine Währungen"
|
||||
|
||||
@@ -2510,7 +2518,7 @@ msgstr "Keine Einträge für diesen DCA"
|
||||
|
||||
#: templates/dca/fragments/strategy/details.html:125
|
||||
#: 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"
|
||||
msgstr "Versuche einen hinzuzufügen"
|
||||
|
||||
@@ -2613,7 +2621,7 @@ msgid "Edit exchange rate"
|
||||
msgstr "Umrechnungskurs bearbeiten"
|
||||
|
||||
#: 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/yearly_overview/pages/overview_by_account.html:105
|
||||
#: 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_services/fragments/table.html:58
|
||||
#: templates/transactions/fragments/list_all.html:47
|
||||
#: templates/transactions/fragments/list_all.html:54
|
||||
msgid "Page navigation"
|
||||
msgstr "Seitennavigation"
|
||||
|
||||
@@ -2670,7 +2678,7 @@ msgid "No services configured"
|
||||
msgstr "Keine Dienste konfiguriert"
|
||||
|
||||
#: 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"
|
||||
msgstr "Exportieren und Wiederherstellen"
|
||||
|
||||
@@ -2768,7 +2776,7 @@ msgstr "Navigation umschalten"
|
||||
msgid "Overview"
|
||||
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"
|
||||
msgstr "Nettovermögen"
|
||||
|
||||
@@ -2778,62 +2786,62 @@ msgstr "Nettovermögen"
|
||||
msgid "Current"
|
||||
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
|
||||
msgid "Insights"
|
||||
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"
|
||||
msgstr "Papierkorb"
|
||||
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
||||
msgid "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"
|
||||
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:10
|
||||
msgid "Unit Price Calculator"
|
||||
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:15
|
||||
msgid "Currency Converter"
|
||||
msgstr "Währungs-Umrechner"
|
||||
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134
|
||||
#: templates/includes/sidebar.html:147
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
||||
#: templates/includes/sidebar.html:171
|
||||
msgid "Management"
|
||||
msgstr "Verwaltung"
|
||||
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
||||
msgid "Automation"
|
||||
msgstr "Automatisierung"
|
||||
|
||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:237
|
||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
|
||||
msgid "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"
|
||||
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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||
#: templates/includes/sidebar.html:266
|
||||
#: templates/includes/sidebar.html:290
|
||||
msgid "Calculator"
|
||||
msgstr "Rechner"
|
||||
|
||||
@@ -2941,7 +2949,7 @@ msgstr "Gesamtbilanz"
|
||||
msgid "Total"
|
||||
msgstr "Gesamt"
|
||||
|
||||
#: templates/insights/fragments/category_overview/index.html:515
|
||||
#: templates/insights/fragments/category_overview/index.html:517
|
||||
#, fuzzy
|
||||
#| msgid "final total"
|
||||
msgid "Final Total"
|
||||
@@ -3151,26 +3159,30 @@ msgstr "Verteilung"
|
||||
msgid "Summary"
|
||||
msgstr "Zusammenfassung"
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/transactions/pages/transactions.html:17
|
||||
msgid "Filter transactions"
|
||||
msgstr "Transaktionen filtern"
|
||||
|
||||
#: 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
|
||||
#: templates/monthly_overview/pages/overview.html:141
|
||||
#: templates/monthly_overview/pages/overview.html:195
|
||||
#: templates/transactions/pages/transactions.html:15
|
||||
#: templates/transactions/pages/transactions.html:69
|
||||
msgid "Oldest first"
|
||||
msgstr "Älteste zuerst"
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:157
|
||||
#: templates/transactions/pages/transactions.html:32
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/monthly_overview/pages/overview.html:204
|
||||
#: templates/transactions/pages/transactions.html:16
|
||||
#: templates/transactions/pages/transactions.html:78
|
||||
msgid "Newest first"
|
||||
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/yearly_overview/pages/overview_by_currency.html:9
|
||||
msgid "By currency"
|
||||
@@ -3386,7 +3398,7 @@ msgstr "Bearbeitung"
|
||||
msgid "transactions"
|
||||
msgstr "Transaktionen"
|
||||
|
||||
#: templates/transactions/fragments/list_all.html:39
|
||||
#: templates/transactions/fragments/list_all.html:46
|
||||
msgid "No transactions found"
|
||||
msgstr "Keine Transaktionen gefunden"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -18,32 +18,32 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: apps/accounts/forms.py:24
|
||||
#: apps/accounts/forms.py:26
|
||||
msgid "Group name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91
|
||||
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
||||
#: 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/rules/forms.py:365 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421
|
||||
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836
|
||||
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:1057 apps/users/forms.py:217
|
||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||
#: apps/transactions/forms.py:788 apps/transactions/forms.py:831
|
||||
#: apps/transactions/forms.py:863 apps/transactions/forms.py:898
|
||||
#: apps/transactions/forms.py:1052 apps/users/forms.py:217
|
||||
#: apps/users/forms.py:379
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
|
||||
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61
|
||||
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152
|
||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||
#: 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/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:383 apps/transactions/forms.py:801
|
||||
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876
|
||||
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065
|
||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:796
|
||||
#: apps/transactions/forms.py:839 apps/transactions/forms.py:871
|
||||
#: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
|
||||
#: apps/users/forms.py:225 apps/users/forms.py:387
|
||||
#: templates/account_groups/fragments/list.html:9
|
||||
#: templates/accounts/fragments/list.html:9
|
||||
@@ -65,37 +65,37 @@ msgstr ""
|
||||
msgid "Add"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: apps/accounts/forms.py:115
|
||||
#: apps/accounts/forms.py:135
|
||||
msgid "New balance"
|
||||
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/rules/models.py:38 apps/rules/models.py:286
|
||||
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256
|
||||
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462
|
||||
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935
|
||||
#: apps/transactions/forms.py:450 apps/transactions/forms.py:457
|
||||
#: apps/transactions/forms.py:669 apps/transactions/forms.py:930
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:501
|
||||
#: 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:528
|
||||
#: templates/insights/fragments/category_overview/index.html:530
|
||||
msgid "Category"
|
||||
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/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/transactions/forms.py:50 apps/transactions/forms.py:264
|
||||
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479
|
||||
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928
|
||||
#: apps/transactions/forms.py:466 apps/transactions/forms.py:474
|
||||
#: apps/transactions/forms.py:662 apps/transactions/forms.py:923
|
||||
#: apps/transactions/models.py:324 apps/transactions/models.py:503
|
||||
#: 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/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||
msgid "Tags"
|
||||
@@ -127,11 +127,11 @@ msgstr ""
|
||||
|
||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||
#: 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"
|
||||
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/yearly_overview/pages/overview_by_account.html:18
|
||||
#: 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."
|
||||
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/currencies/fragments/list.html:27
|
||||
#: templates/entities/fragments/list.html:24
|
||||
#: templates/tags/fragments/list.html:24
|
||||
msgid "Archived"
|
||||
@@ -170,7 +172,7 @@ msgstr ""
|
||||
#: 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/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:683 apps/transactions/models.py:925
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -185,11 +187,11 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||
#: templates/accounts/fragments/list.html:5
|
||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180
|
||||
#: templates/includes/sidebar.html:182
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
||||
#: templates/includes/sidebar.html:206
|
||||
#: templates/monthly_overview/pages/overview.html:94
|
||||
#: templates/transactions/fragments/summary.html:12
|
||||
#: templates/transactions/pages/transactions.html:81
|
||||
#: templates/transactions/pages/transactions.html:137
|
||||
msgid "Accounts"
|
||||
msgstr ""
|
||||
|
||||
@@ -467,8 +469,10 @@ msgstr ""
|
||||
|
||||
#: apps/common/widgets/tom_select.py:15
|
||||
#: templates/mini_tools/unit_price_calculator.html:174
|
||||
#: templates/monthly_overview/pages/overview.html:172
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
#: templates/monthly_overview/pages/overview.html:215
|
||||
#: templates/monthly_overview/pages/overview.html:227
|
||||
#: templates/transactions/pages/transactions.html:89
|
||||
#: templates/transactions/pages/transactions.html:101
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
@@ -484,9 +488,9 @@ msgstr ""
|
||||
msgid "Suffix"
|
||||
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/transactions/forms.py:66 apps/transactions/forms.py:483
|
||||
#: apps/transactions/forms.py:66 apps/transactions/forms.py:478
|
||||
#: apps/transactions/models.py:300
|
||||
#: templates/dca/fragments/strategy/details.html:52
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
@@ -506,75 +510,75 @@ msgstr ""
|
||||
msgid "Decimal Places"
|
||||
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
|
||||
#: templates/currencies/fragments/list.html:5
|
||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194
|
||||
#: templates/includes/sidebar.html:196
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
||||
#: templates/includes/sidebar.html:220
|
||||
#: templates/monthly_overview/pages/overview.html:81
|
||||
#: templates/transactions/fragments/summary.html:8
|
||||
#: templates/transactions/pages/transactions.html:68
|
||||
#: templates/transactions/pages/transactions.html:124
|
||||
msgid "Currencies"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:49
|
||||
#: apps/currencies/models.py:54
|
||||
msgid "Currency cannot have itself as exchange currency."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:60
|
||||
#: apps/currencies/models.py:65
|
||||
msgid "From Currency"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:66
|
||||
#: apps/currencies/models.py:71
|
||||
msgid "To Currency"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:69 apps/currencies/models.py:76
|
||||
#: apps/currencies/models.py:74 apps/currencies/models.py:81
|
||||
msgid "Exchange Rate"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:71
|
||||
#: apps/currencies/models.py:76
|
||||
msgid "Date and Time"
|
||||
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
|
||||
msgid "Auto"
|
||||
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
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:89
|
||||
#: apps/currencies/models.py:94
|
||||
msgid "From and To currencies cannot be the same."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:105
|
||||
#: apps/currencies/models.py:110
|
||||
msgid "On"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:106
|
||||
#: apps/currencies/models.py:111
|
||||
msgid "Every X hours"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:107
|
||||
#: apps/currencies/models.py:112
|
||||
msgid "Not on"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:109
|
||||
#: apps/currencies/models.py:114
|
||||
msgid "Service Name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:111
|
||||
#: apps/currencies/models.py:116
|
||||
msgid "Service Type"
|
||||
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
|
||||
#: templates/categories/fragments/list.html:21
|
||||
#: templates/entities/fragments/list.html:21
|
||||
@@ -583,77 +587,77 @@ msgstr ""
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:118
|
||||
#: apps/currencies/models.py:123
|
||||
msgid "API Key"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:119
|
||||
#: apps/currencies/models.py:124
|
||||
msgid "API key for the service (if required)"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:124
|
||||
#: apps/currencies/models.py:129
|
||||
msgid "Interval Type"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:128
|
||||
#: apps/currencies/models.py:133
|
||||
msgid "Interval"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:131
|
||||
#: apps/currencies/models.py:136
|
||||
msgid "Last Successful Fetch"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:136
|
||||
#: apps/currencies/models.py:141
|
||||
msgid "Target Currencies"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:138
|
||||
#: apps/currencies/models.py:143
|
||||
msgid ""
|
||||
"Select currencies to fetch exchange rates for. Rates will be fetched for "
|
||||
"each currency against their set exchange currency."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:146
|
||||
#: apps/currencies/models.py:151
|
||||
msgid "Target Accounts"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:148
|
||||
#: apps/currencies/models.py:153
|
||||
msgid ""
|
||||
"Select accounts to fetch exchange rates for. Rates will be fetched for each "
|
||||
"account's currency against their set exchange currency."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:155
|
||||
#: apps/currencies/models.py:160
|
||||
msgid "Single exchange rate"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:158
|
||||
#: apps/currencies/models.py:163
|
||||
msgid "Create one exchange rate and keep updating it. Avoids database clutter."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:163
|
||||
#: apps/currencies/models.py:168
|
||||
msgid "Exchange Rate Service"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:164
|
||||
#: apps/currencies/models.py:169
|
||||
msgid "Exchange Rate Services"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:216
|
||||
#: apps/currencies/models.py:221
|
||||
msgid "'Every X hours' interval type requires a positive integer."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:225
|
||||
#: apps/currencies/models.py:230
|
||||
msgid "'Every X hours' interval must be between 1 and 24."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:239
|
||||
#: apps/currencies/models.py:244
|
||||
msgid ""
|
||||
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
|
||||
"'1-5,8,10-12')."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:250
|
||||
#: apps/currencies/models.py:255
|
||||
msgid ""
|
||||
"Invalid format. Please check the requirements for your selected interval "
|
||||
"type."
|
||||
@@ -703,11 +707,11 @@ msgstr ""
|
||||
msgid "Create transaction"
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:430
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:425
|
||||
msgid "From Account"
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:76 apps/transactions/forms.py:435
|
||||
#: apps/dca/forms.py:76 apps/transactions/forms.py:430
|
||||
msgid "To Account"
|
||||
msgstr ""
|
||||
|
||||
@@ -732,7 +736,7 @@ msgstr ""
|
||||
msgid "You must provide an account."
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
@@ -751,7 +755,7 @@ msgstr ""
|
||||
|
||||
#: 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/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:947
|
||||
msgid "Notes"
|
||||
@@ -810,15 +814,15 @@ msgid "Entry deleted successfully"
|
||||
msgstr ""
|
||||
|
||||
#: 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
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
|
||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||
#: apps/transactions/models.py:375 templates/includes/navbar.html:58
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66
|
||||
#: templates/includes/sidebar.html:160
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
||||
#: templates/includes/sidebar.html:184
|
||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||
#: templates/recurring_transactions/fragments/table.html:39
|
||||
#: templates/transactions/pages/transactions.html:5
|
||||
@@ -828,7 +832,7 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
||||
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||
#: templates/includes/sidebar.html:162
|
||||
#: templates/includes/sidebar.html:186
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
@@ -836,19 +840,19 @@ msgstr ""
|
||||
#: 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/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:506 apps/transactions/models.py:708
|
||||
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
|
||||
#: 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
|
||||
msgid "Entities"
|
||||
msgstr ""
|
||||
|
||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Recurring Transactions"
|
||||
@@ -856,7 +860,7 @@ msgstr ""
|
||||
|
||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Installment Plans"
|
||||
@@ -865,12 +869,12 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||
#: templates/exchange_rates_services/fragments/list.html:6
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
#: 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
|
||||
msgid "Rules"
|
||||
msgstr ""
|
||||
@@ -940,7 +944,7 @@ msgstr ""
|
||||
|
||||
#: apps/import_app/forms.py:61
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -1011,8 +1015,8 @@ msgstr ""
|
||||
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
|
||||
#: 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:393
|
||||
#: templates/insights/fragments/category_overview/index.html:422
|
||||
#: templates/insights/fragments/category_overview/index.html:395
|
||||
#: templates/insights/fragments/category_overview/index.html:424
|
||||
msgid "Uncategorized"
|
||||
msgstr ""
|
||||
|
||||
@@ -1112,7 +1116,7 @@ msgstr ""
|
||||
|
||||
#: 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/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:713
|
||||
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/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:945
|
||||
msgid "Description"
|
||||
@@ -1323,6 +1327,7 @@ msgid "Any entity"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/filters.py:202
|
||||
#: templates/insights/fragments/category_overview/index.html:274
|
||||
msgid "No entity"
|
||||
msgstr ""
|
||||
|
||||
@@ -1338,50 +1343,50 @@ msgstr ""
|
||||
msgid "Save and add another"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:442
|
||||
#: apps/transactions/forms.py:437
|
||||
msgid "From Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:447
|
||||
#: apps/transactions/forms.py:442
|
||||
msgid "To Amount"
|
||||
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
|
||||
msgid "Mute"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:572
|
||||
#: apps/transactions/forms.py:567
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:822
|
||||
#: apps/transactions/forms.py:817
|
||||
msgid "Tag name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:854
|
||||
#: apps/transactions/forms.py:849
|
||||
msgid "Entity name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:886
|
||||
#: apps/transactions/forms.py:881
|
||||
msgid "Category name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:888
|
||||
#: apps/transactions/forms.py:883
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1046
|
||||
#: apps/transactions/forms.py:1041
|
||||
msgid "future transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1076
|
||||
#: apps/transactions/forms.py:1071
|
||||
msgid "End date should be after the start date"
|
||||
msgstr ""
|
||||
|
||||
@@ -1473,12 +1478,12 @@ msgstr ""
|
||||
msgid "No description"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/models.py:455 templates/includes/sidebar.html:42
|
||||
#: apps/transactions/models.py:455 templates/includes/sidebar.html:67
|
||||
msgid "Yearly"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -1577,7 +1582,7 @@ msgid "Quick Transaction"
|
||||
msgstr ""
|
||||
|
||||
#: 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:11
|
||||
msgid "Quick Transactions"
|
||||
@@ -1669,11 +1674,11 @@ msgid "Installment Plan deleted successfully"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
@@ -1788,8 +1793,10 @@ msgid "This account is deactivated"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
|
||||
#: templates/monthly_overview/pages/overview.html:153
|
||||
#: templates/transactions/pages/transactions.html:28
|
||||
#: templates/monthly_overview/pages/overview.html:140
|
||||
#: templates/monthly_overview/pages/overview.html:186
|
||||
#: templates/transactions/pages/transactions.html:14
|
||||
#: templates/transactions/pages/transactions.html:60
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
|
||||
@@ -1890,7 +1897,7 @@ msgid "All Transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||
#: templates/includes/sidebar.html:48
|
||||
#: templates/includes/sidebar.html:73
|
||||
msgid "Calendar"
|
||||
msgstr ""
|
||||
|
||||
@@ -1941,7 +1948,7 @@ msgstr ""
|
||||
#: templates/account_groups/fragments/list.html:32
|
||||
#: templates/accounts/fragments/list.html:37
|
||||
#: 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/entities/fragments/table.html:23
|
||||
#: templates/exchange_rates/fragments/table.html:19
|
||||
@@ -1962,7 +1969,7 @@ msgstr ""
|
||||
#: templates/categories/fragments/table.html:29
|
||||
#: templates/cotton/transaction/item.html:129
|
||||
#: 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/list.html:36
|
||||
#: templates/entities/fragments/table.html:28
|
||||
@@ -1988,7 +1995,7 @@ msgstr ""
|
||||
#: templates/cotton/transaction/item.html:192
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:55
|
||||
#: 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/list.html:44
|
||||
#: templates/entities/fragments/table.html:36
|
||||
@@ -2015,7 +2022,7 @@ msgstr ""
|
||||
#: templates/cotton/transaction/item.html:196
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:57
|
||||
#: 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/list.html:48
|
||||
#: templates/entities/fragments/table.html:40
|
||||
@@ -2045,7 +2052,7 @@ msgstr ""
|
||||
#: templates/cotton/transaction/item.html:197
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:58
|
||||
#: 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/list.html:49
|
||||
#: templates/entities/fragments/table.html:41
|
||||
@@ -2065,7 +2072,7 @@ msgstr ""
|
||||
#: templates/categories/fragments/table.html:43
|
||||
#: templates/cotton/transaction/item.html:142
|
||||
#: 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/list.html:50
|
||||
#: templates/entities/fragments/table.html:42
|
||||
@@ -2211,7 +2218,7 @@ msgid "Muted"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2220,13 +2227,14 @@ msgid "Pick a month"
|
||||
msgstr ""
|
||||
|
||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||
#: templates/includes/sidebar.html:28
|
||||
#: templates/includes/sidebar.html:53
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cotton/config/search.html:6
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2411,7 +2419,7 @@ msgstr ""
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#: templates/currencies/fragments/list.html:61
|
||||
#: templates/currencies/fragments/list.html:63
|
||||
msgid "No currencies"
|
||||
msgstr ""
|
||||
|
||||
@@ -2449,7 +2457,7 @@ msgstr ""
|
||||
|
||||
#: templates/dca/fragments/strategy/details.html:125
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2551,7 +2559,7 @@ msgid "Edit exchange rate"
|
||||
msgstr ""
|
||||
|
||||
#: 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/yearly_overview/pages/overview_by_account.html:105
|
||||
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
||||
@@ -2575,7 +2583,7 @@ msgstr ""
|
||||
|
||||
#: templates/exchange_rates/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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2608,7 +2616,7 @@ msgid "No services configured"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2704,7 +2712,7 @@ msgstr ""
|
||||
msgid "Overview"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:60
|
||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
|
||||
msgid "Net Worth"
|
||||
msgstr ""
|
||||
|
||||
@@ -2714,62 +2722,62 @@ msgstr ""
|
||||
msgid "Current"
|
||||
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
|
||||
msgid "Insights"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:76
|
||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
|
||||
msgid "Trash Can"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
||||
msgid "Tools"
|
||||
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"
|
||||
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:10
|
||||
msgid "Unit Price Calculator"
|
||||
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:15
|
||||
msgid "Currency Converter"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134
|
||||
#: templates/includes/sidebar.html:147
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
||||
#: templates/includes/sidebar.html:171
|
||||
msgid "Management"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
||||
msgid "Automation"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:237
|
||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
|
||||
msgid "Admin"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:245
|
||||
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
|
||||
msgid "Django Admin"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:260
|
||||
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
|
||||
msgid "is available"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||
#: templates/includes/sidebar.html:266
|
||||
#: templates/includes/sidebar.html:290
|
||||
msgid "Calculator"
|
||||
msgstr ""
|
||||
|
||||
@@ -2864,7 +2872,7 @@ msgstr ""
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
|
||||
#: templates/insights/fragments/category_overview/index.html:515
|
||||
#: templates/insights/fragments/category_overview/index.html:517
|
||||
msgid "Final Total"
|
||||
msgstr ""
|
||||
|
||||
@@ -3069,26 +3077,30 @@ msgstr ""
|
||||
msgid "Summary"
|
||||
msgstr ""
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/transactions/pages/transactions.html:17
|
||||
msgid "Filter transactions"
|
||||
msgstr ""
|
||||
|
||||
#: 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
|
||||
#: templates/monthly_overview/pages/overview.html:141
|
||||
#: templates/monthly_overview/pages/overview.html:195
|
||||
#: templates/transactions/pages/transactions.html:15
|
||||
#: templates/transactions/pages/transactions.html:69
|
||||
msgid "Oldest first"
|
||||
msgstr ""
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:157
|
||||
#: templates/transactions/pages/transactions.html:32
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/monthly_overview/pages/overview.html:204
|
||||
#: templates/transactions/pages/transactions.html:16
|
||||
#: templates/transactions/pages/transactions.html:78
|
||||
msgid "Newest first"
|
||||
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/yearly_overview/pages/overview_by_currency.html:9
|
||||
msgid "By currency"
|
||||
@@ -3296,7 +3308,7 @@ msgstr ""
|
||||
msgid "transactions"
|
||||
msgstr ""
|
||||
|
||||
#: templates/transactions/fragments/list_all.html:39
|
||||
#: templates/transactions/fragments/list_all.html:46
|
||||
msgid "No transactions found"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: afermar <adrian.fm@protonmail.com>\n"
|
||||
"Language-Team: Spanish <https://translations.herculino.com/projects/wygiwyh/"
|
||||
@@ -19,32 +19,32 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#: apps/accounts/forms.py:24
|
||||
#: apps/accounts/forms.py:26
|
||||
msgid "Group name"
|
||||
msgstr "Nombre del Grupo"
|
||||
|
||||
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91
|
||||
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
||||
#: 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/rules/forms.py:365 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421
|
||||
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836
|
||||
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:1057 apps/users/forms.py:217
|
||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||
#: apps/transactions/forms.py:788 apps/transactions/forms.py:831
|
||||
#: apps/transactions/forms.py:863 apps/transactions/forms.py:898
|
||||
#: apps/transactions/forms.py:1052 apps/users/forms.py:217
|
||||
#: apps/users/forms.py:379
|
||||
msgid "Update"
|
||||
msgstr "Actualizar"
|
||||
|
||||
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61
|
||||
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152
|
||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||
#: 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/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:383 apps/transactions/forms.py:801
|
||||
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876
|
||||
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065
|
||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:796
|
||||
#: apps/transactions/forms.py:839 apps/transactions/forms.py:871
|
||||
#: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
|
||||
#: apps/users/forms.py:225 apps/users/forms.py:387
|
||||
#: templates/account_groups/fragments/list.html:9
|
||||
#: templates/accounts/fragments/list.html:9
|
||||
@@ -66,37 +66,37 @@ msgstr "Actualizar"
|
||||
msgid "Add"
|
||||
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"
|
||||
msgstr "Grupo"
|
||||
|
||||
#: apps/accounts/forms.py:115
|
||||
#: apps/accounts/forms.py:135
|
||||
msgid "New 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/rules/models.py:38 apps/rules/models.py:286
|
||||
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256
|
||||
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462
|
||||
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935
|
||||
#: apps/transactions/forms.py:450 apps/transactions/forms.py:457
|
||||
#: apps/transactions/forms.py:669 apps/transactions/forms.py:930
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:501
|
||||
#: 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:528
|
||||
#: templates/insights/fragments/category_overview/index.html:530
|
||||
msgid "Category"
|
||||
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/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/transactions/forms.py:50 apps/transactions/forms.py:264
|
||||
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479
|
||||
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928
|
||||
#: apps/transactions/forms.py:466 apps/transactions/forms.py:474
|
||||
#: apps/transactions/forms.py:662 apps/transactions/forms.py:923
|
||||
#: apps/transactions/models.py:324 apps/transactions/models.py:503
|
||||
#: 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/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||
msgid "Tags"
|
||||
@@ -128,11 +128,11 @@ msgstr "Grupo de Cuenta"
|
||||
|
||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||
#: 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"
|
||||
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/yearly_overview/pages/overview_by_account.html:18
|
||||
#: templates/yearly_overview/pages/overview_by_currency.html:20
|
||||
@@ -158,8 +158,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"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/currencies/fragments/list.html:27
|
||||
#: templates/entities/fragments/list.html:24
|
||||
#: templates/tags/fragments/list.html:24
|
||||
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/rules/models.py:30 apps/rules/models.py:242
|
||||
#: 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:683 apps/transactions/models.py:925
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -187,11 +189,11 @@ msgstr "Cuenta"
|
||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||
#: templates/accounts/fragments/list.html:5
|
||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180
|
||||
#: templates/includes/sidebar.html:182
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
||||
#: templates/includes/sidebar.html:206
|
||||
#: templates/monthly_overview/pages/overview.html:94
|
||||
#: templates/transactions/fragments/summary.html:12
|
||||
#: templates/transactions/pages/transactions.html:81
|
||||
#: templates/transactions/pages/transactions.html:137
|
||||
msgid "Accounts"
|
||||
msgstr "Cuentas"
|
||||
|
||||
@@ -488,8 +490,10 @@ msgstr "Remover"
|
||||
|
||||
#: apps/common/widgets/tom_select.py:15
|
||||
#: templates/mini_tools/unit_price_calculator.html:174
|
||||
#: templates/monthly_overview/pages/overview.html:172
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
#: templates/monthly_overview/pages/overview.html:215
|
||||
#: templates/monthly_overview/pages/overview.html:227
|
||||
#: templates/transactions/pages/transactions.html:89
|
||||
#: templates/transactions/pages/transactions.html:101
|
||||
msgid "Clear"
|
||||
msgstr "Limpiar"
|
||||
|
||||
@@ -505,9 +509,9 @@ msgstr "Prefijo"
|
||||
msgid "Suffix"
|
||||
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/transactions/forms.py:66 apps/transactions/forms.py:483
|
||||
#: apps/transactions/forms.py:66 apps/transactions/forms.py:478
|
||||
#: apps/transactions/models.py:300
|
||||
#: templates/dca/fragments/strategy/details.html:52
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
@@ -527,76 +531,76 @@ msgstr "Nombre de la Moneda"
|
||||
msgid "Decimal Places"
|
||||
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
|
||||
#: templates/currencies/fragments/list.html:5
|
||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194
|
||||
#: templates/includes/sidebar.html:196
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
||||
#: templates/includes/sidebar.html:220
|
||||
#: templates/monthly_overview/pages/overview.html:81
|
||||
#: templates/transactions/fragments/summary.html:8
|
||||
#: templates/transactions/pages/transactions.html:68
|
||||
#: templates/transactions/pages/transactions.html:124
|
||||
msgid "Currencies"
|
||||
msgstr "Monedas"
|
||||
|
||||
#: apps/currencies/models.py:49
|
||||
#: apps/currencies/models.py:54
|
||||
msgid "Currency cannot have itself as exchange currency."
|
||||
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"
|
||||
msgstr "De Moneda"
|
||||
|
||||
#: apps/currencies/models.py:66
|
||||
#: apps/currencies/models.py:71
|
||||
msgid "To Currency"
|
||||
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"
|
||||
msgstr "Tipo de cambio"
|
||||
|
||||
#: apps/currencies/models.py:71
|
||||
#: apps/currencies/models.py:76
|
||||
msgid "Date and Time"
|
||||
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
|
||||
#, fuzzy
|
||||
msgid "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
|
||||
#: 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"
|
||||
msgstr "Tipos de cambio"
|
||||
|
||||
#: apps/currencies/models.py:89
|
||||
#: apps/currencies/models.py:94
|
||||
msgid "From and To currencies cannot be the same."
|
||||
msgstr "Las monedas de origen y destino no pueden ser la misma."
|
||||
|
||||
#: apps/currencies/models.py:105
|
||||
#: apps/currencies/models.py:110
|
||||
msgid "On"
|
||||
msgstr "Encendido"
|
||||
|
||||
#: apps/currencies/models.py:106
|
||||
#: apps/currencies/models.py:111
|
||||
msgid "Every X hours"
|
||||
msgstr "Cada X horas"
|
||||
|
||||
#: apps/currencies/models.py:107
|
||||
#: apps/currencies/models.py:112
|
||||
msgid "Not on"
|
||||
msgstr "No Encendido"
|
||||
|
||||
#: apps/currencies/models.py:109
|
||||
#: apps/currencies/models.py:114
|
||||
msgid "Service Name"
|
||||
msgstr "Nombre del Servicio"
|
||||
|
||||
#: apps/currencies/models.py:111
|
||||
#: apps/currencies/models.py:116
|
||||
msgid "Service Type"
|
||||
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
|
||||
#: templates/categories/fragments/list.html:21
|
||||
#: templates/entities/fragments/list.html:21
|
||||
@@ -605,37 +609,37 @@ msgstr "Tipo de Servicio"
|
||||
msgid "Active"
|
||||
msgstr "Activo"
|
||||
|
||||
#: apps/currencies/models.py:118
|
||||
#: apps/currencies/models.py:123
|
||||
#, fuzzy
|
||||
msgid "API Key"
|
||||
msgstr "API Key"
|
||||
|
||||
#: apps/currencies/models.py:119
|
||||
#: apps/currencies/models.py:124
|
||||
#, fuzzy
|
||||
msgid "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
|
||||
msgid "Interval Type"
|
||||
msgstr "Interval Type"
|
||||
|
||||
#: apps/currencies/models.py:128
|
||||
#: apps/currencies/models.py:133
|
||||
#, fuzzy
|
||||
msgid "Interval"
|
||||
msgstr "Interval"
|
||||
|
||||
#: apps/currencies/models.py:131
|
||||
#: apps/currencies/models.py:136
|
||||
#, fuzzy
|
||||
msgid "Last Successful Fetch"
|
||||
msgstr "Last Successful Fetch"
|
||||
|
||||
#: apps/currencies/models.py:136
|
||||
#: apps/currencies/models.py:141
|
||||
#, fuzzy
|
||||
msgid "Target Currencies"
|
||||
msgstr "Target Currencies"
|
||||
|
||||
#: apps/currencies/models.py:138
|
||||
#: apps/currencies/models.py:143
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"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 "
|
||||
"each currency against their set exchange currency."
|
||||
|
||||
#: apps/currencies/models.py:146
|
||||
#: apps/currencies/models.py:151
|
||||
#, fuzzy
|
||||
msgid "Target Accounts"
|
||||
msgstr "Target Accounts"
|
||||
|
||||
#: apps/currencies/models.py:148
|
||||
#: apps/currencies/models.py:153
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"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 "
|
||||
"account's currency against their set exchange currency."
|
||||
|
||||
#: apps/currencies/models.py:155
|
||||
#: apps/currencies/models.py:160
|
||||
#, fuzzy
|
||||
msgid "Single 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."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:163
|
||||
#: apps/currencies/models.py:168
|
||||
#, fuzzy
|
||||
msgid "Exchange Rate Service"
|
||||
msgstr "Exchange Rate Service"
|
||||
|
||||
#: apps/currencies/models.py:164
|
||||
#: apps/currencies/models.py:169
|
||||
#, fuzzy
|
||||
msgid "Exchange Rate Services"
|
||||
msgstr "Exchange Rate Services"
|
||||
|
||||
#: apps/currencies/models.py:216
|
||||
#: apps/currencies/models.py:221
|
||||
#, fuzzy
|
||||
msgid "'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
|
||||
msgid "'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
|
||||
msgid ""
|
||||
"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., "
|
||||
"'1-5,8,10-12')."
|
||||
|
||||
#: apps/currencies/models.py:250
|
||||
#: apps/currencies/models.py:255
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Invalid format. Please check the requirements for your selected interval "
|
||||
@@ -760,12 +764,12 @@ msgstr "Services queued successfully"
|
||||
msgid "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
|
||||
msgid "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
|
||||
msgid "To Account"
|
||||
msgstr "To Account"
|
||||
@@ -796,7 +800,7 @@ msgstr "Link transaction"
|
||||
msgid "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
|
||||
msgid "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/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:947
|
||||
#, fuzzy
|
||||
@@ -891,7 +895,7 @@ msgid "Entry deleted successfully"
|
||||
msgstr "Entry deleted successfully"
|
||||
|
||||
#: 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
|
||||
#, fuzzy
|
||||
msgid "Users"
|
||||
@@ -899,8 +903,8 @@ msgstr "Users"
|
||||
|
||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||
#: apps/transactions/models.py:375 templates/includes/navbar.html:58
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66
|
||||
#: templates/includes/sidebar.html:160
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
||||
#: templates/includes/sidebar.html:184
|
||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||
#: templates/recurring_transactions/fragments/table.html:39
|
||||
#: 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/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||
#: templates/includes/sidebar.html:162
|
||||
#: templates/includes/sidebar.html:186
|
||||
#, fuzzy
|
||||
msgid "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/models.py:282 apps/transactions/filters.py:74
|
||||
#: 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:506 apps/transactions/models.py:708
|
||||
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
|
||||
#: 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
|
||||
#, fuzzy
|
||||
msgid "Entities"
|
||||
@@ -933,7 +937,7 @@ msgstr "Entities"
|
||||
|
||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||
#: 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/pages/index.html:4
|
||||
#, fuzzy
|
||||
@@ -942,7 +946,7 @@ msgstr "Recurring Transactions"
|
||||
|
||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||
#: 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/pages/index.html:4
|
||||
#, fuzzy
|
||||
@@ -952,13 +956,13 @@ msgstr "Installment Plans"
|
||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||
#: templates/exchange_rates_services/fragments/list.html:6
|
||||
#: 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
|
||||
msgid "Automatic Exchange Rates"
|
||||
msgstr "Automatic Exchange Rates"
|
||||
|
||||
#: 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
|
||||
#, fuzzy
|
||||
msgid "Rules"
|
||||
@@ -1044,7 +1048,7 @@ msgstr "Select a file"
|
||||
|
||||
#: apps/import_app/forms.py:61
|
||||
#: 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
|
||||
msgid "Import"
|
||||
msgstr "Import"
|
||||
@@ -1130,8 +1134,8 @@ msgstr "Run deleted successfully"
|
||||
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
|
||||
#: 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:393
|
||||
#: templates/insights/fragments/category_overview/index.html:422
|
||||
#: templates/insights/fragments/category_overview/index.html:395
|
||||
#: templates/insights/fragments/category_overview/index.html:424
|
||||
#, fuzzy
|
||||
msgid "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/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:713
|
||||
#, fuzzy
|
||||
@@ -1267,7 +1271,7 @@ msgstr "Amount"
|
||||
|
||||
#: 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/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:945
|
||||
#, fuzzy
|
||||
@@ -1505,6 +1509,7 @@ msgid "Any entity"
|
||||
msgstr "Add entity"
|
||||
|
||||
#: apps/transactions/filters.py:202
|
||||
#: templates/insights/fragments/category_overview/index.html:274
|
||||
#, fuzzy
|
||||
msgid "No entity"
|
||||
msgstr "No entities"
|
||||
@@ -1522,61 +1527,61 @@ msgstr "Guardar y añadir similar"
|
||||
msgid "Save and add another"
|
||||
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"
|
||||
msgstr ""
|
||||
"Las transacciones silenciadas no se mostrarán en los resúmenes mensuales"
|
||||
|
||||
#: apps/transactions/forms.py:442
|
||||
#: apps/transactions/forms.py:437
|
||||
#, fuzzy
|
||||
msgid "From Amount"
|
||||
msgstr "From Amount"
|
||||
|
||||
#: apps/transactions/forms.py:447
|
||||
#: apps/transactions/forms.py:442
|
||||
#, fuzzy
|
||||
msgid "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
|
||||
#, fuzzy
|
||||
msgid "Mute"
|
||||
msgstr "Mute"
|
||||
|
||||
#: apps/transactions/forms.py:572
|
||||
#: apps/transactions/forms.py:567
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
#, fuzzy
|
||||
msgid "Transfer"
|
||||
msgstr "Transfer"
|
||||
|
||||
#: apps/transactions/forms.py:822
|
||||
#: apps/transactions/forms.py:817
|
||||
#, fuzzy
|
||||
msgid "Tag name"
|
||||
msgstr "Tag name"
|
||||
|
||||
#: apps/transactions/forms.py:854
|
||||
#: apps/transactions/forms.py:849
|
||||
#, fuzzy
|
||||
msgid "Entity name"
|
||||
msgstr "Entity name"
|
||||
|
||||
#: apps/transactions/forms.py:886
|
||||
#: apps/transactions/forms.py:881
|
||||
#, fuzzy
|
||||
msgid "Category name"
|
||||
msgstr "Category name"
|
||||
|
||||
#: apps/transactions/forms.py:888
|
||||
#: apps/transactions/forms.py:883
|
||||
#, fuzzy
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr "Muted categories won't count towards your monthly total"
|
||||
|
||||
#: apps/transactions/forms.py:1046
|
||||
#: apps/transactions/forms.py:1041
|
||||
#, fuzzy
|
||||
#| msgid "Filter transactions"
|
||||
msgid "future transactions"
|
||||
msgstr "Filtrar transacciones"
|
||||
|
||||
#: apps/transactions/forms.py:1076
|
||||
#: apps/transactions/forms.py:1071
|
||||
#, fuzzy
|
||||
msgid "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"
|
||||
msgstr "No description"
|
||||
|
||||
#: apps/transactions/models.py:455 templates/includes/sidebar.html:42
|
||||
#: apps/transactions/models.py:455 templates/includes/sidebar.html:67
|
||||
#, fuzzy
|
||||
msgid "Yearly"
|
||||
msgstr "Yearly"
|
||||
|
||||
#: 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
|
||||
msgid "Monthly"
|
||||
msgstr "Monthly"
|
||||
@@ -1818,7 +1823,7 @@ msgid "Quick Transaction"
|
||||
msgstr "Edit Transaction"
|
||||
|
||||
#: 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:11
|
||||
#, fuzzy
|
||||
@@ -1921,12 +1926,12 @@ msgid "Installment Plan deleted successfully"
|
||||
msgstr "Installment Plan deleted successfully"
|
||||
|
||||
#: 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
|
||||
msgid "Item 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
|
||||
msgid "Item updated successfully"
|
||||
msgstr "Rule updated successfully"
|
||||
@@ -2067,8 +2072,10 @@ msgid "This account is deactivated"
|
||||
msgstr "This account is deactivated"
|
||||
|
||||
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
|
||||
#: templates/monthly_overview/pages/overview.html:153
|
||||
#: templates/transactions/pages/transactions.html:28
|
||||
#: templates/monthly_overview/pages/overview.html:140
|
||||
#: templates/monthly_overview/pages/overview.html:186
|
||||
#: templates/transactions/pages/transactions.html:14
|
||||
#: templates/transactions/pages/transactions.html:60
|
||||
#, fuzzy
|
||||
msgid "Default"
|
||||
msgstr "Default"
|
||||
@@ -2187,7 +2194,7 @@ msgid "All Transactions"
|
||||
msgstr "All Transactions"
|
||||
|
||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||
#: templates/includes/sidebar.html:48
|
||||
#: templates/includes/sidebar.html:73
|
||||
#, fuzzy
|
||||
msgid "Calendar"
|
||||
msgstr "Calendar"
|
||||
@@ -2249,7 +2256,7 @@ msgstr "Edit account group"
|
||||
#: templates/account_groups/fragments/list.html:32
|
||||
#: templates/accounts/fragments/list.html:37
|
||||
#: 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/entities/fragments/table.html:23
|
||||
#: templates/exchange_rates/fragments/table.html:19
|
||||
@@ -2271,7 +2278,7 @@ msgstr "Actions"
|
||||
#: templates/categories/fragments/table.html:29
|
||||
#: templates/cotton/transaction/item.html:129
|
||||
#: 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/list.html:36
|
||||
#: templates/entities/fragments/table.html:28
|
||||
@@ -2298,7 +2305,7 @@ msgstr "Edit"
|
||||
#: templates/cotton/transaction/item.html:192
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:55
|
||||
#: 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/list.html:44
|
||||
#: templates/entities/fragments/table.html:36
|
||||
@@ -2326,7 +2333,7 @@ msgstr "Delete"
|
||||
#: templates/cotton/transaction/item.html:196
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:57
|
||||
#: 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/list.html:48
|
||||
#: templates/entities/fragments/table.html:40
|
||||
@@ -2357,7 +2364,7 @@ msgstr "Are you sure?"
|
||||
#: templates/cotton/transaction/item.html:197
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:58
|
||||
#: 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/list.html:49
|
||||
#: 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/cotton/transaction/item.html:142
|
||||
#: 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/list.html:50
|
||||
#: templates/entities/fragments/table.html:42
|
||||
@@ -2550,7 +2557,7 @@ msgid "Muted"
|
||||
msgstr "Muted"
|
||||
|
||||
#: templates/categories/fragments/table.html:75
|
||||
#: templates/insights/fragments/category_overview/index.html:538
|
||||
#: templates/insights/fragments/category_overview/index.html:540
|
||||
#, fuzzy
|
||||
msgid "No categories"
|
||||
msgstr "No categories"
|
||||
@@ -2561,14 +2568,15 @@ msgid "Pick a month"
|
||||
msgstr "Pick a month"
|
||||
|
||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||
#: templates/includes/sidebar.html:28
|
||||
#: templates/includes/sidebar.html:53
|
||||
#, fuzzy
|
||||
msgid "Close"
|
||||
msgstr "Close"
|
||||
|
||||
#: templates/cotton/config/search.html:6
|
||||
#: 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
|
||||
msgid "Search"
|
||||
msgstr "Search"
|
||||
@@ -2786,7 +2794,7 @@ msgstr "Edit currency"
|
||||
msgid "Code"
|
||||
msgstr "Code"
|
||||
|
||||
#: templates/currencies/fragments/list.html:61
|
||||
#: templates/currencies/fragments/list.html:63
|
||||
#, fuzzy
|
||||
msgid "No currencies"
|
||||
msgstr "No currencies"
|
||||
@@ -2833,7 +2841,7 @@ msgstr "No entries for this DCA"
|
||||
|
||||
#: templates/dca/fragments/strategy/details.html:125
|
||||
#: templates/monthly_overview/fragments/list.html:47
|
||||
#: templates/transactions/fragments/list_all.html:40
|
||||
#: templates/transactions/fragments/list_all.html:47
|
||||
#, fuzzy
|
||||
msgid "Try adding one"
|
||||
msgstr "Try adding one"
|
||||
@@ -2958,7 +2966,7 @@ msgid "Edit exchange rate"
|
||||
msgstr "Edit exchange rate"
|
||||
|
||||
#: 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/yearly_overview/pages/overview_by_account.html:105
|
||||
#: 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_services/fragments/table.html:58
|
||||
#: templates/transactions/fragments/list_all.html:47
|
||||
#: templates/transactions/fragments/list_all.html:54
|
||||
#, fuzzy
|
||||
msgid "Page navigation"
|
||||
msgstr "Page navigation"
|
||||
@@ -3027,7 +3035,7 @@ msgid "No services configured"
|
||||
msgstr "No services configured"
|
||||
|
||||
#: templates/export_app/pages/index.html:4 templates/includes/navbar.html:140
|
||||
#: templates/includes/sidebar.html:223
|
||||
#: templates/includes/sidebar.html:247
|
||||
#, fuzzy
|
||||
msgid "Export and Restore"
|
||||
msgstr "Export and Restore"
|
||||
@@ -3147,7 +3155,7 @@ msgstr "Toggle navigation"
|
||||
msgid "Overview"
|
||||
msgstr "Overview"
|
||||
|
||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:60
|
||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
|
||||
#, fuzzy
|
||||
msgid "Net Worth"
|
||||
msgstr "Net Worth"
|
||||
@@ -3159,72 +3167,72 @@ msgstr "Net Worth"
|
||||
msgid "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
|
||||
#, fuzzy
|
||||
msgid "Insights"
|
||||
msgstr "Insights"
|
||||
|
||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:76
|
||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
|
||||
#, fuzzy
|
||||
msgid "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
|
||||
msgid "Tools"
|
||||
msgstr "Tools"
|
||||
|
||||
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:103
|
||||
#: templates/includes/navbar.html:89 templates/includes/sidebar.html:128
|
||||
#, fuzzy
|
||||
msgid "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:10
|
||||
#, fuzzy
|
||||
msgid "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:15
|
||||
#, fuzzy
|
||||
msgid "Currency Converter"
|
||||
msgstr "Currency Converter"
|
||||
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134
|
||||
#: templates/includes/sidebar.html:147
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
||||
#: templates/includes/sidebar.html:171
|
||||
#, fuzzy
|
||||
msgid "Management"
|
||||
msgstr "Management"
|
||||
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
||||
#, fuzzy
|
||||
msgid "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"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:246
|
||||
#: templates/includes/navbar.html:157 templates/includes/sidebar.html:270
|
||||
#, fuzzy
|
||||
msgid "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
|
||||
msgid "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"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||
#: templates/includes/sidebar.html:266
|
||||
#: templates/includes/sidebar.html:290
|
||||
#, fuzzy
|
||||
msgid "Calculator"
|
||||
msgstr "Calculator"
|
||||
@@ -3336,7 +3344,7 @@ msgstr "final total"
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: templates/insights/fragments/category_overview/index.html:515
|
||||
#: templates/insights/fragments/category_overview/index.html:517
|
||||
#, fuzzy
|
||||
msgid "Final Total"
|
||||
msgstr "final total"
|
||||
@@ -3584,26 +3592,30 @@ msgstr "Distribución"
|
||||
msgid "Summary"
|
||||
msgstr "Resumen"
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/transactions/pages/transactions.html:17
|
||||
msgid "Filter transactions"
|
||||
msgstr "Filtrar transacciones"
|
||||
|
||||
#: 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
|
||||
#: templates/monthly_overview/pages/overview.html:141
|
||||
#: templates/monthly_overview/pages/overview.html:195
|
||||
#: templates/transactions/pages/transactions.html:15
|
||||
#: templates/transactions/pages/transactions.html:69
|
||||
msgid "Oldest first"
|
||||
msgstr "Lo más antiguo primero"
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:157
|
||||
#: templates/transactions/pages/transactions.html:32
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/monthly_overview/pages/overview.html:204
|
||||
#: templates/transactions/pages/transactions.html:16
|
||||
#: templates/transactions/pages/transactions.html:78
|
||||
msgid "Newest first"
|
||||
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/yearly_overview/pages/overview_by_currency.html:9
|
||||
msgid "By currency"
|
||||
@@ -3833,7 +3845,7 @@ msgstr "Editing"
|
||||
msgid "transactions"
|
||||
msgstr "transactions"
|
||||
|
||||
#: templates/transactions/fragments/list_all.html:39
|
||||
#: templates/transactions/fragments/list_all.html:46
|
||||
#, fuzzy
|
||||
msgid "No transactions found"
|
||||
msgstr "No transactions found"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
3387
app/locale/id/LC_MESSAGES/django.po
Normal file
3387
app/locale/id/LC_MESSAGES/django.po
Normal file
File diff suppressed because it is too large
Load Diff
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-08-17 06:55+0000\n"
|
||||
"PO-Revision-Date: 2025-08-16 11:17+0000\n"
|
||||
"POT-Creation-Date: 2025-08-30 02:09+0000\n"
|
||||
"PO-Revision-Date: 2025-08-17 08:17+0000\n"
|
||||
"Last-Translator: Dimitri Decrock <dj.flashpower@gmail.com>\n"
|
||||
"Language-Team: Dutch <https://translations.herculino.com/projects/wygiwyh/"
|
||||
"app/nl/>\n"
|
||||
@@ -19,32 +19,32 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#: apps/accounts/forms.py:24
|
||||
#: apps/accounts/forms.py:26
|
||||
msgid "Group name"
|
||||
msgstr "Groepsnaam"
|
||||
|
||||
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91
|
||||
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
||||
#: 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/rules/forms.py:365 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421
|
||||
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836
|
||||
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:1057 apps/users/forms.py:217
|
||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||
#: apps/transactions/forms.py:788 apps/transactions/forms.py:831
|
||||
#: apps/transactions/forms.py:863 apps/transactions/forms.py:898
|
||||
#: apps/transactions/forms.py:1052 apps/users/forms.py:217
|
||||
#: apps/users/forms.py:379
|
||||
msgid "Update"
|
||||
msgstr "Bijwerken"
|
||||
|
||||
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61
|
||||
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152
|
||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||
#: 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/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:383 apps/transactions/forms.py:801
|
||||
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876
|
||||
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065
|
||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:796
|
||||
#: apps/transactions/forms.py:839 apps/transactions/forms.py:871
|
||||
#: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
|
||||
#: apps/users/forms.py:225 apps/users/forms.py:387
|
||||
#: templates/account_groups/fragments/list.html:9
|
||||
#: templates/accounts/fragments/list.html:9
|
||||
@@ -66,37 +66,37 @@ msgstr "Bijwerken"
|
||||
msgid "Add"
|
||||
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"
|
||||
msgstr "Groep"
|
||||
|
||||
#: apps/accounts/forms.py:115
|
||||
#: apps/accounts/forms.py:135
|
||||
msgid "New balance"
|
||||
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/rules/models.py:38 apps/rules/models.py:286
|
||||
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256
|
||||
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462
|
||||
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935
|
||||
#: apps/transactions/forms.py:450 apps/transactions/forms.py:457
|
||||
#: apps/transactions/forms.py:669 apps/transactions/forms.py:930
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:501
|
||||
#: 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:528
|
||||
#: templates/insights/fragments/category_overview/index.html:530
|
||||
msgid "Category"
|
||||
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/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/transactions/forms.py:50 apps/transactions/forms.py:264
|
||||
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479
|
||||
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928
|
||||
#: apps/transactions/forms.py:466 apps/transactions/forms.py:474
|
||||
#: apps/transactions/forms.py:662 apps/transactions/forms.py:923
|
||||
#: apps/transactions/models.py:324 apps/transactions/models.py:503
|
||||
#: 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/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||
msgid "Tags"
|
||||
@@ -128,11 +128,11 @@ msgstr "Accountgroep"
|
||||
|
||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||
#: 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"
|
||||
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/yearly_overview/pages/overview_by_account.html:18
|
||||
#: 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 "
|
||||
"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/currencies/fragments/list.html:27
|
||||
#: templates/entities/fragments/list.html:24
|
||||
#: templates/tags/fragments/list.html:24
|
||||
msgid "Archived"
|
||||
@@ -175,7 +177,7 @@ msgstr ""
|
||||
#: 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/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:683 apps/transactions/models.py:925
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -190,11 +192,11 @@ msgstr "Rekening"
|
||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||
#: templates/accounts/fragments/list.html:5
|
||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180
|
||||
#: templates/includes/sidebar.html:182
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
||||
#: templates/includes/sidebar.html:206
|
||||
#: templates/monthly_overview/pages/overview.html:94
|
||||
#: templates/transactions/fragments/summary.html:12
|
||||
#: templates/transactions/pages/transactions.html:81
|
||||
#: templates/transactions/pages/transactions.html:137
|
||||
msgid "Accounts"
|
||||
msgstr "Rekeningen"
|
||||
|
||||
@@ -478,8 +480,10 @@ msgstr "Verwijder"
|
||||
|
||||
#: apps/common/widgets/tom_select.py:15
|
||||
#: templates/mini_tools/unit_price_calculator.html:174
|
||||
#: templates/monthly_overview/pages/overview.html:172
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
#: templates/monthly_overview/pages/overview.html:215
|
||||
#: templates/monthly_overview/pages/overview.html:227
|
||||
#: templates/transactions/pages/transactions.html:89
|
||||
#: templates/transactions/pages/transactions.html:101
|
||||
msgid "Clear"
|
||||
msgstr "Leegmaken"
|
||||
|
||||
@@ -495,9 +499,9 @@ msgstr "Voorvoegsel"
|
||||
msgid "Suffix"
|
||||
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/transactions/forms.py:66 apps/transactions/forms.py:483
|
||||
#: apps/transactions/forms.py:66 apps/transactions/forms.py:478
|
||||
#: apps/transactions/models.py:300
|
||||
#: templates/dca/fragments/strategy/details.html:52
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
@@ -517,75 +521,75 @@ msgstr "Munteenheids Naam"
|
||||
msgid "Decimal Places"
|
||||
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
|
||||
#: templates/currencies/fragments/list.html:5
|
||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194
|
||||
#: templates/includes/sidebar.html:196
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
||||
#: templates/includes/sidebar.html:220
|
||||
#: templates/monthly_overview/pages/overview.html:81
|
||||
#: templates/transactions/fragments/summary.html:8
|
||||
#: templates/transactions/pages/transactions.html:68
|
||||
#: templates/transactions/pages/transactions.html:124
|
||||
msgid "Currencies"
|
||||
msgstr "Munteenheden"
|
||||
|
||||
#: apps/currencies/models.py:49
|
||||
#: apps/currencies/models.py:54
|
||||
msgid "Currency cannot have itself as exchange currency."
|
||||
msgstr "Munteenheid kan zichzelf niet als ruilmiddel hebben."
|
||||
|
||||
#: apps/currencies/models.py:60
|
||||
#: apps/currencies/models.py:65
|
||||
msgid "From Currency"
|
||||
msgstr "Van Munteenheid"
|
||||
|
||||
#: apps/currencies/models.py:66
|
||||
#: apps/currencies/models.py:71
|
||||
msgid "To Currency"
|
||||
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"
|
||||
msgstr "Wisselkoers"
|
||||
|
||||
#: apps/currencies/models.py:71
|
||||
#: apps/currencies/models.py:76
|
||||
msgid "Date and Time"
|
||||
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
|
||||
msgid "Auto"
|
||||
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
|
||||
#: 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"
|
||||
msgstr "Wisselkoersen"
|
||||
|
||||
#: apps/currencies/models.py:89
|
||||
#: apps/currencies/models.py:94
|
||||
msgid "From and To currencies cannot be the same."
|
||||
msgstr "Van en Naar munteenheid kunnen niet dezelfde zijn."
|
||||
|
||||
#: apps/currencies/models.py:105
|
||||
#: apps/currencies/models.py:110
|
||||
msgid "On"
|
||||
msgstr "Op"
|
||||
|
||||
#: apps/currencies/models.py:106
|
||||
#: apps/currencies/models.py:111
|
||||
msgid "Every X hours"
|
||||
msgstr "Elke X Uren"
|
||||
|
||||
#: apps/currencies/models.py:107
|
||||
#: apps/currencies/models.py:112
|
||||
msgid "Not on"
|
||||
msgstr "Niet op"
|
||||
|
||||
#: apps/currencies/models.py:109
|
||||
#: apps/currencies/models.py:114
|
||||
msgid "Service Name"
|
||||
msgstr "Dienstnaam"
|
||||
|
||||
#: apps/currencies/models.py:111
|
||||
#: apps/currencies/models.py:116
|
||||
msgid "Service Type"
|
||||
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
|
||||
#: templates/categories/fragments/list.html:21
|
||||
#: templates/entities/fragments/list.html:21
|
||||
@@ -594,31 +598,31 @@ msgstr "Soort Dienst"
|
||||
msgid "Active"
|
||||
msgstr "Actief"
|
||||
|
||||
#: apps/currencies/models.py:118
|
||||
#: apps/currencies/models.py:123
|
||||
msgid "API Key"
|
||||
msgstr "API Sleutel"
|
||||
|
||||
#: apps/currencies/models.py:119
|
||||
#: apps/currencies/models.py:124
|
||||
msgid "API key for the service (if required)"
|
||||
msgstr "API sleutel voor de dienst (indien verplicht)"
|
||||
|
||||
#: apps/currencies/models.py:124
|
||||
#: apps/currencies/models.py:129
|
||||
msgid "Interval Type"
|
||||
msgstr "Soort Interval"
|
||||
|
||||
#: apps/currencies/models.py:128
|
||||
#: apps/currencies/models.py:133
|
||||
msgid "Interval"
|
||||
msgstr "Interval"
|
||||
|
||||
#: apps/currencies/models.py:131
|
||||
#: apps/currencies/models.py:136
|
||||
msgid "Last Successful Fetch"
|
||||
msgstr "Laatste Succesvolle Ophaling"
|
||||
|
||||
#: apps/currencies/models.py:136
|
||||
#: apps/currencies/models.py:141
|
||||
msgid "Target Currencies"
|
||||
msgstr "Doel Munteenheden"
|
||||
|
||||
#: apps/currencies/models.py:138
|
||||
#: apps/currencies/models.py:143
|
||||
msgid ""
|
||||
"Select currencies to fetch exchange rates for. Rates will be fetched for "
|
||||
"each currency against their set exchange currency."
|
||||
@@ -626,11 +630,11 @@ msgstr ""
|
||||
"Selecteer munteenheden om wisselkoersen voor op te halen. De koersen worden "
|
||||
"voor elke munteenheid opgehaald ten opzichte van de ingestelde wisselkoers."
|
||||
|
||||
#: apps/currencies/models.py:146
|
||||
#: apps/currencies/models.py:151
|
||||
msgid "Target Accounts"
|
||||
msgstr "Naar rekeningen"
|
||||
|
||||
#: apps/currencies/models.py:148
|
||||
#: apps/currencies/models.py:153
|
||||
msgid ""
|
||||
"Select accounts to fetch exchange rates for. Rates will be fetched for each "
|
||||
"account's currency against their set exchange currency."
|
||||
@@ -639,33 +643,33 @@ msgstr ""
|
||||
"opgehaald voor de munteenheid van elke rekening ten opzichte van de "
|
||||
"ingestelde wisselkoers."
|
||||
|
||||
#: apps/currencies/models.py:155
|
||||
#: apps/currencies/models.py:160
|
||||
msgid "Single exchange rate"
|
||||
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."
|
||||
msgstr ""
|
||||
"Maak één wisselkoers aan en houd deze bijgewerkt. Voorkomt een overvolle "
|
||||
"database."
|
||||
|
||||
#: apps/currencies/models.py:163
|
||||
#: apps/currencies/models.py:168
|
||||
msgid "Exchange Rate Service"
|
||||
msgstr "Wisselkoersdienst"
|
||||
|
||||
#: apps/currencies/models.py:164
|
||||
#: apps/currencies/models.py:169
|
||||
msgid "Exchange Rate Services"
|
||||
msgstr "Wisselkoersdiensten"
|
||||
|
||||
#: apps/currencies/models.py:216
|
||||
#: apps/currencies/models.py:221
|
||||
msgid "'Every X hours' interval type requires a positive integer."
|
||||
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."
|
||||
msgstr "Het interval ‘Elke X uur’ moet tussen 1 en 24 liggen."
|
||||
|
||||
#: apps/currencies/models.py:239
|
||||
#: apps/currencies/models.py:244
|
||||
msgid ""
|
||||
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
|
||||
"'1-5,8,10-12')."
|
||||
@@ -673,7 +677,7 @@ msgstr ""
|
||||
"Ongeldige urennotatie. Gebruik door komma's gescheiden uren (0-23) en/of "
|
||||
"reeksen (bijv. ‘1-5,8,10-12’)."
|
||||
|
||||
#: apps/currencies/models.py:250
|
||||
#: apps/currencies/models.py:255
|
||||
msgid ""
|
||||
"Invalid format. Please check the requirements for your selected interval "
|
||||
"type."
|
||||
@@ -725,11 +729,11 @@ msgstr "Diensten succesvol in de wachtrij geplaatst"
|
||||
msgid "Create transaction"
|
||||
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"
|
||||
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"
|
||||
msgstr "Naar rekening"
|
||||
|
||||
@@ -755,7 +759,7 @@ msgstr "Koppel verrichting"
|
||||
msgid "You must provide an account."
|
||||
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."
|
||||
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/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:947
|
||||
msgid "Notes"
|
||||
@@ -833,15 +837,15 @@ msgid "Entry deleted successfully"
|
||||
msgstr "Invoer succesvol verwijderd"
|
||||
|
||||
#: 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
|
||||
msgid "Users"
|
||||
msgstr "Gebruikers"
|
||||
|
||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||
#: apps/transactions/models.py:375 templates/includes/navbar.html:58
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66
|
||||
#: templates/includes/sidebar.html:160
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
||||
#: templates/includes/sidebar.html:184
|
||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||
#: templates/recurring_transactions/fragments/table.html:39
|
||||
#: 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/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||
#: templates/includes/sidebar.html:162
|
||||
#: templates/includes/sidebar.html:186
|
||||
msgid "Categories"
|
||||
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/models.py:282 apps/transactions/filters.py:74
|
||||
#: 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:506 apps/transactions/models.py:708
|
||||
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
|
||||
#: 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
|
||||
msgid "Entities"
|
||||
msgstr "Bedrijven"
|
||||
|
||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Recurring Transactions"
|
||||
@@ -879,7 +883,7 @@ msgstr "Terugkerende Verrichtingen"
|
||||
|
||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Installment Plans"
|
||||
@@ -888,12 +892,12 @@ msgstr "Afbetalingsplannen"
|
||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||
#: templates/exchange_rates_services/fragments/list.html:6
|
||||
#: 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"
|
||||
msgstr "Automatische Wisselkoersen"
|
||||
|
||||
#: 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
|
||||
msgid "Rules"
|
||||
msgstr "Regels"
|
||||
@@ -965,7 +969,7 @@ msgstr "Selecteer een bestand"
|
||||
|
||||
#: apps/import_app/forms.py:61
|
||||
#: 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"
|
||||
msgstr "Importeer"
|
||||
|
||||
@@ -1036,8 +1040,8 @@ msgstr "Run met succes verwijderd"
|
||||
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
|
||||
#: 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:393
|
||||
#: templates/insights/fragments/category_overview/index.html:422
|
||||
#: templates/insights/fragments/category_overview/index.html:395
|
||||
#: templates/insights/fragments/category_overview/index.html:424
|
||||
msgid "Uncategorized"
|
||||
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/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:713
|
||||
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/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:945
|
||||
msgid "Description"
|
||||
@@ -1350,6 +1354,7 @@ msgid "Any entity"
|
||||
msgstr "Elk bedrijf"
|
||||
|
||||
#: apps/transactions/filters.py:202
|
||||
#: templates/insights/fragments/category_overview/index.html:274
|
||||
msgid "No entity"
|
||||
msgstr "Geen bedrijf"
|
||||
|
||||
@@ -1365,50 +1370,50 @@ msgstr "Opslaan en vergelijkbaar toevoegen"
|
||||
msgid "Save and add another"
|
||||
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"
|
||||
msgstr "Gedempte transacties worden niet weergegeven in maandoverzichten"
|
||||
|
||||
#: apps/transactions/forms.py:442
|
||||
#: apps/transactions/forms.py:437
|
||||
msgid "From Amount"
|
||||
msgstr "Van Bedrag"
|
||||
|
||||
#: apps/transactions/forms.py:447
|
||||
#: apps/transactions/forms.py:442
|
||||
msgid "To Amount"
|
||||
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
|
||||
msgid "Mute"
|
||||
msgstr "Dempen"
|
||||
|
||||
#: apps/transactions/forms.py:572
|
||||
#: apps/transactions/forms.py:567
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr "Overschrijving"
|
||||
|
||||
#: apps/transactions/forms.py:822
|
||||
#: apps/transactions/forms.py:817
|
||||
msgid "Tag name"
|
||||
msgstr "Labelnaam"
|
||||
|
||||
#: apps/transactions/forms.py:854
|
||||
#: apps/transactions/forms.py:849
|
||||
msgid "Entity name"
|
||||
msgstr "Naam van bedrijf"
|
||||
|
||||
#: apps/transactions/forms.py:886
|
||||
#: apps/transactions/forms.py:881
|
||||
msgid "Category name"
|
||||
msgstr "Naam van categorie"
|
||||
|
||||
#: apps/transactions/forms.py:888
|
||||
#: apps/transactions/forms.py:883
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr "Gedempte categorieën worden niet weergegeven in maandoverzichten"
|
||||
|
||||
#: apps/transactions/forms.py:1046
|
||||
#: apps/transactions/forms.py:1041
|
||||
msgid "future transactions"
|
||||
msgstr "toekomstige verrichtingen"
|
||||
|
||||
#: apps/transactions/forms.py:1076
|
||||
#: apps/transactions/forms.py:1071
|
||||
msgid "End date should be after the start date"
|
||||
msgstr "De einddatum moet na de begindatum vallen"
|
||||
|
||||
@@ -1506,12 +1511,12 @@ msgstr "Geen categorie"
|
||||
msgid "No description"
|
||||
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"
|
||||
msgstr "Jaarlijks"
|
||||
|
||||
#: 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"
|
||||
msgstr "Maandelijks"
|
||||
|
||||
@@ -1610,7 +1615,7 @@ msgid "Quick Transaction"
|
||||
msgstr "Snelle verrichting"
|
||||
|
||||
#: 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:11
|
||||
msgid "Quick Transactions"
|
||||
@@ -1702,11 +1707,11 @@ msgid "Installment Plan deleted successfully"
|
||||
msgstr "Afbetalingsplan succesvol verwijderd"
|
||||
|
||||
#: 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"
|
||||
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"
|
||||
msgstr "Item succesvol bijgewerkt"
|
||||
|
||||
@@ -1821,8 +1826,10 @@ msgid "This account is deactivated"
|
||||
msgstr "Deze gebruiker is gedeactiveerd"
|
||||
|
||||
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
|
||||
#: templates/monthly_overview/pages/overview.html:153
|
||||
#: templates/transactions/pages/transactions.html:28
|
||||
#: templates/monthly_overview/pages/overview.html:140
|
||||
#: templates/monthly_overview/pages/overview.html:186
|
||||
#: templates/transactions/pages/transactions.html:14
|
||||
#: templates/transactions/pages/transactions.html:60
|
||||
msgid "Default"
|
||||
msgstr "Standaard"
|
||||
|
||||
@@ -1930,7 +1937,7 @@ msgid "All Transactions"
|
||||
msgstr "Alle Verrichtingen"
|
||||
|
||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||
#: templates/includes/sidebar.html:48
|
||||
#: templates/includes/sidebar.html:73
|
||||
msgid "Calendar"
|
||||
msgstr "Kalender"
|
||||
|
||||
@@ -1981,7 +1988,7 @@ msgstr "Rekeningsgroep bewerken"
|
||||
#: templates/account_groups/fragments/list.html:32
|
||||
#: templates/accounts/fragments/list.html:37
|
||||
#: 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/entities/fragments/table.html:23
|
||||
#: templates/exchange_rates/fragments/table.html:19
|
||||
@@ -2002,7 +2009,7 @@ msgstr "Acties"
|
||||
#: templates/categories/fragments/table.html:29
|
||||
#: templates/cotton/transaction/item.html:129
|
||||
#: 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/list.html:36
|
||||
#: templates/entities/fragments/table.html:28
|
||||
@@ -2028,7 +2035,7 @@ msgstr "Bewerken"
|
||||
#: templates/cotton/transaction/item.html:192
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:55
|
||||
#: 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/list.html:44
|
||||
#: templates/entities/fragments/table.html:36
|
||||
@@ -2055,7 +2062,7 @@ msgstr "Verwijderen"
|
||||
#: templates/cotton/transaction/item.html:196
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:57
|
||||
#: 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/list.html:48
|
||||
#: templates/entities/fragments/table.html:40
|
||||
@@ -2085,7 +2092,7 @@ msgstr "Weet je het zeker?"
|
||||
#: templates/cotton/transaction/item.html:197
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:58
|
||||
#: 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/list.html:49
|
||||
#: templates/entities/fragments/table.html:41
|
||||
@@ -2105,7 +2112,7 @@ msgstr "Je kunt dit niet meer terugdraaien!"
|
||||
#: templates/categories/fragments/table.html:43
|
||||
#: templates/cotton/transaction/item.html:142
|
||||
#: 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/list.html:50
|
||||
#: templates/entities/fragments/table.html:42
|
||||
@@ -2251,7 +2258,7 @@ msgid "Muted"
|
||||
msgstr "Gedempt"
|
||||
|
||||
#: 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"
|
||||
msgstr "Geen categorieën"
|
||||
|
||||
@@ -2260,13 +2267,14 @@ msgid "Pick a month"
|
||||
msgstr "Kies een maand"
|
||||
|
||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||
#: templates/includes/sidebar.html:28
|
||||
#: templates/includes/sidebar.html:53
|
||||
msgid "Close"
|
||||
msgstr "Sluiten"
|
||||
|
||||
#: templates/cotton/config/search.html:6
|
||||
#: 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"
|
||||
msgstr "Zoeken"
|
||||
|
||||
@@ -2451,7 +2459,7 @@ msgstr "Munteenheid bewerken"
|
||||
msgid "Code"
|
||||
msgstr "Code"
|
||||
|
||||
#: templates/currencies/fragments/list.html:61
|
||||
#: templates/currencies/fragments/list.html:63
|
||||
msgid "No currencies"
|
||||
msgstr "Geen munteenheden"
|
||||
|
||||
@@ -2489,7 +2497,7 @@ msgstr "Geen idems in deze DCA"
|
||||
|
||||
#: templates/dca/fragments/strategy/details.html:125
|
||||
#: 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"
|
||||
msgstr "Probeer er een toe te voegen"
|
||||
|
||||
@@ -2591,7 +2599,7 @@ msgid "Edit exchange rate"
|
||||
msgstr "Wisselkoers bewerken"
|
||||
|
||||
#: 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/yearly_overview/pages/overview_by_account.html:105
|
||||
#: 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_services/fragments/table.html:58
|
||||
#: templates/transactions/fragments/list_all.html:47
|
||||
#: templates/transactions/fragments/list_all.html:54
|
||||
msgid "Page navigation"
|
||||
msgstr "Paginanavigatie"
|
||||
|
||||
@@ -2648,7 +2656,7 @@ msgid "No services configured"
|
||||
msgstr "Geen diensten ingesteld"
|
||||
|
||||
#: 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"
|
||||
msgstr "Exporteren en Herstellen"
|
||||
|
||||
@@ -2745,7 +2753,7 @@ msgstr "Navigatie Knop"
|
||||
msgid "Overview"
|
||||
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"
|
||||
msgstr "Netto Waarde"
|
||||
|
||||
@@ -2755,62 +2763,62 @@ msgstr "Netto Waarde"
|
||||
msgid "Current"
|
||||
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
|
||||
msgid "Insights"
|
||||
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"
|
||||
msgstr "Prullenbak"
|
||||
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
||||
msgid "Tools"
|
||||
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"
|
||||
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:10
|
||||
msgid "Unit Price Calculator"
|
||||
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:15
|
||||
msgid "Currency Converter"
|
||||
msgstr "Valuta omrekenen"
|
||||
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134
|
||||
#: templates/includes/sidebar.html:147
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
||||
#: templates/includes/sidebar.html:171
|
||||
msgid "Management"
|
||||
msgstr "Beheer"
|
||||
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
||||
msgid "Automation"
|
||||
msgstr "Automatisatie"
|
||||
|
||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:237
|
||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
|
||||
msgid "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"
|
||||
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"
|
||||
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"
|
||||
msgstr "is beschikbaar"
|
||||
|
||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||
#: templates/includes/sidebar.html:266
|
||||
#: templates/includes/sidebar.html:290
|
||||
msgid "Calculator"
|
||||
msgstr "Rekenmachine"
|
||||
|
||||
@@ -2897,16 +2905,12 @@ msgstr ""
|
||||
"geteld voor elke tag"
|
||||
|
||||
#: templates/insights/fragments/category_overview/index.html:52
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Transaction amounts associated with multiple tags will be counted once "
|
||||
#| "for each tag"
|
||||
msgid ""
|
||||
"Transaction amounts associated with multiple tags and entities will be "
|
||||
"counted once for each tag"
|
||||
msgstr ""
|
||||
"Transactiebedragen die gekoppeld zijn aan meerdere tags worden één keer "
|
||||
"geteld voor elke tag"
|
||||
"Transactiebedragen die gekoppeld zijn aan meerdere tags en bedrijven worden "
|
||||
"één keer geteld voor elke tag"
|
||||
|
||||
#: templates/insights/fragments/category_overview/index.html:69
|
||||
msgid "Final total"
|
||||
@@ -2917,7 +2921,7 @@ msgstr "Eindtotaal"
|
||||
msgid "Total"
|
||||
msgstr "Totaal"
|
||||
|
||||
#: templates/insights/fragments/category_overview/index.html:515
|
||||
#: templates/insights/fragments/category_overview/index.html:517
|
||||
msgid "Final Total"
|
||||
msgstr "Eindtotaal"
|
||||
|
||||
@@ -3125,26 +3129,30 @@ msgstr "Verdeling"
|
||||
msgid "Summary"
|
||||
msgstr "Samenvatting"
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/transactions/pages/transactions.html:17
|
||||
msgid "Filter transactions"
|
||||
msgstr "Filter verrichtingen"
|
||||
|
||||
#: 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
|
||||
#: templates/monthly_overview/pages/overview.html:141
|
||||
#: templates/monthly_overview/pages/overview.html:195
|
||||
#: templates/transactions/pages/transactions.html:15
|
||||
#: templates/transactions/pages/transactions.html:69
|
||||
msgid "Oldest first"
|
||||
msgstr "Oudste eerst"
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:157
|
||||
#: templates/transactions/pages/transactions.html:32
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/monthly_overview/pages/overview.html:204
|
||||
#: templates/transactions/pages/transactions.html:16
|
||||
#: templates/transactions/pages/transactions.html:78
|
||||
msgid "Newest first"
|
||||
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/yearly_overview/pages/overview_by_currency.html:9
|
||||
msgid "By currency"
|
||||
@@ -3358,7 +3366,7 @@ msgstr "Bewerking"
|
||||
msgid "transactions"
|
||||
msgstr "verrichtingen"
|
||||
|
||||
#: templates/transactions/fragments/list_all.html:39
|
||||
#: templates/transactions/fragments/list_all.html:46
|
||||
msgid "No transactions found"
|
||||
msgstr "Geen Verrichtingen gevonden"
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \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"
|
||||
"Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n"
|
||||
"Language-Team: Portuguese <https://translations.herculino.com/projects/"
|
||||
@@ -19,32 +19,32 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 5.10.4\n"
|
||||
|
||||
#: apps/accounts/forms.py:24
|
||||
#: apps/accounts/forms.py:26
|
||||
msgid "Group name"
|
||||
msgstr "Nome do grupo"
|
||||
|
||||
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91
|
||||
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
||||
#: 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/rules/forms.py:365 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421
|
||||
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836
|
||||
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:1057 apps/users/forms.py:217
|
||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||
#: apps/transactions/forms.py:788 apps/transactions/forms.py:831
|
||||
#: apps/transactions/forms.py:863 apps/transactions/forms.py:898
|
||||
#: apps/transactions/forms.py:1052 apps/users/forms.py:217
|
||||
#: apps/users/forms.py:379
|
||||
msgid "Update"
|
||||
msgstr "Atualizar"
|
||||
|
||||
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61
|
||||
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152
|
||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||
#: 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/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:383 apps/transactions/forms.py:801
|
||||
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876
|
||||
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065
|
||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:796
|
||||
#: apps/transactions/forms.py:839 apps/transactions/forms.py:871
|
||||
#: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
|
||||
#: apps/users/forms.py:225 apps/users/forms.py:387
|
||||
#: templates/account_groups/fragments/list.html:9
|
||||
#: templates/accounts/fragments/list.html:9
|
||||
@@ -66,37 +66,37 @@ msgstr "Atualizar"
|
||||
msgid "Add"
|
||||
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"
|
||||
msgstr "Grupo da Conta"
|
||||
|
||||
#: apps/accounts/forms.py:115
|
||||
#: apps/accounts/forms.py:135
|
||||
msgid "New balance"
|
||||
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/rules/models.py:38 apps/rules/models.py:286
|
||||
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256
|
||||
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462
|
||||
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935
|
||||
#: apps/transactions/forms.py:450 apps/transactions/forms.py:457
|
||||
#: apps/transactions/forms.py:669 apps/transactions/forms.py:930
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:501
|
||||
#: 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:528
|
||||
#: templates/insights/fragments/category_overview/index.html:530
|
||||
msgid "Category"
|
||||
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/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/transactions/forms.py:50 apps/transactions/forms.py:264
|
||||
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479
|
||||
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928
|
||||
#: apps/transactions/forms.py:466 apps/transactions/forms.py:474
|
||||
#: apps/transactions/forms.py:662 apps/transactions/forms.py:923
|
||||
#: apps/transactions/models.py:324 apps/transactions/models.py:503
|
||||
#: 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/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||
msgid "Tags"
|
||||
@@ -128,11 +128,11 @@ msgstr "Grupo da Conta"
|
||||
|
||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||
#: 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"
|
||||
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/yearly_overview/pages/overview_by_account.html:18
|
||||
#: 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 "
|
||||
"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/currencies/fragments/list.html:27
|
||||
#: templates/entities/fragments/list.html:24
|
||||
#: templates/tags/fragments/list.html:24
|
||||
msgid "Archived"
|
||||
@@ -174,7 +176,7 @@ msgstr ""
|
||||
#: 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/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:683 apps/transactions/models.py:925
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -189,11 +191,11 @@ msgstr "Conta"
|
||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||
#: templates/accounts/fragments/list.html:5
|
||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180
|
||||
#: templates/includes/sidebar.html:182
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
||||
#: templates/includes/sidebar.html:206
|
||||
#: templates/monthly_overview/pages/overview.html:94
|
||||
#: templates/transactions/fragments/summary.html:12
|
||||
#: templates/transactions/pages/transactions.html:81
|
||||
#: templates/transactions/pages/transactions.html:137
|
||||
msgid "Accounts"
|
||||
msgstr "Contas"
|
||||
|
||||
@@ -478,8 +480,10 @@ msgstr "Remover"
|
||||
|
||||
#: apps/common/widgets/tom_select.py:15
|
||||
#: templates/mini_tools/unit_price_calculator.html:174
|
||||
#: templates/monthly_overview/pages/overview.html:172
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
#: templates/monthly_overview/pages/overview.html:215
|
||||
#: templates/monthly_overview/pages/overview.html:227
|
||||
#: templates/transactions/pages/transactions.html:89
|
||||
#: templates/transactions/pages/transactions.html:101
|
||||
msgid "Clear"
|
||||
msgstr "Limpar"
|
||||
|
||||
@@ -495,9 +499,9 @@ msgstr "Prefixo"
|
||||
msgid "Suffix"
|
||||
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/transactions/forms.py:66 apps/transactions/forms.py:483
|
||||
#: apps/transactions/forms.py:66 apps/transactions/forms.py:478
|
||||
#: apps/transactions/models.py:300
|
||||
#: templates/dca/fragments/strategy/details.html:52
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
@@ -517,75 +521,75 @@ msgstr "Nome da Moeda"
|
||||
msgid "Decimal Places"
|
||||
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
|
||||
#: templates/currencies/fragments/list.html:5
|
||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194
|
||||
#: templates/includes/sidebar.html:196
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
||||
#: templates/includes/sidebar.html:220
|
||||
#: templates/monthly_overview/pages/overview.html:81
|
||||
#: templates/transactions/fragments/summary.html:8
|
||||
#: templates/transactions/pages/transactions.html:68
|
||||
#: templates/transactions/pages/transactions.html:124
|
||||
msgid "Currencies"
|
||||
msgstr "Moedas"
|
||||
|
||||
#: apps/currencies/models.py:49
|
||||
#: apps/currencies/models.py:54
|
||||
msgid "Currency cannot have itself as exchange currency."
|
||||
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"
|
||||
msgstr "Moeda de origem"
|
||||
|
||||
#: apps/currencies/models.py:66
|
||||
#: apps/currencies/models.py:71
|
||||
msgid "To Currency"
|
||||
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"
|
||||
msgstr "Taxa de Câmbio"
|
||||
|
||||
#: apps/currencies/models.py:71
|
||||
#: apps/currencies/models.py:76
|
||||
msgid "Date and Time"
|
||||
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
|
||||
msgid "Auto"
|
||||
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
|
||||
#: 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"
|
||||
msgstr "Taxas de Câmbio"
|
||||
|
||||
#: apps/currencies/models.py:89
|
||||
#: apps/currencies/models.py:94
|
||||
msgid "From and To currencies cannot be the same."
|
||||
msgstr "As moedas De e Para não podem ser as mesmas."
|
||||
|
||||
#: apps/currencies/models.py:105
|
||||
#: apps/currencies/models.py:110
|
||||
msgid "On"
|
||||
msgstr "Em"
|
||||
|
||||
#: apps/currencies/models.py:106
|
||||
#: apps/currencies/models.py:111
|
||||
msgid "Every X hours"
|
||||
msgstr "A cada X horas"
|
||||
|
||||
#: apps/currencies/models.py:107
|
||||
#: apps/currencies/models.py:112
|
||||
msgid "Not on"
|
||||
msgstr "Não em"
|
||||
|
||||
#: apps/currencies/models.py:109
|
||||
#: apps/currencies/models.py:114
|
||||
msgid "Service Name"
|
||||
msgstr "Nome do Serviço"
|
||||
|
||||
#: apps/currencies/models.py:111
|
||||
#: apps/currencies/models.py:116
|
||||
msgid "Service Type"
|
||||
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
|
||||
#: templates/categories/fragments/list.html:21
|
||||
#: templates/entities/fragments/list.html:21
|
||||
@@ -594,31 +598,31 @@ msgstr "Tipo de Serviço"
|
||||
msgid "Active"
|
||||
msgstr "Ativo"
|
||||
|
||||
#: apps/currencies/models.py:118
|
||||
#: apps/currencies/models.py:123
|
||||
msgid "API Key"
|
||||
msgstr "Chave de API"
|
||||
|
||||
#: apps/currencies/models.py:119
|
||||
#: apps/currencies/models.py:124
|
||||
msgid "API key for the service (if required)"
|
||||
msgstr "Chave de API para o serviço (se necessário)"
|
||||
|
||||
#: apps/currencies/models.py:124
|
||||
#: apps/currencies/models.py:129
|
||||
msgid "Interval Type"
|
||||
msgstr "Tipo de Intervalo"
|
||||
|
||||
#: apps/currencies/models.py:128
|
||||
#: apps/currencies/models.py:133
|
||||
msgid "Interval"
|
||||
msgstr "Intervalo"
|
||||
|
||||
#: apps/currencies/models.py:131
|
||||
#: apps/currencies/models.py:136
|
||||
msgid "Last Successful Fetch"
|
||||
msgstr "Última execução bem-sucedida"
|
||||
|
||||
#: apps/currencies/models.py:136
|
||||
#: apps/currencies/models.py:141
|
||||
msgid "Target Currencies"
|
||||
msgstr "Moedas-alvo"
|
||||
|
||||
#: apps/currencies/models.py:138
|
||||
#: apps/currencies/models.py:143
|
||||
msgid ""
|
||||
"Select currencies to fetch exchange rates for. Rates will be fetched for "
|
||||
"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 "
|
||||
"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"
|
||||
msgstr "Contas-alvo"
|
||||
|
||||
#: apps/currencies/models.py:148
|
||||
#: apps/currencies/models.py:153
|
||||
msgid ""
|
||||
"Select accounts to fetch exchange rates for. Rates will be fetched for each "
|
||||
"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 "
|
||||
"definida."
|
||||
|
||||
#: apps/currencies/models.py:155
|
||||
#: apps/currencies/models.py:160
|
||||
#, fuzzy
|
||||
#| msgid "Edit exchange rate"
|
||||
msgid "Single exchange rate"
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:163
|
||||
#: apps/currencies/models.py:168
|
||||
msgid "Exchange Rate Service"
|
||||
msgstr "Serviço de Taxa de Câmbio"
|
||||
|
||||
#: apps/currencies/models.py:164
|
||||
#: apps/currencies/models.py:169
|
||||
msgid "Exchange Rate Services"
|
||||
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."
|
||||
msgstr ""
|
||||
"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."
|
||||
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 ""
|
||||
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
|
||||
"'1-5,8,10-12')."
|
||||
@@ -674,7 +678,7 @@ msgstr ""
|
||||
"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')."
|
||||
|
||||
#: apps/currencies/models.py:250
|
||||
#: apps/currencies/models.py:255
|
||||
msgid ""
|
||||
"Invalid format. Please check the requirements for your selected interval "
|
||||
"type."
|
||||
@@ -726,11 +730,11 @@ msgstr "Serviços marcados para execução com sucesso"
|
||||
msgid "Create transaction"
|
||||
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"
|
||||
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"
|
||||
msgstr "Conta de destino"
|
||||
|
||||
@@ -755,7 +759,7 @@ msgstr "Conectar transação"
|
||||
msgid "You must provide an account."
|
||||
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."
|
||||
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/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:947
|
||||
msgid "Notes"
|
||||
@@ -833,15 +837,15 @@ msgid "Entry deleted successfully"
|
||||
msgstr "Entrada apagada com sucesso"
|
||||
|
||||
#: 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
|
||||
msgid "Users"
|
||||
msgstr "Usuários"
|
||||
|
||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||
#: apps/transactions/models.py:375 templates/includes/navbar.html:58
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66
|
||||
#: templates/includes/sidebar.html:160
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
||||
#: templates/includes/sidebar.html:184
|
||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||
#: templates/recurring_transactions/fragments/table.html:39
|
||||
#: 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/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||
#: templates/includes/sidebar.html:162
|
||||
#: templates/includes/sidebar.html:186
|
||||
msgid "Categories"
|
||||
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/models.py:282 apps/transactions/filters.py:74
|
||||
#: 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:506 apps/transactions/models.py:708
|
||||
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
|
||||
#: 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
|
||||
msgid "Entities"
|
||||
msgstr "Entidades"
|
||||
|
||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Recurring Transactions"
|
||||
@@ -879,7 +883,7 @@ msgstr "Transações Recorrentes"
|
||||
|
||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Installment Plans"
|
||||
@@ -888,12 +892,12 @@ msgstr "Parcelamentos"
|
||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||
#: templates/exchange_rates_services/fragments/list.html:6
|
||||
#: 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"
|
||||
msgstr "Taxas de Câmbio Automáticas"
|
||||
|
||||
#: 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
|
||||
msgid "Rules"
|
||||
msgstr "Regras"
|
||||
@@ -965,7 +969,7 @@ msgstr "Selecione um arquivo"
|
||||
|
||||
#: apps/import_app/forms.py:61
|
||||
#: 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"
|
||||
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/utils/sankey.py:167 apps/transactions/filters.py:189
|
||||
#: templates/insights/fragments/category_overview/index.html:88
|
||||
#: templates/insights/fragments/category_overview/index.html:393
|
||||
#: templates/insights/fragments/category_overview/index.html:422
|
||||
#: templates/insights/fragments/category_overview/index.html:395
|
||||
#: templates/insights/fragments/category_overview/index.html:424
|
||||
msgid "Uncategorized"
|
||||
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/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:713
|
||||
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/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:945
|
||||
msgid "Description"
|
||||
@@ -1354,6 +1358,7 @@ msgid "Any entity"
|
||||
msgstr "Adicionar entidade"
|
||||
|
||||
#: apps/transactions/filters.py:202
|
||||
#: templates/insights/fragments/category_overview/index.html:274
|
||||
#, fuzzy
|
||||
#| msgid "No entities"
|
||||
msgid "No entity"
|
||||
@@ -1371,54 +1376,54 @@ msgstr ""
|
||||
msgid "Save and add another"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:442
|
||||
#: apps/transactions/forms.py:437
|
||||
msgid "From Amount"
|
||||
msgstr "Quantia de origem"
|
||||
|
||||
#: apps/transactions/forms.py:447
|
||||
#: apps/transactions/forms.py:442
|
||||
msgid "To Amount"
|
||||
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
|
||||
msgid "Mute"
|
||||
msgstr "Silenciada"
|
||||
|
||||
#: apps/transactions/forms.py:572
|
||||
#: apps/transactions/forms.py:567
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr "Transferir"
|
||||
|
||||
#: apps/transactions/forms.py:822
|
||||
#: apps/transactions/forms.py:817
|
||||
msgid "Tag name"
|
||||
msgstr "Nome da Tag"
|
||||
|
||||
#: apps/transactions/forms.py:854
|
||||
#: apps/transactions/forms.py:849
|
||||
msgid "Entity name"
|
||||
msgstr "Nome da entidade"
|
||||
|
||||
#: apps/transactions/forms.py:886
|
||||
#: apps/transactions/forms.py:881
|
||||
msgid "Category name"
|
||||
msgstr "Nome da Categoria"
|
||||
|
||||
#: apps/transactions/forms.py:888
|
||||
#: apps/transactions/forms.py:883
|
||||
#, fuzzy
|
||||
#| msgid "Muted categories won't count towards your monthly total"
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr "As categorias silenciadas não serão contabilizadas em seu total mensal"
|
||||
|
||||
#: apps/transactions/forms.py:1046
|
||||
#: apps/transactions/forms.py:1041
|
||||
#, fuzzy
|
||||
#| msgid "Filter transactions"
|
||||
msgid "future transactions"
|
||||
msgstr "Filtrar transações"
|
||||
|
||||
#: apps/transactions/forms.py:1076
|
||||
#: apps/transactions/forms.py:1071
|
||||
msgid "End date should be after the start date"
|
||||
msgstr "Data final deve ser após data inicial"
|
||||
|
||||
@@ -1515,12 +1520,12 @@ msgstr "Sem categoria"
|
||||
msgid "No description"
|
||||
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"
|
||||
msgstr "Anual"
|
||||
|
||||
#: 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"
|
||||
msgstr "Mensal"
|
||||
|
||||
@@ -1621,7 +1626,7 @@ msgid "Quick Transaction"
|
||||
msgstr "Editar Transação"
|
||||
|
||||
#: 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:11
|
||||
#, fuzzy
|
||||
@@ -1715,13 +1720,13 @@ msgid "Installment Plan deleted successfully"
|
||||
msgstr "Parcelamento apagado com sucesso"
|
||||
|
||||
#: 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
|
||||
#| msgid "Rule added successfully"
|
||||
msgid "Item added successfully"
|
||||
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
|
||||
#| msgid "Rule updated successfully"
|
||||
msgid "Item updated successfully"
|
||||
@@ -1840,8 +1845,10 @@ msgid "This account is deactivated"
|
||||
msgstr "Essa conta está desativada"
|
||||
|
||||
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
|
||||
#: templates/monthly_overview/pages/overview.html:153
|
||||
#: templates/transactions/pages/transactions.html:28
|
||||
#: templates/monthly_overview/pages/overview.html:140
|
||||
#: templates/monthly_overview/pages/overview.html:186
|
||||
#: templates/transactions/pages/transactions.html:14
|
||||
#: templates/transactions/pages/transactions.html:60
|
||||
msgid "Default"
|
||||
msgstr "Padrão"
|
||||
|
||||
@@ -1949,7 +1956,7 @@ msgid "All Transactions"
|
||||
msgstr "Todas as transações"
|
||||
|
||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||
#: templates/includes/sidebar.html:48
|
||||
#: templates/includes/sidebar.html:73
|
||||
msgid "Calendar"
|
||||
msgstr "Calendário"
|
||||
|
||||
@@ -2000,7 +2007,7 @@ msgstr "Editar grupo de conta"
|
||||
#: templates/account_groups/fragments/list.html:32
|
||||
#: templates/accounts/fragments/list.html:37
|
||||
#: 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/entities/fragments/table.html:23
|
||||
#: templates/exchange_rates/fragments/table.html:19
|
||||
@@ -2021,7 +2028,7 @@ msgstr "Ações"
|
||||
#: templates/categories/fragments/table.html:29
|
||||
#: templates/cotton/transaction/item.html:129
|
||||
#: 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/list.html:36
|
||||
#: templates/entities/fragments/table.html:28
|
||||
@@ -2047,7 +2054,7 @@ msgstr "Editar"
|
||||
#: templates/cotton/transaction/item.html:192
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:55
|
||||
#: 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/list.html:44
|
||||
#: templates/entities/fragments/table.html:36
|
||||
@@ -2074,7 +2081,7 @@ msgstr "Apagar"
|
||||
#: templates/cotton/transaction/item.html:196
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:57
|
||||
#: 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/list.html:48
|
||||
#: templates/entities/fragments/table.html:40
|
||||
@@ -2104,7 +2111,7 @@ msgstr "Tem certeza?"
|
||||
#: templates/cotton/transaction/item.html:197
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:58
|
||||
#: 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/list.html:49
|
||||
#: 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/cotton/transaction/item.html:142
|
||||
#: 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/list.html:50
|
||||
#: templates/entities/fragments/table.html:42
|
||||
@@ -2270,7 +2277,7 @@ msgid "Muted"
|
||||
msgstr "Silenciada"
|
||||
|
||||
#: 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"
|
||||
msgstr "Nenhum categoria"
|
||||
|
||||
@@ -2279,13 +2286,14 @@ msgid "Pick a month"
|
||||
msgstr "Escolha um mês"
|
||||
|
||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||
#: templates/includes/sidebar.html:28
|
||||
#: templates/includes/sidebar.html:53
|
||||
msgid "Close"
|
||||
msgstr "Fechar"
|
||||
|
||||
#: templates/cotton/config/search.html:6
|
||||
#: 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"
|
||||
msgstr "Buscar"
|
||||
|
||||
@@ -2476,7 +2484,7 @@ msgstr "Editar moeda"
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
||||
#: templates/currencies/fragments/list.html:61
|
||||
#: templates/currencies/fragments/list.html:63
|
||||
msgid "No currencies"
|
||||
msgstr "Nenhuma moeda"
|
||||
|
||||
@@ -2514,7 +2522,7 @@ msgstr "Nenhuma entrada neste CMP"
|
||||
|
||||
#: templates/dca/fragments/strategy/details.html:125
|
||||
#: 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"
|
||||
msgstr "Tente adicionar uma"
|
||||
|
||||
@@ -2617,7 +2625,7 @@ msgid "Edit exchange rate"
|
||||
msgstr "Editar taxa de câmbio"
|
||||
|
||||
#: 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/yearly_overview/pages/overview_by_account.html:105
|
||||
#: 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_services/fragments/table.html:58
|
||||
#: templates/transactions/fragments/list_all.html:47
|
||||
#: templates/transactions/fragments/list_all.html:54
|
||||
msgid "Page navigation"
|
||||
msgstr "Navegação por página"
|
||||
|
||||
@@ -2674,7 +2682,7 @@ msgid "No services configured"
|
||||
msgstr "Nenhum serviço configurado"
|
||||
|
||||
#: 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"
|
||||
msgstr "Exportar e Restaurar"
|
||||
|
||||
@@ -2772,7 +2780,7 @@ msgstr "Alternar navegação"
|
||||
msgid "Overview"
|
||||
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"
|
||||
msgstr "Patrimônio"
|
||||
|
||||
@@ -2782,62 +2790,62 @@ msgstr "Patrimônio"
|
||||
msgid "Current"
|
||||
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
|
||||
msgid "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"
|
||||
msgstr "Lixeira"
|
||||
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
||||
msgid "Tools"
|
||||
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"
|
||||
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:10
|
||||
msgid "Unit Price Calculator"
|
||||
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:15
|
||||
msgid "Currency Converter"
|
||||
msgstr "Conversor de Moeda"
|
||||
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134
|
||||
#: templates/includes/sidebar.html:147
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
||||
#: templates/includes/sidebar.html:171
|
||||
msgid "Management"
|
||||
msgstr "Gerenciar"
|
||||
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
||||
msgid "Automation"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||
#: templates/includes/sidebar.html:266
|
||||
#: templates/includes/sidebar.html:290
|
||||
msgid "Calculator"
|
||||
msgstr "Calculadora"
|
||||
|
||||
@@ -2938,7 +2946,7 @@ msgstr "total final"
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: templates/insights/fragments/category_overview/index.html:515
|
||||
#: templates/insights/fragments/category_overview/index.html:517
|
||||
msgid "Final Total"
|
||||
msgstr "Total Final"
|
||||
|
||||
@@ -3146,26 +3154,30 @@ msgstr "Distribuição"
|
||||
msgid "Summary"
|
||||
msgstr "Resumo"
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/transactions/pages/transactions.html:17
|
||||
msgid "Filter transactions"
|
||||
msgstr "Filtrar transações"
|
||||
|
||||
#: 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
|
||||
#: templates/monthly_overview/pages/overview.html:141
|
||||
#: templates/monthly_overview/pages/overview.html:195
|
||||
#: templates/transactions/pages/transactions.html:15
|
||||
#: templates/transactions/pages/transactions.html:69
|
||||
msgid "Oldest first"
|
||||
msgstr "Mais antigas primeiro"
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:157
|
||||
#: templates/transactions/pages/transactions.html:32
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/monthly_overview/pages/overview.html:204
|
||||
#: templates/transactions/pages/transactions.html:16
|
||||
#: templates/transactions/pages/transactions.html:78
|
||||
msgid "Newest first"
|
||||
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/yearly_overview/pages/overview_by_currency.html:9
|
||||
msgid "By currency"
|
||||
@@ -3382,7 +3394,7 @@ msgstr "Editando"
|
||||
msgid "transactions"
|
||||
msgstr "transações"
|
||||
|
||||
#: templates/transactions/fragments/list_all.html:39
|
||||
#: templates/transactions/fragments/list_all.html:46
|
||||
msgid "No transactions found"
|
||||
msgstr "Nenhuma transação encontrada"
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-08-17 06:55+0000\n"
|
||||
"PO-Revision-Date: 2025-08-16 04:17+0000\n"
|
||||
"POT-Creation-Date: 2025-08-30 02:09+0000\n"
|
||||
"PO-Revision-Date: 2025-08-17 08:17+0000\n"
|
||||
"Last-Translator: Herculino Trotta <netotrotta@gmail.com>\n"
|
||||
"Language-Team: Portuguese (Brazil) <https://translations.herculino.com/"
|
||||
"projects/wygiwyh/app/pt_BR/>\n"
|
||||
@@ -19,32 +19,32 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 5.12.2\n"
|
||||
|
||||
#: apps/accounts/forms.py:24
|
||||
#: apps/accounts/forms.py:26
|
||||
msgid "Group name"
|
||||
msgstr "Nome do grupo"
|
||||
|
||||
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91
|
||||
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
||||
#: 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/rules/forms.py:365 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421
|
||||
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836
|
||||
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:1057 apps/users/forms.py:217
|
||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||
#: apps/transactions/forms.py:788 apps/transactions/forms.py:831
|
||||
#: apps/transactions/forms.py:863 apps/transactions/forms.py:898
|
||||
#: apps/transactions/forms.py:1052 apps/users/forms.py:217
|
||||
#: apps/users/forms.py:379
|
||||
msgid "Update"
|
||||
msgstr "Atualizar"
|
||||
|
||||
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61
|
||||
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152
|
||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||
#: 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/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:383 apps/transactions/forms.py:801
|
||||
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876
|
||||
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065
|
||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:796
|
||||
#: apps/transactions/forms.py:839 apps/transactions/forms.py:871
|
||||
#: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
|
||||
#: apps/users/forms.py:225 apps/users/forms.py:387
|
||||
#: templates/account_groups/fragments/list.html:9
|
||||
#: templates/accounts/fragments/list.html:9
|
||||
@@ -66,37 +66,37 @@ msgstr "Atualizar"
|
||||
msgid "Add"
|
||||
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"
|
||||
msgstr "Grupo"
|
||||
|
||||
#: apps/accounts/forms.py:115
|
||||
#: apps/accounts/forms.py:135
|
||||
msgid "New balance"
|
||||
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/rules/models.py:38 apps/rules/models.py:286
|
||||
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256
|
||||
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462
|
||||
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935
|
||||
#: apps/transactions/forms.py:450 apps/transactions/forms.py:457
|
||||
#: apps/transactions/forms.py:669 apps/transactions/forms.py:930
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:501
|
||||
#: 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:528
|
||||
#: templates/insights/fragments/category_overview/index.html:530
|
||||
msgid "Category"
|
||||
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/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/transactions/forms.py:50 apps/transactions/forms.py:264
|
||||
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479
|
||||
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928
|
||||
#: apps/transactions/forms.py:466 apps/transactions/forms.py:474
|
||||
#: apps/transactions/forms.py:662 apps/transactions/forms.py:923
|
||||
#: apps/transactions/models.py:324 apps/transactions/models.py:503
|
||||
#: 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/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||
msgid "Tags"
|
||||
@@ -128,11 +128,11 @@ msgstr "Grupo da Conta"
|
||||
|
||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||
#: 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"
|
||||
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/yearly_overview/pages/overview_by_account.html:18
|
||||
#: 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 "
|
||||
"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/currencies/fragments/list.html:27
|
||||
#: templates/entities/fragments/list.html:24
|
||||
#: templates/tags/fragments/list.html:24
|
||||
msgid "Archived"
|
||||
@@ -174,7 +176,7 @@ msgstr ""
|
||||
#: 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/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:683 apps/transactions/models.py:925
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -189,11 +191,11 @@ msgstr "Conta"
|
||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||
#: templates/accounts/fragments/list.html:5
|
||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180
|
||||
#: templates/includes/sidebar.html:182
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
||||
#: templates/includes/sidebar.html:206
|
||||
#: templates/monthly_overview/pages/overview.html:94
|
||||
#: templates/transactions/fragments/summary.html:12
|
||||
#: templates/transactions/pages/transactions.html:81
|
||||
#: templates/transactions/pages/transactions.html:137
|
||||
msgid "Accounts"
|
||||
msgstr "Contas"
|
||||
|
||||
@@ -476,8 +478,10 @@ msgstr "Remover"
|
||||
|
||||
#: apps/common/widgets/tom_select.py:15
|
||||
#: templates/mini_tools/unit_price_calculator.html:174
|
||||
#: templates/monthly_overview/pages/overview.html:172
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
#: templates/monthly_overview/pages/overview.html:215
|
||||
#: templates/monthly_overview/pages/overview.html:227
|
||||
#: templates/transactions/pages/transactions.html:89
|
||||
#: templates/transactions/pages/transactions.html:101
|
||||
msgid "Clear"
|
||||
msgstr "Limpar"
|
||||
|
||||
@@ -493,9 +497,9 @@ msgstr "Prefixo"
|
||||
msgid "Suffix"
|
||||
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/transactions/forms.py:66 apps/transactions/forms.py:483
|
||||
#: apps/transactions/forms.py:66 apps/transactions/forms.py:478
|
||||
#: apps/transactions/models.py:300
|
||||
#: templates/dca/fragments/strategy/details.html:52
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
@@ -515,75 +519,75 @@ msgstr "Nome da Moeda"
|
||||
msgid "Decimal Places"
|
||||
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
|
||||
#: templates/currencies/fragments/list.html:5
|
||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194
|
||||
#: templates/includes/sidebar.html:196
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
||||
#: templates/includes/sidebar.html:220
|
||||
#: templates/monthly_overview/pages/overview.html:81
|
||||
#: templates/transactions/fragments/summary.html:8
|
||||
#: templates/transactions/pages/transactions.html:68
|
||||
#: templates/transactions/pages/transactions.html:124
|
||||
msgid "Currencies"
|
||||
msgstr "Moedas"
|
||||
|
||||
#: apps/currencies/models.py:49
|
||||
#: apps/currencies/models.py:54
|
||||
msgid "Currency cannot have itself as exchange currency."
|
||||
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"
|
||||
msgstr "Moeda de origem"
|
||||
|
||||
#: apps/currencies/models.py:66
|
||||
#: apps/currencies/models.py:71
|
||||
msgid "To Currency"
|
||||
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"
|
||||
msgstr "Taxa de Câmbio"
|
||||
|
||||
#: apps/currencies/models.py:71
|
||||
#: apps/currencies/models.py:76
|
||||
msgid "Date and Time"
|
||||
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
|
||||
msgid "Auto"
|
||||
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
|
||||
#: 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"
|
||||
msgstr "Taxas de Câmbio"
|
||||
|
||||
#: apps/currencies/models.py:89
|
||||
#: apps/currencies/models.py:94
|
||||
msgid "From and To currencies cannot be the same."
|
||||
msgstr "As moedas De e Para não podem ser as mesmas."
|
||||
|
||||
#: apps/currencies/models.py:105
|
||||
#: apps/currencies/models.py:110
|
||||
msgid "On"
|
||||
msgstr "Em"
|
||||
|
||||
#: apps/currencies/models.py:106
|
||||
#: apps/currencies/models.py:111
|
||||
msgid "Every X hours"
|
||||
msgstr "A cada X horas"
|
||||
|
||||
#: apps/currencies/models.py:107
|
||||
#: apps/currencies/models.py:112
|
||||
msgid "Not on"
|
||||
msgstr "Não em"
|
||||
|
||||
#: apps/currencies/models.py:109
|
||||
#: apps/currencies/models.py:114
|
||||
msgid "Service Name"
|
||||
msgstr "Nome do Serviço"
|
||||
|
||||
#: apps/currencies/models.py:111
|
||||
#: apps/currencies/models.py:116
|
||||
msgid "Service Type"
|
||||
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
|
||||
#: templates/categories/fragments/list.html:21
|
||||
#: templates/entities/fragments/list.html:21
|
||||
@@ -592,31 +596,31 @@ msgstr "Tipo de Serviço"
|
||||
msgid "Active"
|
||||
msgstr "Ativo"
|
||||
|
||||
#: apps/currencies/models.py:118
|
||||
#: apps/currencies/models.py:123
|
||||
msgid "API Key"
|
||||
msgstr "Chave de API"
|
||||
|
||||
#: apps/currencies/models.py:119
|
||||
#: apps/currencies/models.py:124
|
||||
msgid "API key for the service (if required)"
|
||||
msgstr "Chave de API para o serviço (se necessário)"
|
||||
|
||||
#: apps/currencies/models.py:124
|
||||
#: apps/currencies/models.py:129
|
||||
msgid "Interval Type"
|
||||
msgstr "Tipo de Intervalo"
|
||||
|
||||
#: apps/currencies/models.py:128
|
||||
#: apps/currencies/models.py:133
|
||||
msgid "Interval"
|
||||
msgstr "Intervalo"
|
||||
|
||||
#: apps/currencies/models.py:131
|
||||
#: apps/currencies/models.py:136
|
||||
msgid "Last Successful Fetch"
|
||||
msgstr "Última execução bem-sucedida"
|
||||
|
||||
#: apps/currencies/models.py:136
|
||||
#: apps/currencies/models.py:141
|
||||
msgid "Target Currencies"
|
||||
msgstr "Moedas-alvo"
|
||||
|
||||
#: apps/currencies/models.py:138
|
||||
#: apps/currencies/models.py:143
|
||||
msgid ""
|
||||
"Select currencies to fetch exchange rates for. Rates will be fetched for "
|
||||
"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 "
|
||||
"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"
|
||||
msgstr "Contas-alvo"
|
||||
|
||||
#: apps/currencies/models.py:148
|
||||
#: apps/currencies/models.py:153
|
||||
msgid ""
|
||||
"Select accounts to fetch exchange rates for. Rates will be fetched for each "
|
||||
"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 "
|
||||
"definida."
|
||||
|
||||
#: apps/currencies/models.py:155
|
||||
#: apps/currencies/models.py:160
|
||||
msgid "Single exchange rate"
|
||||
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."
|
||||
msgstr ""
|
||||
"Cria uma taxa de câmbio e mantenha-a atualizada. Evita a poluição do banco "
|
||||
"de dados."
|
||||
|
||||
#: apps/currencies/models.py:163
|
||||
#: apps/currencies/models.py:168
|
||||
msgid "Exchange Rate Service"
|
||||
msgstr "Serviço de Taxa de Câmbio"
|
||||
|
||||
#: apps/currencies/models.py:164
|
||||
#: apps/currencies/models.py:169
|
||||
msgid "Exchange Rate Services"
|
||||
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."
|
||||
msgstr ""
|
||||
"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."
|
||||
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 ""
|
||||
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
|
||||
"'1-5,8,10-12')."
|
||||
@@ -672,7 +676,7 @@ msgstr ""
|
||||
"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')."
|
||||
|
||||
#: apps/currencies/models.py:250
|
||||
#: apps/currencies/models.py:255
|
||||
msgid ""
|
||||
"Invalid format. Please check the requirements for your selected interval "
|
||||
"type."
|
||||
@@ -724,11 +728,11 @@ msgstr "Serviços marcados para execução com sucesso"
|
||||
msgid "Create transaction"
|
||||
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"
|
||||
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"
|
||||
msgstr "Conta de destino"
|
||||
|
||||
@@ -753,7 +757,7 @@ msgstr "Conectar transação"
|
||||
msgid "You must provide an account."
|
||||
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."
|
||||
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/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:947
|
||||
msgid "Notes"
|
||||
@@ -831,15 +835,15 @@ msgid "Entry deleted successfully"
|
||||
msgstr "Entrada apagada com sucesso"
|
||||
|
||||
#: 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
|
||||
msgid "Users"
|
||||
msgstr "Usuários"
|
||||
|
||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||
#: apps/transactions/models.py:375 templates/includes/navbar.html:58
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66
|
||||
#: templates/includes/sidebar.html:160
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
||||
#: templates/includes/sidebar.html:184
|
||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||
#: templates/recurring_transactions/fragments/table.html:39
|
||||
#: 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/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||
#: templates/includes/sidebar.html:162
|
||||
#: templates/includes/sidebar.html:186
|
||||
msgid "Categories"
|
||||
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/models.py:282 apps/transactions/filters.py:74
|
||||
#: 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:506 apps/transactions/models.py:708
|
||||
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
|
||||
#: 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
|
||||
msgid "Entities"
|
||||
msgstr "Entidades"
|
||||
|
||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Recurring Transactions"
|
||||
@@ -877,7 +881,7 @@ msgstr "Transações Recorrentes"
|
||||
|
||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Installment Plans"
|
||||
@@ -886,12 +890,12 @@ msgstr "Parcelamentos"
|
||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||
#: templates/exchange_rates_services/fragments/list.html:6
|
||||
#: 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"
|
||||
msgstr "Taxas de Câmbio Automáticas"
|
||||
|
||||
#: 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
|
||||
msgid "Rules"
|
||||
msgstr "Regras"
|
||||
@@ -963,7 +967,7 @@ msgstr "Selecione um arquivo"
|
||||
|
||||
#: apps/import_app/forms.py:61
|
||||
#: 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"
|
||||
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/utils/sankey.py:167 apps/transactions/filters.py:189
|
||||
#: templates/insights/fragments/category_overview/index.html:88
|
||||
#: templates/insights/fragments/category_overview/index.html:393
|
||||
#: templates/insights/fragments/category_overview/index.html:422
|
||||
#: templates/insights/fragments/category_overview/index.html:395
|
||||
#: templates/insights/fragments/category_overview/index.html:424
|
||||
msgid "Uncategorized"
|
||||
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/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:713
|
||||
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/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:945
|
||||
msgid "Description"
|
||||
@@ -1348,6 +1352,7 @@ msgid "Any entity"
|
||||
msgstr "Qualquer entidade"
|
||||
|
||||
#: apps/transactions/filters.py:202
|
||||
#: templates/insights/fragments/category_overview/index.html:274
|
||||
msgid "No entity"
|
||||
msgstr "Sem entidade"
|
||||
|
||||
@@ -1363,50 +1368,50 @@ msgstr "Salvar e adicionar similar"
|
||||
msgid "Save and add another"
|
||||
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"
|
||||
msgstr "Transações silenciadas não apareceram nos sumários mensais"
|
||||
|
||||
#: apps/transactions/forms.py:442
|
||||
#: apps/transactions/forms.py:437
|
||||
msgid "From Amount"
|
||||
msgstr "Quantia de origem"
|
||||
|
||||
#: apps/transactions/forms.py:447
|
||||
#: apps/transactions/forms.py:442
|
||||
msgid "To Amount"
|
||||
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
|
||||
msgid "Mute"
|
||||
msgstr "Silenciada"
|
||||
|
||||
#: apps/transactions/forms.py:572
|
||||
#: apps/transactions/forms.py:567
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr "Transferir"
|
||||
|
||||
#: apps/transactions/forms.py:822
|
||||
#: apps/transactions/forms.py:817
|
||||
msgid "Tag name"
|
||||
msgstr "Nome da Tag"
|
||||
|
||||
#: apps/transactions/forms.py:854
|
||||
#: apps/transactions/forms.py:849
|
||||
msgid "Entity name"
|
||||
msgstr "Nome da entidade"
|
||||
|
||||
#: apps/transactions/forms.py:886
|
||||
#: apps/transactions/forms.py:881
|
||||
msgid "Category name"
|
||||
msgstr "Nome da Categoria"
|
||||
|
||||
#: apps/transactions/forms.py:888
|
||||
#: apps/transactions/forms.py:883
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr "Categorias silenciadas não apareceram nos sumários mensais"
|
||||
|
||||
#: apps/transactions/forms.py:1046
|
||||
#: apps/transactions/forms.py:1041
|
||||
msgid "future transactions"
|
||||
msgstr "transações futuras"
|
||||
|
||||
#: apps/transactions/forms.py:1076
|
||||
#: apps/transactions/forms.py:1071
|
||||
msgid "End date should be after the start date"
|
||||
msgstr "Data final deve ser após data inicial"
|
||||
|
||||
@@ -1503,12 +1508,12 @@ msgstr "Sem categoria"
|
||||
msgid "No description"
|
||||
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"
|
||||
msgstr "Anual"
|
||||
|
||||
#: 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"
|
||||
msgstr "Mensal"
|
||||
|
||||
@@ -1607,7 +1612,7 @@ msgid "Quick Transaction"
|
||||
msgstr "Transação Rápida"
|
||||
|
||||
#: 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:11
|
||||
msgid "Quick Transactions"
|
||||
@@ -1699,11 +1704,11 @@ msgid "Installment Plan deleted successfully"
|
||||
msgstr "Parcelamento apagado com sucesso"
|
||||
|
||||
#: 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"
|
||||
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"
|
||||
msgstr "Item atualizado com sucesso"
|
||||
|
||||
@@ -1818,8 +1823,10 @@ msgid "This account is deactivated"
|
||||
msgstr "Essa conta está desativada"
|
||||
|
||||
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
|
||||
#: templates/monthly_overview/pages/overview.html:153
|
||||
#: templates/transactions/pages/transactions.html:28
|
||||
#: templates/monthly_overview/pages/overview.html:140
|
||||
#: templates/monthly_overview/pages/overview.html:186
|
||||
#: templates/transactions/pages/transactions.html:14
|
||||
#: templates/transactions/pages/transactions.html:60
|
||||
msgid "Default"
|
||||
msgstr "Padrão"
|
||||
|
||||
@@ -1929,7 +1936,7 @@ msgid "All Transactions"
|
||||
msgstr "Todas as transações"
|
||||
|
||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||
#: templates/includes/sidebar.html:48
|
||||
#: templates/includes/sidebar.html:73
|
||||
msgid "Calendar"
|
||||
msgstr "Calendário"
|
||||
|
||||
@@ -1980,7 +1987,7 @@ msgstr "Editar grupo de conta"
|
||||
#: templates/account_groups/fragments/list.html:32
|
||||
#: templates/accounts/fragments/list.html:37
|
||||
#: 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/entities/fragments/table.html:23
|
||||
#: templates/exchange_rates/fragments/table.html:19
|
||||
@@ -2001,7 +2008,7 @@ msgstr "Ações"
|
||||
#: templates/categories/fragments/table.html:29
|
||||
#: templates/cotton/transaction/item.html:129
|
||||
#: 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/list.html:36
|
||||
#: templates/entities/fragments/table.html:28
|
||||
@@ -2027,7 +2034,7 @@ msgstr "Editar"
|
||||
#: templates/cotton/transaction/item.html:192
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:55
|
||||
#: 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/list.html:44
|
||||
#: templates/entities/fragments/table.html:36
|
||||
@@ -2054,7 +2061,7 @@ msgstr "Apagar"
|
||||
#: templates/cotton/transaction/item.html:196
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:57
|
||||
#: 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/list.html:48
|
||||
#: templates/entities/fragments/table.html:40
|
||||
@@ -2084,7 +2091,7 @@ msgstr "Tem certeza?"
|
||||
#: templates/cotton/transaction/item.html:197
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:58
|
||||
#: 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/list.html:49
|
||||
#: 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/cotton/transaction/item.html:142
|
||||
#: 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/list.html:50
|
||||
#: templates/entities/fragments/table.html:42
|
||||
@@ -2250,7 +2257,7 @@ msgid "Muted"
|
||||
msgstr "Silenciada"
|
||||
|
||||
#: 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"
|
||||
msgstr "Nenhum categoria"
|
||||
|
||||
@@ -2259,13 +2266,14 @@ msgid "Pick a month"
|
||||
msgstr "Escolha um mês"
|
||||
|
||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||
#: templates/includes/sidebar.html:28
|
||||
#: templates/includes/sidebar.html:53
|
||||
msgid "Close"
|
||||
msgstr "Fechar"
|
||||
|
||||
#: templates/cotton/config/search.html:6
|
||||
#: 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"
|
||||
msgstr "Buscar"
|
||||
|
||||
@@ -2450,7 +2458,7 @@ msgstr "Editar moeda"
|
||||
msgid "Code"
|
||||
msgstr "Código"
|
||||
|
||||
#: templates/currencies/fragments/list.html:61
|
||||
#: templates/currencies/fragments/list.html:63
|
||||
msgid "No currencies"
|
||||
msgstr "Nenhuma moeda"
|
||||
|
||||
@@ -2488,7 +2496,7 @@ msgstr "Nenhuma entrada neste CMP"
|
||||
|
||||
#: templates/dca/fragments/strategy/details.html:125
|
||||
#: 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"
|
||||
msgstr "Tente adicionar uma"
|
||||
|
||||
@@ -2591,7 +2599,7 @@ msgid "Edit exchange rate"
|
||||
msgstr "Editar taxa de câmbio"
|
||||
|
||||
#: 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/yearly_overview/pages/overview_by_account.html:105
|
||||
#: 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_services/fragments/table.html:58
|
||||
#: templates/transactions/fragments/list_all.html:47
|
||||
#: templates/transactions/fragments/list_all.html:54
|
||||
msgid "Page navigation"
|
||||
msgstr "Navegação por página"
|
||||
|
||||
@@ -2648,7 +2656,7 @@ msgid "No services configured"
|
||||
msgstr "Nenhum serviço configurado"
|
||||
|
||||
#: 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"
|
||||
msgstr "Exportar e Restaurar"
|
||||
|
||||
@@ -2746,7 +2754,7 @@ msgstr "Alternar navegação"
|
||||
msgid "Overview"
|
||||
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"
|
||||
msgstr "Patrimônio"
|
||||
|
||||
@@ -2756,62 +2764,62 @@ msgstr "Patrimônio"
|
||||
msgid "Current"
|
||||
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
|
||||
msgid "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"
|
||||
msgstr "Lixeira"
|
||||
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
||||
msgid "Tools"
|
||||
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"
|
||||
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:10
|
||||
msgid "Unit Price Calculator"
|
||||
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:15
|
||||
msgid "Currency Converter"
|
||||
msgstr "Conversor de Moeda"
|
||||
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134
|
||||
#: templates/includes/sidebar.html:147
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
||||
#: templates/includes/sidebar.html:171
|
||||
msgid "Management"
|
||||
msgstr "Gerenciar"
|
||||
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
||||
msgid "Automation"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
msgstr "está disponível"
|
||||
|
||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||
#: templates/includes/sidebar.html:266
|
||||
#: templates/includes/sidebar.html:290
|
||||
msgid "Calculator"
|
||||
msgstr "Calculadora"
|
||||
|
||||
@@ -2896,16 +2904,12 @@ msgstr ""
|
||||
"para cada tag"
|
||||
|
||||
#: templates/insights/fragments/category_overview/index.html:52
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Transaction amounts associated with multiple tags will be counted once "
|
||||
#| "for each tag"
|
||||
msgid ""
|
||||
"Transaction amounts associated with multiple tags and entities will be "
|
||||
"counted once for each tag"
|
||||
msgstr ""
|
||||
"Os valores das transações associadas a várias tags serão contados uma vez "
|
||||
"para cada tag"
|
||||
"Os valores das transações associadas a várias tags e entidades serão "
|
||||
"contados uma vez para cada tag"
|
||||
|
||||
#: templates/insights/fragments/category_overview/index.html:69
|
||||
msgid "Final total"
|
||||
@@ -2916,7 +2920,7 @@ msgstr "Total final"
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: templates/insights/fragments/category_overview/index.html:515
|
||||
#: templates/insights/fragments/category_overview/index.html:517
|
||||
msgid "Final Total"
|
||||
msgstr "Total Final"
|
||||
|
||||
@@ -3124,26 +3128,30 @@ msgstr "Distribuição"
|
||||
msgid "Summary"
|
||||
msgstr "Resumo"
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/transactions/pages/transactions.html:17
|
||||
msgid "Filter transactions"
|
||||
msgstr "Filtrar transações"
|
||||
|
||||
#: 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
|
||||
#: templates/monthly_overview/pages/overview.html:141
|
||||
#: templates/monthly_overview/pages/overview.html:195
|
||||
#: templates/transactions/pages/transactions.html:15
|
||||
#: templates/transactions/pages/transactions.html:69
|
||||
msgid "Oldest first"
|
||||
msgstr "Mais antigas primeiro"
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:157
|
||||
#: templates/transactions/pages/transactions.html:32
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/monthly_overview/pages/overview.html:204
|
||||
#: templates/transactions/pages/transactions.html:16
|
||||
#: templates/transactions/pages/transactions.html:78
|
||||
msgid "Newest first"
|
||||
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/yearly_overview/pages/overview_by_currency.html:9
|
||||
msgid "By currency"
|
||||
@@ -3354,7 +3362,7 @@ msgstr "Editando"
|
||||
msgid "transactions"
|
||||
msgstr "transações"
|
||||
|
||||
#: templates/transactions/fragments/list_all.html:39
|
||||
#: templates/transactions/fragments/list_all.html:46
|
||||
msgid "No transactions found"
|
||||
msgstr "Nenhuma transação encontrada"
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: Emil <emil.bjorkroth@gmail.com>\n"
|
||||
"Language-Team: Swedish <https://translations.herculino.com/projects/wygiwyh/"
|
||||
@@ -19,32 +19,32 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.10.4\n"
|
||||
|
||||
#: apps/accounts/forms.py:24
|
||||
#: apps/accounts/forms.py:26
|
||||
msgid "Group name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91
|
||||
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
||||
#: 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/rules/forms.py:365 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421
|
||||
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836
|
||||
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:1057 apps/users/forms.py:217
|
||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||
#: apps/transactions/forms.py:788 apps/transactions/forms.py:831
|
||||
#: apps/transactions/forms.py:863 apps/transactions/forms.py:898
|
||||
#: apps/transactions/forms.py:1052 apps/users/forms.py:217
|
||||
#: apps/users/forms.py:379
|
||||
msgid "Update"
|
||||
msgstr "Uppdatera"
|
||||
|
||||
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61
|
||||
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152
|
||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||
#: 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/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:383 apps/transactions/forms.py:801
|
||||
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876
|
||||
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065
|
||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:796
|
||||
#: apps/transactions/forms.py:839 apps/transactions/forms.py:871
|
||||
#: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
|
||||
#: apps/users/forms.py:225 apps/users/forms.py:387
|
||||
#: templates/account_groups/fragments/list.html:9
|
||||
#: templates/accounts/fragments/list.html:9
|
||||
@@ -66,37 +66,37 @@ msgstr "Uppdatera"
|
||||
msgid "Add"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: apps/accounts/forms.py:115
|
||||
#: apps/accounts/forms.py:135
|
||||
msgid "New balance"
|
||||
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/rules/models.py:38 apps/rules/models.py:286
|
||||
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256
|
||||
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462
|
||||
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935
|
||||
#: apps/transactions/forms.py:450 apps/transactions/forms.py:457
|
||||
#: apps/transactions/forms.py:669 apps/transactions/forms.py:930
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:501
|
||||
#: 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:528
|
||||
#: templates/insights/fragments/category_overview/index.html:530
|
||||
msgid "Category"
|
||||
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/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/transactions/forms.py:50 apps/transactions/forms.py:264
|
||||
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479
|
||||
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928
|
||||
#: apps/transactions/forms.py:466 apps/transactions/forms.py:474
|
||||
#: apps/transactions/forms.py:662 apps/transactions/forms.py:923
|
||||
#: apps/transactions/models.py:324 apps/transactions/models.py:503
|
||||
#: 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/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||
msgid "Tags"
|
||||
@@ -128,11 +128,11 @@ msgstr ""
|
||||
|
||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||
#: 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"
|
||||
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/yearly_overview/pages/overview_by_account.html:18
|
||||
#: 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."
|
||||
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/currencies/fragments/list.html:27
|
||||
#: templates/entities/fragments/list.html:24
|
||||
#: templates/tags/fragments/list.html:24
|
||||
msgid "Archived"
|
||||
@@ -171,7 +173,7 @@ msgstr ""
|
||||
#: 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/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:683 apps/transactions/models.py:925
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -186,11 +188,11 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||
#: templates/accounts/fragments/list.html:5
|
||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180
|
||||
#: templates/includes/sidebar.html:182
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
||||
#: templates/includes/sidebar.html:206
|
||||
#: templates/monthly_overview/pages/overview.html:94
|
||||
#: templates/transactions/fragments/summary.html:12
|
||||
#: templates/transactions/pages/transactions.html:81
|
||||
#: templates/transactions/pages/transactions.html:137
|
||||
msgid "Accounts"
|
||||
msgstr ""
|
||||
|
||||
@@ -468,8 +470,10 @@ msgstr ""
|
||||
|
||||
#: apps/common/widgets/tom_select.py:15
|
||||
#: templates/mini_tools/unit_price_calculator.html:174
|
||||
#: templates/monthly_overview/pages/overview.html:172
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
#: templates/monthly_overview/pages/overview.html:215
|
||||
#: templates/monthly_overview/pages/overview.html:227
|
||||
#: templates/transactions/pages/transactions.html:89
|
||||
#: templates/transactions/pages/transactions.html:101
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
@@ -485,9 +489,9 @@ msgstr ""
|
||||
msgid "Suffix"
|
||||
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/transactions/forms.py:66 apps/transactions/forms.py:483
|
||||
#: apps/transactions/forms.py:66 apps/transactions/forms.py:478
|
||||
#: apps/transactions/models.py:300
|
||||
#: templates/dca/fragments/strategy/details.html:52
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
@@ -507,75 +511,75 @@ msgstr ""
|
||||
msgid "Decimal Places"
|
||||
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
|
||||
#: templates/currencies/fragments/list.html:5
|
||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194
|
||||
#: templates/includes/sidebar.html:196
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
||||
#: templates/includes/sidebar.html:220
|
||||
#: templates/monthly_overview/pages/overview.html:81
|
||||
#: templates/transactions/fragments/summary.html:8
|
||||
#: templates/transactions/pages/transactions.html:68
|
||||
#: templates/transactions/pages/transactions.html:124
|
||||
msgid "Currencies"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:49
|
||||
#: apps/currencies/models.py:54
|
||||
msgid "Currency cannot have itself as exchange currency."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:60
|
||||
#: apps/currencies/models.py:65
|
||||
msgid "From Currency"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:66
|
||||
#: apps/currencies/models.py:71
|
||||
msgid "To Currency"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:69 apps/currencies/models.py:76
|
||||
#: apps/currencies/models.py:74 apps/currencies/models.py:81
|
||||
msgid "Exchange Rate"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:71
|
||||
#: apps/currencies/models.py:76
|
||||
msgid "Date and Time"
|
||||
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
|
||||
msgid "Auto"
|
||||
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
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:89
|
||||
#: apps/currencies/models.py:94
|
||||
msgid "From and To currencies cannot be the same."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:105
|
||||
#: apps/currencies/models.py:110
|
||||
msgid "On"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:106
|
||||
#: apps/currencies/models.py:111
|
||||
msgid "Every X hours"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:107
|
||||
#: apps/currencies/models.py:112
|
||||
msgid "Not on"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:109
|
||||
#: apps/currencies/models.py:114
|
||||
msgid "Service Name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:111
|
||||
#: apps/currencies/models.py:116
|
||||
msgid "Service Type"
|
||||
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
|
||||
#: templates/categories/fragments/list.html:21
|
||||
#: templates/entities/fragments/list.html:21
|
||||
@@ -584,77 +588,77 @@ msgstr ""
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:118
|
||||
#: apps/currencies/models.py:123
|
||||
msgid "API Key"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:119
|
||||
#: apps/currencies/models.py:124
|
||||
msgid "API key for the service (if required)"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:124
|
||||
#: apps/currencies/models.py:129
|
||||
msgid "Interval Type"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:128
|
||||
#: apps/currencies/models.py:133
|
||||
msgid "Interval"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:131
|
||||
#: apps/currencies/models.py:136
|
||||
msgid "Last Successful Fetch"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:136
|
||||
#: apps/currencies/models.py:141
|
||||
msgid "Target Currencies"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:138
|
||||
#: apps/currencies/models.py:143
|
||||
msgid ""
|
||||
"Select currencies to fetch exchange rates for. Rates will be fetched for "
|
||||
"each currency against their set exchange currency."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:146
|
||||
#: apps/currencies/models.py:151
|
||||
msgid "Target Accounts"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:148
|
||||
#: apps/currencies/models.py:153
|
||||
msgid ""
|
||||
"Select accounts to fetch exchange rates for. Rates will be fetched for each "
|
||||
"account's currency against their set exchange currency."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:155
|
||||
#: apps/currencies/models.py:160
|
||||
msgid "Single exchange rate"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:158
|
||||
#: apps/currencies/models.py:163
|
||||
msgid "Create one exchange rate and keep updating it. Avoids database clutter."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:163
|
||||
#: apps/currencies/models.py:168
|
||||
msgid "Exchange Rate Service"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:164
|
||||
#: apps/currencies/models.py:169
|
||||
msgid "Exchange Rate Services"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:216
|
||||
#: apps/currencies/models.py:221
|
||||
msgid "'Every X hours' interval type requires a positive integer."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:225
|
||||
#: apps/currencies/models.py:230
|
||||
msgid "'Every X hours' interval must be between 1 and 24."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:239
|
||||
#: apps/currencies/models.py:244
|
||||
msgid ""
|
||||
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
|
||||
"'1-5,8,10-12')."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:250
|
||||
#: apps/currencies/models.py:255
|
||||
msgid ""
|
||||
"Invalid format. Please check the requirements for your selected interval "
|
||||
"type."
|
||||
@@ -704,11 +708,11 @@ msgstr ""
|
||||
msgid "Create transaction"
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:430
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:425
|
||||
msgid "From Account"
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:76 apps/transactions/forms.py:435
|
||||
#: apps/dca/forms.py:76 apps/transactions/forms.py:430
|
||||
msgid "To Account"
|
||||
msgstr ""
|
||||
|
||||
@@ -733,7 +737,7 @@ msgstr ""
|
||||
msgid "You must provide an account."
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
@@ -752,7 +756,7 @@ msgstr ""
|
||||
|
||||
#: 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/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:947
|
||||
msgid "Notes"
|
||||
@@ -811,15 +815,15 @@ msgid "Entry deleted successfully"
|
||||
msgstr ""
|
||||
|
||||
#: 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
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
|
||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||
#: apps/transactions/models.py:375 templates/includes/navbar.html:58
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66
|
||||
#: templates/includes/sidebar.html:160
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
||||
#: templates/includes/sidebar.html:184
|
||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||
#: templates/recurring_transactions/fragments/table.html:39
|
||||
#: templates/transactions/pages/transactions.html:5
|
||||
@@ -829,7 +833,7 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
||||
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||
#: templates/includes/sidebar.html:162
|
||||
#: templates/includes/sidebar.html:186
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
@@ -837,19 +841,19 @@ msgstr ""
|
||||
#: 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/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:506 apps/transactions/models.py:708
|
||||
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
|
||||
#: 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
|
||||
msgid "Entities"
|
||||
msgstr ""
|
||||
|
||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Recurring Transactions"
|
||||
@@ -857,7 +861,7 @@ msgstr ""
|
||||
|
||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Installment Plans"
|
||||
@@ -866,12 +870,12 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||
#: templates/exchange_rates_services/fragments/list.html:6
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
#: 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
|
||||
msgid "Rules"
|
||||
msgstr ""
|
||||
@@ -941,7 +945,7 @@ msgstr ""
|
||||
|
||||
#: apps/import_app/forms.py:61
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -1012,8 +1016,8 @@ msgstr ""
|
||||
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
|
||||
#: 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:393
|
||||
#: templates/insights/fragments/category_overview/index.html:422
|
||||
#: templates/insights/fragments/category_overview/index.html:395
|
||||
#: templates/insights/fragments/category_overview/index.html:424
|
||||
msgid "Uncategorized"
|
||||
msgstr ""
|
||||
|
||||
@@ -1113,7 +1117,7 @@ msgstr ""
|
||||
|
||||
#: 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/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:713
|
||||
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/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:945
|
||||
msgid "Description"
|
||||
@@ -1324,6 +1328,7 @@ msgid "Any entity"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/filters.py:202
|
||||
#: templates/insights/fragments/category_overview/index.html:274
|
||||
msgid "No entity"
|
||||
msgstr ""
|
||||
|
||||
@@ -1339,50 +1344,50 @@ msgstr ""
|
||||
msgid "Save and add another"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:442
|
||||
#: apps/transactions/forms.py:437
|
||||
msgid "From Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:447
|
||||
#: apps/transactions/forms.py:442
|
||||
msgid "To Amount"
|
||||
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
|
||||
msgid "Mute"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:572
|
||||
#: apps/transactions/forms.py:567
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:822
|
||||
#: apps/transactions/forms.py:817
|
||||
msgid "Tag name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:854
|
||||
#: apps/transactions/forms.py:849
|
||||
msgid "Entity name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:886
|
||||
#: apps/transactions/forms.py:881
|
||||
msgid "Category name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:888
|
||||
#: apps/transactions/forms.py:883
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1046
|
||||
#: apps/transactions/forms.py:1041
|
||||
msgid "future transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1076
|
||||
#: apps/transactions/forms.py:1071
|
||||
msgid "End date should be after the start date"
|
||||
msgstr ""
|
||||
|
||||
@@ -1474,12 +1479,12 @@ msgstr ""
|
||||
msgid "No description"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/models.py:455 templates/includes/sidebar.html:42
|
||||
#: apps/transactions/models.py:455 templates/includes/sidebar.html:67
|
||||
msgid "Yearly"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -1578,7 +1583,7 @@ msgid "Quick Transaction"
|
||||
msgstr ""
|
||||
|
||||
#: 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:11
|
||||
msgid "Quick Transactions"
|
||||
@@ -1670,11 +1675,11 @@ msgid "Installment Plan deleted successfully"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
@@ -1789,8 +1794,10 @@ msgid "This account is deactivated"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
|
||||
#: templates/monthly_overview/pages/overview.html:153
|
||||
#: templates/transactions/pages/transactions.html:28
|
||||
#: templates/monthly_overview/pages/overview.html:140
|
||||
#: templates/monthly_overview/pages/overview.html:186
|
||||
#: templates/transactions/pages/transactions.html:14
|
||||
#: templates/transactions/pages/transactions.html:60
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
|
||||
@@ -1891,7 +1898,7 @@ msgid "All Transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||
#: templates/includes/sidebar.html:48
|
||||
#: templates/includes/sidebar.html:73
|
||||
msgid "Calendar"
|
||||
msgstr ""
|
||||
|
||||
@@ -1942,7 +1949,7 @@ msgstr ""
|
||||
#: templates/account_groups/fragments/list.html:32
|
||||
#: templates/accounts/fragments/list.html:37
|
||||
#: 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/entities/fragments/table.html:23
|
||||
#: templates/exchange_rates/fragments/table.html:19
|
||||
@@ -1963,7 +1970,7 @@ msgstr ""
|
||||
#: templates/categories/fragments/table.html:29
|
||||
#: templates/cotton/transaction/item.html:129
|
||||
#: 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/list.html:36
|
||||
#: templates/entities/fragments/table.html:28
|
||||
@@ -1989,7 +1996,7 @@ msgstr ""
|
||||
#: templates/cotton/transaction/item.html:192
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:55
|
||||
#: 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/list.html:44
|
||||
#: templates/entities/fragments/table.html:36
|
||||
@@ -2016,7 +2023,7 @@ msgstr ""
|
||||
#: templates/cotton/transaction/item.html:196
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:57
|
||||
#: 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/list.html:48
|
||||
#: templates/entities/fragments/table.html:40
|
||||
@@ -2046,7 +2053,7 @@ msgstr ""
|
||||
#: templates/cotton/transaction/item.html:197
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:58
|
||||
#: 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/list.html:49
|
||||
#: templates/entities/fragments/table.html:41
|
||||
@@ -2066,7 +2073,7 @@ msgstr ""
|
||||
#: templates/categories/fragments/table.html:43
|
||||
#: templates/cotton/transaction/item.html:142
|
||||
#: 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/list.html:50
|
||||
#: templates/entities/fragments/table.html:42
|
||||
@@ -2212,7 +2219,7 @@ msgid "Muted"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2221,13 +2228,14 @@ msgid "Pick a month"
|
||||
msgstr ""
|
||||
|
||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||
#: templates/includes/sidebar.html:28
|
||||
#: templates/includes/sidebar.html:53
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cotton/config/search.html:6
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2412,7 +2420,7 @@ msgstr ""
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#: templates/currencies/fragments/list.html:61
|
||||
#: templates/currencies/fragments/list.html:63
|
||||
msgid "No currencies"
|
||||
msgstr ""
|
||||
|
||||
@@ -2450,7 +2458,7 @@ msgstr ""
|
||||
|
||||
#: templates/dca/fragments/strategy/details.html:125
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2552,7 +2560,7 @@ msgid "Edit exchange rate"
|
||||
msgstr ""
|
||||
|
||||
#: 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/yearly_overview/pages/overview_by_account.html:105
|
||||
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
||||
@@ -2576,7 +2584,7 @@ msgstr ""
|
||||
|
||||
#: templates/exchange_rates/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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2609,7 +2617,7 @@ msgid "No services configured"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2705,7 +2713,7 @@ msgstr ""
|
||||
msgid "Overview"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:60
|
||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
|
||||
msgid "Net Worth"
|
||||
msgstr ""
|
||||
|
||||
@@ -2715,62 +2723,62 @@ msgstr ""
|
||||
msgid "Current"
|
||||
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
|
||||
msgid "Insights"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:76
|
||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
|
||||
msgid "Trash Can"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
||||
msgid "Tools"
|
||||
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"
|
||||
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:10
|
||||
msgid "Unit Price Calculator"
|
||||
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:15
|
||||
msgid "Currency Converter"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134
|
||||
#: templates/includes/sidebar.html:147
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
||||
#: templates/includes/sidebar.html:171
|
||||
msgid "Management"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
||||
msgid "Automation"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:237
|
||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
|
||||
msgid "Admin"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:245
|
||||
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
|
||||
msgid "Django Admin"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:260
|
||||
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
|
||||
msgid "is available"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||
#: templates/includes/sidebar.html:266
|
||||
#: templates/includes/sidebar.html:290
|
||||
msgid "Calculator"
|
||||
msgstr ""
|
||||
|
||||
@@ -2865,7 +2873,7 @@ msgstr ""
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
|
||||
#: templates/insights/fragments/category_overview/index.html:515
|
||||
#: templates/insights/fragments/category_overview/index.html:517
|
||||
msgid "Final Total"
|
||||
msgstr ""
|
||||
|
||||
@@ -3070,26 +3078,30 @@ msgstr ""
|
||||
msgid "Summary"
|
||||
msgstr ""
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/transactions/pages/transactions.html:17
|
||||
msgid "Filter transactions"
|
||||
msgstr ""
|
||||
|
||||
#: 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
|
||||
#: templates/monthly_overview/pages/overview.html:141
|
||||
#: templates/monthly_overview/pages/overview.html:195
|
||||
#: templates/transactions/pages/transactions.html:15
|
||||
#: templates/transactions/pages/transactions.html:69
|
||||
msgid "Oldest first"
|
||||
msgstr ""
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:157
|
||||
#: templates/transactions/pages/transactions.html:32
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/monthly_overview/pages/overview.html:204
|
||||
#: templates/transactions/pages/transactions.html:16
|
||||
#: templates/transactions/pages/transactions.html:78
|
||||
msgid "Newest first"
|
||||
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/yearly_overview/pages/overview_by_currency.html:9
|
||||
msgid "By currency"
|
||||
@@ -3297,7 +3309,7 @@ msgstr ""
|
||||
msgid "transactions"
|
||||
msgstr ""
|
||||
|
||||
#: templates/transactions/fragments/list_all.html:39
|
||||
#: templates/transactions/fragments/list_all.html:46
|
||||
msgid "No transactions found"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: Felix <xnovaua@gmail.com>\n"
|
||||
"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"
|
||||
"X-Generator: Weblate 5.11.3\n"
|
||||
|
||||
#: apps/accounts/forms.py:24
|
||||
#: apps/accounts/forms.py:26
|
||||
msgid "Group name"
|
||||
msgstr "Назва групи"
|
||||
|
||||
#: apps/accounts/forms.py:40 apps/accounts/forms.py:98
|
||||
#: apps/currencies/forms.py:53 apps/currencies/forms.py:91
|
||||
#: apps/currencies/forms.py:144 apps/dca/forms.py:49 apps/dca/forms.py:224
|
||||
#: apps/accounts/forms.py:42 apps/accounts/forms.py:118
|
||||
#: apps/currencies/forms.py:55 apps/currencies/forms.py:93
|
||||
#: 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/rules/forms.py:365 apps/transactions/forms.py:204
|
||||
#: apps/transactions/forms.py:374 apps/transactions/forms.py:421
|
||||
#: apps/transactions/forms.py:793 apps/transactions/forms.py:836
|
||||
#: apps/transactions/forms.py:868 apps/transactions/forms.py:903
|
||||
#: apps/transactions/forms.py:1057 apps/users/forms.py:217
|
||||
#: apps/transactions/forms.py:369 apps/transactions/forms.py:416
|
||||
#: apps/transactions/forms.py:788 apps/transactions/forms.py:831
|
||||
#: apps/transactions/forms.py:863 apps/transactions/forms.py:898
|
||||
#: apps/transactions/forms.py:1052 apps/users/forms.py:217
|
||||
#: apps/users/forms.py:379
|
||||
msgid "Update"
|
||||
msgstr "Оновлення"
|
||||
|
||||
#: apps/accounts/forms.py:48 apps/accounts/forms.py:106
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:61
|
||||
#: apps/currencies/forms.py:99 apps/currencies/forms.py:152
|
||||
#: apps/accounts/forms.py:50 apps/accounts/forms.py:126
|
||||
#: apps/common/widgets/tom_select.py:13 apps/currencies/forms.py:63
|
||||
#: 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/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:383 apps/transactions/forms.py:801
|
||||
#: apps/transactions/forms.py:844 apps/transactions/forms.py:876
|
||||
#: apps/transactions/forms.py:911 apps/transactions/forms.py:1065
|
||||
#: apps/transactions/forms.py:378 apps/transactions/forms.py:796
|
||||
#: apps/transactions/forms.py:839 apps/transactions/forms.py:871
|
||||
#: apps/transactions/forms.py:906 apps/transactions/forms.py:1060
|
||||
#: apps/users/forms.py:225 apps/users/forms.py:387
|
||||
#: templates/account_groups/fragments/list.html:9
|
||||
#: templates/accounts/fragments/list.html:9
|
||||
@@ -67,37 +67,37 @@ msgstr "Оновлення"
|
||||
msgid "Add"
|
||||
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"
|
||||
msgstr "Група"
|
||||
|
||||
#: apps/accounts/forms.py:115
|
||||
#: apps/accounts/forms.py:135
|
||||
msgid "New balance"
|
||||
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/rules/models.py:38 apps/rules/models.py:286
|
||||
#: apps/transactions/forms.py:42 apps/transactions/forms.py:256
|
||||
#: apps/transactions/forms.py:455 apps/transactions/forms.py:462
|
||||
#: apps/transactions/forms.py:674 apps/transactions/forms.py:935
|
||||
#: apps/transactions/forms.py:450 apps/transactions/forms.py:457
|
||||
#: apps/transactions/forms.py:669 apps/transactions/forms.py:930
|
||||
#: apps/transactions/models.py:318 apps/transactions/models.py:501
|
||||
#: 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:528
|
||||
#: templates/insights/fragments/category_overview/index.html:530
|
||||
msgid "Category"
|
||||
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/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/transactions/forms.py:50 apps/transactions/forms.py:264
|
||||
#: apps/transactions/forms.py:471 apps/transactions/forms.py:479
|
||||
#: apps/transactions/forms.py:667 apps/transactions/forms.py:928
|
||||
#: apps/transactions/forms.py:466 apps/transactions/forms.py:474
|
||||
#: apps/transactions/forms.py:662 apps/transactions/forms.py:923
|
||||
#: apps/transactions/models.py:324 apps/transactions/models.py:503
|
||||
#: 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/tags/fragments/list.html:5 templates/tags/pages/index.html:4
|
||||
msgid "Tags"
|
||||
@@ -129,11 +129,11 @@ msgstr "Група рахунків"
|
||||
|
||||
#: apps/accounts/models.py:19 templates/account_groups/fragments/list.html:5
|
||||
#: 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"
|
||||
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/yearly_overview/pages/overview_by_account.html:18
|
||||
#: templates/yearly_overview/pages/overview_by_currency.html:20
|
||||
@@ -159,8 +159,10 @@ msgid ""
|
||||
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/currencies/fragments/list.html:27
|
||||
#: templates/entities/fragments/list.html:24
|
||||
#: templates/tags/fragments/list.html:24
|
||||
msgid "Archived"
|
||||
@@ -175,7 +177,7 @@ msgstr ""
|
||||
#: 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/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:683 apps/transactions/models.py:925
|
||||
#: templates/installment_plans/fragments/table.html:17
|
||||
@@ -190,11 +192,11 @@ msgstr "Рахунок"
|
||||
#: apps/export_app/forms.py:132 apps/transactions/filters.py:53
|
||||
#: templates/accounts/fragments/list.html:5
|
||||
#: templates/accounts/pages/index.html:4 templates/includes/navbar.html:117
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:180
|
||||
#: templates/includes/sidebar.html:182
|
||||
#: templates/includes/navbar.html:119 templates/includes/sidebar.html:204
|
||||
#: templates/includes/sidebar.html:206
|
||||
#: templates/monthly_overview/pages/overview.html:94
|
||||
#: templates/transactions/fragments/summary.html:12
|
||||
#: templates/transactions/pages/transactions.html:81
|
||||
#: templates/transactions/pages/transactions.html:137
|
||||
msgid "Accounts"
|
||||
msgstr "Рахунки"
|
||||
|
||||
@@ -483,8 +485,10 @@ msgstr "Видалити"
|
||||
|
||||
#: apps/common/widgets/tom_select.py:15
|
||||
#: templates/mini_tools/unit_price_calculator.html:174
|
||||
#: templates/monthly_overview/pages/overview.html:172
|
||||
#: templates/transactions/pages/transactions.html:47
|
||||
#: templates/monthly_overview/pages/overview.html:215
|
||||
#: templates/monthly_overview/pages/overview.html:227
|
||||
#: templates/transactions/pages/transactions.html:89
|
||||
#: templates/transactions/pages/transactions.html:101
|
||||
msgid "Clear"
|
||||
msgstr "Чисто"
|
||||
|
||||
@@ -500,9 +504,9 @@ msgstr "Префікс"
|
||||
msgid "Suffix"
|
||||
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/transactions/forms.py:66 apps/transactions/forms.py:483
|
||||
#: apps/transactions/forms.py:66 apps/transactions/forms.py:478
|
||||
#: apps/transactions/models.py:300
|
||||
#: templates/dca/fragments/strategy/details.html:52
|
||||
#: templates/exchange_rates/fragments/table.html:10
|
||||
@@ -522,75 +526,75 @@ msgstr "Назва валюти"
|
||||
msgid "Decimal Places"
|
||||
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
|
||||
#: templates/currencies/fragments/list.html:5
|
||||
#: templates/currencies/pages/index.html:4 templates/includes/navbar.html:125
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:194
|
||||
#: templates/includes/sidebar.html:196
|
||||
#: templates/includes/navbar.html:127 templates/includes/sidebar.html:218
|
||||
#: templates/includes/sidebar.html:220
|
||||
#: templates/monthly_overview/pages/overview.html:81
|
||||
#: templates/transactions/fragments/summary.html:8
|
||||
#: templates/transactions/pages/transactions.html:68
|
||||
#: templates/transactions/pages/transactions.html:124
|
||||
msgid "Currencies"
|
||||
msgstr "Валюти"
|
||||
|
||||
#: apps/currencies/models.py:49
|
||||
#: apps/currencies/models.py:54
|
||||
msgid "Currency cannot have itself as exchange currency."
|
||||
msgstr "Валюта не може бути валютою обміну."
|
||||
|
||||
#: apps/currencies/models.py:60
|
||||
#: apps/currencies/models.py:65
|
||||
msgid "From Currency"
|
||||
msgstr "З валюти"
|
||||
|
||||
#: apps/currencies/models.py:66
|
||||
#: apps/currencies/models.py:71
|
||||
msgid "To Currency"
|
||||
msgstr "У валюту"
|
||||
|
||||
#: apps/currencies/models.py:69 apps/currencies/models.py:76
|
||||
#: apps/currencies/models.py:74 apps/currencies/models.py:81
|
||||
msgid "Exchange Rate"
|
||||
msgstr "Обмінний курс"
|
||||
|
||||
#: apps/currencies/models.py:71
|
||||
#: apps/currencies/models.py:76
|
||||
msgid "Date and Time"
|
||||
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
|
||||
msgid "Auto"
|
||||
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
|
||||
#: 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"
|
||||
msgstr "Обмінні курси"
|
||||
|
||||
#: apps/currencies/models.py:89
|
||||
#: apps/currencies/models.py:94
|
||||
msgid "From and To currencies cannot be the same."
|
||||
msgstr "Валюти «Від» і «До» не можуть бути однаковими."
|
||||
|
||||
#: apps/currencies/models.py:105
|
||||
#: apps/currencies/models.py:110
|
||||
msgid "On"
|
||||
msgstr "On"
|
||||
|
||||
#: apps/currencies/models.py:106
|
||||
#: apps/currencies/models.py:111
|
||||
msgid "Every X hours"
|
||||
msgstr "Кожні Х годин"
|
||||
|
||||
#: apps/currencies/models.py:107
|
||||
#: apps/currencies/models.py:112
|
||||
msgid "Not on"
|
||||
msgstr "Not on"
|
||||
|
||||
#: apps/currencies/models.py:109
|
||||
#: apps/currencies/models.py:114
|
||||
msgid "Service Name"
|
||||
msgstr "Назва сервісу"
|
||||
|
||||
#: apps/currencies/models.py:111
|
||||
#: apps/currencies/models.py:116
|
||||
msgid "Service Type"
|
||||
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
|
||||
#: templates/categories/fragments/list.html:21
|
||||
#: templates/entities/fragments/list.html:21
|
||||
@@ -599,79 +603,79 @@ msgstr "Тип сервісу"
|
||||
msgid "Active"
|
||||
msgstr "Активний"
|
||||
|
||||
#: apps/currencies/models.py:118
|
||||
#: apps/currencies/models.py:123
|
||||
msgid "API Key"
|
||||
msgstr "Ключ API"
|
||||
|
||||
#: apps/currencies/models.py:119
|
||||
#: apps/currencies/models.py:124
|
||||
msgid "API key for the service (if required)"
|
||||
msgstr "API-ключ для сервісу (якщо потрібно)"
|
||||
|
||||
#: apps/currencies/models.py:124
|
||||
#: apps/currencies/models.py:129
|
||||
msgid "Interval Type"
|
||||
msgstr "Тип інтервалу"
|
||||
|
||||
#: apps/currencies/models.py:128
|
||||
#: apps/currencies/models.py:133
|
||||
msgid "Interval"
|
||||
msgstr "Інтервал"
|
||||
|
||||
#: apps/currencies/models.py:131
|
||||
#: apps/currencies/models.py:136
|
||||
msgid "Last Successful Fetch"
|
||||
msgstr "Остання успішна вибірка"
|
||||
|
||||
#: apps/currencies/models.py:136
|
||||
#: apps/currencies/models.py:141
|
||||
msgid "Target Currencies"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:138
|
||||
#: apps/currencies/models.py:143
|
||||
msgid ""
|
||||
"Select currencies to fetch exchange rates for. Rates will be fetched for "
|
||||
"each currency against their set exchange currency."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:146
|
||||
#: apps/currencies/models.py:151
|
||||
msgid "Target Accounts"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:148
|
||||
#: apps/currencies/models.py:153
|
||||
msgid ""
|
||||
"Select accounts to fetch exchange rates for. Rates will be fetched for each "
|
||||
"account's currency against their set exchange currency."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:155
|
||||
#: apps/currencies/models.py:160
|
||||
#, fuzzy
|
||||
#| msgid "Exchange Rate"
|
||||
msgid "Single exchange rate"
|
||||
msgstr "Обмінний курс"
|
||||
|
||||
#: apps/currencies/models.py:158
|
||||
#: apps/currencies/models.py:163
|
||||
msgid "Create one exchange rate and keep updating it. Avoids database clutter."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:163
|
||||
#: apps/currencies/models.py:168
|
||||
msgid "Exchange Rate Service"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:164
|
||||
#: apps/currencies/models.py:169
|
||||
msgid "Exchange Rate Services"
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:216
|
||||
#: apps/currencies/models.py:221
|
||||
msgid "'Every X hours' interval type requires a positive integer."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:225
|
||||
#: apps/currencies/models.py:230
|
||||
msgid "'Every X hours' interval must be between 1 and 24."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:239
|
||||
#: apps/currencies/models.py:244
|
||||
msgid ""
|
||||
"Invalid hour format. Use comma-separated hours (0-23) and/or ranges (e.g., "
|
||||
"'1-5,8,10-12')."
|
||||
msgstr ""
|
||||
|
||||
#: apps/currencies/models.py:250
|
||||
#: apps/currencies/models.py:255
|
||||
msgid ""
|
||||
"Invalid format. Please check the requirements for your selected interval "
|
||||
"type."
|
||||
@@ -721,11 +725,11 @@ msgstr ""
|
||||
msgid "Create transaction"
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:430
|
||||
#: apps/dca/forms.py:70 apps/transactions/forms.py:425
|
||||
msgid "From Account"
|
||||
msgstr ""
|
||||
|
||||
#: apps/dca/forms.py:76 apps/transactions/forms.py:435
|
||||
#: apps/dca/forms.py:76 apps/transactions/forms.py:430
|
||||
msgid "To Account"
|
||||
msgstr ""
|
||||
|
||||
@@ -750,7 +754,7 @@ msgstr ""
|
||||
msgid "You must provide an account."
|
||||
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."
|
||||
msgstr ""
|
||||
|
||||
@@ -769,7 +773,7 @@ msgstr ""
|
||||
|
||||
#: 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/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:947
|
||||
msgid "Notes"
|
||||
@@ -828,15 +832,15 @@ msgid "Entry deleted successfully"
|
||||
msgstr ""
|
||||
|
||||
#: 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
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
|
||||
#: apps/export_app/forms.py:32 apps/export_app/forms.py:137
|
||||
#: apps/transactions/models.py:375 templates/includes/navbar.html:58
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:66
|
||||
#: templates/includes/sidebar.html:160
|
||||
#: templates/includes/navbar.html:107 templates/includes/sidebar.html:91
|
||||
#: templates/includes/sidebar.html:184
|
||||
#: templates/recurring_transactions/fragments/list_transactions.html:5
|
||||
#: templates/recurring_transactions/fragments/table.html:39
|
||||
#: templates/transactions/pages/transactions.html:5
|
||||
@@ -846,7 +850,7 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:38 apps/export_app/forms.py:134
|
||||
#: apps/transactions/filters.py:64 templates/categories/fragments/list.html:5
|
||||
#: templates/categories/pages/index.html:4 templates/includes/navbar.html:109
|
||||
#: templates/includes/sidebar.html:162
|
||||
#: templates/includes/sidebar.html:186
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
@@ -854,19 +858,19 @@ msgstr ""
|
||||
#: 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/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:506 apps/transactions/models.py:708
|
||||
#: apps/transactions/models.py:962 templates/entities/fragments/list.html:5
|
||||
#: 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
|
||||
msgid "Entities"
|
||||
msgstr ""
|
||||
|
||||
#: apps/export_app/forms.py:56 apps/export_app/forms.py:140
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Recurring Transactions"
|
||||
@@ -874,7 +878,7 @@ msgstr ""
|
||||
|
||||
#: apps/export_app/forms.py:62 apps/export_app/forms.py:138
|
||||
#: 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/pages/index.html:4
|
||||
msgid "Installment Plans"
|
||||
@@ -883,12 +887,12 @@ msgstr ""
|
||||
#: apps/export_app/forms.py:74 apps/export_app/forms.py:143
|
||||
#: templates/exchange_rates_services/fragments/list.html:6
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
#: 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
|
||||
msgid "Rules"
|
||||
msgstr ""
|
||||
@@ -958,7 +962,7 @@ msgstr ""
|
||||
|
||||
#: apps/import_app/forms.py:61
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -1029,8 +1033,8 @@ msgstr ""
|
||||
#: apps/insights/forms.py:119 apps/insights/utils/sankey.py:36
|
||||
#: 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:393
|
||||
#: templates/insights/fragments/category_overview/index.html:422
|
||||
#: templates/insights/fragments/category_overview/index.html:395
|
||||
#: templates/insights/fragments/category_overview/index.html:424
|
||||
msgid "Uncategorized"
|
||||
msgstr ""
|
||||
|
||||
@@ -1130,7 +1134,7 @@ msgstr ""
|
||||
|
||||
#: 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/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:713
|
||||
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/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:945
|
||||
msgid "Description"
|
||||
@@ -1343,6 +1347,7 @@ msgid "Any entity"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/filters.py:202
|
||||
#: templates/insights/fragments/category_overview/index.html:274
|
||||
msgid "No entity"
|
||||
msgstr ""
|
||||
|
||||
@@ -1358,50 +1363,50 @@ msgstr ""
|
||||
msgid "Save and add another"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:442
|
||||
#: apps/transactions/forms.py:437
|
||||
msgid "From Amount"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:447
|
||||
#: apps/transactions/forms.py:442
|
||||
msgid "To Amount"
|
||||
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
|
||||
msgid "Mute"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:572
|
||||
#: apps/transactions/forms.py:567
|
||||
#: templates/cotton/ui/quick_transactions_buttons.html:40
|
||||
#: templates/cotton/ui/transactions_fab.html:44
|
||||
msgid "Transfer"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:822
|
||||
#: apps/transactions/forms.py:817
|
||||
msgid "Tag name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:854
|
||||
#: apps/transactions/forms.py:849
|
||||
msgid "Entity name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:886
|
||||
#: apps/transactions/forms.py:881
|
||||
msgid "Category name"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:888
|
||||
#: apps/transactions/forms.py:883
|
||||
msgid "Muted categories won't be displayed on monthly summaries"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1046
|
||||
#: apps/transactions/forms.py:1041
|
||||
msgid "future transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/forms.py:1076
|
||||
#: apps/transactions/forms.py:1071
|
||||
msgid "End date should be after the start date"
|
||||
msgstr ""
|
||||
|
||||
@@ -1493,12 +1498,12 @@ msgstr ""
|
||||
msgid "No description"
|
||||
msgstr ""
|
||||
|
||||
#: apps/transactions/models.py:455 templates/includes/sidebar.html:42
|
||||
#: apps/transactions/models.py:455 templates/includes/sidebar.html:67
|
||||
msgid "Yearly"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -1597,7 +1602,7 @@ msgid "Quick Transaction"
|
||||
msgstr ""
|
||||
|
||||
#: 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:11
|
||||
msgid "Quick Transactions"
|
||||
@@ -1689,11 +1694,11 @@ msgid "Installment Plan deleted successfully"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
@@ -1810,8 +1815,10 @@ msgid "This account is deactivated"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/forms.py:54 apps/users/forms.py:67 apps/users/forms.py:89
|
||||
#: templates/monthly_overview/pages/overview.html:153
|
||||
#: templates/transactions/pages/transactions.html:28
|
||||
#: templates/monthly_overview/pages/overview.html:140
|
||||
#: templates/monthly_overview/pages/overview.html:186
|
||||
#: templates/transactions/pages/transactions.html:14
|
||||
#: templates/transactions/pages/transactions.html:60
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
|
||||
@@ -1912,7 +1919,7 @@ msgid "All Transactions"
|
||||
msgstr ""
|
||||
|
||||
#: apps/users/models.py:470 templates/includes/navbar.html:33
|
||||
#: templates/includes/sidebar.html:48
|
||||
#: templates/includes/sidebar.html:73
|
||||
msgid "Calendar"
|
||||
msgstr ""
|
||||
|
||||
@@ -1963,7 +1970,7 @@ msgstr ""
|
||||
#: templates/account_groups/fragments/list.html:32
|
||||
#: templates/accounts/fragments/list.html:37
|
||||
#: 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/entities/fragments/table.html:23
|
||||
#: templates/exchange_rates/fragments/table.html:19
|
||||
@@ -1984,7 +1991,7 @@ msgstr ""
|
||||
#: templates/categories/fragments/table.html:29
|
||||
#: templates/cotton/transaction/item.html:129
|
||||
#: 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/list.html:36
|
||||
#: templates/entities/fragments/table.html:28
|
||||
@@ -2010,7 +2017,7 @@ msgstr ""
|
||||
#: templates/cotton/transaction/item.html:192
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:55
|
||||
#: 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/list.html:44
|
||||
#: templates/entities/fragments/table.html:36
|
||||
@@ -2037,7 +2044,7 @@ msgstr ""
|
||||
#: templates/cotton/transaction/item.html:196
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:57
|
||||
#: 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/list.html:48
|
||||
#: templates/entities/fragments/table.html:40
|
||||
@@ -2067,7 +2074,7 @@ msgstr ""
|
||||
#: templates/cotton/transaction/item.html:197
|
||||
#: templates/cotton/ui/deleted_transactions_action_bar.html:58
|
||||
#: 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/list.html:49
|
||||
#: templates/entities/fragments/table.html:41
|
||||
@@ -2087,7 +2094,7 @@ msgstr ""
|
||||
#: templates/categories/fragments/table.html:43
|
||||
#: templates/cotton/transaction/item.html:142
|
||||
#: 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/list.html:50
|
||||
#: templates/entities/fragments/table.html:42
|
||||
@@ -2233,7 +2240,7 @@ msgid "Muted"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2242,13 +2249,14 @@ msgid "Pick a month"
|
||||
msgstr ""
|
||||
|
||||
#: templates/common/fragments/toasts.html:15 templates/extends/offcanvas.html:5
|
||||
#: templates/includes/sidebar.html:28
|
||||
#: templates/includes/sidebar.html:53
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#: templates/cotton/config/search.html:6
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2433,7 +2441,7 @@ msgstr ""
|
||||
msgid "Code"
|
||||
msgstr ""
|
||||
|
||||
#: templates/currencies/fragments/list.html:61
|
||||
#: templates/currencies/fragments/list.html:63
|
||||
msgid "No currencies"
|
||||
msgstr ""
|
||||
|
||||
@@ -2471,7 +2479,7 @@ msgstr ""
|
||||
|
||||
#: templates/dca/fragments/strategy/details.html:125
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2573,7 +2581,7 @@ msgid "Edit exchange rate"
|
||||
msgstr ""
|
||||
|
||||
#: 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/yearly_overview/pages/overview_by_account.html:105
|
||||
#: templates/yearly_overview/pages/overview_by_currency.html:107
|
||||
@@ -2597,7 +2605,7 @@ msgstr ""
|
||||
|
||||
#: templates/exchange_rates/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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2630,7 +2638,7 @@ msgid "No services configured"
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
msgstr ""
|
||||
|
||||
@@ -2726,7 +2734,7 @@ msgstr ""
|
||||
msgid "Overview"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:60
|
||||
#: templates/includes/navbar.html:41 templates/includes/sidebar.html:85
|
||||
msgid "Net Worth"
|
||||
msgstr ""
|
||||
|
||||
@@ -2736,62 +2744,62 @@ msgstr ""
|
||||
msgid "Current"
|
||||
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
|
||||
msgid "Insights"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:76
|
||||
#: templates/includes/navbar.html:67 templates/includes/sidebar.html:101
|
||||
msgid "Trash Can"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:101
|
||||
#: templates/includes/navbar.html:85 templates/includes/sidebar.html:126
|
||||
msgid "Tools"
|
||||
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"
|
||||
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:10
|
||||
msgid "Unit Price Calculator"
|
||||
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:15
|
||||
msgid "Currency Converter"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:134
|
||||
#: templates/includes/sidebar.html:147
|
||||
#: templates/includes/navbar.html:104 templates/includes/sidebar.html:159
|
||||
#: templates/includes/sidebar.html:171
|
||||
msgid "Management"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:208
|
||||
#: templates/includes/navbar.html:133 templates/includes/sidebar.html:232
|
||||
msgid "Automation"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:237
|
||||
#: templates/includes/navbar.html:148 templates/includes/sidebar.html:261
|
||||
msgid "Admin"
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:245
|
||||
#: templates/includes/navbar.html:158 templates/includes/sidebar.html:269
|
||||
msgid "Django Admin"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:260
|
||||
#: templates/includes/navbar.html:169 templates/includes/sidebar.html:284
|
||||
msgid "is available"
|
||||
msgstr ""
|
||||
|
||||
#: templates/includes/navbar.html:174 templates/includes/navbar.html:177
|
||||
#: templates/includes/sidebar.html:266
|
||||
#: templates/includes/sidebar.html:290
|
||||
msgid "Calculator"
|
||||
msgstr ""
|
||||
|
||||
@@ -2886,7 +2894,7 @@ msgstr ""
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
|
||||
#: templates/insights/fragments/category_overview/index.html:515
|
||||
#: templates/insights/fragments/category_overview/index.html:517
|
||||
msgid "Final Total"
|
||||
msgstr ""
|
||||
|
||||
@@ -3091,26 +3099,30 @@ msgstr ""
|
||||
msgid "Summary"
|
||||
msgstr ""
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/transactions/pages/transactions.html:17
|
||||
msgid "Filter transactions"
|
||||
msgstr ""
|
||||
|
||||
#: 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
|
||||
#: templates/monthly_overview/pages/overview.html:141
|
||||
#: templates/monthly_overview/pages/overview.html:195
|
||||
#: templates/transactions/pages/transactions.html:15
|
||||
#: templates/transactions/pages/transactions.html:69
|
||||
msgid "Oldest first"
|
||||
msgstr ""
|
||||
|
||||
#: templates/monthly_overview/pages/overview.html:157
|
||||
#: templates/transactions/pages/transactions.html:32
|
||||
#: templates/monthly_overview/pages/overview.html:142
|
||||
#: templates/monthly_overview/pages/overview.html:204
|
||||
#: templates/transactions/pages/transactions.html:16
|
||||
#: templates/transactions/pages/transactions.html:78
|
||||
msgid "Newest first"
|
||||
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/yearly_overview/pages/overview_by_currency.html:9
|
||||
msgid "By currency"
|
||||
@@ -3318,7 +3330,7 @@ msgstr ""
|
||||
msgid "transactions"
|
||||
msgstr ""
|
||||
|
||||
#: templates/transactions/fragments/list_all.html:39
|
||||
#: templates/transactions/fragments/list_all.html:46
|
||||
msgid "No transactions found"
|
||||
msgstr ""
|
||||
|
||||
|
||||
3
app/templates/common/placeholder.html
Normal file
3
app/templates/common/placeholder.html
Normal 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>
|
||||
<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"/>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{% load active_link %}
|
||||
<li>
|
||||
<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 %}
|
||||
data-bs-placement="right"
|
||||
data-bs-toggle="tooltip"
|
||||
@@ -9,6 +9,6 @@
|
||||
{% endif %}>
|
||||
<i class="{{ icon }} fa-fw"></i>
|
||||
<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>
|
||||
</li>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<li>
|
||||
<a href="{{ url }}"
|
||||
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 %}
|
||||
data-bs-placement="right"
|
||||
data-bs-toggle="tooltip"
|
||||
@@ -11,6 +11,6 @@
|
||||
|
||||
<i class="{{ icon }} fa-fw"></i>
|
||||
<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>
|
||||
</li>
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
{% load markdown %}
|
||||
{% 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">
|
||||
{% if not disable_selection %}
|
||||
{% if not disable_selection or not dummy %}
|
||||
<label class="px-3 d-flex align-items-center justify-content-center">
|
||||
<input class="form-check-input" type="checkbox" name="transactions" value="{{ transaction.id }}"
|
||||
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!"
|
||||
title="{% if transaction.is_paid %}{% trans 'Paid' %}{% else %}{% trans 'Projected' %}{% endif %}"
|
||||
role="button"
|
||||
{% if not dummy %}
|
||||
hx-get="{% url 'transaction_pay' transaction_id=transaction.id %}"
|
||||
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
|
||||
class="fa-regular fa-circle"></i>{% endif %}
|
||||
</a>
|
||||
@@ -33,7 +35,8 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
</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#}
|
||||
<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>
|
||||
@@ -58,14 +61,20 @@
|
||||
</div>
|
||||
<div class="tw:text-gray-400 tw:text-sm">
|
||||
{# Entities #}
|
||||
{% with transaction.entities.all as entities %}
|
||||
{% if entities %}
|
||||
<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">{{ entities|join:", " }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
{% comment %} First, check for the highest priority: a valid 'overriden_entities' list. {% endcomment %}
|
||||
{% if overriden_entities %}
|
||||
<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">{{ overriden_entities|join:", " }}</div>
|
||||
</div>
|
||||
|
||||
{% 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#}
|
||||
{% if transaction.notes %}
|
||||
<div class="row mb-2 mb-lg-1 tw:text-gray-400">
|
||||
@@ -81,17 +90,24 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
{# Tags#}
|
||||
{% with transaction.tags.all as tags %}
|
||||
{% if tags %}
|
||||
<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">{{ tags|join:", " }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
{% comment %} First, check for the highest priority: a valid 'overriden_tags' list. {% endcomment %}
|
||||
{% if overriden_tags %}
|
||||
<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">{{ overriden_tags|join:", " }}</div>
|
||||
</div>
|
||||
|
||||
{% 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 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">
|
||||
<c-amount.display
|
||||
:amount="transaction.amount"
|
||||
@@ -101,107 +117,136 @@
|
||||
color="{% if transaction.type == "EX" %}red{% else %}green{% endif %}"></c-amount.display>
|
||||
</div>
|
||||
{# Exchange Rate#}
|
||||
{% with exchanged=transaction.exchanged_amount %}
|
||||
{% if exchanged %}
|
||||
<div class="exchanged-amount mb-2 mb-lg-0">
|
||||
<c-amount.display
|
||||
:amount="exchanged.amount"
|
||||
:prefix="exchanged.prefix"
|
||||
:suffix="exchanged.suffix"
|
||||
:decimal_places="exchanged.decimal_places"
|
||||
color="grey"></c-amount.display>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
{% if not dummy %}
|
||||
{% with exchanged=transaction.exchanged_amount %}
|
||||
{% if exchanged %}
|
||||
<div class="exchanged-amount mb-2 mb-lg-0">
|
||||
<c-amount.display
|
||||
:amount="exchanged.amount"
|
||||
:prefix="exchanged.prefix"
|
||||
:suffix="exchanged.suffix"
|
||||
:decimal_places="exchanged.decimal_places"
|
||||
color="grey"></c-amount.display>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endwith %}
|
||||
{% endif %}
|
||||
<div>
|
||||
{% if transaction.account.group %}{{ transaction.account.group.name }} • {% endif %}{{ transaction.account.name }}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
{# Item actions#}
|
||||
<div
|
||||
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 class="card-body p-1 shadow-lg d-flex flex-row gap-1">
|
||||
{% if not transaction.deleted %}
|
||||
<a class="btn btn-secondary btn-sm transaction-action"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Edit" %}"
|
||||
hx-get="{% url 'transaction_edit' transaction_id=transaction.id %}"
|
||||
hx-target="#generic-offcanvas" hx-swap="innerHTML">
|
||||
<i class="fa-solid fa-pencil fa-fw"></i></a>
|
||||
<a class="btn btn-secondary btn-sm transaction-action"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Delete" %}"
|
||||
hx-delete="{% url 'transaction_delete' transaction_id=transaction.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 text-danger"></i>
|
||||
</a>
|
||||
<button class="btn btn-secondary btn-sm transaction-action" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<i class="fa-solid fa-ellipsis fa-fw"></i>
|
||||
</button>
|
||||
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-md-start">
|
||||
{% if transaction.account.is_untracked_by %}
|
||||
<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 account' %}</div>
|
||||
</div>
|
||||
</a>
|
||||
{% if not dummy %}
|
||||
<div>
|
||||
{# Item actions#}
|
||||
<div
|
||||
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 class="card-body p-1 shadow-lg d-flex flex-row gap-1">
|
||||
{% if not transaction.deleted %}
|
||||
<a class="btn btn-secondary btn-sm transaction-action"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Edit" %}"
|
||||
hx-get="{% url 'transaction_edit' transaction_id=transaction.id %}"
|
||||
hx-target="#generic-offcanvas" hx-swap="innerHTML">
|
||||
<i class="fa-solid fa-pencil fa-fw"></i></a>
|
||||
<a class="btn btn-secondary btn-sm transaction-action"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Delete" %}"
|
||||
hx-delete="{% url 'transaction_delete' transaction_id=transaction.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 text-danger"></i>
|
||||
</a>
|
||||
<button class="btn btn-secondary btn-sm transaction-action" type="button" data-bs-toggle="dropdown"
|
||||
aria-expanded="false">
|
||||
<i class="fa-solid fa-ellipsis fa-fw"></i>
|
||||
</button>
|
||||
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-md-start">
|
||||
{% if transaction.account.is_untracked_by %}
|
||||
<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 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>
|
||||
{% 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>
|
||||
<hr class="dropdown-divider">
|
||||
</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><hr class="dropdown-divider"></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="#" 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>
|
||||
<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>
|
||||
<li><hr class="dropdown-divider"></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>
|
||||
</ul>
|
||||
{% else %}
|
||||
<a class="btn btn-secondary btn-sm transaction-action"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Restore" %}"
|
||||
hx-get="{% url 'transaction_undelete' transaction_id=transaction.id %}"><i
|
||||
class="fa-solid fa-trash-arrow-up"></i></a>
|
||||
<a class="btn btn-secondary btn-sm transaction-action"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Delete" %}"
|
||||
hx-delete="{% url 'transaction_delete' transaction_id=transaction.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 text-danger"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
<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="#"
|
||||
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>
|
||||
<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>
|
||||
<li>
|
||||
<hr class="dropdown-divider">
|
||||
</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>
|
||||
</ul>
|
||||
{% else %}
|
||||
<a class="btn btn-secondary btn-sm transaction-action"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Restore" %}"
|
||||
hx-get="{% url 'transaction_undelete' transaction_id=transaction.id %}"><i
|
||||
class="fa-solid fa-trash-arrow-up"></i></a>
|
||||
<a class="btn btn-secondary btn-sm transaction-action"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Delete" %}"
|
||||
hx-delete="{% url 'transaction_delete' transaction_id=transaction.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 text-danger"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
<th scope="col" class="col-auto"></th>
|
||||
<th scope="col" class="col-auto">{% translate 'Code' %}</th>
|
||||
<th scope="col" class="col">{% translate 'Name' %}</th>
|
||||
<th scope="col" class="col">{% translate 'Archived' %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -53,6 +54,7 @@
|
||||
</td>
|
||||
<td class="col-auto">{{ currency.code }}</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>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
@@ -5,31 +5,56 @@
|
||||
{% load static %}
|
||||
|
||||
<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
|
||||
id="sidebar"
|
||||
hx-boost="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">
|
||||
<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>
|
||||
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">
|
||||
|
||||
<a href="{% url 'index' %}" class="d-none d-lg-flex tw:justify-start p-3 text-decoration-none">
|
||||
<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>
|
||||
</a>
|
||||
{# <div>#}
|
||||
{# <a href="{% url 'index' %}" class="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>#}
|
||||
{##}
|
||||
{##}
|
||||
{# </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">
|
||||
<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"/>
|
||||
<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>
|
||||
<button type="button" class="btn-close" data-bs-target="#sidebar" data-bs-dismiss="offcanvas"
|
||||
aria-label={% translate 'Close' %}></button>
|
||||
</div>
|
||||
<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">
|
||||
|
||||
<c-components.sidebar-menu-item
|
||||
@@ -127,10 +152,10 @@
|
||||
data-bs-target="#collapsible-panel"
|
||||
aria-expanded="false"
|
||||
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>
|
||||
<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' %}
|
||||
</span>
|
||||
</div>
|
||||
@@ -140,14 +165,13 @@
|
||||
<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">
|
||||
<div class="tw:h-dvh tw:backdrop-blur-3xl tw:flex tw:flex-col">
|
||||
<!-- Header -->
|
||||
<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">
|
||||
<h5 class="tw:text-lg tw:font-semibold tw:text-gray-800 tw:lg:invisible tw:lg:group-hover:visible">
|
||||
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 m-0">
|
||||
{% trans 'Management' %}
|
||||
</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-target="#collapsible-panel"
|
||||
aria-expanded="true"
|
||||
@@ -155,7 +179,7 @@
|
||||
</button>
|
||||
</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">
|
||||
<c-components.sidebar-menu-header title="{% translate 'Transactions' %}"></c-components.sidebar-menu-header>
|
||||
<c-components.sidebar-menu-item
|
||||
@@ -273,17 +297,24 @@
|
||||
<div>
|
||||
<hr class="my-1">
|
||||
<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">
|
||||
<div>
|
||||
<i class="fa-solid fa-circle-user"></i>
|
||||
<strong class="ms-2 tw:lg:invisible tw:lg:group-hover:visible">{{ user.email }}</strong>
|
||||
class="ps-4 pe-2 py-2 d-flex align-items-center text-decoration-none justify-content-between">
|
||||
|
||||
<div class="d-flex align-items-center" style="min-width: 0;">
|
||||
<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 class="tw:lg:invisible tw:lg:group-hover:visible">
|
||||
|
||||
<div class="sidebar-invisible">
|
||||
{% include 'includes/navbar/user_menu.html' %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<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>
|
||||
|
||||
@@ -268,95 +268,97 @@
|
||||
<!-- Entity rows -->
|
||||
{% if show_entities %}
|
||||
{% for entity_id, entity in tag.entities.items %}
|
||||
<tr class="table-row-nested-2">
|
||||
<td class="ps-5">
|
||||
<i class="fa-solid fa-user-group fa-fw me-2 text-muted"></i>{{ entity.name }}
|
||||
</td>
|
||||
<td>
|
||||
{% for currency in entity.currencies.values %}
|
||||
{% if showing == 'current' and currency.income_current != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.income_current"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="green"></c-amount.display>
|
||||
{% elif showing == 'projected' and currency.income_projected != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.income_projected"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="green"></c-amount.display>
|
||||
{% elif showing == 'final' and currency.total_income != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.total_income"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="green"></c-amount.display>
|
||||
{% else %}
|
||||
<div>-</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>
|
||||
{% for currency in entity.currencies.values %}
|
||||
{% if showing == 'current' and currency.expense_current != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.expense_current"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="red"></c-amount.display>
|
||||
{% elif showing == 'projected' and currency.expense_projected != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.expense_projected"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="red"></c-amount.display>
|
||||
{% elif showing == 'final' and currency.total_expense != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.total_expense"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="red"></c-amount.display>
|
||||
{% else %}
|
||||
<div>-</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>
|
||||
{% for currency in entity.currencies.values %}
|
||||
{% if showing == 'current' and currency.total_current != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.total_current"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="{% if currency.total_final < 0 %}red{% else %}green{% endif %}"></c-amount.display>
|
||||
{% elif showing == 'projected' and currency.total_projected != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.total_projected"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="{% if currency.total_final < 0 %}red{% else %}green{% endif %}"></c-amount.display>
|
||||
{% elif showing == 'final' and currency.total_final != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.total_final"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="{% if currency.total_final < 0 %}red{% else %}green{% endif %}"></c-amount.display>
|
||||
{% else %}
|
||||
<div>-</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
{% if entity.name or not entity.name and tag.entities.values|length > 1 %}
|
||||
<tr class="table-row-nested-2">
|
||||
<td class="ps-5">
|
||||
<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 %}
|
||||
{% if showing == 'current' and currency.income_current != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.income_current"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="green"></c-amount.display>
|
||||
{% elif showing == 'projected' and currency.income_projected != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.income_projected"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="green"></c-amount.display>
|
||||
{% elif showing == 'final' and currency.total_income != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.total_income"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="green"></c-amount.display>
|
||||
{% else %}
|
||||
<div>-</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>
|
||||
{% for currency in entity.currencies.values %}
|
||||
{% if showing == 'current' and currency.expense_current != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.expense_current"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="red"></c-amount.display>
|
||||
{% elif showing == 'projected' and currency.expense_projected != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.expense_projected"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="red"></c-amount.display>
|
||||
{% elif showing == 'final' and currency.total_expense != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.total_expense"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="red"></c-amount.display>
|
||||
{% else %}
|
||||
<div>-</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
<td>
|
||||
{% for currency in entity.currencies.values %}
|
||||
{% if showing == 'current' and currency.total_current != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.total_current"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="{% if currency.total_final < 0 %}red{% else %}green{% endif %}"></c-amount.display>
|
||||
{% elif showing == 'projected' and currency.total_projected != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.total_projected"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="{% if currency.total_final < 0 %}red{% else %}green{% endif %}"></c-amount.display>
|
||||
{% elif showing == 'final' and currency.total_final != 0 %}
|
||||
<c-amount.display
|
||||
:amount="currency.total_final"
|
||||
:prefix="currency.currency.prefix"
|
||||
:suffix="currency.currency.suffix"
|
||||
:decimal_places="currency.currency.decimal_places"
|
||||
color="{% if currency.total_final < 0 %}red{% else %}green{% endif %}"></c-amount.display>
|
||||
{% else %}
|
||||
<div>-</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
{% include 'includes/mobile_navbar.html' %}
|
||||
{% include 'includes/sidebar.html' %}
|
||||
|
||||
<main class="tw:p-4 tw:lg:ml-16">
|
||||
<main class="tw:p-4">
|
||||
{% settings "DEMO" as demo_mode %}
|
||||
{% if demo_mode %}
|
||||
<div class="px-3 m-0" id="demo-mode-alert" hx-preserve>
|
||||
|
||||
@@ -44,12 +44,12 @@
|
||||
</div>
|
||||
</div>
|
||||
{# Action buttons#}
|
||||
{# <div class="col-12 col-xl-8">#}
|
||||
{# <c-ui.quick-transactions-buttons#}
|
||||
{# :year="year"#}
|
||||
{# :month="month"#}
|
||||
{# ></c-ui.quick-transactions-buttons>#}
|
||||
{# </div>#}
|
||||
{# <div class="col-12 col-xl-8">#}
|
||||
{# <c-ui.quick-transactions-buttons#}
|
||||
{# :year="year"#}
|
||||
{# :month="month"#}
|
||||
{# ></c-ui.quick-transactions-buttons>#}
|
||||
{# </div>#}
|
||||
</div>
|
||||
{# Monthly summary#}
|
||||
<div class="row gx-xl-4 gy-3">
|
||||
@@ -133,59 +133,101 @@
|
||||
|
||||
</div>
|
||||
<div class="col-12 col-xl-8 order-2 order-xl-1">
|
||||
<div class="row mb-1">
|
||||
<div class="col-sm-6 col-12">
|
||||
{# Filter transactions button #}
|
||||
<button type="button" class="btn btn-sm btn-outline-primary dropdown-toggle" type="button"
|
||||
data-bs-toggle="collapse" data-bs-target="#collapse-filter" aria-expanded="false"
|
||||
aria-controls="collapse-filter">
|
||||
<i class="fa-solid fa-filter fa-fw me-2"></i>{% translate 'Filter transactions' %}
|
||||
|
||||
<div class="my-3">
|
||||
{# Hidden select to hold the order value and preserve the original update trigger #}
|
||||
<select name="order" id="order" class="d-none" _="on change trigger updated on window">
|
||||
<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>
|
||||
|
||||
{# 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>
|
||||
</div>
|
||||
{# Ordering button#}
|
||||
<div class="col-sm-6 col-12 tw:content-center my-3 my-sm-0">
|
||||
<div class="text-sm-end" _="on change trigger updated on window">
|
||||
<label for="order">{% translate "Order by" %}</label>
|
||||
<select
|
||||
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"
|
||||
name="order" id="order">
|
||||
<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
|
||||
|
||||
{# 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()">
|
||||
</label>
|
||||
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>
|
||||
|
||||
{# 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>
|
||||
{# Transactions list#}
|
||||
<div id="transactions"
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
<tr>
|
||||
<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>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -80,6 +81,9 @@
|
||||
<i class="fa-solid fa-toggle-off tw:text-red-400"></i>{% endif %}
|
||||
</a>
|
||||
</td>
|
||||
<td class="col text-center">
|
||||
<div>{{ rule.order }}</div>
|
||||
</td>
|
||||
<td class="col">
|
||||
<div>{{ rule.name }}</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="tw:text-xl mb-2">{% translate 'Then...' %}</div>
|
||||
{% for action in transaction_rule.transaction_actions.all %}
|
||||
<div class="card mb-3">
|
||||
<div class="card-header">
|
||||
<div><span class="badge text-bg-primary">{% trans 'Edit transaction' %}</span></div>
|
||||
{% for action in all_actions %}
|
||||
{% if action.action_type == "edit_transaction" %}
|
||||
<div class="card mb-3">
|
||||
<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 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>
|
||||
{% elif action.action_type == "update_or_create_transaction" %}
|
||||
<div class="card mb-3">
|
||||
<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 '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 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>
|
||||
{% 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 %}
|
||||
{% endif %}
|
||||
{% empty %}
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
{% translate 'This rule has no actions' %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<hr>
|
||||
<div class="dropdown">
|
||||
<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 dropdown-menu-end w-100">
|
||||
<li><a class="dropdown-item" role="link"
|
||||
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"
|
||||
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 class="d-grid d-lg-flex gap-2">
|
||||
<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-flask-vial me-2"></i>{% translate 'Test' %}
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
{% if transaction_rule.on_create %}
|
||||
<li><a class="dropdown-item" role="link" href="#"
|
||||
hx-get="{% url 'transaction_rule_dry_run_created' pk=transaction_rule.id %}"
|
||||
hx-target="#generic-offcanvas">{% trans 'Create' %}</a></li>
|
||||
{% endif %}
|
||||
{% 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>
|
||||
|
||||
@@ -5,121 +5,128 @@
|
||||
|
||||
<div id="transactions-list">
|
||||
{% for x in transactions_by_date %}
|
||||
<div id="{{ x.grouper|slugify }}"
|
||||
_="on htmx:afterSettle 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 id="{{ x.grouper|slugify }}" class="transactions-divider"
|
||||
_="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 transactions-divider-title">
|
||||
<a class="text-decoration-none d-inline-block w-100"
|
||||
role="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#c-{{ x.grouper|slugify }}-collapse"
|
||||
id="c-{{ x.grouper|slugify }}-collapsible"
|
||||
aria-expanded="true"
|
||||
aria-expanded="false"
|
||||
aria-controls="c-{{ x.grouper|slugify }}-collapse">
|
||||
{{ x.grouper }}
|
||||
</a>
|
||||
</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 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)
|
||||
if state is 'true' or state is null
|
||||
add .show to me
|
||||
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">
|
||||
{% for transaction in x.list %}
|
||||
<c-transaction.item :transaction="transaction"></c-transaction.item>
|
||||
<c-transaction.item
|
||||
:transaction="transaction"></c-transaction.item>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% empty %}
|
||||
<c-msg.empty
|
||||
title="{% translate "No transactions found" %}"
|
||||
subtitle="{% translate "Try adding one" %}"></c-msg.empty>
|
||||
{% endfor %}
|
||||
title="{% translate "No transactions found" %}"
|
||||
subtitle="{% translate "Try adding one" %}"></c-msg.empty>
|
||||
{% endfor %}
|
||||
|
||||
{% if page_obj.has_other_pages %}
|
||||
<div class="mt-auto">
|
||||
<input value="{{ page_obj.number }}" name="page" type="hidden" id="page">
|
||||
<div class="mt-auto">
|
||||
<input value="{{ page_obj.number }}" name="page" type="hidden" id="page">
|
||||
|
||||
<nav aria-label="{% translate 'Page navigation' %}">
|
||||
<ul class="pagination justify-content-center mt-5">
|
||||
<li class="page-item">
|
||||
<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-vals='{"page": 1}'
|
||||
hx-include="#filter, #order"
|
||||
hx-target="#transactions-list"
|
||||
aria-label="Primeira página"
|
||||
hx-swap="show:top">
|
||||
<span aria-hidden="true">«</span>
|
||||
</a>
|
||||
</li>
|
||||
{% for page_number in page_obj.paginator.page_range %}
|
||||
{% comment %}
|
||||
<nav aria-label="{% translate 'Page navigation' %}">
|
||||
<ul class="pagination justify-content-center mt-5">
|
||||
<li class="page-item">
|
||||
<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-vals='{"page": 1}'
|
||||
hx-include="#filter, #order"
|
||||
hx-target="#transactions-list"
|
||||
aria-label="Primeira página"
|
||||
hx-swap="show:top">
|
||||
<span aria-hidden="true">«</span>
|
||||
</a>
|
||||
</li>
|
||||
{% for page_number in page_obj.paginator.page_range %}
|
||||
{% comment %}
|
||||
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
|
||||
|
||||
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)
|
||||
{% endcomment %}
|
||||
{% if page_number <= page_obj.number|add:3 and page_number >= page_obj.number|add:-3 %}
|
||||
{% if page_obj.number == page_number %}
|
||||
<li class="page-item active">
|
||||
<a class="page-link tw:cursor-pointer">
|
||||
{{ page_number }}
|
||||
</a>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="page-item">
|
||||
<a class="page-link tw:cursor-pointer"
|
||||
hx-get="{% url 'transactions_all_list' %}"
|
||||
hx-vals='{"page": {{ page_number }}}'
|
||||
hx-include="#filter, #order"
|
||||
hx-target="#transactions-list"
|
||||
hx-swap="show:top">
|
||||
{{ page_number }}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if page_number <= page_obj.number|add:3 and page_number >= page_obj.number|add:-3 %}
|
||||
{% if page_obj.number == page_number %}
|
||||
<li class="page-item active">
|
||||
<a class="page-link tw:cursor-pointer">
|
||||
{{ page_number }}
|
||||
</a>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="page-item">
|
||||
<a class="page-link tw:cursor-pointer"
|
||||
hx-get="{% url 'transactions_all_list' %}"
|
||||
hx-vals='{"page": {{ page_number }}}'
|
||||
hx-include="#filter, #order"
|
||||
hx-target="#transactions-list"
|
||||
hx-swap="show:top">
|
||||
{{ page_number }}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if page_obj.number|add:3 < page_obj.paginator.num_pages %}
|
||||
<li class="page-item">
|
||||
<a class="page-link disabled"
|
||||
aria-label="...">
|
||||
<span aria-hidden="true">...</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="page-item">
|
||||
<a class="page-link tw:cursor-pointer"
|
||||
hx-get="{% url 'transactions_all_list' %}" hx-target="#transactions-list"
|
||||
hx-vals='{"page": {{ page_obj.paginator.num_pages }}}'
|
||||
hx-include="#filter, #order"
|
||||
hx-swap="show:top"
|
||||
aria-label="Última página">
|
||||
<span aria-hidden="true">{{ page_obj.paginator.num_pages }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li class="page-item">
|
||||
<a class="page-link {% if not page_obj.has_next %}disabled{% endif %} tw:cursor-pointer"
|
||||
hx-get="{% if page_obj.has_next %}{% url 'transactions_all_list' %}{% endif %}"
|
||||
hx-vals='{"page": {{ page_obj.paginator.num_pages }}}'
|
||||
hx-include="#filter, #order"
|
||||
hx-swap="show:top"
|
||||
hx-target="#transactions-list"
|
||||
aria-label="Next">
|
||||
<span aria-hidden="true">»</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if page_obj.number|add:3 < page_obj.paginator.num_pages %}
|
||||
<li class="page-item">
|
||||
<a class="page-link disabled"
|
||||
aria-label="...">
|
||||
<span aria-hidden="true">...</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="page-item">
|
||||
<a class="page-link tw:cursor-pointer"
|
||||
hx-get="{% url 'transactions_all_list' %}" hx-target="#transactions-list"
|
||||
hx-vals='{"page": {{ page_obj.paginator.num_pages }}}'
|
||||
hx-include="#filter, #order"
|
||||
hx-swap="show:top"
|
||||
aria-label="Última página">
|
||||
<span aria-hidden="true">{{ page_obj.paginator.num_pages }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li class="page-item">
|
||||
<a class="page-link {% if not page_obj.has_next %}disabled{% endif %} tw:cursor-pointer"
|
||||
hx-get="{% if page_obj.has_next %}{% url 'transactions_all_list' %}{% endif %}"
|
||||
hx-vals='{"page": {{ page_obj.paginator.num_pages }}}'
|
||||
hx-include="#filter, #order"
|
||||
hx-swap="show:top"
|
||||
hx-target="#transactions-list"
|
||||
aria-label="Next">
|
||||
<span aria-hidden="true">»</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
{% endif %}
|
||||
{# Floating bar#}
|
||||
{# Floating bar#}
|
||||
<c-ui.transactions-action-bar></c-ui.transactions-action-bar>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -8,45 +8,101 @@
|
||||
<div class="container px-md-3 py-3 column-gap-5">
|
||||
<div class="row gx-xl-4 gy-3">
|
||||
<div class="col-12 col-xl-8 order-2 order-xl-1">
|
||||
<div class="row mb-1">
|
||||
<div class="col-sm-6 col-12">
|
||||
{# Filter transactions button #}
|
||||
<button type="button" class="btn btn-sm btn-outline-primary dropdown-toggle" type="button"
|
||||
data-bs-toggle="collapse" data-bs-target="#collapse-filter" aria-expanded="false"
|
||||
aria-controls="collapse-filter">
|
||||
<i class="fa-solid fa-filter fa-fw me-2"></i>{% translate 'Filter transactions' %}
|
||||
<div class="mb-3">
|
||||
{# Hidden select to hold the order value and preserve the original update trigger #}
|
||||
<select name="order" id="order" class="d-none" _="on change trigger updated on window">
|
||||
<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>
|
||||
|
||||
{# 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>
|
||||
|
||||
{# 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>
|
||||
{# Ordering button#}
|
||||
<div class="col-sm-6 col-12 tw:content-center my-3 my-sm-0">
|
||||
<div class="text-sm-end" _="on change trigger updated on window">
|
||||
<label for="order">{% translate "Order by" %}</label>
|
||||
<select
|
||||
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"
|
||||
name="order" id="order">
|
||||
<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>
|
||||
|
||||
{# 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>
|
||||
{# 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"
|
||||
class="show-loading"
|
||||
hx-get="{% url 'transactions_all_list' %}"
|
||||
|
||||
@@ -49,3 +49,7 @@ $theme-colors: map.merge(
|
||||
.offcanvas-size-sm {
|
||||
--#{$prefix}offcanvas-width: min(95vw, 250px) !important;
|
||||
}
|
||||
|
||||
.dropdown-toggle.dropdown-toggle-no-icon::after {
|
||||
display:none;
|
||||
}
|
||||
|
||||
@@ -3,9 +3,139 @@
|
||||
@custom-variant hover (&:hover);
|
||||
|
||||
.sidebar-active {
|
||||
@apply tw:bg-gray-700 tw:text-white;
|
||||
@apply tw:bg-gray-700 tw:text-white;
|
||||
}
|
||||
|
||||
.sidebar-item:not(.sidebar-active) {
|
||||
@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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user